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
| 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.
- RFUnit Tool: Play sounds, dump flash, write flash
- VPE Tool: Play sounds from firmware, inject custom audio
Hardware:
- Compatible RF Unit or Xbox motherboard (see Compatibility)
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
Use this path if your ISD9160 was removed from a special-edition Xbox console and already has firmware on it.
- Perform the DIY mod — solder the ISD9160 and supporting components
- Wire I2C connections (see Hardware Connections)
- Dump or write firmware using the GUI or CLI tool (see Usage)
- Power cycle the console and press the Xbox button to verify the sounds play
Use this path if your ISD9160 was purchased new and has no firmware.
- Perform the DIY mod — solder the ISD9160 and supporting components
- Cut the solder bridge between SWDIO and SWCLK to allow programming via SWD
- Flash initial firmware via SWD (see ISD9160 Initial Flashing)
- Wire I2C connections (see Hardware Connections)
- Write your custom firmware using the GUI or CLI tool (see Usage)
- Power cycle the console and press the Xbox button to verify the sounds play
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
- Hold the BOOTSEL button while plugging the Pi Pico into your PC — it mounts as a USB mass storage drive
- Download the latest MicroPython .uf2 for Pi Pico and copy it onto the drive
- 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-micropythonand wait —dump.binis saved alongside it - Flash: place
flash.binnext 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.
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 |
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
Pi Pico Connection - Xbox One PHAT:

Pi Pico Connection - Xbox 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.
Option 1: Using Pre-built Binaries
- Download the latest release
- Extract and run the appropriate executable for your platform
Option 2: Manual Setup (Development)
- Install uv: https://docs.astral.sh/uv
- Clone repository:
git clone https://github.com/xboxoneresearch/DuRFUnitI2C.git - Install dependencies:
uv sync
Interactive tool for RF Unit control:
rfunit-guiOr manually with uv:
uv run rfunit-guiDevice Selection:
- GreatFET on Windows: Select "greatfet"
- Pi Pico (MicroPython): Select "pico" (leave port blank, click Detect)
- Raspberry Pi (Linux): Select "rpi"
Screenshots:
For GreatFET or Raspberry Pi:
rfunit-cliOr manually:
uv run rfunit-cliFor devices running MicroPython (Pi Pico, ESP8266, ESP32):
Using Pre-built Binary:
rfunit-micropythonManual Method:
- Identify serial port:
dmesg | grep ttyACM(e.g.,/dev/ttyACM0) - Copy flash.bin to device:
uv run pyboard --device /dev/ttyACM0 -f cp flash.bin :flash.bin
- Execute flash/dump:
uv run pyboard --device /dev/ttyACM0 ./src/rfunit.py
- Copy dump back to PC:
uv run pyboard --device /dev/ttyACM0 -f cp :dump.bin .
See Pyboard Tool Documentation
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-guiOr manually:
uv run vpe-guiCommand Line:
vpe-cliOr manually:
uv run vpe-cliSpecial thanks to:
- flynnyfoo for audio format decoding and GUI development
- craftbenmine for initial hardware experiments, testing, and suggestions


