You are not logged in.

#1 Yesterday 22:02:46

emk2203
Member
Registered: 2024-10-17
Posts: 9

how to make audio work for mpd on a Intel NUC6CAYH over optical out?

I have a Intel NUC6CAYH PC, attached to a audio receiver via optical out.

The machine is not locally used (except for emergencies and maintenance). It's a server, no GUI installed.

The desired scenario is that mpd is able to output sound via optical out to the receiver. I also tried to test setups with remote login, but this didn't help. A user exists and belongs to the audio group.

Preliminary test of audio output with mpg123 fails (started over ssh):

mpg123 /srv/media/Music/Aramzamzam.mp3 

High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
        version 1.33.4; written and copyright by Michael Hipp and others
        free software (LGPL) without any warranty but with best wishes

Directory: /srv/media/Music/

Terminal control enabled, press 'h' for listing of keys and functions.

Playing MPEG stream 1 of 1: Aramzamzam.mp3 ...
[src/libout123/modules/alsa.c:initialize_device():129] error: initialize_device(): cannot set hw params
main: [src/mpg123.c:check_fatal_output():337] error: out123 error 7: failed to open device

If I test the command on another PC (remote via ssh), it works. This PC has a full KDE environment, though.

inxi -Axx

Audio:
  Device-1: Intel Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster
    driver: snd_hda_intel v: kernel bus-ID: 00:0e.0 chip-ID: 8086:5a98
  API: ALSA v: k6.19.11-arch1-1 status: kernel-api
  Server-1: sndiod v: N/A status: off
  Server-2: PipeWire v: 1.6.3 status: active with: 1: pipewire-pulse status: off 2: wireplumber
    status: active 3: pipewire-alsa type: plugin 4: pw-jack type: plugin
pactl info

Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 59
Tile Size: 65472
User Name: emk2203
Host Name: NUC6CAYH
Server Name: PulseAudio (on PipeWire 1.6.3)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.pci-0000_00_0e.0.analog-stereo
Default Source: alsa_input.pci-0000_00_0e.0.analog-stereo
cat /proc/asound/cards

 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0x91410000 irq 139
cat /proc/asound/pcm

00-00: ALC283 Analog : ALC283 Analog : playback 1 : capture 1
00-01: ALC283 Digital : ALC283 Digital : playback 1
00-03: HDMI 0 : HDMI 0 : playback 1
00-07: HDMI 1 : HDMI 1 : playback 1
00-08: HDMI 2 : HDMI 2 : playback 1
fuser --all --verbose /dev/snd/*
                     USER        PID ACCESS COMMAND
/dev/snd/by-path:
/dev/snd/controlC0:  emk2203     858 F.... wireplumber
/dev/snd/hwC0D0:
/dev/snd/hwC0D2:
/dev/snd/pcmC0D0c:
/dev/snd/pcmC0D0p:
/dev/snd/pcmC0D1p:
/dev/snd/pcmC0D3p:
/dev/snd/pcmC0D7p:
/dev/snd/pcmC0D8p:
/dev/snd/seq:        emk2203     857 F.... pipewire
/dev/snd/timer:
aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC283 Analog [ALC283 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC283 Digital [ALC283 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
aplay --list-pcm

null
    Discard all samples (playback) or generate zero samples (capture)
pipewire
    PipeWire Sound Server
default
    Default ALSA Output (currently PipeWire Media Server)
sysdefault:CARD=PCH
    HDA Intel PCH, ALC283 Analog
    Default Audio Device
front:CARD=PCH,DEV=0
    HDA Intel PCH, ALC283 Analog
    Front output / input
surround21:CARD=PCH,DEV=0
    HDA Intel PCH, ALC283 Analog
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=PCH,DEV=0
    HDA Intel PCH, ALC283 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=PCH,DEV=0
    HDA Intel PCH, ALC283 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=PCH,DEV=0
    HDA Intel PCH, ALC283 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=PCH,DEV=0
    HDA Intel PCH, ALC283 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=PCH,DEV=0
    HDA Intel PCH, ALC283 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=PCH,DEV=0
    HDA Intel PCH, ALC283 Digital
    IEC958 (S/PDIF) Digital Audio Output
hdmi:CARD=PCH,DEV=0
    HDA Intel PCH, HDMI 0
    HDMI Audio Output
hdmi:CARD=PCH,DEV=1
    HDA Intel PCH, HDMI 1
    HDMI Audio Output
hdmi:CARD=PCH,DEV=2
    HDA Intel PCH, HDMI 2
    HDMI Audio Output
pactl list short sinks

49      alsa_output.pci-0000_00_0e.0.analog-stereo      PipeWire        s32le 2ch 48000Hz       SUSPENDED
pw-cli ls Node

        id 29, type PipeWire:Interface:Node/3
                object.serial = "29"
                factory.id = "11"
                priority.driver = "200000"
                node.name = "Dummy-Driver"
        id 30, type PipeWire:Interface:Node/3
                object.serial = "30"
                factory.id = "11"
                priority.driver = "190000"
                node.name = "Freewheel-Driver"
        id 34, type PipeWire:Interface:Node/3
                object.serial = "46"
                factory.id = "11"
                client.id = "42"
                priority.session = "100"
                priority.driver = "1"
                node.name = "Midi-Bridge"
                media.class = "Midi/Bridge"
        id 45, type PipeWire:Interface:Node/3
                object.serial = "49"
                object.path = "alsa:acp:PCH:7:playback"
                factory.id = "19"
                client.id = "42"
                device.id = "32"
                priority.session = "1009"
                priority.driver = "1009"
                node.description = "Built-in Audio Analog Stereo"
                node.name = "alsa_output.pci-0000_00_0e.0.analog-stereo"
                node.nick = "ALC283 Analog"
                media.class = "Audio/Sink"
        id 46, type PipeWire:Interface:Node/3
                object.serial = "50"
                object.path = "alsa:acp:PCH:0:capture"
                factory.id = "19"
                client.id = "42"
                device.id = "32"
                priority.session = "2009"
                priority.driver = "2009"
                node.description = "Built-in Audio Analog Stereo"
                node.name = "alsa_input.pci-0000_00_0e.0.analog-stereo"
                node.nick = "ALC283 Analog"
                media.class = "Audio/Source"

mpd is running; pgrep -a mpd shows 994 /usr/bin/mpd --systemd (started with systemctl --user start mpd.service).

systemctl --user status mpd.service
 
● mpd.service - Music Player Daemon
     Loaded: loaded (/usr/lib/systemd/user/mpd.service; enabled; preset: enabled)
     Active: active (running) since Tue 2026-04-14 23:43:26 CEST; 11min ago
 Invocation: 15a443c697104dc5ab38640239a65f35
       Docs: man:mpd(1)
             man:mpd.conf(5)
   Main PID: 994 (mpd)
      Tasks: 7 (limit: 9286)
     Memory: 34.8M (peak: 37.5M)
        CPU: 738ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/mpd.service
             └─994 /usr/bin/mpd --systemd

Apr 14 23:43:26 NUC6CAYH systemd[732]: Starting Music Player Daemon...
Apr 14 23:43:26 NUC6CAYH mpd[994]: Ignoring the 'pid_file' setting in systemd mode
Apr 14 23:43:26 NUC6CAYH mpd[994]: exception: Failed to access /home/emk2203/.local/share/mpd/playlists: No such file or directory
Apr 14 23:43:26 NUC6CAYH systemd[732]: Started Music Player Daemon.
Apr 14 23:45:50 NUC6CAYH mpd[994]: mixer: Failed to read mixer for "HDA Intel PCH sound card": no such mixer control: PCM
Apr 14 23:45:58 NUC6CAYH mpd[994]: server_socket: bind to '0.0.0.0:8080' failed (continuing anyway, because binding to '[::]:8080' succeeded): Failed to bind socket: Address a>
Apr 14 23:45:58 NUC6CAYH mpd[994]: output: Failed to open mixer for "HDA Intel PCH sound card": no such mixer control: PCM
cat /etc/mpd.conf

pid_file                "/run/mpd/mpd.pid"
# Full XDG expansion after 0.25 release
#db_file                        "$XDG_DATA_HOME/mpd/mpd.db"
#state_file             "$XDG_STATE_HOME/mpd/mpdstate"
#playlist_directory     "$XDG_DATA_HOME/mpd/playlists"
db_file                 "~/.local/share/mpd/mpd.db"
state_file              "~/.local/state/mpd/mpdstate"
playlist_directory      "~/.local/share/mpd/playlists"

music_directory         "/srv/media/Music"

#bind_to_address                "localhost"
bind_to_address         "0.0.0.0"
port                    "6600"

audio_output {
        type          "alsa"
        name          "HDA Intel PCH sound card"
        # Optional
        device        "iec958"
        #mixer_control "PCM"
}

audio_output {
    type        "httpd"
    name        "NUC6CAYH MPD http stream"
#    encoder        "none"        # optional, vorbis or lame
    port        "8080"
#    bind_to_address    "0.0.0.0"        # optional, IPv4 or IPv6
    quality        "5.0"            # do not define if bitrate is defined
#    bitrate        "256"            # do not define if quality is defined
    format        "44100:16:2"
    max_clients    "0"            # optional 0=no limit
}

filesystem_charset      "UTF-8"
restore_paused          "yes"

#default_permissions "read"
#local_permissions "read,add,control,admin"
#password "xxx@read,add,control,admin"

#log_file               "~/.local/share/mpd/mpd.log"
#log_level              "verbose"

How can force digital out for all audio daemons: alsa, pulseaudio, pipewire? alsamixer and wiremix don't show the digital output option. For this server (with audio server) scenario, would it be better to uninstall pipewire and/or pulseaudio?

Offline

#2 Yesterday 22:20:50

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 25,111

Re: how to make audio work for mpd on a Intel NUC6CAYH over optical out?

You haven't posted the more important pulse/pipewire command which would be

pactl list cards

the digital out will likely be on a different card profile you can switch to. But ultimately for a server whose whole purpose is to just route mpd, you could definitely just get rid of sound servers and give mpd full access and control of the ALSA device

Last edited by V1del (Yesterday 22:23:01)

Online

#3 Today 05:10:03

emk2203
Member
Registered: 2024-10-17
Posts: 9

Re: how to make audio work for mpd on a Intel NUC6CAYH over optical out?

pactl list cards

Card #48
        Name: alsa_card.pci-0000_00_0e.0
        Driver: alsa
        Owner Module: n/a
        Properties:
                device.enum.api = "udev"
                device.api = "alsa"
                media.class = "Audio/Device"
                api.alsa.path = "hw:0"
                api.alsa.card = "0"
                api.alsa.card.name = "HDA Intel PCH"
                api.alsa.card.longname = "HDA Intel PCH at 0x91410000 irq 139"
                device.plugged.usec = "9277991"
                device.bus_path = "pci-0000:00:0e.0"
                sysfs.path = "/devices/pci0000:00/0000:00:0e.0/sound/card0"
                device.bus = "pci"
                device.subsystem = "sound"
                device.vendor.id = "0x8086"
                device.vendor.name = "Intel Corporation"
                device.product.id = "0x5a98"
                device.product.name = "Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster"
                device.form_factor = "internal"
                device.name = "alsa_card.pci-0000_00_0e.0"
                device.description = "Built-in Audio"
                device.nick = "HDA Intel PCH"
                device.icon_name = "audio-card-analog-pci"
                api.alsa.use-acp = "true"
                api.acp.auto-profile = "false"
                api.acp.auto-port = "false"
                api.dbus.ReserveDevice1.Priority = "-20"
                api.alsa.split-enable = "true"
                api.dbus.ReserveDevice1 = "Audio0"
                spa.object.id = "2"
                factory.id = "15"
                client.id = "46"
                object.id = "47"
                object.serial = "48"
                object.path = "alsa:acp:PCH"
                alsa.card = "0"
                alsa.card_name = "HDA Intel PCH"
                alsa.long_card_name = "HDA Intel PCH at 0x91410000 irq 139"
                alsa.driver_name = "snd_hda_intel"
                alsa.mixer_name = "Realtek ALC283"
                alsa.components = "HDA:10ec0283,80862067,00100003 HDA:8086280a,80860101,00100000"
                alsa.id = "PCH"
                device.string = "0"
        Profiles:
                off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
                output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (sinks: 1, sources: 1, priority: 6565, available: yes)
                output:analog-stereo: Analog Stereo Output (sinks: 1, sources: 0, priority: 6500, available: yes)
                output:hdmi-stereo+input:analog-stereo: Digital Stereo (HDMI) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 5965, available: no)
                output:hdmi-stereo: Digital Stereo (HDMI) Output (sinks: 1, sources: 0, priority: 5900, available: no)
                output:hdmi-stereo-extra1+input:analog-stereo: Digital Stereo (HDMI 2) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 5765, available: no)
                output:hdmi-stereo-extra2+input:analog-stereo: Digital Stereo (HDMI 3) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 5765, available: no)
                output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) Output (sinks: 1, sources: 0, priority: 5700, available: no)
                output:hdmi-stereo-extra2: Digital Stereo (HDMI 3) Output (sinks: 1, sources: 0, priority: 5700, available: no)
                output:iec958-stereo+input:analog-stereo: Digital Stereo (IEC958) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 5565, available: yes)
                output:iec958-stereo: Digital Stereo (IEC958) Output (sinks: 1, sources: 0, priority: 5500, available: yes)
                output:analog-surround-40+input:analog-stereo: Analog Surround 4.0 Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 1265, available: yes)
                output:analog-surround-40: Analog Surround 4.0 Output (sinks: 1, sources: 0, priority: 1200, available: yes)
                output:hdmi-surround+input:analog-stereo: Digital Surround 5.1 (HDMI) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 865, available: no)
                output:hdmi-surround71+input:analog-stereo: Digital Surround 7.1 (HDMI) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 865, available: no)
                output:hdmi-surround: Digital Surround 5.1 (HDMI) Output (sinks: 1, sources: 0, priority: 800, available: no)
                output:hdmi-surround71: Digital Surround 7.1 (HDMI) Output (sinks: 1, sources: 0, priority: 800, available: no)
                output:hdmi-surround-extra1+input:analog-stereo: Digital Surround 5.1 (HDMI 2) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 665, available: no)
                output:hdmi-surround71-extra1+input:analog-stereo: Digital Surround 7.1 (HDMI 2) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 665, available: no)
                output:hdmi-surround-extra2+input:analog-stereo: Digital Surround 5.1 (HDMI 3) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 665, available: no)
                output:hdmi-surround71-extra2+input:analog-stereo: Digital Surround 7.1 (HDMI 3) Output + Analog Stereo Input (sinks: 1, sources: 1, priority: 665, available: no)
                output:hdmi-surround-extra1: Digital Surround 5.1 (HDMI 2) Output (sinks: 1, sources: 0, priority: 600, available: no)
                output:hdmi-surround71-extra1: Digital Surround 7.1 (HDMI 2) Output (sinks: 1, sources: 0, priority: 600, available: no)
                output:hdmi-surround-extra2: Digital Surround 5.1 (HDMI 3) Output (sinks: 1, sources: 0, priority: 600, available: no)
                output:hdmi-surround71-extra2: Digital Surround 7.1 (HDMI 3) Output (sinks: 1, sources: 0, priority: 600, available: no)
                input:analog-stereo: Analog Stereo Input (sinks: 0, sources: 1, priority: 65, available: yes)
                pro-audio: Pro Audio (sinks: 5, sources: 1, priority: 1, available: yes)
        Active Profile: output:analog-stereo+input:analog-stereo
        Ports:
                analog-input-internal-mic: Internal Microphone (type: Mic, priority: 8900, latency offset: 0 usec, availability group: Legacy 1, availability unknown)
                        Properties:
                                port.type = "mic"
                                port.availability-group = "Legacy 1"
                                device.icon_name = "audio-input-microphone"
                                card.profile.port = "0"
                        Part of profile(s): input:analog-stereo, output:analog-stereo+input:analog-stereo, output:analog-surround-40+input:analog-stereo, output:iec958-stereo+input:analog-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71+input:analog-stereo, output:hdmi-stereo-extra1+input:analog-stereo, output:hdmi-surround-extra1+input:analog-stereo, output:hdmi-surround71-extra1+input:analog-stereo, output:hdmi-stereo-extra2+input:analog-stereo, output:hdmi-surround-extra2+input:analog-stereo, output:hdmi-surround71-extra2+input:analog-stereo
                analog-input-mic: Microphone (type: Mic, priority: 8700, latency offset: 0 usec, availability group: Legacy 2, not available)
                        Properties:
                                port.type = "mic"
                                port.availability-group = "Legacy 2"
                                device.icon_name = "audio-input-microphone"
                                card.profile.port = "1"
                        Part of profile(s): input:analog-stereo, output:analog-stereo+input:analog-stereo, output:analog-surround-40+input:analog-stereo, output:iec958-stereo+input:analog-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71+input:analog-stereo, output:hdmi-stereo-extra1+input:analog-stereo, output:hdmi-surround-extra1+input:analog-stereo, output:hdmi-surround71-extra1+input:analog-stereo, output:hdmi-stereo-extra2+input:analog-stereo, output:hdmi-surround-extra2+input:analog-stereo, output:hdmi-surround71-extra2+input:analog-stereo
                analog-output-headphones: Headphones (type: Headphones, priority: 9900, latency offset: 0 usec, availability unknown)
                        Properties:
                                port.type = "headphones"
                                device.icon_name = "audio-headphones"
                                card.profile.port = "2"
                        Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo
                analog-output-headphones-2: Headphones 2 (type: Headphones, priority: 9800, latency offset: 0 usec, availability group: Legacy 3, not available)
                        Properties:
                                port.type = "headphones"
                                port.availability-group = "Legacy 3"
                                device.icon_name = "audio-headphones"
                                card.profile.port = "3"
                        Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo
                analog-output: Analog Output (type: Analog, priority: 9900, latency offset: 0 usec, availability unknown)
                        Properties:
                                port.type = "analog"
                                card.profile.port = "4"
                        Part of profile(s): output:analog-surround-40, output:analog-surround-40+input:analog-stereo
                iec958-stereo-output: Digital Output (S/PDIF) (type: SPDIF, priority: 0, latency offset: 0 usec, availability unknown)
                        Properties:
                                port.type = "spdif"
                                card.profile.port = "5"
                        Part of profile(s): output:iec958-stereo, output:iec958-stereo+input:analog-stereo
                hdmi-output-0: HDMI / DisplayPort (type: HDMI, priority: 5900, latency offset: 0 usec, availability group: Legacy 4, not available)
                        Properties:
                                port.type = "hdmi"
                                port.availability-group = "Legacy 4"
                                device.icon_name = "video-display"
                                card.profile.port = "6"
                        Part of profile(s): output:hdmi-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71, output:hdmi-surround71+input:analog-stereo
                hdmi-output-1: HDMI / DisplayPort 2 (type: HDMI, priority: 5800, latency offset: 0 usec, availability group: Legacy 5, not available)
                        Properties:
                                port.type = "hdmi"
                                port.availability-group = "Legacy 5"
                                device.icon_name = "video-display"
                                card.profile.port = "7"
                        Part of profile(s): output:hdmi-stereo-extra1, output:hdmi-stereo-extra1+input:analog-stereo, output:hdmi-surround-extra1, output:hdmi-surround-extra1+input:analog-stereo, output:hdmi-surround71-extra1, output:hdmi-surround71-extra1+input:analog-stereo
                hdmi-output-2: HDMI / DisplayPort 3 (type: HDMI, priority: 5700, latency offset: 0 usec, availability group: Legacy 6, not available)
                        Properties:
                                port.type = "hdmi"
                                port.availability-group = "Legacy 6"
                                device.icon_name = "video-display"
                                card.profile.port = "8"
                        Part of profile(s): output:hdmi-stereo-extra2, output:hdmi-stereo-extra2+input:analog-stereo, output:hdmi-surround-extra2, output:hdmi-surround-extra2+input:analog-stereo, output:hdmi-surround71-extra2, output:hdmi-surround71-extra2+input:analog-stereo

is the output. I can see that the iec958-stereo which is the targeted on has a lower priority, and I can select it in the popup of wiremix if I scroll down.

I have selected it now, and pulled up the volume to 100%. It's not muted. But there's still no sound. Not with mpd, not with mpg123. The latter runs silent now, without errors, but no sound.

Is there anything to hardware-debug this setup? Would a white piece of paper show the LED color at the digital output if the hardware is OK? Only at playback, or always when the machine is on?

Last edited by emk2203 (Today 05:37:47)

Offline

#4 Today 08:04:52

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 74,463

Re: how to make audio work for mpd on a Intel NUC6CAYH over optical out?

V1del wrote:

you could definitely just get rid of sound servers and give mpd full access and control of the ALSA device

And regardless I'd start there if there's concern about the HW functionality.

Offline

Board footer

Powered by FluxBB