Some HiFiBerry Digi+ have been shipped with incorrect product identification in the onboard EEPROM. In this case, the card will use the wrong driver and playback speed will be incorrect (too fast).
You will notice this when running the command aplay -l:
# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_digi], device 0: HiFiBerry Digi+ Pro HiFi wm8804-spdif-0 [HiFiBerry Digi+ Pro HiFi wm8804-spdif-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
You will see that it says "Digi+ Pro". In this case, it's using the wrong driver. To fix this, there are 2 ways:
Load the correct overlay "by hand".
Modify the file /boot/config.txt and add the following 2 lines:
force_eeprom_read=0
dtoverlay=hifiberry-digi
And reboot.
Flash the EEPROM with the correct data
Boot HiFiBerryOS. Make sure, you're using at least version 20200127:
Now enable SSH:
Login via SSH with username root and the password you selected.
Run the command
/opt/hifiberry/contrib/flash.sh digiplus
# /opt/hifiberry/contrib/flash.sh digiplus
This script comes with ABSOLUTELY no warranty. Continue only if you know what you are doing.
Writing...
2+1 records in
2+1 records out
Done.
Cleaning up /boot/config.txt again
Rebooting in 5 seconds
Result
Both versions work equally well. If you don't want to re-flash the EEPROM, that's fine.
The correct result now looks like this:
# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_digi], device 0: HifiBerry Digi HiFi wm8804-spdif-0 [HifiBerry Digi HiFi wm8804-spdif-0]
Subdevices: 1/1
Subdevice #0: subdevice #0