Get sound, the screen and emoji working on musicdolphin's Pi 5

- HiFiBerry: the plain hifiberry-dacplus overlay makes the Pi the I2S clock consumer,
  which the Pi 5's controller refuses (snd_soc_dai_set_fmt -22). The card never probed,
  so every softvol_* device was dead: squeezelite crash-looped and the backend and
  shairport played into nothing. hifiberry-dacplus-std has the Pi drive the clocks.
  pi_hifiberry_amp now matches any dtoverlay=hifiberry-* line, so changing the overlay
  replaces the old one instead of adding a second.
- X: with two DRM devices (v3d, vc4) Xorg gave up with "Cannot run in framebuffer
  mode", and the kiosk looped on a blank screen. 99-vc4.conf points it at vc4, the
  display controller; rendering still goes to V3D (glxinfo: V3D 7.1, accelerated).
- The front-end's icons are emoji in the markup. The Lite image has no emoji font, so
  they rendered as empty boxes: install fonts-noto-color-emoji.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-02 21:21:47 +02:00
parent 874a81f664
commit 6b9b50ef2e
3 changed files with 37 additions and 2 deletions

View File

@@ -8,7 +8,9 @@
- name: Activate Hifiberry
ansible.builtin.lineinfile:
path: /boot/firmware/config.txt
regexp: "^#?dtoverlay=hifiberry-amp"
# Any hifiberry overlay, not just the one this used to set: otherwise changing
# hifiberry_overlay appends a second dtoverlay line and leaves the old one active.
regexp: "^#?dtoverlay=hifiberry-"
line: "dtoverlay={{ hifiberry_overlay }}"
notify: Reboot after HiFiBerry boot config change
- name: Lift the Pi 5's USB current cap when the HiFiBerry board powers it

View File

@@ -10,7 +10,37 @@
# size in the corner of the screen. Openbox answers it, and nothing else.
- openbox
- unclutter
# The MusicMouse front-end's icons are emoji characters in the markup, not an icon
# font. Lite images ship no emoji font at all, so without this every icon renders
# as an empty box.
- fonts-noto-color-emoji
cache_valid_time: 7200
notify: Reload systemd and restart getty
- name: Ensure the Xorg config directory exists
ansible.builtin.file:
path: /etc/X11/xorg.conf.d
state: directory
mode: "0755"
- name: Point X at the display controller
# The Pi 4 and 5 have two DRM devices: v3d (the 3D GPU, no outputs) and vc4 (the
# HDMI display controller). Left to itself Xorg cannot tell which to drive and dies
# with "Cannot run in framebuffer mode. Please specify busIDs for all framebuffer
# devices", so the kiosk loops on a blank screen. Display goes through vc4; rendering
# still lands on v3d, because glamor's GL context is routed there by Mesa (kmsro).
# Raspberry Pi's desktop image ships this same file; the Lite image does not.
ansible.builtin.copy:
dest: /etc/X11/xorg.conf.d/99-vc4.conf
content: |
Section "OutputClass"
Identifier "vc4"
MatchDriver "vc4"
Driver "modesetting"
Option "PrimaryGPU" "true"
EndSection
mode: "0644"
notify: Reload systemd and restart getty
- name: Browser
# Chromium comes from archive.raspberrypi.com, not Debian: that build carries the