diff --git a/README.md b/README.md index 58ec91c..6fb8783 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,13 @@ by default in anonymous mode allowing anyone on your network to stream to your d __optional variables:__ extsoundcard=true # route audio to external soundcard + +## roc-streaming +Installs the roc sink modules for pulseaudio allowing streaming audio from +any pulseaudio/pipewire sound server giving a apple air-share like streaming experience +for Linux users (only better) see /roles/roc-streaming/README.MD for more details. +Currently limited to raspberrypi OS 11 (debian old stable) as the roc modules are compiled +towards that target ## steamlink-pi Installs steamlink along with PS3 controller (wireless) support diff --git a/roles/roc-streaming/README.MD b/roles/roc-streaming/README.MD new file mode 100644 index 0000000..1d8471b --- /dev/null +++ b/roles/roc-streaming/README.MD @@ -0,0 +1,21 @@ +configuring the sender to stream to the roc-sink + +on your workstation (sender) +~/.config/pipewire/pipewire.conf.d/pipewire.conf + +context.modules = [ + { name = libpipewire-module-roc-sink + args = { + fec.code = rs8m + remote.ip = ip-of-device-with-roc-sink + remote.source.port = 10001 + remote.repair.port = 10002 + sink.name = "Roc Sink livingroom" + sink.props = { + node.name = "roc-sink-livingroom" + } + } + } +] + +and restart pipewire and you should see a new output ready to receive audio diff --git a/roles/roc-streaming/files/module-roc-sink-input.so b/roles/roc-streaming/files/module-roc-sink-input.so new file mode 100755 index 0000000..91efdb5 Binary files /dev/null and b/roles/roc-streaming/files/module-roc-sink-input.so differ diff --git a/roles/roc-streaming/files/module-roc-sink.so b/roles/roc-streaming/files/module-roc-sink.so new file mode 100755 index 0000000..0ccbf10 Binary files /dev/null and b/roles/roc-streaming/files/module-roc-sink.so differ diff --git a/roles/roc-streaming/tasks/main.yml b/roles/roc-streaming/tasks/main.yml new file mode 100644 index 0000000..f067fe6 --- /dev/null +++ b/roles/roc-streaming/tasks/main.yml @@ -0,0 +1,42 @@ +--- +# Todo: don't hard code pipewire version the modules +# are compiled for ARM64 debian oldstable (deb 11) + +- name: Enable auto login on tty for media user (required for pulseaudio to work) + ansible.builtin.include_role: + name: autottylogin + +- name: Copy pipewire ROC modules + ansible.builtin.copy: + src: files/{{ item }} + dest: /usr/lib/pulse-14.2/modules/ + owner: root + group: root + mode: '0644' + loop: + - module-roc-sink-input.so + - module-roc-sink.so + +- name: Install pulseaudio + ansible.builtin.apt: + name: pulseaudio + state: present + install_recommends: false + +- name: Load pipewire ROC module + ansible.builtin.lineinfile: + path: /etc/pulse/default.pa + line: "load-module module-roc-sink-input sink_input_properties=media.name=roc-receiver" + state: present + owner: root + group: root + mode: '0644' + +- name: Load play ROC audio on HDMI + ansible.builtin.lineinfile: + path: /etc/pulse/default.pa + line: "move-sink-input 0 1" + state: present + owner: root + group: root + mode: '0644'