Hi Guys, Thank you for your input it's much appreciated.
I have now produced the pulse audio log as suggested and it appears that when an attempt to open the Digital Surround 5.1 device, it fails with a "No such file or directory" error. Here is a snippet of the log showing the error.
( 0.456| 0.000) D: [pulseaudio] alsa-mixer.c: Looking at profile output:iec958-ac3-surround-51 ( 0.456| 0.000) D: [pulseaudio] alsa-mixer.c: Checking for playback on Digital Surround 5.1 (IEC958/AC3) (iec958-ac3-surround-51) ( 0.456| 0.000) D: [pulseaudio] alsa-util.c: Trying a52:1 with SND_PCM_NO_AUTO_FORMAT ... ( 0.456| 0.000) I: [pulseaudio] (alsa-lib)pcm.c: Unknown PCM a52:1 ( 0.456| 0.000) I: [pulseaudio] alsa-util.c: Error opening PCM device a52:1: No such file or directory
So I guess the next question is what is responsible for producing the required device?
TIA ----------------------------------------------------------------------------- Regards Ben
From: Alexander E. Patrakov Sent: Wednesday, December 03, 2014 7:58 AM To: David Henningsson ; bencoxdev@gmail.com ; ALSA Mailing list Subject: Re: [alsa-devel] Nodes, Widgets, ELD and Digital Surround 5.1 (HDMI) Output? 03.12.2014 12:34, David Henningsson wrote:
On 2014-12-02 16:28, bencoxdev@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.