[alsa-devel] Nodes, Widgets, ELD and Digital Surround 5.1 (HDMI) Output?

Alexander E. Patrakov patrakov at gmail.com
Wed Dec 3 08:58:55 CET 2014


03.12.2014 12:34, David Henningsson wrote:
>
>
> On 2014-12-02 16:28, bencoxdev at gmail.com wrote:
>> Hi All,
>>      I have an Intel HDA compatible device that supports 5.1 digital
>> audio output over HDMI. It reports two nodes and two widgets:-
>>
>>                     Root(0)
>>                       |
>>                      AFG(1)
>>                      / \
>>                     /   \
>>                    /     \
>>        Audio output(2)    Pin Complex(3)
>>
>> This setup produces a “Digital Stereo (HDMI) Output” device at user
>> level in the operating system.
>>
>> The codec reports its self  to the operating system as follows
>> (from /proc/asound/card0/codec#1)
>> --------------------------------------------------------------------
>> AFG Function Id: 0x1 (unsol 1)
>> No Modem Function Group found
>> Default PCM:
>>      rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
>>      bits [0xe]: 16 20 24
>>      formats [0x1]: PCM
>> Default Amp-In caps: N/A
>> Default Amp-Out caps: N/A
>> GPIO: io=0, o=0, i=0, unsolicited=0, wake=0
>> --------------------------------------------------------------------
>> Node 0x02 [Audio Output] wcaps 0x201: Stereo Digital
>>    Device: name="S3 HDMI 1", type="Audio", device=0
>>    Converter: stream=0, channel=0
>>    Digital:
>>    Digital category: 0x0
>> --------------------------------------------------------------------
>> Node 0x03 [Pin Complex] wcaps 0x400381: Stereo Digital
>>    Pincap 0x00000090: OUT HDMI
>>    Pin Default 0x185650f0: [Jack] Digital Out at Int HDMI
>>      Conn = Digital, Color = Red
>>      DefAssociation = 0xf, Sequence = 0x0
>>    Pin-ctls: 0x40: OUT
>>    Unsolicited: tag=00, enabled=0
>>    Connection: 1
>>       0x02
>> --------------------------------------------------------------------
>>
>> the ELD from the receiving device is:-
>>
>> monitor_present      1
>> eld_valid            1
>> monitor_name         EP-HDMI-RX
>> connection_type      HDMI
>> eld_version          [0x2] CEA-861D or below
>> edid_version         [0x3] CEA-861-B, C or D
>> manufacture_id       0x1017
>> product_id           0x901
>> port_id              0x0
>> support_hdcp         0
>> support_ai           1
>> audio_sync_delay     0
>> speakers             [0x4f] FL/FR LFE FC RL/RR RLC/RRC
>>
>> sad_count            2
>>
>> sad0_coding_type     [0x2] AC-3
>> sad0_channels        6
>> sad0_rates           [0xe0] 32000 44100 48000
>> sad0_max_bitrate     640000
>>
>> sad1_coding_type     [0x7] DTS
>> sad1_channels        7
>> sad1_rates           [0xc0] 44100 48000
>> sad1_max_bitrate     1536000
>>
>>
>> Does anyone know what changes would be required to this setup in
>> order for the device to be recognised as
>> “Digital Surround 5.1 (HDMI) Output”
>> by alsa?
>
> You're confusing ALSA and PulseAudio a bit here; I think you should
> first try to get a PulseAudio verbose log (
> https://wiki.ubuntu.com/PulseAudio/Log ), look for when it tries to open
> hdmi:0,1 in surround 5.1 version and see if you can find errors. Those
> errors might still be ALSA errors though, and come from alsa-lib.

To add: if your HDMI audio controller was, in fact, made by AMD, then 
PulseAudio 5.0 will not even try to open it in 5.1 mode. This bug has 
been fixed in 6.0-rc1. You can try creating new udev rules if you don't 
want to upgrade. There is a line in /lib/udev/rules.d/90-pulseaudio.rules:

/lib/udev/rules.d/90-pulseaudio.rules:ATTRS{vendor}=="0x8086", 
ENV{PULSE_PROFILE_SET}="extra-hdmi.conf"

All you need to do is to figure out the vendor ID (from lspci -nn) and 
write a similar line to /etc/udev/rules.d/91-my-pulseaudio.rules , then 
run "udevadm trigger" and possibly logout and login again. Or reboot.

However, the upstream fix was to remove the "extra-hdmi.conf" file 
completely and merge all profiles contained there to the default set.

-- 
Alexander E. Patrakov


More information about the Alsa-devel mailing list