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:
@@ -4,7 +4,10 @@ pi_shairport_name: _Oben_Wohnzimmer
|
|||||||
alsa_card_name: sndrpihifiberry
|
alsa_card_name: sndrpihifiberry
|
||||||
sensor_room_name_ascii: wohnzimmeroben
|
sensor_room_name_ascii: wohnzimmeroben
|
||||||
sensor_room_name: WohnzimmerOben
|
sensor_room_name: WohnzimmerOben
|
||||||
hifiberry_overlay: hifiberry-dacplus
|
# -std: the Pi drives the I2S clocks. The plain dacplus overlay makes the Pi the clock
|
||||||
|
# consumer, which the Pi 5's I2S controller rejects (snd_soc_dai_set_fmt -22), so the
|
||||||
|
# card never probes and every softvol_* device is dead.
|
||||||
|
hifiberry_overlay: hifiberry-dacplus-std
|
||||||
main_user: root
|
main_user: root
|
||||||
|
|
||||||
mediapi_has_hifiberry_amp: true
|
mediapi_has_hifiberry_amp: true
|
||||||
|
|||||||
@@ -8,7 +8,9 @@
|
|||||||
- name: Activate Hifiberry
|
- name: Activate Hifiberry
|
||||||
ansible.builtin.lineinfile:
|
ansible.builtin.lineinfile:
|
||||||
path: /boot/firmware/config.txt
|
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 }}"
|
line: "dtoverlay={{ hifiberry_overlay }}"
|
||||||
notify: Reboot after HiFiBerry boot config change
|
notify: Reboot after HiFiBerry boot config change
|
||||||
- name: Lift the Pi 5's USB current cap when the HiFiBerry board powers it
|
- name: Lift the Pi 5's USB current cap when the HiFiBerry board powers it
|
||||||
|
|||||||
@@ -10,7 +10,37 @@
|
|||||||
# size in the corner of the screen. Openbox answers it, and nothing else.
|
# size in the corner of the screen. Openbox answers it, and nothing else.
|
||||||
- openbox
|
- openbox
|
||||||
- unclutter
|
- 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
|
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
|
- name: Browser
|
||||||
# Chromium comes from archive.raspberrypi.com, not Debian: that build carries the
|
# Chromium comes from archive.raspberrypi.com, not Debian: that build carries the
|
||||||
|
|||||||
Reference in New Issue
Block a user