22
33# Durango RF Unit I2C tooling
44
5+ [ ![ GitHub Release] ( https://img.shields.io/github/v/release/xboxoneresearch/DuRFUnitI2C )] ( https://github.com/xboxoneresearch/DuRFUnitI2C/releases/latest )
6+
57> [ !WARNING]
68> Use at your own risk!
79
10+ > [ !INFO]
11+ > Grab the latest release @ [ Releases page] ( https://github.com/xboxoneresearch/DuRFUnitI2C/releases )
12+
13+ This repo contains tooling for Xbox One's RF Unit to dump / write flash and edit the firmware binaries with custom sounds.
14+
815Technical infos: < https://xboxoneresearch.github.io/wiki/hardware/rf-unit/ >
916
1017## Kudos
@@ -20,15 +27,37 @@ Special thanks to:
2027
2128I2C Device clients:
2229- GreatFET One board
30+
2331or
2432- Raspberry Pi (untested)
33+
2534or
35+
2636- Micropython device (ESP8266, ESP32, Pi Pico ..)
2737
2838Depending on the device, pull-up resistors might be necessary.
2939
30- ## Connections
40+ ## Quickstart Raspberry Pi Pico
41+
42+ - Download latest [ release] ( https://github.com/xboxoneresearch/DuRFUnitI2C/releases )
43+ - Unpack the archive
44+ - Read [ QUICKSTART_PICO.txt] ( ./QUICKSTART_PICO.txt )
45+ - Profit
46+
47+ ## Features
3148
49+ ** RFUnit tool**
50+
51+ - Play sounds
52+ - Dump flash
53+ - Write flash
54+
55+ ** VPE tool**
56+
57+ - Play sounds from firmware
58+ - Inject custom sounds
59+
60+ ## Connections
3261
3362| Xbox / Pin | 3V3 | GND | SDA (DATA) | SCL (CLOCK) | Note |
3463| ---------------- | --- | --- | ---------- | ----------- | ------------------------------------------------------ |
@@ -43,7 +72,7 @@ Depending on the device, pull-up resistors might be necessary.
4372| RasPi Pico | 3V3 | Any | 1 (GP0) | 2 (GP1) |
4473| ESP 8266 | 3V3 | Any | GPIO 4 | GPIO 5|
4574
46- ### Notes on FACET
75+ ### Notes when directly soldering to Xbox motherboard ( FACET-port)
4776
4877General info: [ Wiki] ( https://xboxoneresearch.github.io/wiki/hardware/facet/ )
4978
@@ -63,94 +92,77 @@ Xbox One S
6392
6493![ Pi Pico Rf Unit connection diagram One S] ( ./pi_pico_diagram_one_s.png )
6594
66- ## Features
67-
68- - Play sounds
69- - Dump flash
70- - Write flash
71-
7295## Usage
7396
7497- Solder I2C connections and 5V/3.3V/GND
75- - Install python requirements, preferrably in a python venv
76- - GreatFET: ` pip install greatfet `
77- - Raspberry Pi (not Pico): ` pip install smbus2 `
78- - Micropython: ` pip install pyserial tqdm `
7998- For flashing: Copy ` flash.bin ` next to script/executable
80- - Execute ` rfunit.py ` (see below for micropython)
99+ - Execute tool
100+ - For GreatFET / RPi (non-Pico): ` rfunit-cli ` for command-line
101+ - Graphical interface: ` rfunit-gui `
102+ - For Micropython (RPi Pico, ESP8266 ...): see below @ [ Micropython] ( #micropython )
81103
82104### GUI
83105
84106For interactive control (play sounds, dump/flash, raw command TX/RX), run:
85107
86- - ` python rfunit_gui.py `
108+ - ` rfunit-gui `
87109
88110Device notes:
89111
90112- GreatFET on Windows: select ` greatfet `
91113- Pi Pico running MicroPython: select ` pico ` (leave port blank and click ` Detect ` )
92114- Raspberry Pi (Linux): select ` rpi `
93115
116+ ![ RFUnit GUI - Screenshot Main] ( ./assets/rfunit_gui-main.png )
117+ ![ RFUnit GUI - Screenshot Flash] ( ./assets/rfunit_gui-flash.png )
118+
94119### Micropython
95120
96121Check [ Pyboard tool] ( https://docs.micropython.org/en/latest/reference/pyboard.py.html ) for an overview.
97122
98123Easy:
99124
100125- For flashing: Copy ` flash.bin ` next to script/executable
101- - Execute ` micropython_rfunit.py `
102-
103- Manual:
104-
105- - Identify the serial port where you micropython device got enumerated (via ` dmesg ` ), f.e. ` /dev/ttyACM0 `
106-
107- - Dumping
108- - Execute the script: ` ./vendor/pyboard.py --device /dev/ttyACM0 rfunit.py `
109- - Copy the dump to the PC: ` ./vendor/pyboard.py --device /dev/ttyACM0 -f cp :dump.bin . `
110- - Flashing
111- - Copy flash.bin to the Micropython device: ` ./vendor/pyboard.py --device /dev/ttyACM0 -f cp flash.bin :flash.bin `
112- - Execute the script: ` ./vendor/pyboard.py --device /dev/ttyACM0 rfunit.py `
126+ - Execute ` rfunit-micropython `
113127
114128## ISD9160 VPE Editor tool
115129
116130This tool can be used to playback audio segments of ISD9160 firmware files, wrapped in custom VPE blob.
117131Used on Xbox One/S/X for button-sounds.
118132
119- More features coming soon...
133+ NOTE: The tool requires an original firmware as a base.
134+
135+ Run: ` vpe-gui `
136+
137+ ![ VPE Editor screenshot] ( ./assets/vpe_gui-creator.png )
138+
139+ ## Manual
120140
121- Kudos to [ flynnyfoo ] ( https://github.com/FJCFJC123 ) for not giving up on this major task <3
141+ Obviously you can do everything manually too, instead of relying on the pyinstaller binaries.
122142
123- ### Requirements
143+ Requirements:
124144
125- - [ uv ] ( https://docs.astral.sh/uv/ )
145+ - Install uv ( < https://docs.astral.sh/uv > )
126146
127- ### Usage
147+ ### Micropython dump / flash
148+
149+ - Identify the serial port where you micropython device got enumerated (via ` dmesg ` ), f.e. ` /dev/ttyACM0 `
150+ - Dumping
151+ - Execute the script: ` uv run pyboard --device /dev/ttyACM0 ./src/rfunit.py `
152+ - Copy the dump to the PC: ` uv run pyboard --device /dev/ttyACM0 -f cp :dump.bin . `
153+ - Flashing
154+ - Copy flash.bin to the Micropython device: ` uv run pyboard --device /dev/ttyACM0 -f cp flash.bin :flash.bin `
155+ - Execute the script: ` uv run pyboard --device /dev/ttyACM0 ./src/rfunit.py `
128156
129- Run the GUI
157+ ### RFUnit GUI
130158
131- ```
132- uv run vpe_gui.py
133- ```
159+ Run: ` uv run rfunit-gui `
134160
161+ ### VPE Editor (CLI)
135162
136- ## Flashdump
163+ Run: ` uv run vpe-cli `
137164
138- Size: 0x24400
165+ ### VPE Editor (GUI)
139166
140- Checksum (SHA256)
141- ```
142- 8150af1889203260bbbd25884447c0540f1cbc843a13e86bb0b6d501a6d032e1 dump_phat_cod_aw.bin
143- 3789e76fd6c37bdf39751afd6164c1d8d67a53c31eca5b630901210b55753dba dump_phat_forza6.bin
144- 388d252d7783fd2946b9b3fca57ecd1ed13a4f17ea6665f577da34224f9930da dump_phat_halo5.bin
145- abc699513959372faee038c78a1d7509c2020f65cb78ad07ab9c90b21b406a87 dump_phat_retail.bin
146- 4812af697716464dff1a49e0ab2f45497492fec71aa0a73308f522db45d2b42e dump_one_s_minecraft.bin
147- 222fcaec65d1ffd7f275616df1af5f1128d34e3b32035e3377ab48f91b232ffc dump_one_s_gow4.bin
148- c39871fcfef69c632955658f8e876d35a35dafb9c88c7fc082dca23d2102289f dump_one_x_tacobell.bin
149- ```
167+ Run: ` uv run vpe-gui `
150168
151- Some strings
152- ```
153- ISD9160FIMS03 FW Jun 14 2013 at 10:41:12 (C) Nuvoton 2013
154- Nuvoton ISD9160MS Boot FW Jun 14 2013 10:40:21
155- ISD-VPE Ver 920.000c 08/05/2013 PV_Prod_Units_Rev5 VERSION:0x10000007
156- ```
0 commit comments