# apt install --no-install-recommends libqmi-utils ifmetric # cp -v ./qmi-network@.service /etc/systemd/system/ # systemctl daemon-reload # systemctl enable --now qmi-network@0 # This will NOT work without a .network for your wwan device. [Unit] Description=qmi-network for cdc-wdm%i device Before=freepbx.service Before=asterisk.service Requires=sys-subsystem-net-devices-wwan%i.device [Service] Type=simple Restart=always RestartSec=60s TimeoutSec=90s # Make sure the state is cleared before starting. ExecStartPre=-rm /tmp/qmi-network-state-cdc-wdm%i # Stop wwan so it can be reconfigured. ExecStartPre=networkctl down wwan%i # Raw IP must be enabled. ExecStartPre=sh -c "echo 'Y' | tee /sys/class/net/wwan%i/qmi/raw_ip" # Bring up the network. ExecStartPre=networkctl up wwan%i # Start the network via qmi-network scripts. # As some networks and/or devices take a long time to connect we should # give it some time to be ready before starting the connection process. ExecStartPre=-sh -e -c "sleep 5; qmi-network /dev/cdc-wdm%i start && sleep 5;" # Main loop with **very basic** failover. ExecStart=sh -e -c "while true; do ping -w 10 -c 3 one.one.one.one || (ping -w 10 -I wwan%i -c 3 one.one.one.one && ifmetric wwan%i 128); sleep 30; done;" # Stop.. DOWN TIME! ExecStop=networkctl down wwan%i ExecStop=qmi-network /dev/cdc-wdm%i stop # Be sure the network state is cleared on stop too. ExecStop=-rm /tmp/qmi-network-state-cdc-wdm%i [Install] WantedBy=sys-subsystem-net-devices-wwan%i.device