Es9038q2m via i2s doesnt work on my Pi Zero W

Hi, apologies if this has already been solved, but I have failed to find a solution.

I have a pi Zero W with a very nice ES90382qm based DAC connected via i2s. With the standard Raspbian OS this works really well - I use mpd, but have also had success with kodi.

Over the past few years I have been trying to get this combination to work with volumio but have had no success. I choose audiophonics es9028q2m DAC but when volumio boots I get an horrendous noise which is repeated when I attempt to play any music. I have tried various other DACs but no joy. Looking at dmesg I see these errors:

[ 32.225404] snd-rpi-i-sabre-q2m soc:sound: snd_soc_register_card() failed: -517
[ 32.382748] snd-rpi-i-sabre-q2m soc:sound: snd_soc_register_card() failed: -517
[ 35.519156] snd-rpi-i-sabre-q2m soc:sound: snd_soc_register_card() failed: -517
[ 36.094193] snd-rpi-i-sabre-q2m soc:sound: snd_soc_register_card() failed: -517
[ 43.828161] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 43.828206] snd-rpi-i-sabre-q2m soc:sound: Audiophonics Device ID : FFFFFF87
[ 43.829493] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 43.829537] snd-rpi-i-sabre-q2m soc:sound: Audiophonics API revision : FFFFFF87
[ 56.297266] i-sabre-codec-i2c 1-0048: ASoC: error at snd_soc_component_update_bits on i-sabre-codec-i2c.1-0048: -121
[ 56.331117] i-sabre-codec-i2c 1-0048: ASoC: error at snd_soc_component_update_bits on i-sabre-codec-i2c.1-0048: -121
[ 56.365694] i-sabre-codec-i2c 1-0048: ASoC: error at snd_soc_component_update_bits on i-sabre-codec-i2c.1-0048: -121
[ 126.443038] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 126.443498] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 126.443897] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 126.445529] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 145.393209] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 145.397334] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 145.397851] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 146.413284] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 146.415090] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 146.419969] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 148.383295] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 148.384524] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 148.399191] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 152.818369] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 152.826345] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 152.826819] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 176.038256] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 176.038690] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 176.039090] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 195.844529] i-sabre-codec-i2c 1-0048: ASoC: error at snd_soc_component_update_bits on i-sabre-codec-i2c.1-0048: -121
[ 201.095825] i-sabre-codec-i2c 1-0048: ASoC: error at snd_soc_component_update_bits on i-sabre-codec-i2c.1-0048: -121
[ 435.383481] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 435.383956] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121
[ 435.384441] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048 -121
[ 435.395948] i-sabre-codec-i2c 1-0048: ASoC: error at soc_component_read_no_lock on i-sabre-codec-i2c.1-0048: -121

any ideas what I need to get the DAC working on volumio>

cheers

have you tried generic i2s dac or R-PI DAC?

Thanks for the suggestion, yes I have tried those before : Generic I2S DAC gives the same results as sabre - awful noise and R-PI DAC produced nothing (similar to various hifiberry DACs). HOWEVER, I retried both and the now R-PI DAC works…so thank you…

cheers

I don’t know if that ES90382qm dac supports hard or software mixer type you could try one of these in the playback settings with Generic I2S DAC or hifiberry dac.

furthermore you could turn on audio resampling and try various settings.

always do a reboot after selecting dac type.

The default mixer for the sabre DAC on volumio is “none” but when I changed to software it worked. I tried hardware but that jsut didn’t work and wouldn’t play anything

I checked what formats the support volumio thinks the DAC has depending on which DAC I told volumio it was

sabre (I-Sabre Q2M): S16_LE, S32_LE
Generic I2S (snd_rpi_hifiberry_dac/pcm5102a) S16_LE, S24_LE, S32_LE
R-PI DAC (snd_rpi_rpi_dac/pcm1794a) S16_LE, S24_LE

No option identified that the DAC supports DSD, although it supposedly does and my USB ES9038 does support. I guess sabre is the best option

Bottom line: the DAC now works but it looks like the sabre ES9028 driver used by both Raspbian and volumio is limited

cheers