I've determined this isn't only an issue in LibreELEC but I hope someone has had experience with something similar.
I'm trying to get a USB DAC with 5.1 output to give me sound on all channels.
I can only get sound out of Front Left & Right, and Surround Left & Right.
Center & LFE outputs are silent.
Sound out of all channels works in Windows 10 with default drivers.
I have tried both LibreELEC 11.0.1 and 11.0.3, and I also fired up an Ubuntu Desktop 22.04.3 which gave the same results, so it's not a LibreELEC only problem.
The device is a LEAGY branded C-Media CM6206 (or perhaps technically CM6206-LX which seems to be the 6-channel version).
For reference, it's like the ones described and listed here:
https://www.amazon.com/Channel-External-Surround-Recording-Compatible/dp/B076PC4VV4
Receiver is ruled out after testing several combinations of the outputs to receiver input.
To rule out KODI (which with 5.1 selected still only gives the 4 channels without Center and LFE), I ran speaker-test from the shell.
speaker-test -l 1 -c 6 -D surround51:CARD=ICUSBAUDIO7D,DEV=0
I also ran with the sine test at low frequency to make sure the pink noise speaker-test didn't skip the subwoofer, and I also tried the 7.1 device (speaker-test -l 1 -c 8 -D surround71:CARD=ICUSBAUDIO7D,DEV=0). Center & LFE outputs remain silent.
The device seems to be using the regular ALSA snd_usb_audio module.
Anyone here who's had experience with USB 5.1 DACs of this type?
Any configurations or overrides I can attempt, perhaps with a custom asound.conf entry or something?
Commands: aplay -l & aplay -L
Display Spoiler
LibreELEC:~ # aplay -l
**** List of PLAYBACK Hardware Devices ****
card 1: ICUSBAUDIO7D [ICUSBAUDIO7D], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
LibreELEC:~ # aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
front:CARD=Intel
Front output / input
surround21:CARD=Intel
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Intel
4.0 Surround output to Front and Rear speakers
surround41:CARD=Intel
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Intel
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Intel
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Intel
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
default:CARD=ICUSBAUDIO7D
ICUSBAUDIO7D, USB Audio
Default Audio Device
sysdefault:CARD=ICUSBAUDIO7D
ICUSBAUDIO7D, USB Audio
Default Audio Device
front:CARD=ICUSBAUDIO7D,DEV=0
ICUSBAUDIO7D, USB Audio
Front output / input
surround21:CARD=ICUSBAUDIO7D,DEV=0
ICUSBAUDIO7D, USB Audio
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=ICUSBAUDIO7D,DEV=0
ICUSBAUDIO7D, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=ICUSBAUDIO7D,DEV=0
ICUSBAUDIO7D, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=ICUSBAUDIO7D,DEV=0
ICUSBAUDIO7D, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=ICUSBAUDIO7D,DEV=0
ICUSBAUDIO7D, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=ICUSBAUDIO7D,DEV=0
ICUSBAUDIO7D, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=ICUSBAUDIO7D,DEV=0
ICUSBAUDIO7D, USB Audio
IEC958 (S/PDIF) Digital Audio Output
LibreELEC:~ #
Commands: speaker-test
Display Spoiler
LibreELEC:~ # speaker-test -l 1 -c 6 -D surround51:CARD=ICUSBAUDIO7D,DEV=0
speaker-test 1.2.8
Playback device is surround51:CARD=ICUSBAUDIO7D,DEV=0
Stream parameters are 48000Hz, S16_LE, 6 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 96 to 96000
Period size range from 48 to 48000
Using max buffer size 96000
Periods = 4
was set period_size = 24000
was set buffer_size = 96000
0 - Front Left
4 - Front Center
1 - Front Right
3 - Side Right
2 - Side Left
5 - LFE
Time per period = 15.987218
LibreELEC:~ #
LibreELEC:~ # speaker-test -c 8 -D surround71:CARD=ICUSBAUDIO7D,DEV=0
speaker-test 1.2.8
Playback device is surround71:CARD=ICUSBAUDIO7D,DEV=0
Stream parameters are 48000Hz, S16_LE, 8 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 96 to 96000
Period size range from 48 to 48000
Using max buffer size 96000
Periods = 4
was set period_size = 24000
was set buffer_size = 96000
0 - Front Left
4 - Front Center
1 - Front Right
3 - Side Right
7 - Side Right
2 - Side Left
6 - Side Left
5 - LFE
Time per period = 21.987770
LibreELEC:~ #
The surround51 and surround71 entries from alsactl dump-cfg
Display Spoiler
cards.USB-Audio.pcm.surround51.0 {
@args.0 CARD
@args.CARD {
type string
}
@func refer
name {
@func concat
strings [
'cards.USB-Audio.'
{
@func card_name
card $CARD
}
'.pcm.surround51:CARD='
$CARD
]
}
default {
type route
ttable.0.0 1
ttable.1.1 1
ttable.2.4 1
ttable.3.5 1
ttable.4.2 1
ttable.5.3 1
slave {
pcm {
type hw
card $CARD
device 0
}
channels 6
}
}
}
cards.USB-Audio.pcm.surround71.0 {
@args.0 CARD
@args.CARD {
type string
}
@func refer
name {
@func concat
strings [
'cards.USB-Audio.'
{
@func card_name
card $CARD
}
'.pcm.surround71:CARD='
$CARD
]
}
default {
type route
ttable.0.0 1
ttable.1.1 1
ttable.2.4 1
ttable.3.5 1
ttable.4.2 1
ttable.5.3 1
ttable.6.6 1
ttable.7.7 1
slave {
pcm {
type hw
card $CARD
device 0
}
channels 8
}
}
}