[pulseaudio-discuss] Audio APP (sink-input) bind to the sink with only unplugged hdmi-audio ports on it

Hui Wang hui.wang at canonical.com
Sun Sep 30 07:03:31 UTC 2018


This issue is also reported to: 
https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/579

Recently we found a weird issue on many laptops with the ubuntu 18.04, 
it uses the pulseaudio-11.1 (I guess the PA of the latest version also 
has this problem). The issue is like this:

 1. boot the system up without plugging a hdmi monitor
 2. run an audio app to play sound (e.g. $speaker-test)
 3. the sound outputs from analog-speaker
 4. plug a monitor with audio capability (through DP or HDMI port)
 5. the sound still outputs from analog-speaker
 6. open sound-setting (gnome-control-center --> choose sound), you will
    see two output devies: speaker and HDMI audio
 7. choose HDMI audio, the sound will switch to HDIM audio from speaker
    (pa will remember speaker-test prefer to use hdmi-audio sink)
 8. unplug the monitor, the default-sink is switching to analog-speaker,
    but the sound of speaker-test still route to hdmi-audio sink
 9. run other sound apps, they all route sound to default sink
    (analog-speaker), but speaker-test always routes to hdmi-audio sink,
    as a result, speaker-test can't output sound anymore unless we
    replug a monitor with audio capability then the speaker-test output
    from hdmi-audio again.
10. if we want the speaker-test to route to analog-speaker, two ways:
    run pacmd move-sink-input or plug a monitor, after two audio devices
    (hdmi audio and speaker) show up in the sound-setting, select
    analog-speaker manually.

This issue only happens on the laptops with 2 audio cards, analog 
devices on one card, hdmi audio on the other card. This kind of laptops 
are very common, like I+A (Intel graphic + Amd Graphic), I+N(Intel + 
Nvidia), and A AMD.

This issue will not happen on the laptops with only Intel graphic card, 
since both analog and hdmi audio belong to one sound card. When hdmi 
monitor is unplugged, the hdmi sink will be removed from PA, then all 
sink-inputs will route to the only left sink: analog-sink.

This issue will not happen on BT or USB audio. Unlike hdmi audio, BT and 
USB audio cards will be removed totally from PA when they are 
unpluged/unconnected, so they don't have this issue as well.

The root cause of this issue is although the hdmi monitor is unplugged, 
the hdmi-sink still exists, and sink-input is selected by user to bind 
to this sink, so the pa doesn't care about if this sink has valid port 
or not, it bind the sink-input to this sink unconditionally.

Maybe we could improve it like this: if the user selected sink only has 
available_no ports, the pa will switch all sink-inputs of this sink to 
other sinks (like default_sink) temporarily, once the selected sink has 
availble ports, all sink-inputs switch back to this sink.

Any good ideas?

Thanks,

Hui.




More information about the pulseaudio-discuss mailing list