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.
Channel Settings
| Field | Default | Description |
|---|---|---|
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).
| Field | Default | Description |
|---|---|---|
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_type | 9600 |
bit_rate | 9600 |
PSK (Phase Shift Keying) support is available for experimental packet radio modes.
modem_type | psk |
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
| Field | Default | Description |
|---|---|---|
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
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/channels | List all channels |
| GET | /api/channels/{id} | Get a single channel |
| POST | /api/channels | Create a new channel |
| PUT | /api/channels/{id} | Update a channel |
| DELETE | /api/channels/{id} | Delete a channel |