Commit Graph

4 Commits

Author SHA1 Message Date
6b9b50ef2e 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>
2026-10-02 21:21:47 +02:00
874a81f664 Give each role's reboot handler its own name
pi_standard_setup, pi_hifiberry_amp and pi_disable_onboard_bluetooth each defined a
handler called "Reboot". Handler names are play-global, so a notify ran only the last
one defined - pi_disable_onboard_bluetooth's - and with that role's `when:`. On every
host where onboard Bluetooth stays on, the handler was skipped and nothing that asked
for a reboot ever got one: not a changed dtoverlay, not a hostname change, not the Pi 5
kernel. Seen on musicdolphin, where a new HiFiBerry overlay sat unapplied in
config.txt after a clean run.

Each role now notifies a handler only it defines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 21:21:37 +02:00
f434429dd1 Switch musicdolphin from a Pi 4 to a Pi 5
The SD card moves over as is, so:
- pi_standard_setup can install the Pi 5 kernel (linux-image-rpi-2712, an arm64
  package on the armhf userland), which a Pi 4 image lacks. Opt-in via
  pi_standard_setup_install_pi5_kernel.
- The Pi is powered through the HiFiBerry board's GPIO header, so it cannot negotiate
  a 5A supply and would cap USB at 600mA. pi_hifiberry_amp sets
  usb_max_current_enable=1 when hifiberry_powers_pi is true (default false).
- The DHT22 poller is off: Adafruit_DHT bit-bangs BCM283x registers, which the Pi 5
  no longer has (GPIO sits behind the RP1 chip).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 12:17:53 +02:00
ab9763ec49 Fix ansible-lint violations: FQCN, formatting, bugs, role renames
- Auto-fix FQCN, YAML formatting, jinja spacing, and free-form module
  syntax via ansible-lint --fix
- Fix comments misplaced inside module args by the auto-fixer
  (bluetooth-monitor, pi_standard_setup, pi_musicmouse)
- Fix notify: references left stale (lowercase) after handler names
  were re-cased, which would have silently broken reboot/restart
  handlers (pi_disable_onboard_bluetooth, pi_hifiberry_amp,
  pi_squeezelite, pi_standard_setup)
- Fix a task in pis/debmatic-install.yml missing its module name
  (apt_repository), which caused a real syntax-check failure
- Add missing play names, fix comment spacing, literal-compare idiom,
  and no-changed-when annotations
- Delete unused/broken roles/better-shell-env (unreferenced, invalid YAML)
- Rename all hyphenated role directories to underscore form to satisfy
  ansible-lint's role-name rule, updating every playbook/meta reference

Remaining lint findings (var-naming, package-latest, risky-file-permissions,
no-handler) intentionally left for follow-up per user decision.
2026-09-08 17:13:00 +02:00