384 kHz/32bit Kernel support

Hi,

Is DietPi supporting or planning to support 384 kHz/32bit audio via ALSA?

More and more HiFi DACs are coming out that support 384 kHz/32bit from HW side, but seems only moodeaudio is having kernel compiled to support this audio resultion on Raspberry Pi.

https://www.allo.com/sparky/piano-dac.html

http://www.audiophonics.fr/en/diy-dac/audiophonics-i-sabre-dac-es9018k2m-raspberry-pi-3-pi-2-a-b-i2s-p-11500.html

Janis

Hi Janis,

The limitation with 384khz is at kernel level. The Raspberry Pi kernel only supports 192khz max at this time: JustBoom DAC HAT for the Raspberry Pi — Pi Supply

Please note that due to Linux driver restrictions, max frequency is limited to 192kHz on the Raspberry Pi

I did try and implement 384khz myself, but failed to follow the gravy train. I’am not too knowledged with the kernel source code, so, unfortunately, we’d have to wait for RPi devs to make the change.
Another user attempting to push 384khz to kernel source code: Enable 352k8 and 384k sample rates for I2S connected boards/HATs that support those rates by clivem · Pull Request #1460 · raspberrypi/linux · GitHub

The Odroid’s kernel support 384khz, however, we currently experience half playback speed in MPD. This could be an issue with the MPD we compiled, but not sure at the moment. Will need to take another look.

THX

FYI, I just downloaded and tested Moode v3.0.
https://sourceforge.net/projects/moodeaudio/?source=typ_redirect

384 kHz/32bit audio, when switched to Linux Kernel - Advanced, works perfect even for basic user setting up the system in web interface.

So, it is possible to achieve it and easy to use.

Have a look - would be great if you could add the same to DietPi!

I’d be very surprised if 384Khz is actually outputting 384Khz. You can check by playing a some music and listing the ALSA stream values:

cat /proc/asound/card*/pcm0p/sub0/hw_params

Moode looks impressive, however, its a complete and custom image. So, unless we know every customization/setting made for the Moode image, we cant add it to dietpi-software. Also looks like there is no documentation, or sourcecode for this either: moodeaudio (Tim Curtis) · GitHub

I don’t have 384 files, but I have a lot of 352, and DSD 64, 128, 256 music that are down converted to PCM 352 for playback by Roon.

So, I tested ALSA stream values, and can confirm it really works. I also have Allo Kali reclocker that shows status with LEDs and confirms correct I2S 352 signal being fed to it on HW level.

This is on both 352 and DSD over PCM 352 playback:
pi@moode:~ $ cat /proc/asound/card*/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 352800 (352800/1)
period_size: 7056
buffer_size: 14112

This is on 176 file playback:
pi@moode:~ $ cat /proc/asound/card*/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 176400 (176400/1)
period_size: 3528
buffer_size: 7056

This is on 192 file playback:
pi@moode:~ $ cat /proc/asound/card*/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 192000 (192000/1)
period_size: 3840
buffer_size: 7680

Janis

Well, i’am surprised :smiley: lol.

I’ll download and try moode, now i’am curious :slight_smile:

Janis,

When using the 4.4.30 kernel from moode on DietPi:

root@DietPi:~# cat /proc/asound/card*/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 384000 (384000/1)
period_size: 16384
buffer_size: 65536

Works a charm, full credit to Moode.

I’ve uploaded their 384khz kernel, you can install it on RPi 2/3 (ARMv6 not supported) with:

# - Prevent kernel/firmware/bootloader upgrades from Raspbian repo
apt-mark hold raspberrypi-bootloader raspberrypi-kernel libraspberrypi-bin

wget <EDIT REMOVED OBSOLETE LINK> -O package.7z
7z x -aoa package.7z -o/
rm package.7z

@Fourdee - genial!!!

Just did it also in my DietPi installation. It works.

Roon Community will love you. The super light DietPi now 384/32 and DSD compatible - this is ACHIEVEMENT!
Would be great if you could add this to your next release dietpi-config options. I will already now report this achievement in Roon Community forum for members to start using and testing.

One more thing you could simply fix is the issue of AirPlay and Squeeze coexistence on same RPI.
See a lot of discussion on it in your forum.
https://dietpi.com/forum/t/can-shairport-coexist-with-lms-squeezelite/689/1

I found the key "-C " in Squeezelite v1.8 settings that allows to release audio card if not used by Squeezelite.
Squeezelite v1.8, Copyright 2012-2015 Adrian Smith, 2015-2016 Ralph Irving.
Usage: squeezelite [options]
-C Close output device when idle after timeout seconds, default is to keep it open while player is ‘on’

Unfortunately, the Squeezelite version you have added to DietPi is different and missing this -C key.
However, in the moode I managed to use this key successfully “-C 5” with 5 seconds release, and I had the Room, AirPlay, and Squeezelite all three coexisting & working perfectly on the same RPI.

Please have a look, I hope you can change the Squeezelite to v1.8 also on DietPi?

In our next update v138, 384kHz kernel can be installed from dietpi-config > Audio Options

Please have a look, I hope you can change the Squeezelite to v1.8 also on DietPi?

Yep, i’ll take a look, git ticket: https://github.com/Fourdee/DietPi/issues/620


EDIT: You may be interested, also coming in v138, CAVA audio vis: https://dietpi.com/forum/t/dietpi-software-details-for-all-installation-options/22/80

Perfect!

See my post in Roon Community
https://community.roonlabs.com/t/raspberry-pi-384-khz-32-bit-playback/16529

Please engage with Allo and Audiophonics teams to get their DACs in DietPi configuration menu.
They are not broadly known HiFiBerry or IQaudIO, but certainly are outperforming these two mass market brands in HiFi quality.

Allo has two amazing DACs:
https://www.allo.com/sparky/piano-dac.html
https://www.allo.com/sparky/piano-dac-2-1.html

Boosted by Allo reclocker:
https://www.allo.com/sparky/kali-reclocker.html

Audiophonics has average performing DAC (better than HiFiBerry DAC+ Pro but worse than both Allo DACs in my hearing):
http://www.audiophonics.fr/en/diy-dac/audiophonics-i-sabre-dac-es9023-v2-tcxo-raspberry-pi-20-a-b-i2s-p-10657.html

However, Audiophonics has new promising DSD compatible DAC coming out hopefully Dec 2016 (not yet shipping, as they yet are struggling to finalize firmware):
http://www.audiophonics.fr/en/diy-dac/audiophonics-i-sabre-dac-es9018k2m-raspberry-pi-3-pi-2-a-b-i2s-p-11500.html

Janis

Just tried out queezelite and airplay on the same raspberry pi.
Now with v138 is works perfectly on the same client device!!!

Thank you for fixing it so fast!

Amazing job!

With v138 update, now it is fixed - both squeezelte and shairport nicely coexist and play one after other on the same Raspberry Pi.

THANK YOU Fourdee for getting it fixed so prompt !

So if I somehow make Dietpi stick to the next newest kernel ( don’t know how I could avoid the update, but I could play with that or if some of you had a quick idea) and upgrade to the 384 kernel, would it possible work also with the Allo Boss (for use with Roon?)