Skip to content

xboxoneresearch/DuRFUnitI2C

Repository files navigation

Durango RF Unit I2C Tooling (Sonus for Xbox One)

GitHub Release

Tools for Xbox One RF Unit flash dumping, writing, and firmware editing with custom audio.

Important

Check out Compatibility section!

Note

Download the latest release from the Releases page

Technical documentation: Xbox One RF Unit Hardware

Compatibility

Console Works Out-of-the-Box DIY Mod Required
Xbox One PHAT (special edition)
Xbox One PHAT (standard)
Xbox One S
Xbox One X
Xbox Series S
Xbox Series X

Consoles requiring the DIY mod need the ISD9160 and supporting passive components soldered on. See DIY Special Editions for the full bill of materials and instructions.

Note

Fresh vs. salvaged ISD9160 chips:

  • Salvaged chips (removed from special-edition Xbox consoles) already contain firmware and can be flashed directly via I2C.
  • Fresh/new chips (purchased new) have no firmware and must be programmed via SWD before I2C flashing is possible. See ISD9160 Initial Flashing.

Features

  • RFUnit Tool: Play sounds, dump flash, write flash
  • VPE Tool: Play sounds from firmware, inject custom audio

Requirements

Hardware:

I2C Interface Device (choose one):

  • GreatFET One board
  • Raspberry Pi (non-Pico)
  • Micropython device (ESP8266, ESP32, Pi Pico, etc.)

Software: (for development)

  • uv (Python package manager) - Install uv
  • Python 3.x

Quick Start

Salvaged Chip Workflow

Use this path if your ISD9160 was removed from a special-edition Xbox console and already has firmware on it.

  1. Perform the DIY mod — solder the ISD9160 and supporting components
  2. Wire I2C connections (see Hardware Connections)
  3. Dump or write firmware using the GUI or CLI tool (see Usage)
  4. Power cycle the console and press the Xbox button to verify the sounds play

Fresh Chip Workflow

Use this path if your ISD9160 was purchased new and has no firmware.

  1. Perform the DIY mod — solder the ISD9160 and supporting components
  2. Cut the solder bridge between SWDIO and SWCLK to allow programming via SWD
  3. Flash initial firmware via SWD (see ISD9160 Initial Flashing)
  4. Wire I2C connections (see Hardware Connections)
  5. Write your custom firmware using the GUI or CLI tool (see Usage)
  6. Power cycle the console and press the Xbox button to verify the sounds play

Pi Pico: ISD9160 Already Installed

Use this path if the ISD9160 is already soldered on the RF Unit and has firmware (e.g. a salvaged chip), and you want to use a Pi Pico as the I2C interface.

Step 1 — Flash MicroPython onto the Pi Pico

  1. Hold the BOOTSEL button while plugging the Pi Pico into your PC — it mounts as a USB mass storage drive
  2. Download the latest MicroPython .uf2 for Pi Pico and copy it onto the drive
  3. The drive disappears and the Pico reboots automatically — MicroPython is now running

Step 2 — Wire the Pi Pico to the RF Unit

Pi Pico RF Unit signal
3V3 (Pin 36) 3V3
GND (any) GND
GP0 (Pin 1) SDA (DATA)
GP1 (Pin 2) SCL (CLOCK)

Refer to Hardware Connections for the matching pin numbers on the RF Unit side per console revision.

Step 3 — Dump or flash firmware

  • Dump: Run the executable rfunit-micropython and wait — dump.bin is saved alongside it
  • Flash: place flash.bin next to the executable, then run it and wait

See RFUnit Tool - MicroPython for full GUI and CLI instructions.

Step 4 — Cleanup

Unsolder all wiring between the Pi Pico and the RF Unit before reconnecting the RF Unit to the console.

Hardware Connections

RF Unit Pin Mapping:

Xbox / Pin 3V3 GND SDA (DATA) SCL (CLOCK) Notes
RF Unit (PHAT) 12 9 6 5 Solder bridge on R24; remove after use
RF Unit (One S) 7 11 16 15
FACET (Universal) NC 2 26 25 Connector on motherboard; see note below

Interface Device Pin Mapping:

Board / Pin 3V3 GND SDA (DATA) SCL (CLOCK)
GreatFET One 3V3 Any 39 40
Raspberry Pi 3V3 Any 3 (GPIO2 / I2C1) 5 (GPIO3 / I2C1)
Pi Pico 3V3 Any 1 (GP0) 2 (GP1)
ESP8266 3V3 Any GPIO 4 GPIO 5

Direct Xbox Motherboard (FACET) Connections

Required for the following console revisions:

  • Xbox One X
  • Xbox Series S
  • Xbox Series X

See FACET Hardware Documentation

Important:

  • DO NOT connect 3V3 power
  • DO NOT press the power button
  • Solder 300 Ohm resistor between SMC_RST (Pin 1) and GND
  • Xbox requires standby power (PSU connected, not powered on)
  • Desolder all connections after dumping/flashing

Reference Diagrams

Pi Pico Connection - Xbox One PHAT: Pi Pico RF Unit connection diagram PHAT

Pi Pico Connection - Xbox One S: Pi Pico RF Unit connection diagram One S

Tip

For playback testing after flashing new firmware (on Xbox One S/X), supply both 3.3V (ISD9160 logic) and 5V (speaker amplifier) to the RF unit. Using only 3.3V will result in no audio output from the speaker.

Usage

Installation

Option 1: Using Pre-built Binaries

  1. Download the latest release
  2. Extract and run the appropriate executable for your platform

Option 2: Manual Setup (Development)

  1. Install uv: https://docs.astral.sh/uv
  2. Clone repository: git clone https://github.com/xboxoneresearch/DuRFUnitI2C.git
  3. Install dependencies: uv sync

RFUnit Tool - GUI

Interactive tool for RF Unit control:

rfunit-gui

Or manually with uv:

uv run rfunit-gui

Device Selection:

  • GreatFET on Windows: Select "greatfet"
  • Pi Pico (MicroPython): Select "pico" (leave port blank, click Detect)
  • Raspberry Pi (Linux): Select "rpi"

Screenshots:

RFUnit GUI - Main

RFUnit GUI - Flash

RFUnit Tool - Command Line

For GreatFET or Raspberry Pi:

rfunit-cli

Or manually:

uv run rfunit-cli

RFUnit Tool - MicroPython

For devices running MicroPython (Pi Pico, ESP8266, ESP32):

Using Pre-built Binary:

rfunit-micropython

Manual Method:

  1. Identify serial port: dmesg | grep ttyACM (e.g., /dev/ttyACM0)
  2. Copy flash.bin to device:
    uv run pyboard --device /dev/ttyACM0 -f cp flash.bin :flash.bin
  3. Execute flash/dump:
    uv run pyboard --device /dev/ttyACM0 ./src/rfunit.py
  4. Copy dump back to PC:
    uv run pyboard --device /dev/ttyACM0 -f cp :dump.bin .

See Pyboard Tool Documentation

VPE Editor - Audio Tool

Edit audio in ISD9160 firmware files and create custom VPE blobs for Xbox One/S/X button sounds.

Requirements: Original firmware file as base

GUI:

vpe-gui

Or manually:

uv run vpe-gui

Command Line:

vpe-cli

Or manually:

uv run vpe-cli

VPE Tool Screenshot

Contributors

Special thanks to:

  • flynnyfoo for audio format decoding and GUI development
  • craftbenmine for initial hardware experiments, testing, and suggestions

About

Durango (Xbox One) RF Unit I2C tooling (Sonus)

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages