raphael / linux-samus

Linux 4.16 on Chromebook Pixel 2015
GNU General Public License v2.0
181 stars 36 forks source link

OpenBSD sndio via pulseaudio on ARCH Linux works #201

Open purple-mountains opened 6 years ago

purple-mountains commented 6 years ago

I've managed to get pulseaudio-module-sndio to work on ARCH Linux on the Pixel 2015, works a treat!

$ sudo pacman -S sndio

$ cat /etc/conf.d/sndiod OPTS="-f rsnd/1"

$ sudo pacman -S pulseaudio libpulse $ yaourt -S pulseaudio-module-sndio

Add local user to the group pulse-access and make sure "user pulse" and "group pulse" exist.

Add the following line to default.pa - just above #load-module module-alsa-sink device will do, no other changes to the standard default.pa file required.

$ grep module-sndio /etc/pulse/default.pa

load-module module-sndio device=snd/0 channels=2 rate=48000 format=s16

"#load-module module-alsa-sink device"

The git repo, https://github.com/t6/pulseaudio-module-sndio suggests

load-module module-sndio device=snd@thor/0

but for some reason, channels, rate and format don't get assigned, and the module never loads.

Start up sndiod as the local user, as we want to see the audio stream in action, and we'll revert back to starting sndiod.service, making sure, there is only one instance of sndio running

$ sudo pkilll sndiod $ sndiod -dddd -f rsnd/1

Start up pulseaudio as the local user $ pulseaudio

We should see sndio come alive with messages. Now start mplayer or your favourite video player and enjoy audio and video in sync, with no distortion in volume, even at it's max.

$ mplayer -ao pulse _VIDEO_AUDIOFILE

Enjoy!

Make sure the master volume for bdwrt-5677 - the second device, is set to the maximum.

All of the above can be done with bdwrt-5677 set as the first device ( change rsnd/1 to rsnd/0, but keep snd/0 on the load-module line the same - we are setting it's first sub-device to be this raw card - unless you may wish to use a USB sound card as your first device, by all means ), but at a lower volume, it's never as loud, compared to when bdwrt-5677 is set as the second device.

To set bdwrt-5677 as the second device, we don't include any settings in /etc/modprobe.d/*.conf

Donations welcome to OpenBSD for having created sndio, and many thanks to Alexandre Ratchov for helping me get this to work. Genius!

jobbautista9 commented 1 year ago

You have to make sure PulseAudio doesn't load the ALSA sink in order for the module to work btw. Otherwise PulseAudio will hog the audio device and not allow sndiod to capture it.