No description
Find a file
Light-Fighter-Manifesto 94ceafeeee Fix ALSA control handling and add radio-specific ALC guidance
ALSA Control Fixes (hardware.py):
- Properly distinguish Mic Capture (RX input) from Mic Playback (sidetone)
- Explicitly mute Mic Playback to prevent monitoring feedback
- Remove incorrect "cap" flag usage on level controls
- Validate AGC disable success and report status
- Add "monitoring" category for sidetone controls

API Enhancement (app.py):
- Add ALC guidance to /api/config-info endpoint
- Return alc_target, alc_guidance, alc_reversed per radio
- Provide manufacturer-specific defaults (Xiegu reversed, Icom minimal, etc.)

UI Improvements (status.html):
- Add radio-specific ALC guidance section
- Update ALSA slider labels: Speaker (TX→Radio), Mic Capture (RX←Radio)
- Add AGC and monitoring status display
- Expand troubleshooting with detailed step-by-step instructions

Documentation (radios.json, CLAUDE.md):
- Add alc_notes section with manufacturer guidance
- Add alc_target/alc_guidance/alc_reversed to Xiegu radios
- Document ALSA control differences and ALC targets by manufacturer

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 15:00:18 -05:00
.github/ISSUE_TEMPLATE ReticulumHF: Reticulum mesh networking over HF radio 2025-12-17 05:40:19 -05:00
configs Fix ALSA control handling and add radio-specific ALC guidance 2026-01-29 15:00:18 -05:00
image Fix WiFi SSID in build script: ReticulumHF (not ReticulumHF-Setup) 2026-01-27 17:55:45 -05:00
scripts v1.0: HF-only release with setup wizard 2026-01-12 12:27:08 -05:00
services Audit fixes: config persistence, security, and code quality 2026-01-27 05:33:55 -05:00
setup-portal Fix ALSA control handling and add radio-specific ALC guidance 2026-01-29 15:00:18 -05:00
Testing/Postman Collections Create ReticulumHF.postman_collection.json 2026-01-12 10:04:18 -05:00
.gitignore ReticulumHF: Reticulum mesh networking over HF radio 2025-12-17 05:40:19 -05:00
CLAUDE.md Fix ALSA control handling and add radio-specific ALC guidance 2026-01-29 15:00:18 -05:00
CONTRIBUTING.md Update project name in CONTRIBUTING.md 2026-01-29 08:58:22 -05:00
LICENSE ReticulumHF: Reticulum mesh networking over HF radio 2025-12-17 05:40:19 -05:00
README.md Update README for v0.2.0-alpha 2026-01-29 08:58:44 -05:00

ReticulumHF

v0.2.0-alpha - Reticulum over HF radio using FreeDV.

Overview

Runs Reticulum over HF radio using FreeDV data modes. Provides encrypted peer-to-peer communication without internet infrastructure.

Key Features:

  • Web-based setup wizard - no command line required
  • Audio level monitoring and ALSA mixer controls
  • FreeDV mode selection based on band conditions
  • VOX mode support for audio-only interfaces
  • Works with Sideband, MeshChat, NomadNet

Tested Radios:

  • Xiegu G90 (Digirig Mobile)
  • Yaesu FT-818 (Digirig Mobile)
  • (tr)uSDX (Digirig Lite + VOX)

Pre-built Image

Download the SD card image, flash it, boot, configure via web portal.

Download

reticulumhf-v0.2.0-alpha.img.xz

Quick Start

  1. Flash to SD card using Raspberry Pi Imager
  2. Insert SD card, connect radio via Digirig, power on
  3. Connect to WiFi: ReticulumHF (password: reticulumhf)
  4. Open http://192.168.4.1 in browser
  5. Complete 6-step setup wizard
  6. Connect Sideband to 192.168.4.1:4242

Setup Wizard (6 Steps)

  1. Select Radio - Choose from supported radios (tested radios marked)
  2. Radio Settings - Configure your radio with the displayed menu values
  3. Hardware Detection - Automatically detects Digirig, serial port, audio device
  4. Test Connection - Verify CAT and PTT (or check "Using VOX mode" for audio-only)
  5. Network Security - Optional IFAC encryption for the gateway
  6. Start Gateway - Launches services and redirects to status page

Status Page Features

  • Audio Level Monitoring - Real-time VU meter with guidance
    • Tune to active frequency (7.078 JS8Call, 14.074 FT8) to verify audio
    • Target: -10 to -5 dB on incoming signals
    • Noise floor at -30 to -60 dB is normal
  • ALSA Mixer Controls - Adjust RX input/output levels from the web UI
  • TX Audio Level - Adjustable output volume (-20 to 0 dB) to prevent ALC activation
    • Default: -6 dB (safe for most radios)
    • Reduce if radio power fluctuates during TX
  • FreeDV Mode Selection - Switch between DATAC1/DATAC3/DATAC4 based on conditions
  • Service Controls - Restart/view logs for rnsd, rigctld, freedvtnc2
  • Troubleshooting Tips - Common issues and solutions

FreeDV Modes

Mode Bitrate Min SNR Use Case
DATAC1 290 bps 5 dB Default - good conditions
DATAC3 124 bps 0 dB Moderate conditions
DATAC4 87 bps -4 dB Poor conditions, weak signals

IMPORTANT: All stations must use the same FreeDV mode to communicate. Coordinate with other operators before changing modes.

Network Configuration

Setting Value
WiFi SSID ReticulumHF
WiFi Password reticulumhf
Gateway IP 192.168.4.1
Web Portal http://192.168.4.1
RNS Gateway Port 4242 (all clients)
SSH pi / reticulumhf

Client Connections

All clients connect using TCP Client Interface on port 4242.

Sideband / Columba: Settings → Connectivity → Add Interface → TCP Client

Setting Value
Interface Type TCP Client Interface
Address 192.168.4.1
Port 4242

MeshChat: Settings → Interfaces → Add → TCP Client Interface

Setting Value
Interface Type TCP Client Interface
Target Host 192.168.4.1
Target Port 4242

Note: If IFAC is configured on the gateway, clients must use matching IFAC Name and Passphrase.

What's Included

  • Raspberry Pi OS Bookworm Lite (64-bit)
  • RNS (Reticulum Network Stack)
  • freedvtnc2 (FreeDV modem)
  • codec2 (built from source)
  • Hamlib rigctld (CAT/PTT control)
  • Web portal with setup wizard and status dashboard

Verified Hardware

Component Model Notes
Computer Raspberry Pi 4 (4GB) Recommended
Radio Xiegu G90 TESTED - Hamlib 3088, PTT via RTS
Radio Yaesu FT-818 TESTED - Hamlib 1020 (FT-817), PTT via RTS
Radio (tr)uSDX TESTED - VOX mode, Digirig Lite
Interface Digirig Mobile CAT + Audio (recommended)
Interface Digirig Lite Audio only - use VOX mode
Phone App Sideband (Android/iOS) Port 4242
Desktop App MeshChat Port 8001, KISS framing

Radio-Specific Notes

Xiegu G90:

  • Mode: USB-D (USB Digital)
  • AGC: OFF
  • AUX IN: 10, AUX OUT: 13
  • Hamlib model: 3088, Baud: 19200

Yaesu FT-818:

  • Mode: USB or DIG
  • Use Hamlib model 1020 (FT-817), NOT 1041
  • Baud: 4800
  • Set appropriate menu items for DATA input

(tr)uSDX:

  • Mode: USB
  • Enable VOX (Menu 3.1: ON)
  • Adjust Noise Gate (Menu 3.2) for reliable PTT
  • Volume (Menu 1.1): 8-10
  • TX Drive (Menu 3.3): 4
  • Requires Digirig Lite or similar audio interface

Manual Installation

For building from scratch on existing Raspberry Pi OS.

Prerequisites

sudo apt update && sudo apt upgrade -y
sudo apt install -y git build-essential cmake python3 python3-pip python3-venv \
    portaudio19-dev alsa-utils libhamlib-utils libhamlib-dev pipx
pipx ensurepath
source ~/.bashrc

Build Codec2

cd ~
git clone https://github.com/drowe67/codec2.git
cd codec2 && mkdir build_linux && cd build_linux
cmake .. && make && sudo make install && sudo ldconfig

Install Reticulum Stack

pipx install rns
pipx install nomadnet
pipx install freedvtnc2
pipx runpip rns install numpy pyaudio scipy

Configure Reticulum

Edit ~/.reticulum/config:

[reticulum]
  enable_transport = no

[interfaces]
  [[Default Interface]]
    type = AutoInterface
    enabled = yes

  [[FreeDV HF]]
    type = TCPClientInterface
    enabled = yes
    target_host = 127.0.0.1
    target_port = 8001
    kiss_framing = yes

Start Services

# Start rigctld (for CAT-controlled PTT)
rigctld -m 3088 -r /dev/ttyUSB0 -s 19200 -t 4532 -P RTS &

# Start freedvtnc2
freedvtnc2 --input-device 1 --output-device 1 --mode DATAC1 \
    --rigctld-port 4532 --kiss-tcp-port 8001 --kiss-tcp-address 0.0.0.0 \
    --ptt-on-delay-ms 300 --ptt-off-delay-ms 200 --output-volume -6

# For VOX mode (no CAT), use --rigctld-port 0
# Reduce --output-volume to -10 or lower if radio ALC activates (power fluctuates)

Troubleshooting

Hardware Check

lsusb                      # List USB devices
arecord -l                 # List audio devices
ls -la /dev/ttyUSB*        # List serial ports

CAT/PTT Test

rigctl -m 3088 -r /dev/ttyUSB0 -s 19200 f    # Get frequency
rigctl -m 3088 -r /dev/ttyUSB0 -s 19200 T 1  # Key transmitter
rigctl -m 3088 -r /dev/ttyUSB0 -s 19200 T 0  # Unkey

Common Issues

Radio power fluctuates during TX (4-10W instead of steady 10W):

  • ALC is activating due to TX audio being too hot
  • Reduce TX Audio Level on status page (try -8 to -12 dB)

Audio in use by modem:

  • Status page shows "Audio in use by modem" - click to temporarily stop modem for level check
  • Modem automatically restarts after 5 seconds

No serial port detected:

  • Check USB cable connection
  • Verify Digirig LED is lit
  • Run dmesg | tail after plugging in

Radio not keying:

  • Verify rigctld is running: systemctl status rigctld
  • Test PTT manually: rigctl -m 3088 -r /dev/ttyUSB0 -s 19200 T 1
  • For VOX: check radio VOX settings and audio levels

Can't connect from phone:

  • Verify connected to ReticulumHF WiFi
  • Check interface settings match (TCP Client, 192.168.4.1:4242)
  • Verify IFAC settings match if configured

Can't decode signals:

  • Verify both stations using same FreeDV mode
  • Check audio levels: target -10 to -5 dB on signals
  • Try DATAC4 for weak signal conditions

Architecture

┌─────────────────────────────────────────────────────────────────┐
│  Client (Sideband/MeshChat/NomadNet)                            │
│  TCP Client Interface → 192.168.4.1:4242                        │
└─────────────────────────────┬───────────────────────────────────┘
                              │ WiFi (TCP:4242)
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│  Raspberry Pi (ReticulumHF Gateway)                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐              │
│  │    rnsd     │──│ freedvtnc2  │──│  rigctld    │              │
│  │  (TCP:4242) │  │  (TCP:8001) │  │  (TCP:4532) │              │
│  │  boundary   │  │  FreeDV     │  │  CAT/PTT    │              │
│  └─────────────┘  └─────────────┘  └─────────────┘              │
└─────────────────────────────┬───────────────────────────────────┘
                              │ USB (Audio + CAT)
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│  Digirig Mobile/Lite                                            │
└─────────────────────────────┬───────────────────────────────────┘
                              │ Audio + PTT
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│  HF Radio (G90 / FT-818 / truSDX)                               │
└─────────────────────────────────────────────────────────────────┘

References

License

MIT License - See LICENSE file

Author

Light Fighter Manifesto L.L.C. https://lightfightermanifesto.org