Recent changes
Firmware
Latest OSU is always available through: 2026 2025 2024 2023 2022 2021 2020 2019 2018
BLISS Hack
Metadata Info Hardware attack (voltage fault injection) on the NBCORE rail to gain arbitrary code execution in SP (0SP) with SV-mode privileges. Prerequisites - Soldering and debugging skills - Knowledge about ARM Assembly - Launch console with Greybull motherboard + Zorro B0 SoC Instructions Ignorance is BLISS
Exploits
Software Retail - HostOS - External VBI loading (19.09.2019) - SystemOS Symbolic Link Exploit - Access restricted/encrypted volumes using the Xbox File Explorer (02.06.2017) - SystemOS Microsoft Edge - chakra.dll Info Leak (30.03.2017) - SystemOS Microsoft Edge - File System Access (XX.XX.20XX) - SystemOS Remote Code Execution - Xbox Live Messaging / WinJS injection (XX.XX.2019) - Browser access while offline - ECC Curveball - TLS certificate spoofing (CVE-2020-0601) (December 2019) - Code Execution via Game Script UWP App (08.06.2024)
Retail SKUs
This page aims to become an exhaustive list of every different motherboard models / SKUs out there. It is currently Work In Progress. At the moment, the following identificators are collected, and where to find them: For Xbox One Phat: - PCB Label Number: This is the number, starting with X, that appears on the motherboard's label, in the front layer. - PCB Soldermask Number: This is the number, starting with X, that appears on the bottom right or left corner of the motherboard, in the front layer. - Hardware description / differences: relevant changes in components, etc. - Owned by / Contributed by: who discovered the board revision. - Pictures. For Xbox One S/X: - Same as above. Update this page with where to find the identificators on the boards.
Bootanimation
Bootanimation is the Xbox loading animation showing at bootup of the console. The file is stored in XBFS as bootanim.dat. It uses a proprietary format, specific to the AMD GPU used on each console. Warning bootanim.dat is entirely proprietary GPU code and is fully model-dependent. It is not an asset container or portable format. Fully reversing it would require deep knowledge of each Xbox’s custom GPU firmware and boot display pipeline. Due to hardware variation across models, a universal or fully cracked format is not achievable. File format The file starts with a section header (BOOTANIMSECTIONHEADER) and then is followed by unknown data of size Header->SectionSize. If the following data starts with the header magic, an additional section follows. BOOTANIMSECTIONHEADER
Bootloaders / Bootchain
Bootloaders used on Xbox One. Bootchain overview This is a broad overview of the secure-bootchain of Xbox One PHAT/S/X. The Xbox Series-family might differ slightly from this, as they use a different primary bootmedium (SSD instead of eMMC Flash). SPBL Primary bootloader that is used for initialising the Security Processor, decrypting the future stages, verifying the console certificates, fuses and more. This sequence is split into 3 boot stages. - 0SP : Stored in SP ROM (factory) - 1SP : Patched into boot.bin
SMC
Firmware loaded by the Southbridge. SMC Fuses Not to be confused with the SoC fuses! SMC Fuses differ between retail and dev hardware. 0SMCBL (SMC ROM) Stored in maskrom in the southbridge. Apparently the same between retail and devkits (of same generation). 0SMCBL work-/error-flow SmcFault codes are output via UART1 (SMC UART aka. IR Blaster). This UART port is NOT routed to the FACET port; rather needs soldering to testpoints on the mainboard. 1smcbl gets copied from eMMC to 0x20000000 (SRAM), size: 0x8000 in one go; NO separate HEADER/BODY parsing. 0x20000001 is the entrypoint for 1SMCBL ~~and also our LR/PC hijack / payload destination~~. Exception handlers set "DebugData Error code and then spin infinitely.
Facet
The FACET port is a universal debugging port on all models of the Xbox One/Series-family. Features: - SPI / eMMC - I2C - POST code output - Kernel Debugging - Southbridge JTAG A special development board is used to interact with this port. Some early development kits have the FACET circuitry on-board and feature a female USB-B port for connecting directly to a PC. Connector
Southbridge
The custom southbridge is only slightly changed between console revisions, judging from its part number. Codenames: - Orion (Xbox One) - Santo (Xbox Series aka. Scarlett) Models - X861949-005 T6WD5XBG-0003 (Xbox One/Xbox One S) - X861949-007 T6WD5XBG-0003 (Xbox One X) Diagrams References - Southbridge / SoC diagram by IEEE Computer Society
NTFS USB overrides
What is this about ? The following folders / files can be created on a USB NTFS formated storage device to trigger operations during cold boot of the console. List of files / folders | ThrottleInfo.txt | File | TBD. | TitleHmbInfo.txt | File | TBD. Note: Some overrides may require a specific devkit capability certificate, $SystemUpdate, and/or $NoSurface be present to function / execute. $SystemUpdate\\consoles.txt can be created and added as an empty text file. The resulting build output from the console is unencryped and can be read in plaintext. hwinit.cfg is the console's answer to BIOS options. Overclocking is controlled by a byte at 0x8 and can have a value between 0x01 - 0x58. File Magic: 0x1-0x58 - 4E,49,57,48,02.Unknown FF range.
JWT Token Relying Parties
A list of all the current RelyingParties for XSTS JWT tokens was retrieved from https://title.mgt.xboxlive.com/titles/default/endpoints?type=1 and can be found below:
Console revisions
Revisions Reading revision via software C code Physical identification Right now we can only be sure about motherboard revision mapping. Mapping to actual console revisions is a very welcome contribution! XBOX ONE (PHAT) XBOX ONE S XBOX ONE X XBOX SERIES S
Event Tracing (ETW)
General Event Tracing is very useful to get deep insights into the operating system as pretty much every component is writing logs / metrics. On Xbox, there are two mechanisms to write out ETW information. - xbdiagcap.exe (C:\\xbdiag\\xbdiagcap.exe) - for a predefined set of logging providers - xperf.exe (C:\\Windows\\System32\\xperf.exe) - General usage of ETW To view the logs (.etl files) on a Desktop Windows, you can use Windows Performance Analyzer (WPA). If you have unsigned code execution in SystemOS, sealighter enables you to view the traces in realtime on the cmdline. Check this page on how to configure sealighter. xbdiag xbdiagcap will capture the system-predefined providers and write them out to T:\\Windows\Temp\XBDiagPackage.
AMD HDT (Hardware Debug Tool)
Introduction The AMD HDT (Hardware Debug Tool) is the name of a protocol (and supporting hardware adapters) for using JTAG with AMD SoCs, including the SoC that powers the Xbox One family of consoles, which is based on a Jaguar family (16h) design. Hardware Setup Hardware The front side of the Wombat board contains headers for HDT, HDT+, MPHDT, MPHDT+(Multi Processor? HDT, for systems with multiple cores), CSJTAG (Chip Select signals required for some devices) and SCAN (JTAG chain scanning?). It contains x4 seven-segment LCDs for displaying error codes. The box features 3 LED indicators, ERR (which always powers on briefly on boot), PWR (indicating correct power supply) and CONN (which indicates connection to the host PC). The device packs a 10/100 Mbps Ethernet port, an A-B switch which configures the mode of operation of the device, a RST (reset) button, and the barrel connector for the power supply (a 5V, 2A, positive-at-center connector). On the rear, the device has two BNC connectors for Trigger A and Trigger B signal inputs, a "USB Wiggler / Raven" header (purpose unknown), and a set of GPIOs that can be used to control relays on the target board, as well as 3.3V and CPU VDDIO power supply rails. Internally the device is powered by a Xilinx (now AMD) Spartan FPGA. Different voltage regulators step down the 5V input to supply the different rails of the FPGA and peripheral ICs. Setup Multiple generations of hardware adapters exist, each most suitable for specific ranges families of AMD SoCs. Similarly, certain releases of the software might deprecate support for older families of chipsets. Leaked documentation mentions older versions of Wombat which include a USB port, which was discarded in favour of the Ethernet interface.
Compiling for xbox
Since the Xbox One's System operating system is based on OneCore we can use the libraries provided in Visual Studio and the Windows SDK. The primary library that will solve our needs is named: 'OneCore.lib' or 'OneCoreUAP.lib'. This is known as an umbrella library which links the common Win32 API's that are common among all Windows 10 devices. You can learn more here: Requirements - Recommended: CMake - Visual Studio 2022 Community Edition (or higher): Workloads - WinUI application development - Desktop development with C++ Individual Components - MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest) - VS 2022 C++ x64/x86 Spectre-mitigated libs (Latest)
XCRDUtil
Manage mounting of XVD/XVC files in HostOS, from SystemOS. Xcrdutil can be used to get info about XVD files (and other formats) as well as mount and create XVD files with some limitations. Via the UWP sandbox, two different XVD files can be mounted, "Updater.xvd" and "SystemTools.xvd". The tool is located at C:\Windows\System32\xcrdutil.exe Accepted paths XCRDutil allows specifying remote paths, in HostOS, via two notations: - XCRD paths (see below, e.g. [XUC:]\package.xvd for User Content partition in HostOS). These paths are an abstraction to the HostOS filesystem, allowing to refer to .xvd's without knowing their exact location, and possibly also allowing for security / permission checks. - Global paths (e.g. \??\F:\ for F: / XBFS drive in HostOS). These refer to a physical volume (like a disk partition, the flash, etc) in HostOS. Not all the options/arguments for XCRDUtil expect the same format for the paths. Some options are able to work with paths pointing to the SystemOS's filesystem, while others may only work with remote paths to HostOS, in either one of the two types just specified previously: - XCRD paths. - Global paths pointing to a HostOS volume, which start with the non-standard \\??\\ prefix
Xbox Device Portal
The Xbox one has a Device portal that enables developers to install apps and recieve other data Managing the Device Portal Stopping the Device Portal sc stop webmanagement Starting the Device Portal sc start webmanagement Starting the Device Portal in debug mode WebManagement.exe -debug -HttpPort 11443 -TraceLevel 5 You will need to connect over HTTP rather than HTTPS on port 11443 Getting additional arguments from the Device Portal
Launching
A new instance of Game OS is created everytime a game is launched, the coordination of which is handled by System OS with the assistance of Host OS. There is not a single Game OS image, instead each game has the ability to include its own Game OS image as part of its XCRD user content ([XUC:]). Launch Sequence ERA Proxy UWP App (eraproxyapp.exe, SystemOS) The proxy app serves as an abstraction that allows SystemOS to launch games via normal UWP application interfaces with no awareness that it is backed by GameOS. It's responsibility is managing UWP lifecycle events (activate, suspend, resume, user change, window visibility change, window active change) dictated by SystemOS and proxying them to GameOS via the ERA Control Service. When the operationg system launches this process, it is given a single argument, -ServerName:XXXXXX. The value here corresponds with a UWP identifier, such as Vermintide2.App.AppX.mca. This value is one of many used when calling ERA Control Service to launch the ERA VM. Upon startup, the program will: 1. Invoke ERA Control Services EraAppControl.StartEraVm() method to kick off the ERA VM launch process 2. UWP app lifecycle kicks off via a call to CoreApplication.Run() which will invoke app initialization via calls to FrameworkViewSource.CreateView() and FrameworkView.Initialize() 3. App initialization begins Activate lifecycle event hook is installed via CoreApplicationView.Activated()
POST
POST codes on Xbox are sent by the southbridge via I2C to an optional MAX6958 IC to be displayed via 4x 7-Segment-Displays. I2C Address: 0x38 f.e. I2C SDA/SCL pads from FACET connector or RF Unit can be used. Website with POST / error codes: Schematic Reading POST codes There is a minimalistic POST monitor implemented via Raspberry Pi Pico. It simulates the MAX6958A I2C Slave and displays the gathered POST-codes via USB serial. Soldering 3 wires (I2C and GND) is necessary. Segments indicate the error-type.
Update Groups
What are Update Groups? Game Devkits are able to switch between the top three update groups listed below, allowing for targeting no updates, the latest GA (General Availabity) build, or the latest SA (Skip Ahead) build. There are a number of internal update IDs used for Dogfooding, Canary, and other purposes, but are of no use to the common person as Microsoft enforces an allowlist based on console ID. Update IDs