diff --git a/host_vars/musicdolphin.yml b/host_vars/musicdolphin.yml index 54ba27d..662ee9b 100644 --- a/host_vars/musicdolphin.yml +++ b/host_vars/musicdolphin.yml @@ -4,7 +4,10 @@ pi_shairport_name: _Oben_Wohnzimmer alsa_card_name: sndrpihifiberry sensor_room_name_ascii: 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 mediapi_has_hifiberry_amp: true diff --git a/roles/pi_hifiberry_amp/tasks/main.yml b/roles/pi_hifiberry_amp/tasks/main.yml index 2e364ee..3ab85e4 100644 --- a/roles/pi_hifiberry_amp/tasks/main.yml +++ b/roles/pi_hifiberry_amp/tasks/main.yml @@ -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 diff --git a/roles/pi_kiosk/tasks/main.yml b/roles/pi_kiosk/tasks/main.yml index 43d5aa1..53ffb11 100644 --- a/roles/pi_kiosk/tasks/main.yml +++ b/roles/pi_kiosk/tasks/main.yml @@ -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