Skip to content

Bootloaders

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).

sequenceDiagram
  autonumber

  box Southbridge
    participant smc as SMC
  end

  box APU (ARM)
    participant sp as Security Processor<br>SP
    participant scp as Streaming Crypto Processor<br>SCP
  end

  box APU (x86)
    participant cpu as CPU<br>x64
  end

  box Hydra
    participant hv as Hypervisor
    participant hostos as HostOS
    participant systemos as SystemOS
    participant titleos as TitleOS
  end

note over smc: 0SMCBL (ROM)
note over smc: 1SMCBL<br>(Flash: 1smcbl_*.bin)
note over smc: 2SMCBL<br>SMCFW<br>(Flash: smcfw.bin)

smc->>sp: Powerup SP
smc->smc: SMC mainloop

note over sp: 0SP (ROM)

critical boot.bin
    note over sp: 1SP (Flash)
    note over sp: 2SP (Flash)
    sp->>cpu: Decrypt / Load 2BL
    note over cpu: 2BL
    cpu->>scp: Decrypt / Load SCP FW
    note over cpu: Host VBI
    cpu->>scp: Decrypt / Upload keytable
    cpu->>hv: Load hvax64
    cpu->>hostos: Load Host VBI
end

note over cpu: Host XVD (Flash)
cpu->>hostos: Load host.xvd

opt Recovery mode
    hostos->>hostos: Show Recovery Menu
end

critical system.xvd
    note over hostos: System VBI (HDD)
    hostos->>systemos: Load System VBI
    note over hostos: System XVD (HDD)
    hostos->>systemos: Load system.xvd
end
note over systemos: Start Game
systemos->>hostos: Request VM Start

critical Game XVC
    note over hostos: ERA / GameCore VBI<br>(HDD)
    hostos->>titleos: Load Host VBI
    note over hostos: ERA / GameCore XVD<br>(HDD)
    hostos->>titleos: Load host.xvd
end

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
  • 2SP : Patched into boot.bin

SMC

  • 0SMCBL: Stored in SB ROM (factory)
  • 1SMCBL: In Flash, named 1smcbl_{a,b}.bin
  • 2SMCBL / SMCFW: In Flash, named smcfw.bin

2BL

Started after the SP has completed its boot. Proceeds to intialise the rest of the console and then begins booting into the Host VBI.

SCP

(S)treaming (C)rypto (P)rocessor - internal crypto engine on the APU die. Data blob that is uploaded to the SCP, for initialization?! Initialization phase: Unknown, somewhere in between 2BL and VBI.

VBI

Final boot stage which initialises the critical components of the operating system, and essentially acts as a bootstrap.

Authors: Emily, tuxuser