-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration
Crow is configured using two files located in /usr/local/crow:
-
crow.conf— Default configuration (overwritten on updates) -
crow.conf.override— User overrides (preserved across updates) ⭐ Edit this file
Only modify crow.conf.override. If it doesn't exist, create it with minimal content:
{
}All configuration blocks below are top-level keys added to this JSON file. Restart Crow to apply changes:
/etc/init.d/crow restartSet your node's AREDN callsign:
{
"callsign": "N0CALL-10"
}Prerequisites: Meshtastic device with Ethernet/LAN capability connected to your AREDN node's LAN interface. See Meshtastic for hardware and device setup.
Enable the bridge:
{
"meshtastic": {}
}Channel Configuration: Bind channels to Meshtastic by adding "meshtastic": true to channel entries in the channels array:
{
"channels": [
{ "namekey": "AREDN og==", "telemetry": true },
{ "namekey": "LongFast AQ==", "telemetry": true, "meshtastic": true }
]
}Note: Meshtastic uses multicast; no address configuration needed. Ensure your Meshtastic device's modem preset matches the Crow channel ID.
Prerequisites: MeshCore device connected via serial port (typically /dev/ttyACM0) through a Raspberry Pi running the MeshCore2Net bridge. See MeshCore for full hardware and software setup.
Enable the bridge:
{
"meshcore": {}
}Restart Crow:
/etc/init.d/crow restarttx_enabled disabled until you fully understand callsign, passcode, and operator control requirements.
{
"callsign": "N0CALL-10",
"aprs": {
"enabled": true,
"callsign": "N0CALL-10",
"channel": "APRS og==",
"default_group": "APRSgroup1",
"inline_max_members": 10,
"backend": {
"type": "aprsis",
"host": "rotate.aprs2.net",
"port": 14580,
"passcode": "-1",
"tx_enabled": false
},
"groups": [
{
"name": "APRSgroup1",
"members": ["N0CALL-4", "N0CALL-7"],
"repeat_member_messages": false,
"rate_limit_seconds": 20,
"max_members": 10
}
]
},
"channels": [
{ "namekey": "AREDN og==", "telemetry": false },
{ "namekey": "APRS og==", "telemetry": false }
]
}Backend Types:
-
aprsis— APRS-IS (recommended):host,port,passcode -
direwolf— Dire Wolf KISS-over-TCP:host,port -
xastir— Xastir/YAAC TCP text:host,port
Use backends (plural) to run multiple APRS connections simultaneously:
{
"callsign": "N0CALL-10",
"aprs": {
"enabled": true,
"callsign": "N0CALL-10",
"channel": "APRS og==",
"default_group": "APRSgroup1",
"backends": {
"primary": {
"type": "aprsis",
"host": "rotate.aprs2.net",
"port": 14580,
"passcode": "-1",
"tx_enabled": false
},
"local": {
"type": "direwolf",
"host": "192.168.1.50",
"port": 8000
}
},
"groups": [
{
"name": "APRSgroup1",
"members": ["N0CALL-4", "N0CALL-7"],
"repeat_member_messages": false,
"rate_limit_seconds": 20,
"max_members": 10
}
]
},
"channels": [
{ "namekey": "AREDN og==", "telemetry": false },
{ "namekey": "APRS og==", "telemetry": false }
]
}APRS Channels: Always use the AREDN open key (og==) for APRS channels to comply with FCC Part 97 (no encryption).
Group Repeating: Enable repeat_member_messages to forward received messages from one group member to others (excluding the sender):
{
"name": "APRSgroup1",
"members": ["N0CALL-4", "N0CALL-7"],
"repeat_member_messages": true,
"rate_limit_seconds": 20,
"max_members": 10
}See APRS for detailed backend setup and troubleshooting.
Store Crow data on an external USB drive:
{
"storage": {
"mode": "usb",
"mountpoint": "/mnt/crow",
"label": "CROWDATA",
"device": "/dev/sda1",
"image_quota_mb": 64,
"min_free_mb": 16
}
}| Field | Default | Description |
|---|---|---|
mode |
internal |
internal (node flash) or usb (external drive) |
mountpoint |
/mnt/crow |
Where the USB drive is mounted |
label |
CROWDATA |
Filesystem label (used when formatting) |
device |
auto-detect | Force a specific block device (e.g., /dev/sda1) |
image_quota_mb |
100 | Max size for stored images (MB) |
min_free_mb |
16 | Minimum free space before cleanup (MB) |
See USB Storage for pre-configuration and device selection.
By default, messages you post appear on the right; others on the left. To align all messages to the left:
{
"ui": {
"message": {
"align": "left"
}
}
}Crow displays channel keys as base64 by default. To show hex encoding instead (useful for sharing with MeshCore users):
{
"ui": {
"key": {
"format": "hex"
}
}
}See UI Tweaks for additional customization options.
A realistic configuration combining multiple features:
{
"callsign": "N0CALL-10",
"meshtastic": {},
"storage": {
"mode": "usb",
"device": "/dev/sda1"
},
"aprs": {
"enabled": true,
"callsign": "N0CALL-10",
"channel": "APRS og==",
"default_group": "APRSgroup1",
"backend": {
"type": "aprsis",
"host": "rotate.aprs2.net",
"port": 14580,
"passcode": "-1",
"tx_enabled": false
},
"groups": [
{
"name": "APRSgroup1",
"members": ["N0CALL-4", "N0CALL-7"]
}
]
},
"ui": {
"message": {
"align": "left"
},
"key": {
"format": "hex"
}
},
"channels": [
{ "namekey": "AREDN og==", "telemetry": true },
{ "namekey": "APRS og==", "telemetry": false, "meshtastic": true },
{ "namekey": "LongFast AQ==", "telemetry": true }
]
}After editing crow.conf.override, always restart the service:
/etc/init.d/crow restartWhen Strict Gatekeeper is enabled, channels can enforce their own callsign allow/deny rules. Add an access_control block to individual channel entries:
{
"channels": [
{
"namekey": "#TacNet base64key==",
"access_control": {
"require_callsign": true,
"allowed_callsigns": ["K6*", "W2*"],
"deny_callsigns": []
}
},
{
"namekey": "#OpenNet base64key==",
"access_control": {
"require_callsign": false
}
}
]
}See Strict Gatekeeper — Per-Channel Access Control for pattern syntax and enforcement details.
When running a MeshCore TCP API backend, Crow can auto-discover group channels programmed into the radio’s 8 memory slots. Enable periodic discovery sync:
{
"meshcore_discovery": {
"enabled": true,
"sync_interval_ms": 300000
}
}| Field | Type | Default | Description |
|---|---|---|---|
enabled |
boolean | false |
Enable group discovery and periodic sync. |
sync_interval_ms |
integer | 300000 |
How often (ms) to re-query radio slots for changes. |
Discovered groups appear in /cmd discover and can be joined with /join.
- Home
- Change Log
- Configuration
- Configuring Channels
- Backend Selection and Test Deployment
- Command Reference
- APRS Bridge
- LoRa Gateway Tags
- Meshtastic API Backend
- Memory Use
- Strict Gatekeeper
- Winlink
- USB Storage
APRS.mdBackend-Selection-and-Deployment.mdChange-Log.mdCommand-Reference.mdConfiguration.mdConfiguring-Channels.mdHome.mdLoRa-Gateway-Tags.mdMeshtastic-API.mdMemory-Use.mdStrict-Gatekeeper.mdUSB-Storage.mdWinlink.md_Sidebar.md
- Keep every
.mdwiki page linked here. - Keep
Home.mdand_Sidebar.mdin sync. - When a wiki page is removed, remove it from both the Home page inventory and this sidebar.