Raspberry Pi MMDVM hats come in many shapes and sizes and there are tons of clones from various Chinese manufacturers.
I have a couple generic versions of these boards (pictured below) that are often unresponsive when the Raspberry Pi is first powered on, and therefore don’t work until the Pi is power cycled a few times, or the board is physically removed and reconnected to the Pi.
The easiest way to force these to be responsive without having to power cycle them is to use the Raspberry Pi GPIO to strobe the reset pin for the board. It’s pin 40 on the Pi header, which maps to GPIO 21. The following command will reset it:
pinctrl set 21 op dl && pinctrl set 21 op dh
You can automate this. Here’s an example systemd unit to start the DVMProject‘s dvmhost
[Unit]
Description=DVMProject Host Radio Service
After=syslog.target network.target
[Service]
User=root
Type=forking
ExecStart=/bin/bash -c "pinctrl set 21 op dl && pinctrl set 21 op dh && /path/to/dvmhost/binary/dvmhost -c /path/to/config.yml"
Restart=on-abnormal
[Install]
WantedBy=multi-user.target