BK4819
BK4819 Register Reference
The BK4819 is the RF transceiver at the heart of both the RT-900 and the UV-K5. Understanding its registers is key to customizing radio behavior.
Key Registers
| Register | Name | Description |
|---|---|---|
| 0x07 | CTCSS Freq | CTCSS tone frequency setting |
| 0x08 | DCS Data | DCS code data (low/high 12-bit) |
| 0x0C | Status | RSSI level, squelch status, CTCSS/DCS detection flags |
| 0x30 | Mic Control | Microphone enable/disable, PGA gain |
| 0x31 | Volume | Audio output volume/gain (0–63, 0.5 dB per step) |
| 0x33 | GPIO | GPIO control for PA enable, LED, speaker |
| 0x36 | PA Control | Power amplifier enable and gain setting |
| 0x40 | Bandwidth | Receiver bandwidth and audio path configuration |
| 0x51 | Tone Mode | CTCSS/DCS mode selection and gain |
| 0x52 | Tone Detect | CTCSS/DCS detection enable and status readback |
| 0x7D | Mod Depth | Modulation depth control |
| 0x7E | Volume Table | Volume gain lookup table access |
Modulation Modes
| Value | Mode | Description |
|---|---|---|
| 0 | FM | Standard frequency modulation — primary mode |
| 2 | DTMF | Dual-tone multi-frequency encoding and decoding |
| 3 | FSK | Frequency Shift Keying at 1200 baud — digital messaging |
| 4 | Selcall | Selective calling — address individual radios |
| 6 | AM | Amplitude modulation reception (airband, SW) |

FSK Capability
The BK4819 has a hardware FSK modem — the same one used for text messaging on the UV-K5 with rfsplatter firmware. The RT-900 stock firmware already implements FSK functions:
- Baud rate: 1200 (register
0x32=0x3065) - Enter FSK mode:
Rfic_EnterFSKMode() - Transmit data:
Rfic_FskTransmit(uint16_t *pData) - Receive data:
Rfic_ReadFskData(uint16_t *pData) - Check RX flag:
Rfic_GetFskRxFlag() - Exit FSK mode:
Rfic_ExitFSKMode()
Cross-radio messaging
Since both the RT-900 and UV-K5 use the same BK4819 FSK engine, cross-radio text messaging is theoretically possible. A custom RT-900 firmware could exchange messages with UV-K5 radios running rfsplatter firmware — same protocol, same modulation, just different displays.
CTCSS Tone Table

The BK4819 supports 51 standard CTCSS tones. Values are stored as frequency × 10 (e.g., 67.0 Hz = 670).
| Hz | Hz | Hz | Hz | Hz |
|---|---|---|---|---|
| 67.0 | 69.3 | 71.9 | 74.4 | 77.0 |
| 79.7 | 82.5 | 85.4 | 88.5 | 91.5 |
| 94.8 | 97.4 | 100.0 | 103.5 | 107.2 |
| 110.9 | 114.8 | 118.8 | 123.0 | 127.3 |
| 131.8 | 136.5 | 141.3 | 146.2 | 151.4 |
| 156.7 | 159.8 | 162.2 | 165.5 | 167.9 |
| 171.3 | 173.8 | 177.3 | 179.9 | 183.5 |
| 186.2 | 189.9 | 192.8 | 196.6 | 199.5 |
| 203.5 | 206.5 | 210.7 | 218.1 | 225.7 |
| 229.1 | 233.6 | 241.8 | 250.3 | 254.1 |
DCS Codes
105 standard DCS codes in octal format.
| Code | Code | Code | Code | Code | Code | Code |
|---|---|---|---|---|---|---|
| 023 | 025 | 026 | 031 | 032 | 036 | 043 |
| 047 | 051 | 053 | 054 | 065 | 071 | 072 |
| 073 | 074 | 114 | 115 | 116 | 122 | 125 |
| 131 | 132 | 134 | 143 | 145 | 152 | 155 |
| 156 | 162 | 165 | 172 | 174 | 205 | 212 |
| 223 | 225 | 226 | 243 | 244 | 245 | 246 |
| 251 | 252 | 255 | 261 | 263 | 265 | 266 |
| 271 | 274 | 306 | 311 | 315 | 325 | 331 |
| 332 | 343 | 346 | 351 | 356 | 364 | 365 |
| 371 | 411 | 412 | 413 | 423 | 431 | 432 |
| 445 | 446 | 452 | 454 | 455 | 462 | 464 |
| 465 | 466 | 503 | 506 | 516 | 523 | 526 |
| 532 | 546 | 565 | 606 | 612 | 624 | 627 |
| 631 | 632 | 654 | 662 | 664 | 703 | 712 |
| 723 | 731 | 732 | 734 | 743 | 754 |
UV-K5 Comparison
| Feature | UV-K5 | RT-900 |
|---|---|---|
| FSK messaging | Community firmware only | Stock firmware has FSK functions |
| AM reception | Community firmware only | Available (mode 6) |
| DTMF decode | Basic | Full encoder + decoder |
| Power control | 3 levels, basic curves | 3 levels, per-band APC curves |
| Tone detection | CTCSS/DCS | CTCSS/DCS + QT scan |
| Selective call | Not implemented | Implemented (mode 4) |
| Display | Monochrome 128×64 | Color 160×128 |
| Channels | 200 | 1000 |