ALSA error with direct hw
Added by Cristiano De Alti about 9 years ago
I'm trying to play 24/96 tracks with Audacious 3.7.2 compiled from sources on Linux Mint Nadia.
I want to use direct hw access without software conversions.
Deadbeef can play these tracks without problems both to my integrated audio and an external USB DAC (direct hw access without software conversions).
Audacious gives the following error:
ERROR util.cc:160 [audgui_simple_message]: ALSA error: snd_pcm_hw_params_set_format failed: Invalid argument.
Here is the output of aplay -L
default
Playback/recording through the PulseAudio sound server
sysdefault:CARD=PCH
HDA Intel PCH, ALC269VB Analog
Default Audio Device
front:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
Front speakers
surround40:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
4.0 Surround output to Front and Rear speakers
surround41:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
hdmi:CARD=PCH,DEV=0
HDA Intel PCH, HDMI 0
HDMI Audio Output
dmix:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
Direct sample mixing device
dmix:CARD=PCH,DEV=3
HDA Intel PCH, HDMI 0
Direct sample mixing device
dsnoop:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
Direct sample snooping device
dsnoop:CARD=PCH,DEV=3
HDA Intel PCH, HDMI 0
Direct sample snooping device
hw:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
Direct hardware device without any conversions
hw:CARD=PCH,DEV=3
HDA Intel PCH, HDMI 0
Direct hardware device without any conversions
plughw:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
Hardware device with all software conversions
plughw:CARD=PCH,DEV=3
HDA Intel PCH, HDMI 0
Hardware device with all software conversions
sysdefault:CARD=Audio
NAD USB Audio, USB Audio
Default Audio Device
front:CARD=Audio,DEV=0
NAD USB Audio, USB Audio
Front speakers
surround40:CARD=Audio,DEV=0
NAD USB Audio, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=Audio,DEV=0
NAD USB Audio, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Audio,DEV=0
NAD USB Audio, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Audio,DEV=0
NAD USB Audio, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Audio,DEV=0
NAD USB Audio, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Audio,DEV=0
NAD USB Audio, USB Audio
IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=Audio,DEV=0
NAD USB Audio, USB Audio
Direct sample mixing device
dsnoop:CARD=Audio,DEV=0
NAD USB Audio, USB Audio
Direct sample snooping device
hw:CARD=Audio,DEV=0
NAD USB Audio, USB Audio
Direct hardware device without any conversions
plughw:CARD=Audio,DEV=0
NAD USB Audio, USB Audio
Hardware device with all software conversions
I want to use hw:CARD=Audio,DEV=0 but I get the above error no matter the settings in File | Settings | Audio.
My settings are:
Ouput plugin: Alsa Output PCM Device: hw:CARD=Audio,DEV=0 Mixer device: hw:1 Mixer element: PCM
About the mixer settings, I've tried other combinations resulting in the same errors.
Note: I use the same configuration in Deadbeef and it works. However Deadbeef does not have any mixer options
The problem is not limited to the USB device. I have the same error using my integrated audio hw:CARD=PCH,DEV=0.
Note: I can use the integrated audio in Deadbeef
Following are some info on my USB DAC when playing one of the above tracks with Deadbeef:
$ cat /proc/asound/card1/stream0
NAD Electronics NAD USB Audio at usb-0000:05:00.0-1, full speed : USB Audio
Playback:
Status: Running
Interface = 1
Altset = 1
Packet Size = 588
Momentary freq = 96000 Hz (0x60.0000)
Feedback Format = 10.14
Packet Size = 0
Momentary freq = 96000 Hz (0x60.0000)
Interface 1
Altset 1
Format: S24_3LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000
$ cat /proc/asound/card1/pcm0p/info
card: 1
device: 0
subdevice: 0
stream: PLAYBACK
id: USB Audio
name: USB Audio
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 0
$ cat /proc/asound/card1/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S24_3LE
subformat: STD
channels: 2
rate: 96000 (96000/1)
period_size: 1024
buffer_size: 8192
$ cat /proc/asound/card1/pcm0p/sub0/info
card: 1
device: 0
subdevice: 0
stream: PLAYBACK
id: USB Audio
name: USB Audio
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 0
$ cat /proc/asound/card1/pcm0p/sub0/status
state: RUNNING
owner_pid : 17115
trigger_time: 849782.531341515
tstamp : 850141.280350597
delay : 7733
avail : 1036
avail_max : 2080
-----
hw_ptr : 34442252
appl_ptr : 34449408
$ cat /proc/asound/card1/pcm0p/sub0/sw_params
tstamp_mode: NONE
period_step: 1
avail_min: 1024
start_threshold: 7168
stop_threshold: 8192
silence_threshold: 0
silence_size: 0
boundary: 4611686018427387904
Regards,
Cristiano
Replies (6)
RE: ALSA error with direct hw
-
Added by John Lindgren about 9 years ago
It looks like deadbeef is using packed 24-bit audio, whereas Audacious uses unpacked (i.e. aligned to 32-bit word). That's the only difference I can think of. You could try using straight 32-bit instead; some chips support that.
RE: ALSA error with direct hw
-
Added by Cristiano De Alti about 9 years ago
Unfortunately changing the bit depth doesn't make any difference.
The problem is not limited only to 24/96. I get the same error also playing 16/44.1.
To summarize:
USB DAC: Cannot play anything to hw:CARD=Audio,DEV=0
Integrated audio: Cannot play 24/96 to hw:CARD=PCH,DEV=0 but I can play 16/44.1
I confirm that playing 24/96 and 16/44.1 works fine with Deadbeef both on hw:CARD=Audio,DEV=0 and hw:CARD=PCH,DEV=0.
Regards,
Cristiano
RE: ALSA error with direct hw
-
Added by Cristiano De Alti about 9 years ago
Hello,
Can you please help me understand if the following alternative is still bit perfect (equivalent to the deadbeef one)?
1. 24/96 flac
2. Output plugin: ALSA Output
3. Bit depth: 24
4. PCM Device: plughw:CARD=Audio,DEV=0
NAD USB Audio, USB Audio
Hardware device with all software conversions
5. hw:1 - NAD USB AUdio
6. Mixer element: PCM
The above config results in the following:
$ cat /proc/asound/card1/stream0
NAD Electronics NAD USB Audio at usb-0000:05:00.0-1, full speed : USB Audio
Playback:
Status: Running
Interface = 1
Altset = 1
Packet Size = 588
Momentary freq = 96000 Hz (0x60.0000)
Feedback Format = 10.14
Packet Size = 0
Momentary freq = 96000 Hz (0x60.0000)
Interface 1
Altset 1
Format: S24_3LE
Channels: 2
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000
$ cat /proc/asound/card1/pcm0p/sub0/hw_params
access: MMAP_INTERLEAVED
format: S24_3LE
subformat: STD
channels: 2
rate: 96000 (96000/1)
period_size: 1152
buffer_size: 4800
that looks similar to the deadbeef one of the first post.
Other info: both the system and Audacity volume controls do not affect the output level. Same for the alsamixer volume. This should be good.
Changing the bit depth in Audacity (setting 32 bit for example) does not change the output of the command above.
My guess is that the ALSA plug plugin is ONLY converting the bit format output by Audacity (S32_??) to S24_3LE which is the only supported by the NAD USB DAC,
and that this conversion is lossless
Are there other checks I should do to confirm the above guess?
a. If this is correct I'm fine but it requires some knowledge by the user to figure out if playback is bit-perfect.
a.1. Deadbeef works out of the box with hw:CARD=Audio,DEV=0 and has a reputation of being bit-perfect. I would humbly suggest to "copy" Deadbeef in this area. I'm happy to help testing patches and compile from sources in case you like it.
b. I'm also not sure about the usage of the Bit depth control in Audacious. Can you please advise what it is supposed to do and how it affects bit-perfection?
Thanks for your great work.
Regards,
Cristiano
RE: ALSA error with direct hw
-
Added by Cristiano De Alti about 9 years ago
In the post above where I wrote mistakenly Audacity I actually meant Audacious. Sorry.
RE: ALSA error with direct hw
-
Added by Cristiano De Alti about 9 years ago
I have a patch that I will submit soon to support the S24_3LE format (the one used by USB DACs).
