Project Beakon: UV-K5 Web Serial VHF Packet Mesh
Project Beakon is a decentralized, off-grid 5-Watt VHF packet mesh network designed as a high-penetration, high-power alternative to 915 MHz LoRa systems (such as Meshtastic).
By combining inexpensive Quansheng UV-K5 / K6 radio hardware running custom firmware with an Android smartphone running a local Web Serial client in Termux, Beakon enables reliable long-range text data messaging over 2-Meter VHF (144-148 MHz) without relying on cellular towers, satellites, or internet infrastructure.
Why 5W VHF Packet Mesh over 915 MHz LoRa?
While 915 MHz LoRa nodes (e.g. Meshtastic) are popular for off-grid mesh networking, 915 MHz radio waves suffer from high signal attenuation through forest foliage, dense terrain, and building structures due to their short wavelength. Furthermore, most LoRa nodes transmit at low power levels (100 mW to 500 mW).
| Key Requirement | Project Beakon (VHF Mesh) | Traditional 915 MHz LoRa |
|---|---|---|
| RF Transmit Power | 5 Watts (5,000 mW) | 100 mW - 500 mW |
| RF Frequency Band | 2-Meter VHF (144 - 148 MHz) | 915 MHz ISM / 433 MHz |
| Terrain & Foliage Penetration | Superior (Longer wavelength + 5W punch) | Poor (High absorption by trees & buildings) |
| Modulation Engine | Silicon BK4819 FSK2400 (Direct Reg 0x58-0x5B) | SX1262 LoRa Chirp Spread Spectrum |
| Packet Air Burst Time | ~200 ms (2400 bps hardware FIFO) | ~500 ms - 2000 ms (Slow air rate) |
| Hardware Node Cost | ~$15 - $20 USD (Quansheng UV-K5 radio) | ~$30 - $65 USD (ESP32 LoRa board) |
Core System Components
- Android Smartphone (Host): Runs Termux executing a local, zero-dependency Python HTTP server on loopback (`127.0.0.1`).
- Google Chrome (Network & UI Engine): Navigates to loopback origin and communicates directly with the radio hardware via the Web Serial API (`navigator.serial`). Chrome manages framing, deduplication, managed flood routing, and UI rendering.
- USB-C OTG Programming Link: standard 3.3V USB-to-UART (Kenwood 2-pin) programming cable connected to phone.
- Quansheng UV-K5 Radio: Custom open-source MCU firmware exposing CAT controls and Beken BK4819 internal silicon FSK modem registers.
System Architecture Overview
Project Beakon shifts complex networking logic away from microcontrollers and into Google Chrome executing on the Android host, utilizing the native Web Serial API to communicate directly with the transceiver MCU over UART.
│
▼ (USB-C OTG Cable @ 3.3V UART - 38,400 baud)
[Kenwood 2-Pin Connector] ➔ Speaker Cutoff Mechanism
│
▼
[DP32G030 Cortex-M0 MCU] ➔ Custom Firmware CAT Protocol
│
▼ (Direct SPI Register Writes 0x58-0x5B)
[Beken BK4819 Silicon FSK Modem] ➔ Bypass Analog Audio DSP & Voice Bandpass Filters!
│
▼ (5-Watt RF Burst @ 144.800 MHz)
[2-Meter VHF Antenna] ➔ Off-Grid Managed Flood Mesh
1. Client Host Layer
The client host is an Android smartphone running Termux. Termux serves the static application (`index.html`) via a local Python HTTP server bound exclusively to loopback (`127.0.0.1`). No external internet connectivity is required.
2. Frontend & Mesh Network Engine
Google Chrome on Android navigates to the local loopback origin. Chrome requests physical serial port access via `navigator.serial`. Chrome handles:
- Async packet framing via JavaScript `TransformStream` and custom line transformers.
- Deduplication cache (`seenPackets = new Set()`) to eliminate duplicate mesh transmissions.
- Managed flood routing algorithms, hop limit management, and re-transmit queues.
3. On-Radio Decoding & Telemetry Streaming
Incoming RF packets are decoded directly on the UV-K5 hardware in silicon rather than requiring audio sound-card demodulation:
- BK4819 hardware FSK engine detects the programmed sync-word in silicon.
- The chip clocks received bytes into internal RX FIFO buffers and flags an interrupt.
- The Cortex-M0 MCU validates frame CRC, wraps payload into formatted text (`+PKT:packetId,sender,target,hops,data\n`), and streams it over UART at 38,400 baud.
- Chrome's Web Serial stream reader receives the line asynchronously and updates the mesh routing state.
Radio RF Engine & Hardware FSK Advantages
Traditional ham radio digital modes (such as 1200 baud Bell 202 AFSK / APRS) feed audio tones into the radio's analog microphone input port. This subjects digital data to:
- 300 Hz – 3 kHz analog voice bandpass filters.
- Microphone limiter circuits & audio AGC clipping.
- Pre-emphasis & de-emphasis distortion curves.
Project Beakon bypasses all voice audio circuitry completely by writing directly to the Beken BK4819 FSK FIFO registers (`0x58` through `0x5B`). Data is modulated directly at the RF silicon layer!
BK4819 Direct Register Access Map
| Register Address | Register Name | Beakon Hardware Configuration |
|---|---|---|
| 0x58 | FSK Control & Sync Word | Enable FSK2400 flag, set 16-bit sync word match pattern |
| 0x59 | FSK Preamble Length | Set 8-byte preamble sequence for fast receiver squelch lock |
| 0x5A | FSK RX/TX FIFO Data Port | Direct digital byte FIFO buffer (bypasses voice DSP) |
| 0x5B | FSK Interrupt & Status | Sync-word detect interrupt + FIFO threshold trigger |
Hardware Cable & Interface Considerations
- Speaker Cutoff Switch: Inserting a standard Kenwood programming plug mechanically disconnects the radio's internal speaker path. Because Beakon operates digitally via BK4819 FSK registers over MCU UART, the radio stays quiet during digital bursts.
- Logic Levels: The UV-K5 Kenwood interface runs strictly at 3.3V UART logic levels.
Interactive Mesh Packet Explorer & Terminal Demo
Experience how the Beakon Chrome Web Serial engine frames packets, monitors UART telemetry, deduplicates mesh IDs, and executes managed flood routing:
VHF Node Topology Diagram
Reference Implementation: Web Serial Mesh Client
The following JavaScript reference implementation handles stream decoding via `TransformStream`, packet parsing, deduplication, and hop count managed flood routing:
Beakon 5W VHF vs Meshtastic 915 MHz LoRa
Detailed technical comparative analysis highlighting why 5-Watt 2-Meter VHF provides distinct propagation benefits over standard 915 MHz LoRa nodes:
| Parameter | Project Beakon | Meshtastic (LoRa) |
|---|---|---|
| Frequency Band | 144 - 148 MHz (2-Meter VHF) | 915 MHz ISM / 433 MHz |
| RF Power Output | 5.0 Watts (5000 mW) | 0.1 Watt - 0.5 Watt (100-500 mW) |
| Modulation | BK4819 Hardware FSK2400 (Silicon FIFO) | SX1262 LoRa Chirp Spread Spectrum |
| Data Rate | 2400 bps (~200ms RF burst duration) | ~250 bps - 1000 bps (Slower burst) |
| Foliage / Forest Absorption | Minimal (VHF long wave cuts through trees) | High (915MHz absorbed by wet leaves) |
| Diffraction around Hills | Excellent Knife-Edge Diffraction | Poor Non-Line-of-Sight performance |
| Hardware Cost per Node | ~$15 - $20 USD (Quansheng UV-K5 Radio) | ~$30 - $65 USD (LoRa Development Board) |
AI / LLM Engineering & Development Policy
🤖 AI/LLM Disclosure & Philosophical Position
Much of the Project Beakon codebase, system documentation, stream transformer routines, and UI architecture were built, refined, and authored using advanced Artificial Intelligence / Large Language Models (AI/LLMs).
We firmly embrace modern AI agents and LLMs as force multipliers for rapid software engineering, architectural prototyping, and hardware-software integration. Using AI allows solo developers and small teams to rapidly build complex, high-reliability mesh systems that would traditionally take months of manual boilerplate writing.
Why We Endorse AI-Accelerated Development:
- Speed to Prototype: Complex Web Serial APIs and stream transformers implemented in hours rather than weeks.
- Comprehensive Documentation: Thorough inline code explanations, flow diagrams, and specs generated concurrently with code.
- Zero Apologies: We view AI assistance as an essential technological evolution, analogous to moving from assembly to high-level languages.