IEC958 (S/PDIF) not working
I can't get my IEC958 output working. The optical wire is physically connected to a powered 192KHz DAC via my sound card:
ツ sudo lspci |grep -i audio
00:1b.0 Audio device: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller (rev 04)
I have several devices detected:
When I select the first, "HDMI / DisplayPort 2 - Built-in Audio", sound comes out of the speaker integral to my monitor.
When I select the second, "Line Out - Built-in Audio" sound comes out of the headphone jack I have connected directly to the sound card.
I know for a fact that the DAC works because I was using it with Archlinux as recently as two days ago and nothing has changed in the physical setup.
Everything appears to be set up correctly in pavucontrol
:
Configuration. Again, if I select HDMI or Line Out, I get sound. Just not with S/PDIF: Input device includes a monitor (is that correct??) Output device shows bouncing bar on the vumeter:
The sound card is integral to my motherboard. Some more diagnostic info:
ツ aplay -l **** List of PLAYBACK Hardware Devices **** card 1: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 Digital] Subdevices: 0/1 Subdevice #0: subdevice #0 card 1: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1] Subdevices: 1/1 Subdevice #0: subdevice #0
ツ pacmd list-cards 1 card(s) available. index: 0 name: driver: owner module: 7 properties: alsa.card = "1" alsa.card_name = "HDA Intel PCH" alsa.long_card_name = "HDA Intel PCH at 0xf7d30000 irq 46" alsa.driver_name = "snd_hda_intel" device.bus_path = "pci-0000:00:1b.0" sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card1" device.bus = "pci" device.vendor.id = "8086" device.vendor.name = "Intel Corporation" device.product.id = "1e20" device.product.name = "7 Series/C216 Chipset Family High Definition Audio Controller" device.form_factor = "internal" device.string = "1" device.description = "Built-in Audio" module-udev-detect.discovered = "1" device.icon_name = "audio-card-pci" profiles: input:analog-stereo: Analog Stereo Input (priority 65, available: no) output:analog-stereo: Analog Stereo Output (priority 6500, available: unknown) output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (priority 6565, available: unknown) output:analog-surround-21: Analog Surround 2.1 Output (priority 1300, available: unknown) output:analog-surround-21+input:analog-stereo: Analog Surround 2.1 Output + Analog Stereo Input (priority 1365, available: unknown) output:analog-surround-40: Analog Surround 4.0 Output (priority 1200, available: unknown) output:analog-surround-40+input:analog-stereo: Analog Surround 4.0 Output + Analog Stereo Input (priority 1265, available: unknown) output:analog-surround-41: Analog Surround 4.1 Output (priority 1300, available: unknown) output:analog-surround-41+input:analog-stereo: Analog Surround 4.1 Output + Analog Stereo Input (priority 1365, available: unknown) output:analog-surround-50: Analog Surround 5.0 Output (priority 1200, available: unknown) output:analog-surround-50+input:analog-stereo: Analog Surround 5.0 Output + Analog Stereo Input (priority 1265, available: unknown) output:analog-surround-51: Analog Surround 5.1 Output (priority 1300, available: unknown) output:analog-surround-51+input:analog-stereo: Analog Surround 5.1 Output + Analog Stereo Input (priority 1365, available: unknown) output:analog-surround-71: Analog Surround 7.1 Output (priority 1200, available: unknown) output:analog-surround-71+input:analog-stereo: Analog Surround 7.1 Output + Analog Stereo Input (priority 1265, available: unknown) output:iec958-stereo: Digital Stereo (IEC958) Output (priority 5500, available: unknown) output:iec958-stereo+input:analog-stereo: Digital Stereo (IEC958) Output + Analog Stereo Input (priority 5565, available: unknown) output:hdmi-stereo: Digital Stereo (HDMI) Output (priority 5900, available: no) output:hdmi-stereo+input:analog-stereo: Digital Stereo (HDMI) Output + Analog Stereo Input (priority 5965, available: no) output:hdmi-surround: Digital Surround 5.1 (HDMI) Output (priority 800, available: no) output:hdmi-surround+input:analog-stereo: Digital Surround 5.1 (HDMI) Output + Analog Stereo Input (priority 865, available: no) output:hdmi-surround71: Digital Surround 7.1 (HDMI) Output (priority 800, available: no) output:hdmi-surround71+input:analog-stereo: Digital Surround 7.1 (HDMI) Output + Analog Stereo Input (priority 865, available: no) output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) Output (priority 5700, available: unknown) output:hdmi-stereo-extra1+input:analog-stereo: Digital Stereo (HDMI 2) Output + Analog Stereo Input (priority 5765, available: unknown) off: Off (priority 0, available: unknown) active profile: sinks: alsa_output.pci-0000_00_1b.0.iec958-stereo/#59: Built-in Audio Digital Stereo (IEC958) sources: alsa_output.pci-0000_00_1b.0.iec958-stereo.monitor/#59: Monitor of Built-in Audio Digital Stereo (IEC958) ports: analog-input-front-mic: Front Microphone (priority 8500, latency offset 0 usec, available: no) properties: device.icon_name = "audio-input-microphone" analog-input-rear-mic: Rear Microphone (priority 8200, latency offset 0 usec, available: no) properties: device.icon_name = "audio-input-microphone" analog-input-linein: Line In (priority 8100, latency offset 0 usec, available: no) properties: analog-output-lineout: Line Out (priority 9900, latency offset 0 usec, available: yes) properties: analog-output-headphones: Headphones (priority 9000, latency offset 0 usec, available: no) properties: device.icon_name = "audio-headphones" iec958-stereo-output: Digital Output (S/PDIF) (priority 0, latency offset 0 usec, available: unknown) properties: hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: no) properties: device.icon_name = "video-display" hdmi-output-1: HDMI / DisplayPort 2 (priority 5800, latency offset 0 usec, available: yes) properties: device.icon_name = "video-display" device.product.name = "VX2770 SERIES"
ツ pacmd list-sinks 1 sink(s) available. * index: 59 name: driver: flags: HARDWARE HW_MUTE_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY state: RUNNING suspend cause: (none) priority: 9038 volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB balance 0.00 base volume: 65536 / 100% / 0.00 dB volume steps: 65537 muted: no current latency: 7.67 ms max request: 1 KiB max rewind: 1 KiB monitor source: 59 sample spec: s16le 2ch 44100Hz channel map: front-left,front-right Stereo used by: 3 linked by: 3 configured latency: 8.00 ms; range is 8.00 .. 371.52 ms card: 0 module: 7 properties: alsa.resolution_bits = "16" device.api = "alsa" device.class = "sound" alsa.class = "generic" alsa.subclass = "generic-mix" alsa.name = "ALC892 Digital" alsa.id = "ALC892 Digital" alsa.subdevice = "0" alsa.subdevice_name = "subdevice #0" alsa.device = "1" alsa.card = "1" alsa.card_name = "HDA Intel PCH" alsa.long_card_name = "HDA Intel PCH at 0xf7d30000 irq 46" alsa.driver_name = "snd_hda_intel" device.bus_path = "pci-0000:00:1b.0" sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card1" device.bus = "pci" device.vendor.id = "8086" device.vendor.name = "Intel Corporation" device.product.id = "1e20" device.product.name = "7 Series/C216 Chipset Family High Definition Audio Controller" device.form_factor = "internal" device.string = "iec958:1" device.buffering.buffer_size = "65536" device.buffering.fragment_size = "32768" device.access_mode = "mmap+timer" device.profile.name = "iec958-stereo" device.profile.description = "Digital Stereo (IEC958)" device.description = "Built-in Audio Digital Stereo (IEC958)" alsa.mixer_name = "Realtek ALC892" alsa.components = "HDA:10ec0892,104384fb,00100302 HDA:80862806,80860101,00100000" module-udev-detect.discovered = "1" device.icon_name = "audio-card-pci" ports: iec958-stereo-output: Digital Output (S/PDIF) (priority 0, latency offset 0 usec, available: unknown) properties: active port:
ツ cat /etc/modprobe.d/alsa-base.conf # autoloader aliases install sound-slot-0 /sbin/modprobe snd-card-0 install sound-slot-1 /sbin/modprobe snd-card-1 install sound-slot-2 /sbin/modprobe snd-card-2 install sound-slot-3 /sbin/modprobe snd-card-3 install sound-slot-4 /sbin/modprobe snd-card-4 install sound-slot-5 /sbin/modprobe snd-card-5 install sound-slot-6 /sbin/modprobe snd-card-6 install sound-slot-7 /sbin/modprobe snd-card-7 # Cause optional modules to be loaded above generic modules install snd /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-ioctl32 ; /sbin/modprobe --quiet --use-blacklist snd-seq ; } # # Workaround at bug #499695 (reverted in Ubuntu see LP #319505) install snd-pcm /sbin/modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-pcm-oss ; : ; } install snd-mixer /sbin/modprobe --ignore-install snd-mixer $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-mixer-oss ; : ; } install snd-seq /sbin/modprobe --ignore-install snd-seq $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; /sbin/modprobe --quiet --use-blacklist snd-seq-oss ; : ; } # install snd-rawmidi /sbin/modprobe --ignore-install snd-rawmidi $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; : ; } # Cause optional modules to be loaded above sound card driver modules install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-emu10k1-synth ; } install snd-via82xx /sbin/modprobe --ignore-install snd-via82xx $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq ; } # Load saa7134-alsa instead of saa7134 (which gets dragged in by it anyway) install saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist saa7134-alsa ; : ; } # Prevent abnormal drivers from grabbing index 0 options bt87x index=-2 options cx88_alsa index=-2 options saa7134-alsa index=-2 options snd-atiixp-modem index=-2 options snd-intel8x0m index=-2 options snd-via82xx-modem index=-2 options snd-usb-audio index=-2 options snd-usb-caiaq index=-2 options snd-usb-ua101 index=-2 options snd-usb-us122l index=-2 options snd-usb-usx2y index=-2 # Ubuntu #62691, enable MPU for snd-cmipci options snd-cmipci mpu_port=0x330 fm_port=0x388 # Keep snd-pcsp from being loaded as first soundcard options snd-pcsp index=-2 # Keep snd-usb-audio from beeing loaded as first soundcard options snd-usb-audio index=-2 options snd-hda-intel index=1
ツ iecset audio on snd_ctl_open: No such file or directory
ツ lsmod|grep snd snd_hda_codec_hdmi 49152 1 snd_hda_codec_realtek 106496 1 snd_hda_codec_generic 73728 1 snd_hda_codec_realtek snd_hda_intel 40960 4 snd_hda_codec 126976 4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek snd_hda_core 81920 5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek snd_hwdep 20480 1 snd_hda_codec snd_pcm 98304 5 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core snd_seq_midi 16384 0 snd_seq_midi_event 16384 1 snd_seq_midi snd_rawmidi 32768 1 snd_seq_midi snd_seq 65536 2 snd_seq_midi,snd_seq_midi_event snd_seq_device 16384 3 snd_seq,snd_seq_midi,snd_rawmidi snd_timer 32768 2 snd_seq,snd_pcm snd 81920 18 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm,snd_rawmidi
Note: I have gone through most of the steps here, https://help.ubuntu.com/community/SoundTroubleshootingProcedure, and I have searched extensively, spending several hours on this yesterday. I am befuddled and posting here as a last resort.
The answer is actually so simple that it's silly that it's not included in the default gnome audio control panel.
Step 1:
sudo apt install libavresample-dev pavucontrol libasound2-plugins-extra
Step 2:
pavucontrol
Step 3:
Tick all the boxes for the advanced audio codecs
Step 4:
Enjoy amazing sound over S/PDIF out (optical or coax) to a speaker set that supports it.