gr-mcp/docker/docker-compose.lora-receiver.yml
Ryan Malloy e8b3600e60 feat: add LoRa SDR receiver with Docker runtime infrastructure
LoRa receiver flowgraph built programmatically via gr-mcp:
- osmosdr_source → low_pass_filter → lora_rx → message_debug
- XML-RPC server for runtime variable control (samp_rate,
  center_freq) with introspection enabled
- Qt frequency sink for spectrum visualization

Docker infrastructure:
- gnuradio-lora: gr-lora_sdr OOT module from EPFL (chirp spread spectrum)
- gnuradio-lora-runtime: combined runtime with Xvfb + gr-lora_sdr
- Compose file, entrypoint, and launch script for LoRa receiver

Also includes:
- lora_scanner.py: multi-SF LoRa scanner example
- lora_infrastructure_test.py: hardware-free pipeline validation
  (signal_source → throttle → null_sink + xmlrpc variable control)
- Integration tests for LoRa scanner flowgraph construction

End-to-end pipeline validated: launch_flowgraph → connect_to_container →
list_variables → get/set_variable all working through Docker + XML-RPC.
2026-01-30 13:55:40 -07:00

33 lines
690 B
YAML

services:
lora-receiver:
build:
context: .
dockerfile: Dockerfile.gnuradio-lora
# Root required for USB device access (RTL-SDR)
user: root
privileged: true
volumes:
# Flowgraph source files
- ../examples:/flowgraphs:ro
- ../src:/src:ro
# Entrypoint script
- ./entrypoint-lora.sh:/entrypoint-lora.sh:ro
environment:
- FREQ_MHZ=${FREQ_MHZ:-915.0}
- SF=${SF:-7}
- BW=${BW:-125000}
- CR=${CR:-1}
- GAIN=${GAIN:-20}
# XML-RPC port for LoRa parameter control from host
ports:
- "8091:8091"
entrypoint: ["/bin/bash", "/entrypoint-lora.sh"]
stdin_open: true
tty: true