Skip to content

Xbox Boot file system

Xbox Boot File System, or XBFS for short, refers to the console flash filesystem.

On Xbox Series-consoles, there is also SBFS.

Filesystem sizes

Durango (pre-series-S/X):

  • RAW: 0x1_3C00_0000 (5056 MB)
  • Logical: 0x1_3B00_0000 (5040 MB)

Series S/X:

  • Logical: 0x4000_0000 (1024 MB / 1 GB)

XBFS Header offsets

The Flash can contain 3 different revisions of filetables, differentiated via its sequence number. Highest sequence number is the active one.

Checking if a filetable exists is done by checking for XBFS_HEADER->Magic.

Absolute offsets (pre-series-S/X consoles):

  • 0x1_0000 (Bootslot A)
  • 0x81_0000 (Bootslot B)
  • 0x82_0000 (Bootslot C)

Absolute offsets (Series S/X)

  • 0x0
  • 0x1800_8000

Series S/X

The Xbox Series S/X consoles have a big internal NVME drive, which has a dedicated section to hold XBFS. For some yet unknown reasons, when calculating the start offset of a file in XBFS, 0x6000 needs to be substracted to receive the correct start offset.

Possibly, when dumping the raw image, the initial 0x6000 are not being included.

Checking for file existance

Iterate through the array of XBFS_FILE_ENTRY and check if XBFS_FILE_ENTRY.Size > 0.

XBFS Structures

Byteorder: Little endian

MAX_FILE_COUNT: 58

PAGE_SIZE: 0x1000

XBFS_HEADER

Size: 0x400

Offset Length Type Information
0x00 0x04 uint Magic (SFBX)
0x04 0x01 byte Format Version
0x05 0x01 byte Sequence Version*
0x06 0x02 ushort Layout Version
0x08 0x08 uint64 Unknown
0x10 0x08 uint64 Unknown
0x18 0x08 uint64 Unknown
0x20 MAX_FILE_COUNT * sizeof(XBFS_FILE_ENTRY) struct XBFS_FILE_ENTRY File Entries
0x3D0 0x10 byte[] UUID
0x3E0 0x20 byte[] SHA256 Hash
  • Sequence number: Wraps around, aka 0xFF -> 0x00. 0x00 would be latest.

XBFS_FILE_ENTRY

Size: 0x10

Offset Length Type Information
0x00 0x04 uint32 Offset (page count)
0x04 0x04 uint32 Size (page count)
0x08 0x08 uint64 Unknown

File Entries

XBFS contains the following entries as of firmware version 10.0.10586.1029.

Index Name Format Plaintext Information
00 1smcbl_a.bin binary no SMC bootloader (slot A)
01 header.bin binary yes XBFS header
02 devkit.ini binary no Devkit initialization data
03 mtedata.cfg binary no MTE data
04 certkeys.bin binary yes Per-console SP/SMC Bootcap cert
05 smcerr.log binary no SMC error log (dynamic)
06 system.xvd xvd yes SystemOS VM image
07 \$sospf.xvd (formerly \$sosrst.xvd) xvd yes SystemOS restore image
08 download.xvd xvd yes Unknown
09 smc_s.cfg binary no SMC configuration (static)
10 sp_s.cfg binary partially Per-console SP configuration (static) / console certificate
11 os_s.cfg binary no OS configuration (static)
12 smc_d.cfg binary no SMC configuration (dynamic)
13 sp_d.cfg binary no SP configuration (dynamic)
14 os_d.cfg binary no XConfig retail mode storage (dynamic)
15 smcfw.bin binary no SMC firmware
16 boot.bin binary no Bootloaders
17 host.xvd xvd yes HostOS image
18 settings.xvd xvd yes SystemOS settings image
19 1smcbl_b.bin binary no SMC bootloader (slot B)
20 bootanim.dat binary yes Boot animation
21 obsolete.001 (formerly sostmpl.xvd) xvd yes Obsolete (formerly SystemOS template image)
22 update.cfg binary yes Update configuration / log?
23 obsolete.002 (formerly sosinit.xvd) xvd yes SystemOS initialization image
24 hwinit.cfg binary no Hardware initialization configuration
25 qaslt.xvd xvd unknown
26 sp_s.bak binary unknown
27 update2.cfg binary unknown
28 recovery.dat binary unknown
29 dump.lng binary unknown
30 os_d_dev.cfg binary unknown XConfig dev mode storage (dynamic)
31 os_glob.cfg binary unknown
32 sp_s.alt binary unknown Alternative per-console SP configuration (static) / console certificate

Note: Only XVD header is plaintext, data portion is encrypted as usual. Per Console: Is file encrypted via console specific keys or locked to console by SocId.

Access via SRA/SystemOS

Access to the Flash from SystemOS is possible via the provided pipes:

\\.\Xvuc\FlashFs\ - Connects to the Flash's NTFS filter driver on host, providing a NTFS like environment compatible with most Win32 file APIs. Reading specific files is possible by simply appending them to the pipe path. Ex: \\.\Xvuc\FlashFs\sp_s.cfg would give you a file handle to sp_s.cfg.

\\.\Xvuc\Flash\ - Unlike the filtered pipe above, this pipe provides direct access to the flash, without any kind of file system filter. Refer above for more information.

Tools

QuantumTunnel - (.NET Core) XBFS dumping tool that runs in SystemOS to dump the XBFS from the console. It does require Administrator/NT System privileges.

xvdtool (XBFSTool) - (.NET Core)Parsing / extraction of a raw XBFS image.

xbfs-tool-(C) Parsing / extraction / injection of raw XBFS images.

Authors: Emily, Nullicorn, tuxuser