Missing second HDA playback device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 18.01.09 10:22, Jon Smirl (jonsmirl at gmail.com) wrote:

> I definitely have two playback devices:
> 
> jonsmirl at terra:/etc$ hal-device | grep playback
> 28: udi = '/org/freedesktop/Hal/devices/pci_8086_284b_alsa_playback_1'
>   info.udi = '/org/freedesktop/Hal/devices/pci_8086_284b_alsa_playback_1'
>  (string)
>   alsa.type = 'playback'  (string)
> 29: udi = '/org/freedesktop/Hal/devices/pci_8086_284b_alsa_playback_0'
>   info.udi = '/org/freedesktop/Hal/devices/pci_8086_284b_alsa_playback_0'
>  (string)
>   alsa.type = 'playback'  (string)
> jonsmirl at terra:/etc$
> 
> playback_0 is analog out
> playback_1 is SPDIF out
> 
> module module-hal-detect does not load the second one.

Things are not always as easy as they might seem.

Currently ALSA exports no way to find out what ways to access the
audio devices are exclusive and what ways are not. Also it is
generally not defined what an ALSA "subdevice" actually refers to. In
your case #0 and #1 are each independant PCMs as it
appears. However for other cards #1 might be the front speakers of a
suround setup, #1 the rear speakers and so on. The actual logic
mapping of these subdevices is done by the device strings "front:",
"iec958:", "surround51:" and so on in ALSA userspace. Also, on some
devices you can either do 7.1 playback and no recording, or you can do
stereo duplex -- but you cannot do 7.1 playback and stereo
recording. Similar limitations can apply with the combination of SPDIF
and other ways to access the audio device for playback/capturing.

There is just no way right now to automatically discover the
subdevices we can use independantly and which ones we cannot.

In current git there are the beginnings of a logic that autoprobes the
available "profiles" and their possible combinations and then allows
to switch between them dynamically during runtime. This is still very
much incomplete however. (Load module-alsa-card into your server
instead of module-alsa-source/-sink and it will show you the possible
configs of your card when you do an "ls-cards" in pacmd).

Doing this autoprobing is ugly and slow, but the easiest way for now
to overcome this limitation in the underlying ALSA layers for now.

In summary: supporting multiple subdevices and SPDIF like this is much
more difficult then it might appear, but I am working on it.

Also see #139.

Lennart

-- 
Lennart Poettering                        Red Hat, Inc.
lennart [at] poettering [dot] net         ICQ# 11060553
http://0pointer.net/lennart/           GnuPG 0x1A015CC4



[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux