{"id":20374091,"url":"https://github.com/robcranfill/piradio","last_synced_at":"2026-06-10T14:31:44.471Z","repository":{"id":227507531,"uuid":"771248427","full_name":"RobCranfill/piradio","owner":"RobCranfill","description":"Internet radio on a RPiZeroW?","archived":false,"fork":false,"pushed_at":"2024-05-07T01:04:29.000Z","size":44,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-04T20:46:08.021Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RobCranfill.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2024-03-13T00:26:26.000Z","updated_at":"2024-05-07T01:04:33.000Z","dependencies_parsed_at":"2024-03-26T00:47:33.202Z","dependency_job_id":null,"html_url":"https://github.com/RobCranfill/piradio","commit_stats":null,"previous_names":["robcranfill/piradio"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RobCranfill/piradio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobCranfill%2Fpiradio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobCranfill%2Fpiradio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobCranfill%2Fpiradio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobCranfill%2Fpiradio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RobCranfill","download_url":"https://codeload.github.com/RobCranfill/piradio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobCranfill%2Fpiradio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34157453,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-15T01:22:14.320Z","updated_at":"2026-06-10T14:31:44.455Z","avatar_url":"https://github.com/RobCranfill.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# piradio\nInternet radio on a RPiZeroW!\n\n\n# New Minimum Viable Product - May '24\n * Configurable\n   * Via Adafruit IoT?\n * Workaround for missing metadata\n   * Just show canned station name; more if available\n * Using speaker and amp - NOT PCM5102 ???\n   * So we need to reconfigure Linux ????\n\n\n# Open Questions\n * (Also see 'problems' below)\n\n\n# Testbed\n* PiZero1W - PiZero W v1.1 - sufficient?\n* Raspian 'Bullseye'\n  * Update to Bookworm?\n* Generic PCM5102 PCM module\n* Mini OLED display\n  * How to coexist with I2C bus?\n  * Soldered I2C pigtail to top of OLED\n* APDS-9960 gesture contoller\n\n\n# RPi prep\n * As per https://raspberrypi.stackexchange.com/questions/76188/how-to-make-pcm5102-dac-work-on-raspberry-pi-zerow\n * and https://www.hifiberry.com/docs/software/configuring-linux-3-18-x/\n\n Note that `dtoverlay=hifiberry-dac` is correct.\n\n\n## Install\n* install mpd, mpc\n* Install Adafruit CircuitPython libraries (\"Blinka\")\n* pip3 install adafruit-circuitpython-ssd1306\n\n\n## Prep\n* config.txt\n\u003cpre\u003e\n...\n# Enable audio (loads snd_bcm2835)\n# cran: removed: dtparam=audio=on\n...\n# Enable DRM VC4 V3D driver\n# cran: modified\ndtoverlay=vc4-kms-v3d,noaudio\n...\n# cran: added\ndtoverlay=hifiberry-dac\n\u003c/pre\u003e\n\n## Check\n\u003cpre\u003erob@pizero2dub:~ $ aplay -l\n\t**** List of PLAYBACK Hardware Devices ****\n\tcard 0: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 [HifiBerry DAC HiFi pcm5102a-hifi-0]\n\t  Subdevices: 1/1\n\t  Subdevice #0: subdevice #0\n\u003c/pre\u003e\t\n\n## Test\n\u003cpre\u003erob@pizerow1:/boot $ mpc\nvolume: n/a   repeat: off   random: off   single: off   consume: off\nrob@pizerow1:/boot $ history | grep mpc\n\nrob@pizerow1:/boot $ mpc add http://uk1.internet-radio.com:8355/stream\n\nrob@pizerow1:/boot $ mpc play\nThe Zone - Dublin: Clairo - Hello? (feat. Rejjie Snow)\n[playing] #1/2   0:00/0:00 (0%)\nvolume: n/a   repeat: off   random: off   single: off   consume: off\nrob@pizerow1:/boot $ \n\u003c/pre\u003e\n\n## Problems\n* Network latency\n  * Slow to start play\n    - Intrinsic to mpc/mpd - happens from command line too\n  * Some streams time out\n    - Again, intrinsic to protocol/situation.\n  * Upshot is that we can't expect station switching to happen instantaneously.\n\n### Problems RESOLVED\n* Audio out is noisy - sensitive to touch\n  * A result of breaboarding? Yes! Fixed.\n* Volume won't change\n\u003cpre\u003e\nrob@pizerow1:/boot $ mpc volume 50\nThe Zone - Dublin: Claire Rosinkranz - Screw Time\n[playing] #1/2   4:35/0:00 (0%)\nvolume:100%   repeat: off   random: off   single: off   consume: off\n\u003c/pre\u003e\n\n** Fixed as per https://forums.raspberrypi.com/viewtopic.php?t=150505\n* Add an ALSA mixer to /etc/mpd.conf:\n\u003cpre\u003e\n# add software mixer - NOT \"bit perfect\", fine\n#\naudio_output {\n    type                \"alsa\"\n    name                \"My ALSA mixer\"\n#    device             \"hw:0,0\"        # optional\n    mixer_type      \"software\"  # optional\n#    mixer_device       \"default\"       # optional\n#    mixer_control      \"PCM\"           # optional\n#    mixer_index        \"0\"             # optional\n}\n\u003c/pre\u003e\n\u003cpre\u003e\nrob@pizerow1:/etc $ mpc volume 75\nThe Zone - Dublin: The Vanns - Harder To Find\n[playing] #2/2   0:41/0:00 (0%)\nvolume: 75%   repeat: off   random: off   single: off   consume: off\n\u003c/pre\u003e\n\n\n\n # Resources\n  * https://funprojects.blog/tag/internet-radio/\n\n\n# Software to install\n* mpd, mpc\n\n\n# Stations\n * from https://www.internet-radio.com/\n\u003cpre\u003e\n    [playlist]\n    NumberOfEntries=1\n    File1=http://uk1.internet-radio.com:8355/stream\n    Title1=The Zone - Dublin\n    Length1=-1\n    Version=2\n\u003c/pre\u003e\n\n## Notes re mpc \u0026 mpd\n\n* Maybe need to set timeout for some (like 'STAR FM MAXIMUM ROCK Berlin')\n\n  MPD error: Failed to decode http://relay2.slayradio.org:8000; CURL failed: Connection timed out after 10010 milliseconds\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobcranfill%2Fpiradio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobcranfill%2Fpiradio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobcranfill%2Fpiradio/lists"}