Hardware
Hardware Reference
Deep dive into the RT-900's hardware — MCU, RF chip, display, storage, and complete EEPROM memory map.
Physical Details
| Feature | Detail |
|---|---|
| Antenna connector | SMA-Female |
| Charging port | USB-C (bottom of radio) |
| Battery | 2200 mAh Li-Ion |
| Speaker/Mic jack | Kenwood-type 2-pin (2.5mm + 3.5mm) |
| Top knobs | Power/Volume (left), Channel/Frequency (right) |
MCU — BT32F0x
| Property | Value |
|---|---|
| Core | ARM Cortex-M0 |
| Clock | 72 MHz |
| Flash | 256 KB (0x08000000–0x0803FFFF) |
| RAM | 32 KB (0x20000000–0x20007FFF) |
| Oscillator | 8 MHz external (HSE) |
Note
Despite being a newer radio than the UV-K5, the RT-900 uses a weaker MCU — ARM Cortex-M0 — versus the UV-K5's Cortex-M0+ DP32G030. The M0 lacks the M0+'s single-cycle I/O port and improved pipeline, which affects GPIO-heavy tasks like bit-banged protocols and display rendering.
RF Transceiver — BK4819
The RT-900 uses the same BK4819 RF transceiver as the Quansheng UV-K5. The chips are register-compatible, which means firmware drivers and calibration tooling written for the UV-K5 translate directly.
| Signal | Pin | Description |
|---|---|---|
| SCN | PB10 | Chip select (active low) |
| SCK | PB11 | Serial clock |
| SDA | PB2 | Serial data (bidirectional) |
- Modulation: FM, AM, FSK, DTMF
- Tone signaling: CTCSS and DCS encode/decode in hardware
- RSSI: Hardware RSSI register — no external signal-strength hardware needed
- Squelch: Hardware squelch detection
- Audio: Integrated DAC/ADC — no separate audio codec IC required
Display — ST7735S
160×128 pixel color TFT LCD, driven over SPI2. The ST7735S is a common, well-documented controller with broad library support.
| Signal | Pin | Description |
|---|---|---|
| SCK | PA5 | SPI2 clock |
| MISO | PA6 | SPI2 MISO |
| MOSI | PA7 | SPI2 MOSI |
| CS | PB12 | Chip select |
| DC | PB14 | Data / Command select |
| RST | PA8 | Hardware reset |

Color depth: 16-bit RGB565 — 65,536 colors.
Storage — SPI NOR Flash
External SPI NOR flash holds all persistent radio data: channels, settings, calibration, splash screen, fonts, and voice prompts. It is connected on SPI1, sharing the bus with the display but using a separate chip select.
| Signal | Pin |
|---|---|
| SCK | PA5 |
| MISO | PA6 |
| MOSI | PA7 |
| CS | PA4 |
- Page size: 256 bytes
- Sector size: 4 KB (smallest erasable unit)
- Block size: 32 KB / 64 KB
FM Receiver — RDA5807
Broadcast FM reception is handled by a dedicated RDA5807 IC, separate from the BK4819 transceiver. It communicates over I2C.
- Bus: I2C
- Address:
0x20(write) /0x21(read) - Standard range: 76–108 MHz
- Extended range: 65–76 MHz
Keyboard
The main keypad is a 5×4 resistive matrix providing 20 keys, plus two independent side buttons.
| Role | Pins |
|---|---|
| Drive (columns) | PB0, PB1, PB2, PB3, PB4 |
| Sense (rows) | PC13, PC14, PC15, PB9 |
| Side buttons | Independent GPIO lines |
EEPROM Memory Map
All data lives in the external SPI NOR flash. The layout below covers the full address space as used by the stock RT-900 firmware.
| Address | Size | Purpose |
|---|---|---|
| 0x0000–0x7FFF | 32 KB | Channel data (1000 × 32 bytes) |
| 0x8000–0x807F | 128 B | VFO A/B settings |
| 0x9000–0x90FF | 256 B | Radio settings (wear-leveled) |
| 0x9040–0x90FF | 192 B | FM presets |
| 0xA000–0xA03F | 64 B | DTMF settings |
| 0xA200–0xA3FF | 512 B | Bank names |
| 0xB000–0xB0BF | 192 B | Machine ID |
| 0xB0C0–0xB0FF | 64 B | Machine name / callsign |
| 0xB500+ | var | Custom channel names |
| 0xC000–0xCFFF | 4 KB | Factory calibration |
| 0xD000+ | 4 KB | Extended frequency ranges |
| 0xE000–0xEFFF | 4 KB | System runtime data |
| 0xF000–0xF250 | ~600 B | RF calibration |
| 0x10000 | 64 KB | Splash screen |
| 0x20000 | 704 KB | Font bitmaps |
| 0x90000 | 512 KB | Voice prompt audio |
Channel Data Structure (32 bytes)
Each of the 1000 channel slots occupies exactly 32 bytes starting at 0x0000. Channel n starts at offset n × 32.
| Offset | Size | Field |
|---|---|---|
| 0 | 4 | RX frequency (Hz) |
| 4 | 4 | TX frequency (Hz) |
| 8 | 2 | RX CTCSS/DCS code |
| 10 | 2 | TX CTCSS/DCS code |
| 12 | 1 | DTMF group |
| 13 | 1 | PTT ID mode |
| 14 | 1 | TX power (0=High, 1=Mid, 2=Low) |
| 15 | 1 | Flags: bit6=BW, bit5-4=RX tone mode, bit3=optional tones, bit2=scan, bit0=enabled |
| 16 | 4 | Decoder code |
| 20 | 12 | Channel name (ASCII) |