Pi+, Hifiberry DAC+, can't play hires audio

There are many threads about Volumio and Pi+, and also about using the Hifiberry DAC+. Here I’d like to discuss one particular issue with this combination.

Everything is set-up with Volumio 1.41 as a basis. Kernel is updated to get the new drivers, and all config files are adapted. The Pi now happily plays mp3 files or ALAC CD rips from a USB stick or from the Synology NAS.

What does not work is any sort of beyond-CD quality ALACs. When I play e.g. a 24 bit 176400 file, I see many of these messages on the console:
bcm2708-dmaengine bcm2708-dmaengine: DMA transfer could not be terminated.
The LED on the Hifiberry turns on, but there is no sound to be heard.

A short while later things go to pieces: The filesystem gets corrupted due to interrupt problems. At least that’s what I make of the error messages that show up.

Does anyone have an idea what could be wrong here?

Update: Here is the full console log:

[ 144.562039] bcm2835-cpufreq: switching to governor performance [ 221.728106] bcm2708-dmaengine bcm2708-dmaengine: DMA transfer could not be terminated [ 237.613986] bcm2708-dmaengine bcm2708-dmaengine: DMA transfer could not be terminated [ 248.232055] ERROR: 4096 KiB atomic DMA coherent pool is too small! [ 248.232055] Please increase it with coherent_pool= kernel parameter! [ 261.866751] mmc0: Timeout waiting for hardware interrupt. [ 261.891663] mmcblk0: error -110 transferring data, sector 197048, nr 8, cmd response 0x900, card status 0xc00 [ 261.921302] end_request: I/O error, dev mmcblk0, sector 197048 [ 261.946309] EXT4-fs warning (device mmcblk0p3): ext4_end_bio:316: I/O error -5 writing to inode 40417 (offset 0 size 0 starting block 24632) [ 261.978901] Buffer I/O error on device mmcblk0p3, logical block 5175 [ 272.026042] mmc0: Timeout waiting for hardware interrupt. [ 272.052258] mmcblk0: error -110 transferring data, sector 1831168, nr 8, cmd response 0x900, card status 0xc00 [ 272.083629] end_request: I/O error, dev mmcblk0, sector 1831168 [ 272.110676] EXT4-fs warning (device mmcblk0p3): ext4_end_bio:316: I/O error -5 writing to inode 40413 (offset 16384 size 4096 starting block 228897) [ 272.152330] Buffer I/O error on device mmcblk0p3, logical block 209440 [ 282.185322] mmc0: Timeout waiting for hardware interrupt. [ 282.212788] mmcblk0: error -110 transferring data, sector 1949992, nr 8, cmd response 0x900, card status 0xc00 [ 282.245268] end_request: I/O error, dev mmcblk0, sector 1949992 [ 282.280252] EXT4-fs warning (device mmcblk0p3): ext4_end_bio:316: I/O error -5 writing to inode 40413 (offset 0 size 0 starting block 243750) [ 282.317041] Buffer I/O error on device mmcblk0p3, logical block 224293 [ 292.364620] mmc0: Timeout waiting for hardware interrupt. [ 292.393565] mmcblk0: error -110 transferring data, sector 198536, nr 8, cmd response 0x900, card status 0xc00 [ 292.434710] end_request: I/O error, dev mmcblk0, sector 198536 [ 292.464044] EXT4-fs warning (device mmcblk0p3): ext4_end_bio:316: I/O error -5 writing to inode 40418 (offset 0 size 0 starting block 24818) [ 292.501154] Buffer I/O error on device mmcblk0p3, logical block 5361 [ 302.543929] mmc0: Timeout waiting for hardware interrupt. [ 302.574318] mmcblk0: error -110 transferring data, sector 3307520, nr 48, cmd response 0x900, card status 0xc00 [ 302.609625] end_request: I/O error, dev mmcblk0, sector 3307520 [ 302.640213] end_request: I/O error, dev mmcblk0, sector 3307528 [ 302.670842] end_request: I/O error, dev mmcblk0, sector 3307536 [ 302.701140] end_request: I/O error, dev mmcblk0, sector 3307544 [ 302.731366] end_request: I/O error, dev mmcblk0, sector 3307552 [ 302.762058] end_request: I/O error, dev mmcblk0, sector 3307560 [ 302.792084] Aborting journal on device mmcblk0p3-8. [ 312.823184] mmc0: Timeout waiting for hardware interrupt. [ 312.852734] mmcblk0: error -110 transferring data, sector 1468496, nr 8, cmd response 0x900, card status 0xc00 [ 312.887142] end_request: I/O error, dev mmcblk0, sector 1468496 [ 312.916856] Buffer I/O error on device mmcblk0p3, logical block 164106 [ 312.947448] lost page write due to I/O error on mmcblk0p3 [ 312.977003] EXT4-fs error (device mmcblk0p3) in ext4_reserve_inode_write:4862: Journal has aborted [ 323.022479] mmc0: Timeout waiting for hardware interrupt. [ 323.052740] mmcblk0: error -110 transferring data, sector 1769712, nr 32, cmd response 0x900, card status 0xb00 [ 323.088104] mmcblk0: retrying using single block read

Tinue,

I’m also having problems with hires audio, my plays but at crazy speed! I posted this over at HiFiBerry and Daniel suggested I post here…

OK, I’ve thrown together a Rpi B+, the Hifiberry DAC+ which and it is all running. I’m using Volumio v1.41 and I’ve updated the kernel and applied the other modifications as suggested on the Hifiberry site. The good news is playback of CD quality (16@44.1) is working fine.

However, playback of HiRes for example 96kHz seems to playback at “twice the speed”….

Some testing with flacs reveals the following

16bit @ 44.1kHz fine
24bit @ 44.1kHz fine
24bit @ 48 kHz fine

24bit @ 96 kHz plays back very fast (volumio displays the correct information and generally seems to work ok)
24bit @ 88.2 as above
24bit @ 192kHz just sounds crazy

Many thanks for your anticipate help

Sean

There have been some changes made then removed then partially put back in recently in the Raspberry Pi Linux I2S code.

One change was due to xbmc having issues playing back 24bit as white noise, so 24bit support was disabled.

Steen (PiCorePlayer)'s latest release has these release notes. Maybe this is the same issue and what the rpi-update / etc. is pulling in is wrong?

September 30 2014.

Hi all.

Greg and I have been working hard on this version, so I hope you like it.

Changes:
Build on kernel 3.16.3 at the time when 24 bit support still was present.
Support the same I2S-DACs as previous versions on the original raspberry B (thanks to JackoffAll for his advice).
Supports the new raspberry B+ with HiFiBerry DAC+ and Digi+ cards. Supports the new IQaudIO+ card as well.
Fixed the upsample problem.
Tried another patch to allow 192 khz via HDMI - please test and report back.
New tweak that allows you to use a saved ALSA setting after reboot (Ian please test). You will need to use SHH access and the use alsamixer to change your settings. Then save these settings by: “sudo alsactl store” followed by “sudo filetool.sh -b”. Now these settings will be used after a reboot.
New tweak so you can schedule a reboot or a restart of squeezelite using cron job.
New tweak so you are able to autostart a specific audiostream via LMS.

As always you can get it from here: Download

Or use “in situ update”