Project Beakon - UV-K5 Web Serial VHF Packet Mesh System [Official Project Home]
_
□
X
File Architecture Hardware Specs Demo / Simulator Code Ref AI Policy Vs LoRa
🤖 AI / LLM Development Notice

Much of the Project Beakon codebase, architecture documentation, and stream engineering was written and refined using Artificial Intelligence / Large Language Models (AI/LLMs).

We strongly support and advocate for the use of modern AI coding assistants to accelerate rapid development, prototyping, and complex network engineering.

"If people disagree with the use of AI in development, that is entirely on them."
Project Specs
RF Output: 5 Watts (5000 mW)
Frequency: 2m VHF (144-148 MHz)
Modulation: Beken BK4819 FSK
Data Speed: 2400 bps 2-FSK
Host Engine: Chrome Web Serial API
Host OS: Android + Termux
Hardware: Quansheng UV-K5
Quick Navigation
PROJECT STATUS
ACTIVE DEVELOPMENT
Version 1.0.0-VHF

Project Beakon: UV-K5 Web Serial VHF Packet Mesh

Project Concept & Vision

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.

End-to-End Hardware & Data Flow
[Android Phone] ➔ Termux (Python HTTP Server) ➔ Chrome (Web Serial API)
    │
    ▼ (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:

  1. BK4819 hardware FSK engine detects the programmed sync-word in silicon.
  2. The chip clocks received bytes into internal RX FIFO buffers and flags an interrupt.
  3. 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.
  4. Chrome's Web Serial stream reader receives the line asynchronously and updates the mesh routing state.

Radio RF Engine & Hardware FSK Advantages

🚫 The Voice Filter Bypass Advantage

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:

Web Serial API Link (navigator.serial Simulation)
PORT CLOSED [USB OTG Kenwood 3.3V UART]
[SYSTEM] Beakon Mesh Control Engine v1.0 ready.
[SYSTEM] Click 'Connect Web Serial' or send test packets to explore.
5W VHF Packet Transmitter (144.800 MHz)

VHF Node Topology Diagram

Click on canvas to emit 5-Watt RF propagation pulses across simulated terrain nodes.

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:

// ========================================================= // Reference Implementation: Web Serial Mesh Client // ========================================================= // Stream Parser for incoming UART packets class LineBreakTransformer { constructor() { this.container = ''; } transform(chunk, controller) { this.container += chunk; const lines = this.container.split('\n'); this.container = lines.pop(); for (const line of lines) { if (line.trim().length > 0) controller.enqueue(line.trim()); } } flush(controller) { if (this.container.trim().length > 0) controller.enqueue(this.container.trim()); } } // Background Listener Loop async function startPacketListener(port) { const textDecoder = new TextDecoderStream(); port.readable.pipeTo(textDecoder.writable); const lineStream = textDecoder.readable.pipeThrough(new TransformStream(new LineBreakTransformer())); const reader = lineStream.getReader(); while (true) { const { value, done } = await reader.read(); if (done) break; handleIncomingRadioPacket(value); } } // Managed Flood Routing Handler const seenPackets = new Set(); function handleIncomingRadioPacket(rawLine) { if (!rawLine.startsWith('+PKT:')) return; const [packetId, sender, target, hops, ...msgParts] = rawLine.substring(5).split(','); const message = msgParts.join(','); if (seenPackets.has(packetId)) return; // Deduplicate! seenPackets.add(packetId); renderMessageToUI(sender, message); let hopCount = parseInt(hops, 10); if (hopCount > 0 && target !== myStationId) { hopCount--; queueRetransmit(packetId, sender, target, hopCount, message); } }

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

Statement on AI-Assisted Development

🤖 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.

"We fully support the use of AI for rapid development. If people disagree with the use of AI in software engineering, that is entirely on them."

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.
System Ready | 5W 2m VHF (144.800 MHz)
BK4819 Silicon FSK2400 Active
AI-Enhanced Build: True