Audiogravity Guides

A DAC HAT on a Raspberry Pi: why it is not detected, and the line that fixes it

Short answer: a DAC board stacked on the Pi's pins (HiFiBerry, Raspberry Pi DAC+, Allo…) is not found on its own the way a USB DAC is. Linux creates its sound card once the Pi's boot configuration names the board's overlay: one line in /boot/firmware/config.txt, then a reboot. Some boards carry a memory chip that names it for you; many audio boards do not, or name one that no longer works.

Checked on 2026-10-17 against Raspberry Pi's and HiFiBerry's documentation, and on my own Raspberry Pi 4 with a HiFiBerry DAC+ Pro under Raspberry Pi OS (Debian 13).

Why it is not automatic

At boot, the Pi's firmware looks for a memory chip on the board (an EEPROM) and loads the overlay it names, "without any user intervention", in Raspberry Pi's words. That works when the chip is there and up to date. With audio boards, it often is not:

  • No chip. A board may have none: it can then not be called a HAT, but it works once declared.
  • An outdated chip. HiFiBerry: on some of its cards, such as the DAC+ Pro, the configuration stored on the board "might not load correctly" with today's systems. Declare the board, and add force_eeprom_read=0 so the firmware stops reading the chip.
  • Two versions of one board. Raspberry Pi's own audio boards exist in green (Raspberry Pi) and black (IQaudIO): "electrically equivalent, but have different EEPROM contents".

My own Pi shows the result: the firmware reports no HAT at all (/proc/device-tree/hat is absent), and the DAC+ Pro works because of one line in config.txt.

The line for your board

On Raspberry Pi OS, the file is /boot/firmware/config.txt. On older images it was /boot/config.txt, which now holds only a note saying the file has moved. Put the lines at the top of the file, before any line in brackets such as [pi4]: what follows such a line applies to that model only.

Board Line
HiFiBerry DAC+ Pro, DAC2 Pro dtoverlay=hifiberry-dacplus-pro
HiFiBerry DAC+ Standard, Amp2, Amp4 dtoverlay=hifiberry-dacplus-std
HiFiBerry DAC2 HD dtoverlay=hifiberry-dacplushd
HiFiBerry DAC+ Light, DAC Zero, MiniAmp dtoverlay=hifiberry-dac
HiFiBerry Digi+, Digi2 Standard dtoverlay=hifiberry-digi
HiFiBerry Digi+ Pro, Digi2 Pro dtoverlay=hifiberry-digi-pro
HiFiBerry DAC8x (Raspberry Pi 5 only) dtoverlay=hifiberry-dac8x
Raspberry Pi DAC+, DAC Pro, DigiAMP+, Codec Zero (green boards) dtoverlay=rpi-dacplus, rpi-dacpro, rpi-digiampplus, rpi-codeczero
IQaudIO DAC+ (black board) dtoverlay=iqaudio-dacplus
Allo Boss dtoverlay=allo-boss-dac-pcm512x-audio
Allo DigiOne dtoverlay=allo-digione

Check the name against your board maker's own documentation. The Pi holds the full catalogue, with a description of each overlay, in /boot/firmware/overlays/README.

  • Pro and Standard are not interchangeable. A HiFiBerry "Pro" board has its own clocks; its -pro line uses them. The Standard line on a Pro board still plays, but with the Pi driving the clock. The two names date from Linux 6.1.77; before that, both boards used hifiberry-dacplus.
  • Nothing else to switch on. The overlay does all of it: no dtparam=i2s=on or dtparam=i2c_arm=on needed, as the Raspberry Pi kernel's maintainer put it.

Turn the Pi's own audio off

With the Pi's own outputs still on, your DAC is one sound card among several. My Pi 4 has these two lines beside the DAC's:

dtparam=audio=off
dtoverlay=vc4-kms-v3d,noaudio

The first turns off the Pi's headphone jack and its basic HDMI audio; the second, the HDMI audio of its display driver. The Raspberry Pi 5 has no headphone jack: there, noaudio is what keeps HDMI from appearing as a sound card.

Changes take effect after a reboot.

Check it

aplay -l

The board should appear under its own name. On my Pi:

card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], device 0: HiFiBerry DAC+ Pro HiFi pcm512x-hifi-0 [HiFiBerry DAC+ Pro HiFi pcm512x-hifi-0]

If it does not, check that the board is fully seated on the pins, then try force_eeprom_read=0. To list sound cards, your account must belong to the audio group.

Debian 13 without Raspberry Pi OS

Everything above is for Raspberry Pi OS. Debian's own image for the Raspberry Pi works differently: config.txt is rewritten at every kernel or firmware update ("Do not modify this file!"), lasting additions go in /etc/default/raspi-firmware-custom, and Debian ships only a couple of overlays, hifiberry-dac among them. For most DAC boards, Raspberry Pi OS is the simpler base.

DSD on a DAC HAT

The Pi's I2S connection, the one these boards use, carries PCM only: up to 384 kHz in 16, 24 or 32 bits, in the drivers of the Pi 4 and the Pi 5 alike. Native DSD does not pass. A board whose chip decodes DoP can still play DSD wrapped in PCM; the others, such as the PCM5122 of the HiFiBerry DAC+ Pro, play PCM only.

With Audiogravity

Audiogravity lists the sound cards Linux exposes, so a DAC board appears once it is declared. Then, in Config → Guided, choose it as the output: that writes it into each audio service's configuration. Audiogravity does not edit config.txt for you; the manual walks through it, with a backup first and what to do if the Pi does not come back: Troubleshooting → My DAC is not in the output list.

Sources