moxon-frame-generator
simple generator for 3D-printed frames for a moxon rectangle antenna
π‘+π=π rtl_433 multiarch docker images.
Multi-architecture Docker images for rtl_433 - a generic data receiver for ISM band devices using RTL-SDR and SoapySDR.
# Find your USB device lsusb | grep RTL # Run rtl_433 (replace 001/003 with your bus/device) docker run --device /dev/bus/usb/001/003 hertzg/rtl_433
Tip: Device paths can change on reboot. For stable, persistent identification, use serial number selection instead.
| Variant | Base | Size | SDR Support |
|---|---|---|---|
alpine (default) |
Alpine Linux | ~3 MB | RTL-SDR |
debian |
Debian | ~50 MB | RTL-SDR + SoapySDR |
Images are available from multiple registries:
hertzg/rtl_433:<version>-<base>-<base_version>
hertzg/rtl433:<version>-<base>-<base_version>
ghcr.io/hertzg/rtl_433_docker:<version>-<base>-<base_version>
Only the last 3 releases plus master are built:
| Tag | Description |
|---|---|
latest |
Latest stable release (Alpine) |
master |
Latest development build |
25.12, 25.02, 24.10 |
Specific releases |
docker run hertzg/rtl_433:latest docker run hertzg/rtl_433:25.12 docker run hertzg/rtl_433:25.12-alpine docker run hertzg/rtl_433:25.12-debian-trixie docker run hertzg/rtl_433:master
$ lsusb Bus 001 Device 003: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
The device path is /dev/bus/usb/<bus>/<device> β /dev/bus/usb/001/003
Note: Device paths may change on reboot or replug. See #14 for details. For persistent identification, use serial numbers.
docker run --device /dev/bus/usb/001/003 hertzg/rtl_433
Arguments are passed directly to rtl_433:
docker run --device /dev/bus/usb/001/003 hertzg/rtl_433 -V # version docker run --device /dev/bus/usb/001/003 hertzg/rtl_433 -F json # JSON output docker run --device /dev/bus/usb/001/003 hertzg/rtl_433 -R 40 -R 41 # specific decoders
Device paths like /dev/bus/usb/001/003 can change on reboot or replug. For reliable, persistent device identification, use serial number selection:
# Pass entire USB bus and select by serial docker run --device /dev/bus/usb hertzg/rtl_433 -d :00000001
This approach:
Finding your serial number:
lsusb -v -d 0bda:2838 2>/dev/null | grep iSerial
Setting a unique serial number:
rtl_eeprom -s 00000001 # Connect one device at a time
See #14, #45, #82 for background.
Mount your config file into the container (#108, #78):
docker run --device /dev/bus/usb/001/003 \ -v /path/to/rtl_433.conf:/etc/rtl_433/rtl_433.conf:ro \ hertzg/rtl_433
Or specify the path explicitly:
docker run --device /dev/bus/usb/001/003 \ -v /path/to/my.conf:/config/my.conf:ro \ hertzg/rtl_433 -c /config/my.conf
Set the TZ environment variable:
docker run --device /dev/bus/usb/001/003 \ -e TZ=America/New_York \ hertzg/rtl_433 -M time:tz
For rootless Docker, set up udev rules on the host (#118):
# Download udev rules sudo curl -o /etc/udev/rules.d/rtl-sdr.rules \ https://raw.githubusercontent.com/osmocom/rtl-sdr/master/rtl-sdr.rules sudo udevadm control --reload-rules # Find plugdev group ID grep plugdev /etc/group # Run with group access (replace 46 with your plugdev GID) docker run --device /dev/bus/usb/001/003 \ --user "$(id -u):$(id -g)" \ --group-add 46 \ hertzg/rtl_433
docker run --device /dev/bus/usb/001/003 hertzg/rtl_433 \ -F mqtt://192.168.1.100:1883
docker run --device /dev/bus/usb/001/003 hertzg/rtl_433 \ -F "mqtt://192.168.1.100:1883,user=myuser,pass=mypass"
docker run --device /dev/bus/usb/001/003 hertzg/rtl_433 \ -M time:unix:usec:utc \ -F mqtt://192.168.1.100:1883 \ -F "influx://192.168.1.100:8086/write?db=rtl433"
services:
rtl433:
image: hertzg/rtl_433:latest
restart: unless-stopped
devices:
- /dev/bus/usb # Pass entire bus for stable device discovery
environment:
- TZ=Europe/London
command: >-
-d :00000001
-M time:unix:usec:utc
-M protocol
-F mqtt://mosquitto:1883,retain=1
-F influx://influxdb:8086/write?db=rtl433
mosquitto:
image: eclipse-mosquitto:2
influxdb:
image: influxdb:1.8
Note: Using
-d :SERIALwith/dev/bus/usbis more reliable than specifying a device path like/dev/bus/usb/001/003, which can change on reboot.
With specific device path (less stable):
services:
rtl433:
image: hertzg/rtl_433:latest
devices:
- /dev/bus/usb/001/003 # May change on reboot
command: >-
-F mqtt://mosquitto:1883
| Architecture | Alpine | Debian | Devices |
|---|---|---|---|
linux/amd64 |
β | β | x86_64 PCs, servers |
linux/arm64 |
β | β | Raspberry Pi 4/5, Apple Silicon |
linux/arm/v7 |
β | β | Raspberry Pi 2/3 (32-bit) |
linux/arm/v6 |
β | β | Raspberry Pi Zero/1 |
Another process is using the device (#33). Unload the kernel driver:
sudo rmmod dvb_usb_rtl28xxu rtl2832
To prevent auto-loading, blacklist the module:
echo "blacklist dvb_usb_rtl28xxu" | sudo tee /etc/modprobe.d/blacklist-rtl.conf
The RTL-SDR Blog V4 requires newer drivers not included in the standard image. See #106 for building a custom image.
# Verify device exists on host ls -la /dev/bus/usb/001/003 # Test with privileged mode (debugging only) docker run --privileged -v /dev/bus/usb:/dev/bus/usb hertzg/rtl_433
Use serial number selection instead of device path (#14):
docker run --device /dev/bus/usb hertzg/rtl_433 -d :YOUR_SERIAL
more like this
simple generator for 3D-printed frames for a moxon rectangle antenna
search projects, people, and tags