How do I access an external XBox One formatted drive?

Solution 1:

I just looked at the bytes on the drive and it seems like Microsoft has deliberately erased the MBR on the drive to make our lives harder.


Option 1 (preferred): Sharing the drive between Linux and Xbox

If you don't want to modify the MBR, you can access the partition directly instead. This requires some trickery!

First find the byte offset of the NTFS partition within the drive:

drive=your.drive.here
offset=`head -c 4k $drive | grep -aobuP '\x00\x00\x00NTFS' | sed 's/\:.*//'`

Now you can mount the partition directly like so:

mount $drive -o offset=$offset /mnt

Amazingly this actually worked for me. Go ahead and mount it. Make sure you do a full shutdown of the Xbox first or it will show up as an unclean filesystem, but linux can fix that for you.


Option 2 (risky): Fix the MBR to make the drive readable by Linux.

Before we begin, backup the MBR so it can restored:

dd if=your.drive.here bs=512 count=1 of=xbox.mbr.backup.bin

Then install lilo to fix the MBR

sudo apt install lilo
lilo -M your.drive.here mbr

Warning: The drive will remain unreadable by the Xbox until you restore the MBR back to its previous state. (Use dd to copy the backup file onto the drive)

As far as I can tell, this is the same thing that the Windows Equivalent app of this is doing (modifying the MBR) and it seems to work for them, but YMMV.