Radio Channels

Configure modem type, frequencies, and demodulator settings

A radio channel ties an audio device to a modem configuration. Each channel represents one RF path — typically one radio on one frequency. Graywolf supports multiple simultaneous channels, allowing you to monitor and transmit on several frequencies or modulation modes at once.

Channels page showing a VHF APRS channel with AFSK modem at 1200 bps
Each channel card shows the modem type, audio devices, bit rate, and CSMA settings

Channel Settings

FieldDefaultDescription
name Display name (e.g., “VHF 144.39”)
input_device_id Audio input device (required)
input_channel 0 Audio channel: 0 = left/mono, 1 = right
output_device_id 0 Audio output device (0 = receive only)
output_channel 0 Output audio channel: 0 = left/mono, 1 = right

Modem Types

AFSK 1200 baud (Bell 202) is the standard APRS modulation used on VHF. This is what you want for 144.39 MHz (North America) or 144.80 MHz (Europe).

FieldDefaultDescription
modem_type afsk AFSK modulation
bit_rate 1200 Baud rate
mark_freq 1200 Mark frequency in Hz
space_freq 2200 Space frequency in Hz
profile A Demodulator profile (see below)
num_slicers 1 Parallel decision thresholds (1, 2, 4, or 8)
fix_bits none Bit-flip retry: none, single, or double

Demodulator Profiles

Graywolf offers two demodulator profiles, matching Dire Wolf’s decoders:

Profile A default Dual local-oscillator mixing with root-raised-cosine filtering and AGC. Best general-purpose decoder for most radio setups.
Profile B FM discriminator with phase-rate measurement. Better for receivers with flat audio output (no de-emphasis).

Multi-Slicer

Increasing num_slicers runs multiple parallel decision thresholds on the same audio stream. This can recover packets that a single threshold would miss due to noise or signal variation. Higher values use more CPU.

A good starting point for a busy channel is num_slicers: 4. On a Raspberry Pi, keep this at 1 or 2 to stay within CPU budget.

9600 baud G3RUH direct FSK is used for high-speed packet radio. Requires a radio with a discriminator output (flat audio, no de-emphasis).

modem_type9600
bit_rate9600

PSK (Phase Shift Keying) support is available for experimental packet radio modes.

modem_typepsk
Edit Channel dialog showing modem type, audio device selection, frequencies, and transmit timing
The channel editor configures modem type, audio routing, AFSK frequencies, and transmit timing

Forward Error Correction

Graywolf can encode transmitted packets with forward error correction. FEC-encoded packets are always decoded on receive regardless of these settings — these flags only affect transmission.

fx25_encode Enable FX.25 (interleaved convolutional code, MIL-STD-188-165) on transmit
il2p_encode Enable IL2P (Improved Layer 2 Protocol) on transmit

FX.25 and IL2P add redundancy that can recover packets with bit errors, improving reliability on noisy channels. The receiver automatically detects and decodes FEC-encoded frames regardless of these transmit settings.

TX Timing

FieldDefaultDescription
tx_delay_ms 300 Milliseconds of preamble flags before data
tx_tail_ms 100 Milliseconds of trailing flags after data

tx_delay_ms gives the radio time to key up and stabilize before data is sent. Most radios need 200–500 ms. Too short and the beginning of your packet will be lost; too long wastes airtime.

API Reference

MethodEndpointDescription
GET/api/channelsList all channels
GET/api/channels/{id}Get a single channel
POST/api/channelsCreate a new channel
PUT/api/channels/{id}Update a channel
DELETE/api/channels/{id}Delete a channel