Blog

 

Changes in HiFiBerry drivers

It took us longer than we had wished, but finally we could integrate driver changes in the official Raspberry Pi kernel. Unfortunately some drivers that were working fine on older Pi’s did not work properly on the Pi5 anymore. This was the case for the DAC+ Standard, Amp2 and DAC+ ADC. This was caused by the new hardware architecture of the Pi5.

It took us some time to implement the correct fix for these cards. Unfortunately this requires changes in the configuration for the DAC+ Standard and Amp2. Instead of

dtoverlay=hifiberry-dacplus

you now need to use the new configurations:

dtoverlay=hifiberry-dacplus-std for the DAC+ Standard, Amp2 and Amp4 or
dtoverlay=hifiberry-dacplus-pro for the DAC+ Pro and DAC2 Pro

The changes have been integrated in Linux 6.1.77. You can expect this upgrade via rpi-update in the next 1-2 weeks. If you’re still using an older kernel, you can force the “slave” mode by using

dtoverlay=hifiberry-dacplus,slave or
dtoverlay=hifiberry-dacplusadc,slave

This is a workaround only needed on the Pi5.

On older P4 or older Pis and with “Pro” sound cards, the old hifiberry-dacplus overlay will still work.

Technical background

With the older Pi’s, a sound card was able to dynamically change the clock configuration. It was possible to change the clock master on the fly between master and slave mode. We used this in our DAC+ and DAC+ ADC driver. The idea was to simplify driver configuration for users and have a single overlay for both “Standard” and “Pro” cards. However, this isn’t possible anymore with the new Pi5’s driver infrastructure. In the overlay the sound card interface have to be configured as master or slave and can’t be reconfigured afterwards. Therefore, we had to split the overlay for the DAC+ into two. As the DAC+ ADC Pro was already using a separate overlay file, for the DAC+ ADC Pro, we were able to integrate the changes into the existing overlay.

March 14, 2024

Subscribe to new blog posts