From 31a65be2424945470363cff1e7bc8b674c0cf3cf Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Sat, 26 Feb 2022 15:04:12 +0100 Subject: [PATCH] wwan config --- TODO.md | 2 +- .../files/etc/syndicate/services/modem.pr | 19 +++++++++++++++++ .../files/etc/syndicate/services/network.pr | 3 +++ .../files/usr/lib/synit/qmi-wwan-manager | 21 +++++++++++++++++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 packaging/packages/synit-config/files/etc/syndicate/services/modem.pr create mode 100755 packaging/packages/synit-config/files/usr/lib/synit/qmi-wwan-manager diff --git a/TODO.md b/TODO.md index 7abd4e9..3cfd5ce 100644 --- a/TODO.md +++ b/TODO.md @@ -5,7 +5,7 @@ - user settings: - wifi networks - - wwan enabled/disabled, plus apn + - ✓ wwan enabled/disabled, plus apn - screen brightness level - squeak diff --git a/packaging/packages/synit-config/files/etc/syndicate/services/modem.pr b/packaging/packages/synit-config/files/etc/syndicate/services/modem.pr new file mode 100644 index 0000000..513548f --- /dev/null +++ b/packaging/packages/synit-config/files/etc/syndicate/services/modem.pr @@ -0,0 +1,19 @@ +; Pinephone: +> + up>> + + +; More generally: + +? > [ + ? > [ + ? > [ + >> + $log ! + ] + ] +] + +? >> [ + ["/usr/lib/synit/qmi-wwan-manager" $dev $apn]> +] diff --git a/packaging/packages/synit-config/files/etc/syndicate/services/network.pr b/packaging/packages/synit-config/files/etc/syndicate/services/network.pr index c44c345..7924c34 100644 --- a/packaging/packages/synit-config/files/etc/syndicate/services/network.pr +++ b/packaging/packages/synit-config/files/etc/syndicate/services/network.pr @@ -42,6 +42,9 @@ $machine ? [ $config > ] + $machine ? [ + $config > + ] $machine ? [ $config diff --git a/packaging/packages/synit-config/files/usr/lib/synit/qmi-wwan-manager b/packaging/packages/synit-config/files/usr/lib/synit/qmi-wwan-manager new file mode 100755 index 0000000..cd890f0 --- /dev/null +++ b/packaging/packages/synit-config/files/usr/lib/synit/qmi-wwan-manager @@ -0,0 +1,21 @@ +#!/bin/sh + +set -eu + +dev="$1" +apn="$2" +echo "Starting QMI manager for device $dev, APN $apn" + +netdev=$(qmicli --device=$dev --device-open-proxy --get-wwan-iface) +echo "QMI network device for $dev is $netdev" + +if qmicli --device=$dev --device-open-proxy --wda-get-data-format | grep 'Link layer protocol' | grep -q raw-ip +then + echo "Setting raw-ip mode for $netdev" + ip link set dev $netdev down + echo Y > /sys/class/net/$netdev/qmi/raw_ip + ip link set dev $netdev up +fi + +echo "Starting network for $netdev" +exec qmicli --device=$dev --device-open-proxy --wds-start-network="ip-type=4,apn=$apn" --wds-follow-network