Posted on 31 August 2021
The Raspberry Pi has a hardware watchdog timer on its board that is able to restart the board. This is a super useful feature if you want your Pi to restart in the case of a system failure like a kernel panic or a process consuming all resources. This page explains how to set this up manually on a Pi.
Here’s the equivalent ansible playbook:
---
- hosts: all
  become: yes
  tasks:
    - name: 'Enable watchdog in boot/config.txt'
      import_role:
        name: infothrill.rpi_boot_config
      vars:
        boot_config_lines:
          - "dtparam=watchdog=on"
    - name: 'Configure the watchdog'
      import_role:
        name: danmilon.watchdog
      vars:
        watchdog_device: /dev/watchdog
        watchdog_timeout: 15
        watchdog_realtime: yes
        watchdog_priority: 1
        watchdog_max_load_1: 24
To install dependancies:
ansible-galaxy install infothrill.rpi_boot_config
ansible-galaxy install danmilon.watchdog
The system should then restart automatically if you crash the system, e.g. by triggering a kernel panic:
# WARNING THIS WILL CRASH YOUR SYSTEM
echo c > /proc/sysrq-trigger
Some notes:
danmilon.watchdog which is not the usual watchdog role (that is whiskerlabs.watchdog). However, whiskerlabs don’t expose the watchdog-timeout setting that we must set on the Raspberry Pi.