Tak jsem tu znovu kvůli systemd :) (běhá to na Raspberry Pi 4 + Waveshare GSM/GPRS/GNSS HAT + muj-bastl)
tl;dr - nefunguje vypnutí modemu. Ručně ano, ale přes systemd nikoli + potřebuji spustit ještě jednu službu, ale až po doběhnutí sh skriptu z té první definice.
Není to taková tragedie, ale domnívám se, že mi chybí dostatečný vhled a spíše znalosti z Linuxu (nějaké pojmy, správné postupy apod).
Každopádně, funguje mi startovací skript. Možná je to špatně. Potom prosím o navedení jak správně.
Vytvořil jsem si definiční soubor muj-bastl.service a do něj napsal:
[Unit]
Description=Prepare environment for "muj-bastl" service
[Service]
ExecStart=/home/pi/muj-bastl/muj-bastl-init.sh
[Install]
WantedBy=multi-user.target
Ve skriptu muj-bastl-init.sh je toto:
#!/bin/bash
# dotnet support
export DOTNET_ROOT=/home/pi/dotnet
export PATH=$PATH:/home/pi/dotnet
# 1-Wire support
modprobe w1-gpio
modprobe w1-smem
# bus access
chmod -v a+rw /sys/bus/w1/devices/w1_bus_master?/w1_master_*
# gsm/gprs power on
raspi-gpio set 4 op dl
sleep 3.5
raspi-gpio set 4 dh
# wait for a modem
sleep 5
# enter pin to sim card
chat -t 8 \
"" "AT+CPIN?" \
"CPIN: SIM PIN" "AT+CPIN=3585" \
"OK" "AT+CPIN?" \
"OK" "" \
< /dev/serial0 \
> /dev/serial0
# wait for a modem
sleep 5
# connect pppd
pon rnet
# wait for a internet
sleep 10
A to vcelku dobře funguje. Systém naběhne a během toho se zapne modem, dostane SIM PIN a funguje to jak má. Nemám ještě dodělaný spuštění samotné služby "muj-bastl", která bude obsluhovat cosi na portech a podle toho atakovat naše API v MS Azure. ALE tu potřebuji spustit až teprve po doběhnutí skriptu muj-bastl-init.sh! To nevím jak.
Také jsem si udělal další service na vypnutí modemu, který by měl zafungovat v případě restartování či vypínání Raspberry a vypnout modem. Dokonce se to při instalaci správně linklo do příslušných složek v /etc/systemd/system/, ale modem se nevypne. To není úplně důležité, protože to má běžet furt, tudíž se to vypne typicky výpadkem elektřiny. Obsah muj-bastl-shutdown.service:
[Unit]
Description=Disconnect and turn off modem for "muj-bastl" service
DefaultDependencies=no
Before=umount.target
[Service]
ExecStart=/home/pi/muj-bastl/muj-bastl-shutdown.sh
[Install]
WantedBy=reboot.target halt.target poweroff.target
a obsah muj-bastl-shutdown.sh:
#!/bin/bash
# disconnect pppd
poff rnet
# wait for a modem
sleep 5
# enter pin to sim card
chat -t 8 \
"" "AT+CPOWD=1" \
< /dev/serial0 \
> /dev/serial0
# wait for modem power off
sleep 5