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.
33 lines
690 B
YAML
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
|