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>
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>
- 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.