Tools for Xbox One RF Unit flash dumping, writing, and firmware editing with custom audio.
Warning
Use at your own risk!
Important
Download the latest release from the Releases page
Technical documentation: Xbox One RF Unit Hardware
- RFUnit Tool: Play sounds, dump flash, write flash
- VPE Tool: Play sounds from firmware, inject custom audio
Hardware:
- Xbox One PHAT or One S RF Unit board
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
For Other Devices:
- Wire I2C connections (see Hardware Connections section)
- Use GUI or CLI tool (see Usage section)
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 |
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:

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


