{"id":13574534,"url":"https://github.com/hertzg/rtl_433_docker","last_synced_at":"2025-04-09T22:14:52.025Z","repository":{"id":39811435,"uuid":"273088132","full_name":"hertzg/rtl_433_docker","owner":"hertzg","description":"📡+🐋=💘 rtl_433 multiarch docker images.","archived":false,"fork":false,"pushed_at":"2024-06-27T19:23:56.000Z","size":5580,"stargazers_count":193,"open_issues_count":0,"forks_count":15,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-09T22:14:34.466Z","etag":null,"topics":["docker","hacktoberfest","multiarch","raspberry-pi","raspberry-pi-4","rtl-433","sdr"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/hertzg/rtl_433","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hertzg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-17T22:10:46.000Z","updated_at":"2025-04-05T10:12:03.000Z","dependencies_parsed_at":"2024-06-27T22:28:36.743Z","dependency_job_id":null,"html_url":"https://github.com/hertzg/rtl_433_docker","commit_stats":{"total_commits":114,"total_committers":7,"mean_commits":"16.285714285714285","dds":0.5087719298245614,"last_synced_commit":"0ab226db8767ca1f76170fabf1ee64f870913d03"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hertzg%2Frtl_433_docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hertzg%2Frtl_433_docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hertzg%2Frtl_433_docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hertzg%2Frtl_433_docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hertzg","download_url":"https://codeload.github.com/hertzg/rtl_433_docker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248119290,"owners_count":21050755,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","hacktoberfest","multiarch","raspberry-pi","raspberry-pi-4","rtl-433","sdr"],"created_at":"2024-08-01T15:00:52.450Z","updated_at":"2025-04-09T22:14:52.006Z","avatar_url":"https://github.com/hertzg.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# 🐋 [rtl_433](https://hub.docker.com/r/hertzg/rtl_433) Docker Image [![Buildx](https://github.com/hertzg/rtl_433_docker/actions/workflows/buildx.yml/badge.svg)](https://github.com/hertzg/rtl_433_docker/actions/workflows/buildx.yml)\n\nRepository containing\n[multiarch docker images](https://hub.docker.com/r/hertzg/rtl_433) definitions\nof [rtl_433](https://github.com/merbanan/rtl_433) utility from\n[merbanan](https://github.com/merbanan).\n\nDefault `latest` images include `rtlsdr` only with `alpine` linux as base to\nkeep the final result as slim as possible.\\\nThere is also `debian` based images which include `rtlsdr` and `sopysdr` with\nall modules but are slightly bigger `~3mb` vs `~50mb`.\n\nThere are multiple flavours (`alpine` \u0026 `debian` based) built for multiple\nplatforms (mainly `x86`, `arm` and more).\n\n## Usage\n\n:warning: Tags have been refactored to follow \"a more logical\" structure.\n:warning:\n\n```\nhertzg/rtl_433:\u003crtl_433_git_ref\u003e-\u003cbase\u003e-\u003cbase_version\u003e\nhertzg/rtl433:\u003crtl_433_git_ref\u003e-\u003cbase\u003e-\u003cbase_version\u003e\nghcr.io/hertzg/rtl_433_docker:\u003crtl_433_git_ref\u003e-\u003cbase\u003e-\u003cbase_version\u003e\n```\n\nFor convenience the **latest version of** `alpine` base is considered as\n\"default\" so you can just use\n\n:information_source: Keep in mind that only the \\***\\*latest release\\*\\*** of\nrtl_433 (`22.11` as of 2023-05-28) is considered `:latest` as\n`\u003crtl_433_git_ref\u003e`. :information_source:\n\n```\ndocker run hertzg/rtl_433:latest -V\n\n# is the exact same image as\n\ndocker run hertzg/rtl_433:22.11 -V                       # as of 28 May 2023 the 22.11 is the latest released version\ndocker run hertzg/rtl_433:22.11-alpine -V                # shorthand for 22.11-alpine-latest\ndocker run hertzg/rtl_433:22.11-alpine-3 -V              # targets Alpine major version 3\ndocker run hertzg/rtl_433:22.11-alpine-3.18 -V           # targets Alpine minor version 3.18\ndocker run hertzg/rtl_433:22.11-alpine-3.18.0 -V         # targets Alpine patch version 3.18.0\ndocker run hertzg/rtl_433:22.11-alpine-latest -V         # targets latest Alpine version\n```\n\n:bulb: For Debian based builds you just use `debian` as `\u003cbase\u003e` instead of\n`alpine` and provide a correct debian version.\n\nIf you want the latest `master` branch build use `:master` or `:nightly` for\nnightly builds. The following are\n\n```\n# for alpine based images\ndocker run hertzg/rtl_433:master -V\ndocker run hertzg/rtl_433:master-alpine -V\ndocker run hertzg/rtl_433:master-alpine-3 -V\ndocker run hertzg/rtl_433:master-alpine-3.18 -V\ndocker run hertzg/rtl_433:master-alpine-3.18.0 -V\ndocker run hertzg/rtl_433:master-alpine-latest -V\n```\n\nThe tool itself is very versatile, you can run in multiple ways. The docker\nimage uses the `rtl_433` executable as `ENTRYPOINT` so all the command line\narguments get passed to it when used together with `docker run`.\n\nFirst you need to find the bus and device ids for your SDR device. Here I use\n`lsusb` to find the bus and device ids for my `RTL2838` receiver.\n\nSame approach should work for other USB devices as well.\n\n```shell script\npi@raspberry:~ $ lsusb\nBus xxx Device xxx: ID xxxx:xxxx ...\nBus xxx Device xxx: ID xxxx:xxxx ...\nBus 001 Device 003: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T\nBus xxx Device xxx: ID xxxx:xxxx ...\nBus xxx Device xxx: ID xxxx:xxxx ...\n```\n\nBased on the output my device can be referenced on usb bus `001` as device\n`003`.\n\nNext we need to start the container and share the `/dev/bus/usb/001/003` device\nto it using the `--device` or `-d` flag.\n\n**Note**: This device enumerator could (most likely will) change if you\nplug/unplug the device or the hub it's attached to, but in most cases if you use\nthe bus path that was generated right after boot and leave the device untouched\n(don't re-plug) the device, the bus path might say the same.\n([#14](https://github.com/hertzg/rtl_433_docker/issues/14))\n\n```shell script\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433\n```\n\nThe `--device` or `-d` flag will share the host usb device to the container it\nwill most likely be unusable by the host or any other containers.\n\nTo use a specific version of `rtl_433` use the docker image tags described from the\ntable later down\n\n```shell script\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433:master\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433:latest\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433:20.02\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433:18.05\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433:alpine-20.02\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433:alpine-3-20.02\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433:alpine-3.14-20.02\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433:alpine-3.14.3-20.02\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433:\u003cflavour\u003e-\u003cflavour-version\u003e-\u003crtl_433-version\u003e\n```\n\nTo pass arguments to `rtl_433` executable use can use the docker commands by\nappending them at the end of the run command\n\n```shell script\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433 -h\nrtl_433 version 20.02 branch  at 202002171252 inputs file rtl_tcp RTL-SDR\nUse -h for usage help and see https://triq.org/ for documentation.\nTrying conf file at \"rtl_433.conf\"...\nTrying conf file at \"/root/.config/rtl_433/rtl_433.conf\"...\nTrying conf file at \"/usr/local/etc/rtl_433/rtl_433.conf\"...\nTrying conf file at \"/etc/rtl_433/rtl_433.conf\"...\nGeneric RF data receiver and decoder for ISM band devices using RTL-SDR and SoapySDR.\n\nUsage:\n\t\t= General options =\n  [-V] Output the version string and exit\n  [-v] Increase verbosity (can be used multiple times).\n       -v : verbose, -vv : verbose decoders, -vvv : debug decoders, -vvvv : trace decoding).\n  [-c \u003cpath\u003e] Read config options from a file\n\t\t= Tuner options =\n  [-d \u003cRTL-SDR USB device index\u003e | :\u003cRTL-SDR USB device serial\u003e | \u003cSoapySDR device query\u003e | rtl_tcp | help]\n  [-g \u003cgain\u003e | help] (default: auto)\n  [-t \u003csettings\u003e] apply a list of keyword=value settings for SoapySDR devices\n       e.g. -t \"antenna=A,bandwidth=4.5M,rfnotch_ctrl=false\"\n  [-f \u003cfrequency\u003e] Receive frequency(s) (default: 433920000 Hz)\n  [-H \u003cseconds\u003e] Hop interval for polling of multiple frequencies (default: 600 seconds)\n  [-p \u003cppm_error] Correct rtl-sdr tuner frequency offset error (default: 0)\n  [-s \u003csample rate\u003e] Set sample rate (default: 250000 Hz)\n\t\t= Demodulator options =\n  [-R \u003cdevice\u003e | help] Enable only the specified device decoding protocol (can be used multiple times)\n       Specify a negative number to disable a device decoding protocol (can be used multiple times)\n  [-G] Enable blacklisted device decoding protocols, for testing only.\n  [-X \u003cspec\u003e | help] Add a general purpose decoder (prepend -R 0 to disable all decoders)\n  [-l \u003clevel\u003e] Change detection level used to determine pulses (0-16384) (0=auto) (default: 0)\n  [-z \u003cvalue\u003e] Override short value in data decoder\n  [-x \u003cvalue\u003e] Override long value in data decoder\n  [-n \u003cvalue\u003e] Specify number of samples to take (each sample is 2 bytes: 1 each of I \u0026 Q)\n  [-Y auto | classic | minmax] FSK pulse detector mode.\n\t\t= Analyze/Debug options =\n  [-a] Analyze mode. Print a textual description of the signal.\n  [-A] Pulse Analyzer. Enable pulse analysis and decode attempt.\n       Disable all decoders with -R 0 if you want analyzer output only.\n  [-y \u003ccode\u003e] Verify decoding of demodulated test data (e.g. \"{25}fb2dd58\") with enabled devices\n\t\t= File I/O options =\n  [-S none | all | unknown | known] Signal auto save. Creates one file per signal.\n       Note: Saves raw I/Q samples (uint8 pcm, 2 channel). Preferred mode for generating test files.\n  [-r \u003cfilename\u003e | help] Read data from input file instead of a receiver\n  [-w \u003cfilename\u003e | help] Save data stream to output file (a '-' dumps samples to stdout)\n  [-W \u003cfilename\u003e | help] Save data stream to output file, overwrite existing file\n\t\t= Data output options =\n  [-F kv | json | csv | mqtt | influx | syslog | null | help] Produce decoded output in given format.\n       Append output to file with :\u003cfilename\u003e (e.g. -F csv:log.csv), defaults to stdout.\n       Specify host/port for syslog with e.g. -F syslog:127.0.0.1:1514\n  [-M time[:\u003coptions\u003e] | protocol | level | stats | bits | help] Add various meta data to each output.\n  [-K FILE | PATH | \u003ctag\u003e] Add an expanded token or fixed tag to every output line.\n  [-C native | si | customary] Convert units in decoded output.\n  [-T \u003cseconds\u003e] Specify number of seconds to run, also 12:34 or 1h23m45s\n  [-E hop | quit] Hop/Quit after outputting successful event(s)\n  [-h] Output this usage help and exit\n       Use -d, -g, -R, -X, -F, -M, -r, -w, or -W without argument for more help\n```\n\nTo see all the output formatters you can pass `-F` without arguments\n\n```\n$ docker run hertzg/rtl_433 -F\nrtl_433 version 20.02 branch  at 202002171252 inputs file rtl_tcp RTL-SDR\nUse -h for usage help and see https://triq.org/ for documentation.\n/usr/local/bin/rtl_433: option requires an argument: F\nTrying conf file at \"rtl_433.conf\"...\nTrying conf file at \"/root/.config/rtl_433/rtl_433.conf\"...\nTrying conf file at \"/usr/local/etc/rtl_433/rtl_433.conf\"...\nTrying conf file at \"/etc/rtl_433/rtl_433.conf\"...\n/usr/local/bin/rtl_433: option requires an argument: F\n                = Output format option =\n  [-F kv|json|csv|mqtt|influx|syslog|null] Produce decoded output in given format.\n        Without this option the default is KV output. Use \"-F null\" to remove the default.\n        Append output to file with :\u003cfilename\u003e (e.g. -F csv:log.csv), defaults to stdout.\n        Specify MQTT server with e.g. -F mqtt://localhost:1883\n        Add MQTT options with e.g. -F \"mqtt://host:1883,opt=arg\"\n        MQTT options are: user=foo, pass=bar, retain[=0|1], \u003cformat\u003e[=topic]\n        Supported MQTT formats: (default is all)\n          events: posts JSON event data\n          states: posts JSON state data\n          devices: posts device and sensor info in nested topics\n        The topic string will expand keys like [/model]\n        E.g. -F \"mqtt://localhost:1883,user=USERNAME,pass=PASSWORD,retain=0,devices=rtl_433[/id]\"\n        With MQTT each rtl_433 instance needs a distinct driver selection. The MQTT Client-ID is computed from the driver string.\n        If you use multiple RTL-SDR, perhaps set a serial and select by that (helps not to get the wrong antenna).\n        Specify InfluxDB 2.0 server with e.g. -F \"influx://localhost:9999/api/v2/write?org=\u003corg\u003e\u0026bucket=\u003cbucket\u003e,token=\u003cauthtoken\u003e\"\n        Specify InfluxDB 1.x server with e.g. -F \"influx://localhost:8086/write?db=\u003cdb\u003e\u0026p=\u003cpassword\u003e\u0026u=\u003cuser\u003e\"\n          Additional parameter -M time:unix:usec:utc for correct timestamps in InfluxDB recommended\n        Specify host/port for syslog with e.g. -F syslog:127.0.0.1:1514\n```\n\nYou can also use `-d`, `-g`, `-R`, `-X`, `-F`, `-M`, `-r`, `-w`, or `-W` without\nargument for more help on their usages as described in the help.\n\n## Example Usages\n\nUse rtl_433 to capture 433Mhz traffic, decode it and send to your local MQTT\nbroker.\n\n```shell script\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433 -Fmqtt://127.0.0.1:1883\n```\n\nsame as above and also send the data to influxdb\n\n```shell script\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433 -Mtime:unix:usec:utc -Fmqtt://127.0.0.1:1883 -Finflux://127.0.0.1:8086/write?db=rtl433\n```\n\nsame as above but with extra information like signal, protocol information and\nsystem stats\n\n```shell script\npi@raspberry:~ $ docker run --device /dev/bus/usb/001/003 hertzg/rtl_433 -Mtime:unix:usec:utc -Mbits -Mlevel -Mprotocol -Mstats:2:300 -Fmqtt://127.0.0.1:1883 -Finflux://127.0.0.1:8086/write?db=rtl433\n```\n\nsame as above but for `docker-compose.yaml` using MQTT and InfluxDB from the\nsame compose stack\n\n```yaml\nversion: \"3\"\nservices:\n  rtl433:\n    image: hertzg/rtl_433:latest\n    devices:\n      - \"/dev/bus/usb/001/003\"\n    command:\n      - \"-Mtime:unix:usec:utc\"\n      - \"-Mbits\"\n      - \"-Mlevel\"\n      - \"-Mprotocol\"\n      - \"-Mstats:2:300\"\n      - \"-Fmqtt://mosquitto:1883,retain=1\"\n      - \"-Finflux://influxdb:8086/write?db=rtl433\"\n\n  mosquitto: ...\n\n  influxdb: ...\n```\n\n### Multi-arch\n\nImages are ready to run on different architectures. Due to popularity of small\n\"credit card\" sized devices and such each tag has multi-arch manifest supporting\nfollowing platforms:\n\n| Architecture     | Alpine | Debian |\n| ---------------- | ------ | ------ |\n| `linux/386`      | ✔️     | ➖     |\n| `linux/amd64`    | ✔️     | ✔️     |\n| `linux/arm/v5`   | ️❌    | ➖     |\n| `linux/arm/v6`   | ✔️     | ❌️    |\n| `linux/arm/v7`   | ✔️     | ✔️     |\n| `linux/arm64/v8` | ✔️     | ✔️     |\n| `linux/mips64le` | ❌️    | ✔️     |\n| `linux/ppc64le`  | ✔️     | ✔️     |\n| `linux/s390x`    | ⚠️     | ✔️     |\n\n#### Legend\n\n- ✔️ : Supported and built for\n- ⚠️ : Not buildable\n- ➖ : Not supported (think of it as ❌️)\n- ❌️ : Not supported by the base image\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhertzg%2Frtl_433_docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhertzg%2Frtl_433_docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhertzg%2Frtl_433_docker/lists"}