5

I have a pair of Bluetooth headphones paired to the computer. Some apps are capable of playing through them if selected in pavucontrol. Others, though, won't let me select them. In fact, I can't change the output on those apps at all. I can click the button and see a list (as seen in screenshot), but if I select a different option it just goes straight back to HD-Audio Generic. Other apps (such as Spotify, as seen in the screenshot) allow me to switch from one device to another without issue. What's going on?

This menu shows up but doesn't actually change when you click an option

I've also tried to change the sink via the command line using pactl but for some reason it returns "Invalid Argument." A pretty much identical situation is described in this thread, but unfortunately it was never answered.

Here's the sink-input data from pactl:

Sink Input #8
        Driver: protocol-native.c
        Owner Module: 11
        Client: 24
        Sink: 0
        Sample Specification: float32le 2ch 44100Hz
        Channel Map: front-left,front-right
        Format: pcm, format.sample_format = "\"float32le\""  format.channels = "2"  format.channel_map = "\"front-left,front-right\""
        Corked: no
        Mute: no
        Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
                balance 0.00
        Buffer Latency: 54807 usec
        Sink Latency: 23177 usec
        Resample method: copy
        Properties:
                media.role = hex:
                phonon.streamid = hex:
                media.name = "Playback Stream"
                application.name = "bioshock.i386"
                native-protocol.peer = "UNIX socket client"
                native-protocol.version = "26"
                application.process.id = "10390"
                application.process.user = "john"
                application.process.host = "strangelove"
                application.process.binary = "bioshock.i386"
                application.language = "C"
                window.x11.display = ":0"
                application.process.machine_id = [redacted]
                application.process.session_id = "2"
                module-stream-restore.id = "sink-input-by-application-name:bioshock.i386"

I'm running Linux Mint 18.3 "Sylvia", KDE Plasma 5.8.9, KDE framework 5.36.0, and pulseaudio 8.3. The stubborn app that won't switch devices is BioShock Infinite, from Steam. I also tested The Talos Principle (also from Steam), 64-bit version, and it wouldn't allow me to change the output either.

  • No idea what is going on, but first thing I'd do is to look at the the client and sink input info of BioShock with pactl and pacmd and see if anything stands out. It's also possible that steam includes custom code to prevent changing of sinks, for whatever reason. – dirkt Jul 1 '18 at 17:22
  • @dirkt Thanks for the suggestion! I've added pactl output and a few other details. – John Allie Jul 1 '18 at 22:47
7

I finally found the solution: https://steamcommunity.com/app/93200/discussions/0/864959809826195633/

It seems that some apps use something called OpenALsoft to control audio, and it has a configuration option that inhibits sink changes. To disable the option, you can create a config file.

~/.alsoftrc

[pulse]
allow-moves=yes
| improve this answer | |
  • This solution worked for Minecraft in Ubuntu 19.10. – gustavwiz Mar 21 at 16:36
  • Does not work for Luftrausers (on Steam). – Markus Bawidamann Apr 25 at 23:59
1

My system also required the "drivers" line.

~/.alsoftrc

drivers = alsa,pulse,core,oss

[pulse]
allow-moves=yes
| improve this answer | |
  • Luftrausers works with this one here, this is on Debian Stable (Buster). Interesting enough, the game shows up different in the mixer, when it can be shifted from soundcard to soundcard, it shows as: ALSA plugin [Luftrausers] ALSA playback ON – Markus Bawidamann Apr 26 at 0:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.