gr-mcp/docker/Dockerfile.gnuradio-lora
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
1.1 KiB
Docker

FROM librespace/gnuradio:latest
# Build dependencies for gr-lora_sdr (EPFL LoRa SDR OOT module)
# gr-lora_sdr has no apt/pip package — must compile from source
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake git \
libvolk2-dev libboost-all-dev pybind11-dev \
&& rm -rf /var/lib/apt/lists/*
# Compile gr-lora_sdr (EPFL, chirp spread spectrum decoder)
# https://github.com/tapparelj/gr-lora_sdr
# Pinned to master@862746d (2024-01-xx) — no tagged releases exist
WORKDIR /build
RUN git clone --depth 1 --branch master \
https://github.com/tapparelj/gr-lora_sdr.git && \
cd gr-lora_sdr && mkdir build && cd build && \
cmake -DCMAKE_INSTALL_PREFIX=/usr .. && \
make -j$(nproc) && make install && \
ldconfig && \
rm -rf /build
WORKDIR /flowgraphs
# cmake installs Python bindings to versioned site-packages (3.11) but
# the base image's python3 searches unversioned dist-packages — bridge the gap
ENV PYTHONPATH="/usr/lib/python3.11/site-packages:${PYTHONPATH}"
# XML-RPC port for runtime LoRa parameter control
ENV XMLRPC_PORT=8091
EXPOSE 8091
ENTRYPOINT ["python3"]