{"id":29022675,"url":"https://github.com/vsergeev/radfly","last_synced_at":"2026-04-01T21:50:29.796Z","repository":{"id":301178474,"uuid":"978495535","full_name":"vsergeev/radfly","owner":"vsergeev","description":"An SDR-based listening server for AM medium wave and shortwave radio stations built with Zig","archived":false,"fork":false,"pushed_at":"2026-01-09T08:39:58.000Z","size":202,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-27T23:42:00.808Z","etag":null,"topics":["radio","sdr","zig","zigradio"],"latest_commit_sha":null,"homepage":"","language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vsergeev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-06T04:36:47.000Z","updated_at":"2026-01-09T08:40:02.000Z","dependencies_parsed_at":"2025-06-25T15:34:10.936Z","dependency_job_id":null,"html_url":"https://github.com/vsergeev/radfly","commit_stats":null,"previous_names":["vsergeev/radfly"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/vsergeev/radfly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vsergeev%2Fradfly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vsergeev%2Fradfly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vsergeev%2Fradfly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vsergeev%2Fradfly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vsergeev","download_url":"https://codeload.github.com/vsergeev/radfly/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vsergeev%2Fradfly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292572,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["radio","sdr","zig","zigradio"],"created_at":"2025-06-26T03:03:22.228Z","updated_at":"2026-04-01T21:50:29.778Z","avatar_url":"https://github.com/vsergeev.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"# radfly\n\nradfly is a self-hosted, SDR-based listening server for AM medium wave and\nshort-wave radio stations with a simple web frontend. radfly is built on [ZigRadio](https://zigradio.org/)\nand [http.zig](https://github.com/karlseguin/http.zig), and currently supports rtl-sdr and AirSpy HF+ SDRs.\n\nThe web frontend streams audio, supports scanning, bookmarks, and configuring\noptions like audio bandwidth and AGC mode. radfly can be run on Raspberry Pi 4\nand similar single-board computers.\n\n![Screenshot](screenshot.png)\n\n## Building\n\nradfly requires Zig version 0.15.\n\n```\n$ git clone https://github.com/vsergeev/radfly.git\n$ cd radfly\n$ zig build -Doptimize=ReleaseFast\n```\n\nInstall optional (but recommended) acceleration libraries:\n\n* `sudo apt install -y libvolk-dev libliquid-dev libfftw3-dev` on Debian-based systems\n* `sudo pacman -S libvolk liquid-dsp fftw` on Arch Linux-based systems\n\n## Running\n\nStart radfly with an SDR source, e.g. `mock` (for testing), `rtlsdr`, or `airspyhf`:\n\n```\n$ ./zig-out/bin/radfly --source airspyhf\n```\n\nradfly will be accessible at `http://localhost:8000`.\n\n#### Local Network\n\nDue to the dependency on [AudioWorklet](https://developer.mozilla.org/en-US/docs/Web/API/AudioWorklet) for streaming audio in the browser, the\nradfly frontend must be served over a secure context (HTTPS) to be accessed\nby other machines on a local network. [Caddy](https://caddyserver.com/) can be used as a secure reverse\nproxy for this.\n\nStart `caddy` (replace `radio-pi4` with your machine's hostname):\n\n```\n$ sudo caddy reverse-proxy --from radio-pi4.local --to :8000\n```\n\nradfly will now be accessible on the local network at `https://radio-pi4.local`.\n\n#### Certificate Warning\n\n`caddy` uses self-signed certificates for `*.local` hostnames, which can't be\ntrusted automatically by browsers and results in an insecure connection\nwarning. To remove this warning, import caddy's generated root certificate,\nlocated at `/root/.local/share/caddy/pki/authorities/local/root.crt`, into your\nbrowser's certificate manager.\n\n## Usage\n\n```\nUsage: radfly [options]\n\nRadio Configuration\n  --source \u003cmock,rtlsdr,airspyhf\u003e     SDR Source (default mock)\n  --device-index \u003cindex\u003e              Device index (default 0)\n  --device-serial \u003cstring\u003e            Device serial (default none)\n  --bias-tee \u003ctrue/false\u003e             Bias tee (default false)\n  --tune-offset \u003cvalue in KHz\u003e        Tune offset (default 50 KHz)\n  --initial-frequency \u003cvalue in KHz\u003e  Initial frequency (default 5000 KHz)\n\nServer Configuration\n  --http-port \u003cport number\u003e           HTTP listening port (default 8000)\n  --http-address \u003caddress\u003e            HTTP listening address (default 127.0.0.1)\n\nMiscellaneous\n  --help                              Display usage\n  --version                           Display version\n  --debug                             Enable debug mode\n```\n\n## Design\n\nThe [ZigRadio](https://zigradio.org/) flowgraph consists of audio demodulation and power measurement\nsignal chains that feed into their respective `ApplicationSink`. Audio and\npower samples are consumed by an application thread and pushed to active\nclients via WebSockets. An RPC protocol over WebSockets allows clients to scan,\ntune, and change various parameters in the flowgraph.\n\n```mermaid\nflowchart LR\n    A[Source] --\u003e B[TunerBlock]\n    B --\u003e G[LowpassFilterBlock]\n    subgraph s2 [Power Measurements]\n    G --\u003e H[PowerMeterBlock]\n    H --\u003e I[ApplicationSink]\n    end\n    B --\u003e C[AGCBlock]\n    subgraph s1 [Audio]\n    C --\u003e D[AMEnvelopeDemodulator]\n    D --\u003e E[DownsamplerBlock]\n    E --\u003e F[ApplicationSink]\n    end\n```\n\n## Tests\n\nRun unit tests with:\n\n```\n$ zig build test\n```\n\n## License\n\nradfly is MIT licensed. See the included [LICENSE](LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvsergeev%2Fradfly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvsergeev%2Fradfly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvsergeev%2Fradfly/lists"}