{"id":18188018,"url":"https://github.com/hypfer/squeezebox-roc-plugin-poc","last_synced_at":"2025-08-28T09:13:19.196Z","repository":{"id":70162573,"uuid":"370019730","full_name":"Hypfer/squeezebox-roc-plugin-poc","owner":"Hypfer","description":null,"archived":false,"fork":false,"pushed_at":"2021-05-26T13:31:32.000Z","size":81,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-21T20:56:44.503Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Perl","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/Hypfer.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},"funding":{"github":"hypfer","ko_fi":"hypfer"}},"created_at":"2021-05-23T10:15:37.000Z","updated_at":"2021-05-26T13:31:35.000Z","dependencies_parsed_at":"2023-03-11T08:09:02.392Z","dependency_job_id":null,"html_url":"https://github.com/Hypfer/squeezebox-roc-plugin-poc","commit_stats":{"total_commits":2,"total_committers":1,"mean_commits":2.0,"dds":0.0,"last_synced_commit":"2978e513a89bf712081688ab5a1184b69272032e"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Hypfer/squeezebox-roc-plugin-poc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hypfer%2Fsqueezebox-roc-plugin-poc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hypfer%2Fsqueezebox-roc-plugin-poc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hypfer%2Fsqueezebox-roc-plugin-poc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hypfer%2Fsqueezebox-roc-plugin-poc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hypfer","download_url":"https://codeload.github.com/Hypfer/squeezebox-roc-plugin-poc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hypfer%2Fsqueezebox-roc-plugin-poc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272475497,"owners_count":24940718,"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","status":"online","status_checked_at":"2025-08-28T02:00:10.768Z","response_time":74,"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-03T02:04:22.423Z","updated_at":"2025-08-28T09:13:19.151Z","avatar_url":"https://github.com/Hypfer.png","language":"Perl","funding_links":["https://github.com/sponsors/hypfer","https://ko-fi.com/hypfer"],"categories":[],"sub_categories":[],"readme":"# ROC Input for the LMS\n\nThis repository contains a slightly modified version of the `WaveInput` plugin for the logitech media server\nwith the aim of using the [Roc Toolkit](https://github.com/roc-streaming/roc-toolkit) to inject arbitrary audio\ninto the LMS via the network.\n\nThis is pretty much unsupported and just my solution to get stuff that requires a chromecast into my multi-room system.\n\nTo use this, you will need the `roc-recv` in your `$PATH`\n\nI'm using a custom dockerfile to achieve that:\n\n```\nFROM lmscommunity/logitechmediaserver:8.2.0\nRUN apt update \u0026\u0026 apt install -y alsa-utils\n\nRUN apt install -y g++ pkg-config scons ragel gengetopt libunwind8-dev libpulse-dev libsox-dev libtool intltool autoconf automake make cmake build-essential git\n\nRUN cd /tmp \u0026\u0026 git clone https://github.com/Hypfer/roc-toolkit.git\nRUN cd /tmp/roc-toolkit \u0026\u0026 scons -Q --build-3rdparty=libuv,openfec,cpputest\nRUN cd /tmp/roc-toolkit \u0026\u0026 scons -Q --build-3rdparty=libuv,openfec,cpputest install\nRUN cd /tmp/roc-toolkit \u0026\u0026 scons -Q --enable-pulseaudio-modules --build-3rdparty=libuv,openfec,pulseaudio,cpputest\nRUN cd /tmp/roc-toolkit \u0026\u0026 scons -Q --enable-pulseaudio-modules --build-3rdparty=libuv,openfec,pulseaudio,cpputest install\n```\n\nNote that I'm using my fork there, which just consists of an added `exit(-1);` when it's unable to output received audio\nbecause otherwise the `roc-recv` binary won't die on input switch of the LMS.\n\nThe custom plugin location for the LMS can be found in Settings \u003e Information. Just paste that ROCInput folder there.\n\nThen, restart and create a new favourite with a URL that starts with `rocin:`. Playing that will start the roc-recv instance.\nFor the codec, only 320k MP3 CBR is supported because that was the only thing that worked reliably. YMMV\n\nIf your network has issues keeping up, and you're experiencing `Rebuffering` messages, try increasing the bufferThreshold\nin the ROCIN.pm.\n\n\nTo get the chromecast audio into the system, I bought an HDMI Audio Extractor from Aliexpress. That thing pretends to be \nan always-on display (including HDCP support..) so you won't need an additional dummy HDMI plug.\n\nI've also went through four different USB Soundcards before I found one that supports TOSLINK S/PDIF in on Linux.\nEverything else either didn't work at all or only supported analog in.\n\nThe card that finally worked is the [Terratec Aureon 5.1 USB MK.2](https://github.com/opensrc/alsa/blob/master/lib/md/Terratec_Aureon_5.1_USB_MK.2.md)\nwhich came out in 2004 and can only be bought second-hand.\nIt does work though so if you're looking for TOSLINK S/PDIF digital audio in on Linux just get that one.\n\nUnfortunately, the USB Controller of my NAS, which houses the LMS doesn't play well with USB Soundcards and just dies randomly\nwith no way to recover. Therefore, I had to move the Audio input to another host and transfer the audio via the network\nwhich is why this plugin even exists.\n\nI now have another Raspberry Pi right next to the NAS with this command running to inject the audiostream:\n\n`arecord -d0 -c2 -f S16_LE -r 44100 -twav -D plughw:1,0 | roc-send -vv -s rtp+rs8m:192.168.x.x:10001 -r rs8m:192.168.x.x:10002 -i - -d wav`\n\nAnd that's about it. This enables me to cast twitch music streams to the whole house.\nFeel free to improve on this.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypfer%2Fsqueezebox-roc-plugin-poc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhypfer%2Fsqueezebox-roc-plugin-poc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypfer%2Fsqueezebox-roc-plugin-poc/lists"}