Commit e3ce27db authored by Vladimir Bashkirtsev's avatar Vladimir Bashkirtsev

Initial commit

parents
all: network-config qmi-service qmi-monitor-timer qmi-monitor-service
tar xf libqmi-1.38.0.tar.xz
mkdir libqmi-1.38.0/build
cd libqmi-1.38.0/build && meson --prefix=/usr --buildtype=release -D bash_completion=false -D qrtr=false -D man=false -Dudev=false -Dmbim_qmux=false -Dintrospection=false ..
cd libqmi-1.38.0/build && ninja
cd libqmi-1.38.0/build && ninja test
cd libqmi-1.38.0/build && ninja install
@echo "$$NETWORK_CONFIG" > /etc/systemd/network/wwan0.network
install -m 0755 qmi-stats /usr/sbin
install -m 0755 qmi-monitor /usr/sbin
@echo "$$QMI_SERVICE" > /lib/systemd/system/qmi.service
systemctl enable qmi.service
@echo "$$QMI_MONITOR_TIMER" > /lib/systemd/system/qmi-monitor.timer
@echo "$$QMI_MONITOR_SERVICE" > /lib/systemd/system/qmi-monitor.service
systemctl enable qmi-monitor.timer
rm -rf libqmi-1.38.0
all: network-config
network-config:
define NETWORK_CONFIG
[Match]
Name=wwan0
[Network]
DHCP=ipv4
[DHCP]
RouteMetric=2048
endef
export NETWORK_CONFIG
qmi-service:
define QMI_SERVICE
[Unit]
Description=Start QMI data session
After=dev-cdc\x2dwdm0.device sys-subsystem-net-devices-wwan0.device
Requires=dev-cdc\x2dwdm0.device
BindsTo=dev-cdc\x2dwdm0.device
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=/bin/sh -c 'echo Y > /sys/class/net/wwan0/qmi/raw_ip'
ExecStart=/usr/bin/qmicli -d /dev/cdc-wdm0 --device-open-proxy --wds-start-network="ip-type=4" --client-no-release-cid
ExecStop=/usr/bin/qmicli -d /dev/cdc-wdm0 --device-open-proxy --wds-stop-network=0xffffffff
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
endef
export QMI_SERVICE
qmi-monitor-timer:
define QMI_MONITOR_TIMER
[Unit]
Description=Monitor QMI connection
[Timer]
OnBootSec=30
OnUnitActiveSec=30
[Install]
WantedBy=timers.target
endef
export QMI_MONITOR_TIMER
qmi-monitor-service:
define QMI_MONITOR_SERVICE
[Unit]
Description=Check QMI connection
[Service]
Type=oneshot
ExecStart=/usr/sbin/qmi-monitor
endef
export QMI_MONITOR_SERVICE
#!/bin/sh
DEVICE=/dev/cdc-wdm0
# Check if session is alive (has IP)
if ! qmicli -d "$DEVICE" --wds-get-current-settings 2>/dev/null | grep -q "IPv4 address"; then
echo "QMI disconnected, restarting..."
systemctl restart qmi.service
fi
#!/bin/bash
# Script to output modem info in JSON for Zabbix UserParameter
# Requires qmicli
DEVICE="/dev/cdc-wdm0"
# Get serving system info (tech)
tech=$(qmicli -d "$DEVICE" --nas-get-serving-system | awk -F"'" '/Radio interfaces:/ {getline; gsub(/[\[\]:]/,""); print $2; exit}')
# Get signal info from serving LTE cell
read -r rsrp rsrq rssi snr <<<$(qmicli -d "$DEVICE" --nas-get-signal-info \
| awk -F"'" '/RSRP|RSRQ|RSSI|SNR/ {gsub(/[^0-9\.\-]/,"",$2); printf "%s ", $2} END{print ""}')
# Get channel rates
read -r tx rx max_tx max_rx <<<$(qmicli -d "$DEVICE" --wds-get-channel-rates \
| awk -F: '/Current TX rate/ {gsub(/[^0-9]/,"",$2); tx=$2} \
/Current RX rate/ {gsub(/[^0-9]/,"",$2); rx=$2} \
/Max TX rate/ {gsub(/[^0-9]/,"",$2); max_tx=$2} \
/Max RX rate/ {gsub(/[^0-9]/,"",$2); max_rx=$2} \
END{if(tx=="") tx=0; if(rx=="") rx=0; print tx,rx,max_tx,max_rx}')
# Build JSON
cat <<EOF
{
"tech": "$tech",
"rsrp": $rsrp,
"rsrq": $rsrq,
"rssi": $rssi,
"snr": $snr,
"tx": $tx,
"rx": $rx,
"max_tx": $max_tx,
"max_rx": $max_rx
}
EOF
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment