HMI
Raspberry Pi 4 autostart Qt-tillämpning vid uppstart

Om man har skapat en Qt-applikation – eller någon annan applikation – för Raspberry Pi 4, vill man efter färdigställandet av applikationen ofta, att applikationen startas om omedelbart efter att Raspberry har startats om.

Detta försöks ofta uppnås med startskript som kan föras in på olika platser. Det är dock mer förnuftigt att göra detta över systemd. Jag använde som utgångsbas en raspbian-buster-lite-bild och en Qt-installation som beskrivits i Qt på Raspberry Pi 4. Qt-applikationen återfinns i katalogen "/home/pi/application" och har i detta exempel namnet "application_one".

Skapa en .service-fil

Först av allt måste en .service-fil skapas i katalogen "/etc/systemd/system":

sudo nano application_one.service

Följande matas nu in här:

[Unit]
Description=Qt application autostart
After=graphical.target
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/application
ExecStart=/home/pi/application/application_one

[Install]
WantedBy=multi-user.target

Posterna är faktiskt självförklarande. Applikationen "application_one" (ExecStart=/home/pi/application/application_one) startas med användarkontot "pi" (User=pi). Posten "After=network-online.target" innebär också att applikationens start inväntar tills nätverksanslutningen har upprättats.

Gör tjänsten känt för systemet.

Därefter måste systemet informeras om att den nya tjänsten ska vara aktiv:

sudo systemctl enable application_one.service

Starta sedan om och applikationen bör starta automatiskt.

Applikationen startar inte?

Om applikationen inte startar automatiskt kan man se status med

sudo systemctl status application_one.service

och använda informationen för att starta felsökning.