Repository navigation
OXOS v0.2.0
Big disks and exFAT. The Xbox hard disk no longer has to be a Microsoft FATX disk.
- Format a drive of any size as exFAT on your PC (Windows, macOS or Linux).
- Copy the dashboard, your apps and your saves onto it as ordinary files.
- Put it in the Xbox.
OXOS also uses the whole disk now, not just the first 128 GiB.
Download: bios_v0.2.0.bin (1 MB, SHA-256 93fa5833cbb1ef6fce4c8f325ae7fe5cdae55936b6cc9f3ff70e69f39666e67f)
Big hard disks: 48-bit addressing (LBA48)
- The original kernel uses 28-bit sector numbers, so it can only reach the first 128 GiB of a disk. OXOS now uses the drive's 48-bit commands, which reach 128 PiB.
- Tested in xemu on a 2 TB disk: every test sector landed at the right place, including the ones just past the old 128 GiB limit.
- Disks up to 128 GiB get exactly the original commands, and existing FATX disks keep working unchanged.
exFAT hard disks
-
Formatted on any computer. Use one exFAT partition on a GPT disk (or MBR, up to 2 TiB). The default settings of Windows Disk Management, macOS Disk Utility, or Linux
gdisk+mkfs.exfatall work. You don't need FATX tools or Xbox-specific partitioning. -
Folders are the Xbox drives:
Folder Drive What goes there CC: the dashboard EE: saves and game data ( TDATA,UDATA)FF: your extra drive: apps, homebrew, anything X,Y,ZX:, Y:, Z: game caches, created automatically -
Copy data any time. Put the drive in a PC: saves, apps and the dashboard are plain files. You can back up, restore and add apps with the file manager you already use.
-
One shared pool of space. There are no fixed partition sizes: C, E and F can each use the whole disk.
- Games see C: and E: as at most 2 TB, because some older software miscounts larger numbers.
- F: shows the full size.
- The cache drives X/Y/Z show 750 MB each, as on a retail disk. Games format them as they always did, and OXOS empties the folder instead.
Size limits:
- Disk: no practical limit with GPT; tested with 256 GB and 500 GB disks. MBR partitions stop at 2 TiB.
- Files: the PC can store files of any size on the disk. Xbox games and apps only see files under 4 GB, because the Xbox file API is 32-bit; larger files are hidden from them.
- Names: Xbox software sees names of up to 42 characters (the Xbox rule). Longer names, and names with characters outside Latin-1, are hidden from it and left untouched.
Setting up a drive:
- Format it as exFAT: one GPT partition starting at 1 MiB (the default everywhere).
- Create the folders
C,EandF. - Copy your dashboard files into
C(for example from your old drive's C:), and your saves intoEif you have them. - Put apps into
F, e.g.F\apps\myapp\default.xbe.
For xemu users
Make an exFAT disk image on Linux:
qemu-img create -f qcow2 hdd.qcow2 500G
sudo modprobe nbd max_part=8 && sudo qemu-nbd --connect=/dev/nbd0 hdd.qcow2
sudo sgdisk -n 1:2048:0 -t 1:0700 /dev/nbd0 && sudo mkfs.exfat /dev/nbd0p1
sudo mount /dev/nbd0p1 /mnt && sudo mkdir /mnt/C /mnt/E /mnt/F # copy your files in
sudo umount /mnt && sudo qemu-nbd --disconnect /dev/nbd0
- Set the image as xemu's hard disk.
- Mount it again whenever you want to copy files. Unmount it before starting xemu: the PC and the console must never have the disk open at the same time.
- From a source checkout,
python3 tests/exfat.py --from-fatx old.qcow2 new.qcow2 --size 500Gconverts an existing FATX image.
New for developers (in the repository)
make run-xbe XBE='F:\apps\demo\default.xbe'runs an XBE from the hard disk. A small launcher disc (tools/xbe-launcher) starts it the way a dashboard does.make run-trace-xbedoes the same with the serial log and kernel call tracer.- New tests:
make test-lba48runs the self-tests on a 2 TB disk.make test-exfatruns them on an exFAT disk and checks the disk afterwards.tests/exfat.pybuilds and checks exFAT disk images.
- Designs:
spec/oxos-internal/(LBA48, the exFAT storage layout, the exFAT driver).
Known limitations
- Not tested on a real console yet. Large disks need a drive, or an IDE adapter, that passes 48-bit commands through.
- Memory units are still FATX only; exFAT memory units are planned.
- Disk layout:
- The first data partition on the disk must be the exFAT one.
- The disk must use 512-byte sectors, the normal case for drives used with IDE adapters.
- No certificate key: stock saves and System Link with stock consoles won't work.
Checked in xemu
- All
make testphases,make test-exfatandmake test-lba48pass, andmake test-dashboots this exact image to the dashboard. - A disk prepared only with standard Linux tools (a 500 GB disk;
sgdisk,mkfs.exfat, files copied through the Linux exFAT driver):- the Microsoft dashboard boots from it;
- Halo formats its cache, loads a level and writes its cache files;
- afterwards Linux's
fsck.exfatreports the disk clean.
- On an exFAT disk, Halo was played, the profile saved, and the game continued after a reboot.
Using it in xemu
- Open Machine → Settings → System.
- Set Flash (BIOS) File to
bios_v0.2.0.binand leave MCPX Boot ROM File empty.
Sources (GPL-2.0)
- This repository at tag
v0.2.0. - XboxDev/cromwell at
86f547387184d1001d377cce97d3756c8acf91ccfor the X-codes and EEPROM key states. - Contains no Microsoft code. Not affiliated with or endorsed by Microsoft.