🌴 Sync 2026-03-05 23:51:42

This commit is contained in:
github-actions[bot] committed 2026-03-05 23:51:42 +08:00
1 parent 97c049ed0a
commit 0acff03804
14253 files changed
+3893239

No files matched your search

+531
View File
@@ -0,0 +1,531 @@
#!/bin/sh
#
# (c) 2010-2025 Cezary Jackiewicz <cezary@eko.one.pl>
#
# (c) 2021-2025 modified by Rafał Wabik - IceG - From eko.one.pl forum
#
band4g() {
# see https://en.wikipedia.org/wiki/LTE_frequency_bands
echo -n "B${1}"
case "${1}" in
"1") echo " (2100 MHz)";;
"2") echo " (1900 MHz)";;
"3") echo " (1800 MHz)";;
"4") echo " (1700 MHz)";;
"5") echo " (850 MHz)";;
"7") echo " (2600 MHz)";;
"8") echo " (900 MHz)";;
"11") echo " (1500 MHz)";;
"12") echo " (700 MHz)";;
"13") echo " (700 MHz)";;
"14") echo " (700 MHz)";;
"17") echo " (700 MHz)";;
"18") echo " (850 MHz)";;
"19") echo " (850 MHz)";;
"20") echo " (800 MHz)";;
"21") echo " (1500 MHz)";;
"24") echo " (1600 MHz)";;
"25") echo " (1900 MHz)";;
"26") echo " (850 MHz)";;
"28") echo " (700 MHz)";;
"29") echo " (700 MHz)";;
"30") echo " (2300 MHz)";;
"31") echo " (450 MHz)";;
"32") echo " (1500 MHz)";;
"34") echo " (2000 MHz)";;
"37") echo " (1900 MHz)";;
"38") echo " (2600 MHz)";;
"39") echo " (1900 MHz)";;
"40") echo " (2300 MHz)";;
"41") echo " (2500 MHz)";;
"42") echo " (3500 MHz)";;
"43") echo " (3700 MHz)";;
"46") echo " (5200 MHz)";;
"47") echo " (5900 MHz)";;
"48") echo " (3500 MHz)";;
"50") echo " (1500 MHz)";;
"51") echo " (1500 MHz)";;
"53") echo " (2400 MHz)";;
"54") echo " (1600 MHz)";;
"65") echo " (2100 MHz)";;
"66") echo " (1700 MHz)";;
"67") echo " (700 MHz)";;
"69") echo " (2600 MHz)";;
"70") echo " (1700 MHz)";;
"71") echo " (600 MHz)";;
"72") echo " (450 MHz)";;
"73") echo " (450 MHz)";;
"74") echo " (1500 MHz)";;
"75") echo " (1500 MHz)";;
"76") echo " (1500 MHz)";;
"85") echo " (700 MHz)";;
"87") echo " (410 MHz)";;
"88") echo " (410 MHz)";;
"103") echo " (700 MHz)";;
"106") echo " (900 MHz)";;
"*") echo "";;
esac
}
band5g() {
# see https://en.wikipedia.org/wiki/5G_NR_frequency_bands
echo -n "n${1}"
case "${1}" in
"1") echo " (2100 MHz)";;
"2") echo " (1900 MHz)";;
"3") echo " (1800 MHz)";;
"5") echo " (850 MHz)";;
"7") echo " (2600 MHz)";;
"8") echo " (900 MHz)";;
"12") echo " (700 MHz)";;
"13") echo " (700 MHz)";;
"14") echo " (700 MHz)";;
"18") echo " (850 MHz)";;
"20") echo " (800 MHz)";;
"24") echo " (1600 MHz)";;
"25") echo " (1900 MHz)";;
"26") echo " (850 MHz)";;
"28") echo " (700 MHz)";;
"29") echo " (700 MHz)";;
"30") echo " (2300 MHz)";;
"34") echo " (2100 MHz)";;
"38") echo " (2600 MHz)";;
"39") echo " (1900 MHz)";;
"40") echo " (2300 MHz)";;
"41") echo " (2500 MHz)";;
"46") echo " (5200 MHz)";;
"47") echo " (5900 MHz)";;
"48") echo " (3500 MHz)";;
"50") echo " (1500 MHz)";;
"51") echo " (1500 MHz)";;
"53") echo " (2400 MHz)";;
"54") echo " (1600 MHz)";;
"65") echo " (2100 MHz)";;
"66") echo " (1700/2100 MHz)";;
"67") echo " (700 MHz)";;
"70") echo " (2000 MHz)";;
"71") echo " (600 MHz)";;
"74") echo " (1500 MHz)";;
"75") echo " (1500 MHz)";;
"76") echo " (1500 MHz)";;
"77") echo " (3700 MHz)";;
"78") echo " (3500 MHz)";;
"79") echo " (4700 MHz)";;
"80") echo " (1800 MHz)";;
"81") echo " (900 MHz)";;
"82") echo " (800 MHz)";;
"83") echo " (700 MHz)";;
"84") echo " (2100 MHz)";;
"85") echo " (700 MHz)";;
"86") echo " (1700 MHz)";;
"89") echo " (850 MHz)";;
"90") echo " (2500 MHz)";;
"91") echo " (800/1500 MHz)";;
"92") echo " (800/1500 MHz)";;
"93") echo " (900/1500 MHz)";;
"94") echo " (900/1500 MHz)";;
"95") echo " (2100 MHz)";;
"96") echo " (6000 MHz)";;
"97") echo " (2300 MHz)";;
"98") echo " (1900 MHz)";;
"99") echo " (1600 MHz)";;
"100") echo " (900 MHz)";;
"101") echo " (1900 MHz)";;
"102") echo " (6200 MHz)";;
"104") echo " (6700 MHz)";;
"105") echo " (600 MHz)";;
"106") echo " (900 MHz)";;
"109") echo " (700/1500 MHz)";;
"257") echo " (28 GHz)";;
"258") echo " (26 GHz)";;
"259") echo " (41 GHz)";;
"260") echo " (39 GHz)";;
"261") echo " (28 GHz)";;
"262") echo " (47 GHz)";;
"263") echo " (60 GHz)";;
"*") echo "";;
esac
}
getdevicevendorproduct() {
devname="$(basename $1)"
case "$devname" in
'mhi_DUN'*)
devpath=$(find /sys/devices -name "$devname" -type d 2>/dev/null | head -1)
target_dir=${devpath%/*/*/*}
V=$(cat "$target_dir/vendor")
D=$(cat "$target_dir/device")
echo "pci/${V/0x/}${D/0x/}"
;;
'wwan'*'at'*)
devpath="$(readlink -f /sys/class/wwan/$devname/device)"
T=${devpath%/*/*/*}
if [ -e $T/vendor ] && [ -e $T/device ]; then
V=$(cat $T/vendor)
D=$(cat $T/device)
echo "pci/${V/0x/}${D/0x/}"
fi
;;
'ttyACM'*)
devpath="$(readlink -f /sys/class/tty/$devname/device)"
T=${devpath%/*}
echo "usb/$(cat $T/idVendor)$(cat $T/idProduct)"
;;
'tty'*)
devpath="$(readlink -f /sys/class/tty/$devname/device)"
T=${devpath%/*/*}
echo "usb/$(cat $T/idVendor)$(cat $T/idProduct)"
;;
*)
devpath="$(readlink -f /sys/class/usbmisc/$devname/device)"
T=${devpath%/*}
echo "usb/$(cat $T/idVendor)$(cat $T/idProduct)"
;;
esac
}
RES="/usr/share/3ginfo-lite"
DEVICE=$($RES/detect.sh)
if [ -z "$DEVICE" ]; then
echo '{"error":"Device not found"}'
exit 0
fi
O=""
if [ -e /usr/bin/sms_tool ]; then
O=$(sms_tool -D -d $DEVICE at "AT+CPIN?;+CSQ;+COPS=3,0;+COPS?;+COPS=3,2;+COPS?;+CREG=2;+CREG?")
else
O=$(gcom -d $DEVICE -s $RES/info.gcom 2>/dev/null)
fi
getpath() {
devname="$(basename $1)"
case "$devname" in
'wwan'*'at'*)
devpath="$(readlink -f /sys/class/wwan/$devname/device)"
P=${devpath%/*/*/*}
;;
'ttyACM'*)
devpath="$(readlink -f /sys/class/tty/$devname/device)"
P=${devpath%/*}
;;
'tty'*)
devpath="$(readlink -f /sys/class/tty/$devname/device)"
P=${devpath%/*/*}
;;
*)
devpath="$(readlink -f /sys/class/usbmisc/$devname/device/)"
P=${devpath%/*}
;;
esac
}
# --- modemdefine - WAN config ---
CONFIG=modemdefine
MODEMZ=$(uci show $CONFIG 2>/dev/null | grep -o "@modemdefine\[[0-9]*\]\.modem" | wc -l | xargs)
if [[ $MODEMZ -gt 1 ]]; then
SEC=$(uci -q get modemdefine.@general[0].main_network)
fi
if [[ $MODEMZ -eq 0 ]]; then
SEC=$(uci -q get 3ginfo.@3ginfo[0].network)
fi
if [[ $MODEMZ -eq 1 ]]; then
SEC=$(uci -q get modemdefine.@modemdefine[0].network)
fi
if [ -z "$SEC" ]; then
getpath $DEVICE
PORIG=$P
for DEV in /sys/class/tty/* /sys/class/usbmisc/*; do
getpath "/dev/"${DEV##/*/}
if [ "x$PORIG" == "x$P" ]; then
SEC=$(uci show network | grep "/dev/"${DEV##/*/} | cut -f2 -d.)
[ -n "$SEC" ] && break
fi
done
fi
# --- modemdefine config ---
CONN_TIME="-"
RX="-"
TX="-"
NETUP=$(ifstatus $SEC | grep "\"up\": true")
if [ -n "$NETUP" ]; then
CT=$(uci -q -P /var/state/ get network.$SEC.connect_time)
if [ -z $CT ]; then
CT=$(ifstatus $SEC | awk -F[:,] '/uptime/ {print $2}' | xargs)
else
UPTIME=$(cut -d. -f1 /proc/uptime)
CT=$((UPTIME-CT))
fi
if [ ! -z $CT ]; then
D=$(expr $CT / 60 / 60 / 24)
H=$(expr $CT / 60 / 60 % 24)
M=$(expr $CT / 60 % 60)
S=$(expr $CT % 60)
CONN_TIME=$(printf "%dd, %02d:%02d:%02d" $D $H $M $S)
CONN_TIME_SINCE=$(date "+%Y%m%d%H%M%S" -d "@$(($(date +%s) - CT))")
fi
IFACE=$(ifstatus $SEC | awk -F\" '/l3_device/ {print $4}')
if [ -n "$IFACE" ]; then
RX=$(ifconfig $IFACE | awk -F[\(\)] '/bytes/ {printf "%s",$2}')
TX=$(ifconfig $IFACE | awk -F[\(\)] '/bytes/ {printf "%s",$4}')
fi
fi
# CSQ
CSQ=$(echo "$O" | awk -F[,\ ] '/^\+CSQ/ {print $2}')
[ "x$CSQ" == "x" ] && CSQ=-1
if [ $CSQ -ge 0 -a $CSQ -le 31 ]; then
CSQ_PER=$(($CSQ * 100/31))
else
CSQ=""
CSQ_PER=""
fi
# COPS numeric
# see https://mcc-mnc.com/
# Update: 11/11/2024 items: 3121
COPS=""
COPS_MCC=""
COPS_MNC=""
COPS_NUM=$(echo "$O" | awk -F[\"] '/^\+COPS:\s*.,2/ {print $2}')
if [ -n "$COPS_NUM" ]; then
COPS_MCC=${COPS_NUM:0:3}
COPS_MNC=${COPS_NUM:3:3}
fi
TCOPS=$(echo "$O" | awk -F[\"] '/^\+COPS:\s*.,0/ {print $2}')
[ "x$TCOPS" != "x" ] && COPS="$TCOPS"
if [ -z "$COPS" ]; then
if [ -n "$COPS_NUM" ]; then
COPS=$(awk -F[\;] '/^'$COPS_NUM';/ {print $3}' $RES/mccmnc.dat | xargs)
LOC=$(awk -F[\;] '/^'$COPS_NUM';/ {print $2}' $RES/mccmnc.dat)
fi
fi
[ -z "$COPS" ] && COPS=$COPS_NUM
case "$COPS" in
*\ *)
COPS=$(echo "$COPS" | awk '{if(NF==2 && tolower($1)==tolower($2)){print $1}else{print $0}}')
;;
esac
isp=$(sms_tool -d "$DEVICE" at "AT+COPS?" | sed -n '2p' | cut -d '"' -f2 | tr -d '\r')
isp_num="$COPS_MCC $COPS_MNC"
isp_numws="$COPS_MCC$COPS_MNC"
case "$COPS" in
*[!0-9]* | '')
# Non-numeric characters or is blank
;;
*)
if [ "$COPS" = "$isp_num" ] || [ "$COPS" = "$isp_numws" ]; then
if [ -n "$isp" ]; then
COPS=$(awk -F[\;] '/^'"$isp"';/ {print $3}' $RES/mccmnc.dat | xargs)
LOC=$(awk -F[\;] '/^'"$isp"';/ {print $2}' $RES/mccmnc.dat)
fi
fi
;;
esac
# operator location from temporary config
LOCATIONFILE=/tmp/location
if [ -e "$LOCATIONFILE" ]; then
touch $LOCATIONFILE
LOC=$(cat $LOCATIONFILE)
if [ -n "$LOC" ]; then
LOC=$(cat $LOCATIONFILE)
if [[ $LOC == "-" ]]; then
rm $LOCATIONFILE
LOC=$(awk -F[\;] '/^'$COPS_NUM';/ {print $2}' $RES/mccmnc.dat)
if [ -n "$LOC" ]; then
echo "$LOC" > /tmp/location
fi
else
LOC=$(awk -F[\;] '/^'$COPS_NUM';/ {print $2}' $RES/mccmnc.dat)
if [ -n "$LOC" ]; then
echo "$LOC" > /tmp/location
fi
fi
fi
else
case "$COPS_MCC$COPS_MNC" in
*[!0-9]* | '')
# Non-numeric characters or is blank
;;
*)
if [ -n "$LOC" ]; then
LOC=$(awk -F[\;] '/^'"$COPS_MCC$COPS_MNC"';/ {print $2}' $RES/mccmnc.dat)
echo "$LOC" > /tmp/location
else
echo "-" > /tmp/location
fi
;;
esac
fi
T=$(echo "$O" | awk -F[,\ ] '/^\+CPIN:/ {print $0;exit}' | xargs)
if [ -n "$T" ]; then
[ "$T" == "+CPIN: READY" ] || REG=$(echo "$T" | cut -f2 -d: | xargs)
fi
T=$(echo "$O" | awk -F[,\ ] '/^\+CME ERROR:/ {print $0;exit}')
if [ -n "$T" ]; then
case "$T" in
"+CME ERROR: 10"*) REG="SIM not inserted";;
"+CME ERROR: 11"*) REG="SIM PIN required";;
"+CME ERROR: 12"*) REG="SIM PUK required";;
"+CME ERROR: 13"*) REG="SIM failure";;
"+CME ERROR: 14"*) REG="SIM busy";;
"+CME ERROR: 15"*) REG="SIM wrong";;
"+CME ERROR: 17"*) REG="SIM PIN2 required";;
"+CME ERROR: 18"*) REG="SIM PUK2 required";;
*) REG=$(echo "$T" | cut -f2 -d: | xargs);;
esac
fi
# CREG
eval $(echo "$O" | busybox awk -F[,] '/^\+CREG/ {gsub(/[[:space:]"]+/,"");printf "T=\"%d\";LAC_HEX=\"%X\";CID_HEX=\"%X\";LAC_DEC=\"%d\";CID_DEC=\"%d\";MODE_NUM=\"%d\"", $2, "0x"$3, "0x"$4, "0x"$3, "0x"$4, $5}')
case "$T" in
0*) REG="0";;
1*) REG="1";;
2*) REG="2";;
3*) REG="3";;
5*) REG="5";;
6*) REG="6";;
7*) REG="7";;
*) REG="";;
esac
# MODE
if [ -z "$MODE_NUM" ] || [ "x$MODE_NUM" == "x0" ]; then
# MODE_NUM=$(echo "$O" | awk -F[,] '/^\+COPS/ {print $4;exit}' | xargs)
MODE_NUM=$(echo "$O" | awk -F[,] '/^\+COPS: 0,2/ {print $4;exit}' | xargs)
fi
case "$MODE_NUM" in
2*) MODE="UMTS";;
3*) MODE="EDGE";;
4*) MODE="HSDPA";;
5*) MODE="HSUPA";;
6*) MODE="HSPA";;
7*) MODE="LTE";;
*) MODE="-";;
esac
# TAC
OTX=$(sms_tool -d $DEVICE at "at+cereg")
TAC=$(echo "$OTX" | awk -F[,] '/^\+CEREG/ {printf "%s", toupper($3)}' | sed 's/[^A-F0-9]//g')
if [ "x$TAC" != "x" ]; then
TAC_HEX=$(printf %d 0x$TAC)
else
TAC="-"
TAC_HEX="-"
fi
CONF_DEVICE=$(uci -q get 3ginfo.@3ginfo[0].device)
if echo "x$CONF_DEVICE" | grep -q "192.168."; then
if grep -q "Vendor=1bbb" /sys/kernel/debug/usb/devices; then
. $RES/modem/hilink/alcatel_hilink.sh $DEVICE
fi
if grep -q "Vendor=12d1" /sys/kernel/debug/usb/devices; then
. $RES/modem/hilink/huawei_hilink.sh $DEVICE
fi
if grep -q "Vendor=19d2" /sys/kernel/debug/usb/devices; then
. $RES/modem/hilink/zte.sh $DEVICE
fi
SEC=$(uci -q get 3ginfo.@3ginfo[0].network)
SEC=${SEC:-wan}
else
if [ -e /usr/bin/sms_tool ]; then
REGOK=0
[ "x$REG" == "x1" ] || [ "x$REG" == "x5" ] || [ "x$REG" == "x6" ] || [ "x$REG" == "x7" ] && REGOK=1
VIDPID=$(getdevicevendorproduct $DEVICE)
if [ -e "$RES/modem/$VIDPID" ]; then
case $(cat /tmp/sysinfo/board_name) in
"zte,mf289f")
. "$RES/modem/usb/19d21485"
;;
*)
. "$RES/modem/$VIDPID"
;;
esac
fi
fi
fi
sanitize_string() {
[ -z "$1" ] && echo "-" || echo "$1" | tr -d '\r\n'
}
sanitize_number() {
[ -z "$1" ] && echo "-" || echo "$1"
}
cat <<EOF
{
"conn_time":"$(sanitize_string "$CONN_TIME")",
"conn_time_sec":"$(sanitize_number "$CT")",
"conn_time_since":"$(sanitize_string "$CONN_TIME_SINCE")",
"rx":"$(sanitize_number "$RX")",
"tx":"$(sanitize_number "$TX")",
"modem":"$(sanitize_string "$MODEL")",
"mtemp":"$(sanitize_string "$TEMP")",
"firmware":"$(sanitize_string "$FW")",
"cport":"$(sanitize_string "$DEVICE")",
"protocol":"$(sanitize_string "$PROTO")",
"csq":"$(sanitize_number "$CSQ")",
"signal":"$(sanitize_number "$CSQ_PER")",
"operator_name":"$(sanitize_string "$COPS")",
"operator_mcc":"$(sanitize_string "$COPS_MCC")",
"operator_mnc":"$(sanitize_string "$COPS_MNC")",
"location":"$(sanitize_string "$LOC")",
"mode":"$(sanitize_string "$MODE")",
"registration":"$(sanitize_string "$REG")",
"simslot":"$(sanitize_string "$SSIM")",
"imei":"$(sanitize_string "$NR_IMEI")",
"imsi":"$(sanitize_string "$NR_IMSI")",
"iccid":"$(sanitize_string "$NR_ICCID")",
"lac_dec":"$(sanitize_number "$LAC_DEC")",
"lac_hex":"$(sanitize_string "$LAC_HEX")",
"tac_dec":"$(sanitize_number "$TAC_DEC")",
"tac_hex":"$(sanitize_string "$TAC_HEX")",
"tac_h":"$(sanitize_string "$T_HEX")",
"tac_d":"$(sanitize_number "$T_DEC")",
"cid_dec":"$(sanitize_number "$CID_DEC")",
"cid_hex":"$(sanitize_string "$CID_HEX")",
"pci":"$(sanitize_number "$PCI")",
"earfcn":"$(sanitize_number "$EARFCN")",
"pband":"$(sanitize_string "$PBAND")",
"s1band":"$(sanitize_string "$S1BAND")",
"s1pci":"$(sanitize_number "$S1PCI")",
"s1earfcn":"$(sanitize_number "$S1EARFCN")",
"s2band":"$(sanitize_string "$S2BAND")",
"s2pci":"$(sanitize_number "$S2PCI")",
"s2earfcn":"$(sanitize_number "$S2EARFCN")",
"s3band":"$(sanitize_string "$S3BAND")",
"s3pci":"$(sanitize_number "$S3PCI")",
"s3earfcn":"$(sanitize_number "$S3EARFCN")",
"s4band":"$(sanitize_string "$S4BAND")",
"s4pci":"$(sanitize_number "$S4PCI")",
"s4earfcn":"$(sanitize_number "$S4EARFCN")",
"rsrp":"$(sanitize_number "$RSRP")",
"rsrq":"$(sanitize_number "$RSRQ")",
"rssi":"$(sanitize_number "$RSSI")",
"sinr":"$(sanitize_number "$SINR")"
}
EOF
exit 0
@@ -0,0 +1,13 @@
opengt
set com 115200n81
set comecho off
set senddelay 0.01
waitquiet 0.01 0.01
send "AT+CPIN?^m"
waitfor 2 "OK" "+CME ERROR"
if % = -1 goto timeout
exit 0
:timeout
exit 1
+104
View File
@@ -0,0 +1,104 @@
#!/bin/sh
#
# (c) 2023-2025 Cezary Jackiewicz <cezary@eko.one.pl>
#
# (c) 2023-2025 modified by Rafał Wabik - IceG - From eko.one.pl forum
#
#
# from config modemdefine
#
CONFIG=modemdefine
MODEMZ=$(uci show $CONFIG 2>/dev/null | grep -o "@modemdefine\[[0-9]*\]\.modem" | wc -l | xargs)
if [ -n "$MODEMZ" ]; then
if [[ $MODEMZ = 0 ]]; then
DEVICE=$(uci -q get 3ginfo.@3ginfo[0].device)
if [ -n "$DEVICE" ]; then
echo $DEVICE
exit 0
fi
fi
if [[ $MODEMZ = 1 ]]; then
DEVICE=$(uci -q get modemdefine.@modemdefine[0].comm_port)
if [ -n "$DEVICE" ]; then
echo $DEVICE
exit 0
fi
fi
if [[ $MODEMZ > 1 ]]; then
DEVICE=$(uci -q get modemdefine.@general[0].main_modem)
if [ -n "$DEVICE" ]; then
echo $DEVICE
exit 0
fi
fi
fi
getdevicepath() {
devname="$(basename $1)"
case "$devname" in
'wwan'*'at'*)
devpath="$(readlink -f /sys/class/wwan/$devname/device)"
echo ${devpath%/*/*/*}
;;
'ttyACM'*)
devpath="$(readlink -f /sys/class/tty/$devname/device)"
echo ${devpath%/*}
;;
'tty'*)
devpath="$(readlink -f /sys/class/tty/$devname/device)"
echo ${devpath%/*/*}
;;
*)
devpath="$(readlink -f /sys/class/usbmisc/$devname/device)"
echo ${devpath%/*}
;;
esac
}
# from config
DEVICE=$(uci -q get 3ginfo.@3ginfo[0].device)
if [ -n "$DEVICE" ]; then
echo $DEVICE
exit 0
fi
# from temporary config
MODEMFILE=/tmp/modem
touch $MODEMFILE
DEVICE=$(cat $MODEMFILE)
if [ -n "$DEVICE" ]; then
echo $DEVICE
exit 0
fi
# find any device
DEVICES=$(find /dev -name "ttyUSB*" -o -name "ttyACM*" -o -name "wwan*at*" | sort -r)
# limit to devices from the modem
WAN=$(uci -q get network.wan.device)
if [ -e "$WAN" ]; then
DEVPATH=$(getdevicepath "$WAN")
DEVICESFOUND=""
for DEVICE in $DEVICES; do
T=$(getdevicepath $DEVICE)
[ "x$T" = "x$DEVPATH" ] && DEVICESFOUND="$DEVICESFOUND $DEVICE"
done
DEVICES="$DEVICESFOUND"
fi
for DEVICE in $DEVICES; do
gcom -d $DEVICE -s /usr/share/3ginfo-lite/check.gcom >/dev/null 2>&1
if [ $? = 0 ]; then
echo "$DEVICE" | tee $MODEMFILE
exit 0
fi
done
echo ""
exit 0
@@ -0,0 +1,51 @@
opengt
set com 115200n81
set comecho off
set senddelay 0.01
waitquiet 0.01 0.01
let $c="AT+CSQ^m"
let $r="+CSQ"
gosub readatcmd
let $c="AT+COPS=3,0;+COPS?^m"
let $r="+COPS"
gosub readatcmd
let $c="AT+COPS=3,2;+COPS?^m"
let $r="+COPS"
gosub readatcmd
let $c="AT+CREG=2;+CREG?^m"
let $r="+CREG"
gosub readatcmd
let $c="AT+CPIN?^m"
let $r="+CPIN"
gosub readatcmd
exit 0
:readatcmd
let i=15
send $c
:loop
get 0.1 "^m" $s
let l=len($r)
if len($s) < l goto loop1
if $mid($s,1,l) <> $r goto loop1
print $s
return
:loop1
if len($s) < 2 goto loop2
if $mid($s,1,2) = "ER" return
if $mid($s,1,2) = "CO" return
if len($s) < 10 goto loop2
if $mid($s,1,10) != "+CME ERROR" goto loop2
print $s
return
:loop2
if i = 0 exit 0
let i=i-1
goto loop
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,63 @@
#!/bin/sh
#
# (c) 2010-2021 Cezary Jackiewicz <cezary@eko.one.pl>
#
# (c) 2021 modified by Rafał Wabik - IceG - From eko.one.pl forum
#
IP=$1
[ -z "$IP" ] && exit 0
[ -e /usr/bin/wget ] || exit 0
getvaluen() {
echo $(sed 's!.*"'$2'":\([^,]*\).*!\1!g' /tmp/$1)
}
getvalue() {
echo $(sed 's!.*"'$2'":"\([^"]*\).*!\1!g' /tmp/$1)
}
rand=`awk 'BEGIN{srand();print int(rand()*(99000-1000))+1000 }'`
files="getWanInfo getImgInfo getSysteminfo"
for f in $files; do
wget -t 3 -O /tmp/$f "http://$IP/goform/$f?rand=$rand" >/dev/null 2>&1
done
MODEN=$(getvaluen getWanInfo "network_type")
case $MODEN in
1) MODE="GPRS";;
2) MODE="EDGE";;
3) MODE="HSDPA";;
4) MODE="HSUPA";;
5) MODE="UMTS";;
9) MODE="GSM";;
11) MODE="LTE";;
12) MODE="HSPA+";;
13) MODE="DC HSPA+";;
*) MODE="-";;
esac
echo "^SYSINFOEX:x,x,x,x,,x,\"$MODE\",$MODEN,\"$MODE\""
COPS=$(getvalue getWanInfo "network_name")
echo "+COPS: 0,0,\"$OPER\",x"
SIGNAL=$(getvaluen getImgInfo "signal")
case $SIGNAL in
1) CSQ="6";;
2) CSQ="12";;
3) CSQ="18";;
4) CSQ="24";;
5) CSQ="31";;
*) CSQ="0";;
esac
echo "+CSQ: $CSQ,99"
MODEL=$(getvalue getSysteminfo "dev_name")
echo MODEL="Alcatel $MODEL"
if [ "x$2" != "xdebug" ]; then
for f in $files; do
rm /tmp/$f
done
fi
@@ -0,0 +1,248 @@
#!/bin/sh
#
# (c) 2010-2021 Cezary Jackiewicz <cezary@eko.one.pl>
#
# (c) 2024 modified by Rafał Wabik - IceG - From eko.one.pl forum
#
IP=$1
[ -z "$IP" ] && exit 0
[ -e /usr/bin/wget ] || exit 0
getvaluen() {
echo $(awk -F[\<\>] '/<'$2'>/ {print $3}' /tmp/$1 | sed 's/[^0-9]//g')
}
getvaluens() {
echo $(awk -F[\<\>] '/<'$2'>/ {print $3}' /tmp/$1 | sed 's/[^0-9-]//g')
}
getvalue() {
echo $(awk -F[\<\>] '/<'$2'>/ {print $3}' /tmp/$1)
}
cookie=$(mktemp)
/usr/bin/wget -t 25 -O /tmp/webserver-token "http://$IP/api/webserver/token" >/dev/null 2>&1
token=$(getvaluen webserver-token token)
if [ -z "$token" ]; then
/usr/bin/wget -t 25 -O /tmp/webserver-token "http://$IP/api/webserver/SesTokInfo" >/dev/null 2>&1
sesinfo=$(getvalue webserver-token SesInfo)
fi
if [ -z "$sesinfo" ]; then
/usr/bin/wget -q -O /dev/null --keep-session-cookies --save-cookies $cookie "http://$IP/html/home.html"
fi
files="device/signal monitoring/status net/current-plmn net/signal-para device/information device/basic_information"
for f in $files; do
nf=$(echo $f | sed 's!/!-!g')
if [ -n "$token" ]; then
/usr/bin/wget -t 3 -O /tmp/$nf "http://$IP/api/$f" --header "__RequestVerificationToken: $token" >/dev/null 2>&1
elif [ -n "$sesinfo" ]; then
/usr/bin/wget -t 3 -O /tmp/$nf "http://$IP/api/$f" --header "Cookie: $sesinfo" >/dev/null 2>&1
else
/usr/bin/wget -t 3 -O /tmp/$nf "http://$IP/api/$f" --load-cookies=$cookie >/dev/null 2>&1
fi
done
# Protocol
# Driver=qmi_wwan & Driver=cdc_mbim & Driver=cdc_ether & Driver=huawei_cdc_ncm
PV=$(cat /sys/kernel/debug/usb/devices)
PVCUT=$(echo $PV | awk -F 'Vendor=12d1 ProdID=' '{print $2}' | cut -c-1108)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
elif echo "$PVCUT" | grep -q "Driver=huawei_cdc_ncm"
then
PROTO="ncm"
fi
RSSI=$(getvalue device-signal rssi)
if [ "$RSSI" == "&lt;=-113dBm" ]; then
RSSI=
else
RSSI=$(echo "$RSSI" | sed 's/[^0-9]//g')
fi
if [ -n "$RSSI" ]; then
CSQ=$(((-1*RSSI + 113)/2))
CSQ_PER=$(($CSQ * 100/31))
else
CSQ_PER=$(getvaluen monitoring-status SignalStrength)
if [ -z "$CSQ_PER" ]; then
CSQ_PER=$(getvaluen monitoring-status SignalIcon)
if [ -n "$CSQ_PER" ]; then
CSQ_PER=$((($CSQ_PER * 20) - 19))
fi
fi
if [ -n "$CSQ_PER" ]; then
CSQ=$((($CSQ_PER*31)/100))
fi
fi
MODEN=$(getvaluen monitoring-status CurrentNetworkType)
case $MODEN in
0) MODE="NOSERVICE";;
1) MODE="GSM";;
2) MODE="GPRS";;
3) MODE="EDGE";;
4) MODE="WCDMA";;
5) MODE="HSDPA";;
6) MODE="HSUPA";;
7) MODE="HSPA";;
8) MODE="TDSCDMA";;
9) MODE="HSPA+";;
10) MODE="EVDO rev. 0";;
11) MODE="EVDO rev. A";;
12) MODE="EVDO rev. B";;
13) MODE="1xRTT";;
14) MODE="UMB";;
15) MODE="1xEVDV";;
16) MODE="3xRTT";;
17) MODE="HSPA+64QAM";;
18) MODE="HSPA+MIMO";;
19) MODE="LTE";;
21) MODE="IS95A";;
22) MODE="IS95B";;
23) MODE="CDMA1x";;
24) MODE="EVDO rev. 0";;
25) MODE="EVDO rev. A";;
26) MODE="EVDO rev. B";;
27) MODE="Hybrydowa CDMA1x";;
28) MODE="Hybrydowa EVDO rev. 0";;
29) MODE="Hybrydowa EVDO rev. A";;
30) MODE="Hybrydowa EVDO rev. B";;
31) MODE="EHRPD rev. 0";;
32) MODE="EHRPD rev. A";;
33) MODE="EHRPD rev. B";;
34) MODE="Hybrydowa EHRPD rev. 0";;
35) MODE="Hybrydowa EHRPD rev. A";;
36) MODE="Hybrydowa EHRPD rev. B";;
41) MODE="WCDMA (UMTS)";;
42) MODE="HSDPA";;
43) MODE="HSUPA";;
44) MODE="HSPA";;
45) MODE="HSPA+";;
46) MODE="DC-HSPA+";;
61) MODE="TD SCDMA";;
62) MODE="TD HSDPA";;
63) MODE="TD HSUPA";;
64) MODE="TD HSPA";;
65) MODE="TD HSPA+";;
81) MODE="802.16E";;
101) MODE="LTE";;
*) MODE="-";;
esac
if [ "x$MODE" = "xLTE" ] || [ "x$MODE" = "xNOSERVICE"]; then
RSRP=$(getvaluens device-signal rsrp)
SINR=$(getvaluens device-signal sinr)
RSRQ=$(getvaluens device-signal rsrq)
fi
MODEL=$(getvalue device-information DeviceName)
if [ -n "$MODEL" ]; then
class=$(getvalue device-information Classify)
MODEL="Huawei $MODEL ($class)"
else
MODEL=$(getvalue device-basic_information devicename)
class=$(getvalue device-basic_information classify)
[ -n "$MODEL" ] && MODEL="Huawei $MODEL ($class)"
fi
FW=$(getvalue device-information SoftwareVersion)
if [ -n "$FW" ]; then
rev=$(getvalue device-information HardwareVersion)
FW="$rev / $FW"
fi
if [ -z "$FW" ]
then
FW='-'
fi
if [ -z "$TEMP" ]
then
TEMP='-'
fi
COPSA=$(getvaluen net-current-plmn Numeric)
COPSB=$(echo "${COPSA}" | cut -c1-3)
COPSC=$(echo -n $COPSA | tail -c 2)
COPS_MCC="$COPSB"
COPS_MNC="$COPSC"
COPS=$(getvalue net-current-plmn ShortName)
if [[ $COPSA =~ ^[0-9]+$ ]]; then
if [ -z "$COPS" ]
then
COPS=$(awk -F[\;] '/^'$COPSA';/ {print $3}' $RES/mccmnc.dat | xargs)
fi
LOC=$(awk -F[\;] '/^'$COPSA';/ {print $2}' $RES/mccmnc.dat)
fi
# operator location from temporary config
LOCATIONFILE=/tmp/location
if [ -e "$LOCATIONFILE" ]; then
touch $LOCATIONFILE
LOC=$(cat $LOCATIONFILE)
if [ -n "$LOC" ]; then
LOC=$(cat $LOCATIONFILE)
if [[ $LOC == "-" ]]; then
rm $LOCATIONFILE
LOC=$(awk -F[\;] '/^'$COPSA';/ {print $2}' $RES/mccmnc.dat)
if [ -n "$LOC" ]; then
echo "$LOC" > /tmp/location
fi
else
LOC=$(awk -F[\;] '/^'$COPSA';/ {print $2}' $RES/mccmnc.dat)
if [ -n "$LOC" ]; then
echo "$LOC" > /tmp/location
fi
fi
fi
else
if [[ "$COPS_MCC$COPS_MNC" =~ ^[0-9]+$ ]]; then
if [ -n "$LOC" ]; then
LOC=$(awk -F[\;] '/^'$COPS_MCC$COPS_MNC';/ {print $2}' $RES/mccmnc.dat)
echo "$LOC" > /tmp/location
else
echo "-" > /tmp/location
fi
fi
fi
LAC_HEX=$(getvalue net-signal-para Lac)
if [ -z "$LAC_HEX" ]; then
/usr/bin/wget -t 3 -O /tmp/add-param "http://$IP/config/deviceinformation/add_param.xml" > /dev/null 2>&1
LAC_HEX=$(getvalue add-param lac)
rm /tmp/add-param
fi
if [ -z "$LAC_HEX" ]
then
LAC_HEX='-'
fi
CID_HEX=$(getvalue net-signal-para CellID)
if [ -z "$CID_HEX" ]; then
CID_HEX=$(getvalue device-signal cell_id)
[ -n "$CID_HEX" ] && CID_HEX=$(printf %0X $CID_HEX)
fi
if [ -z "$CID_HEX" ]
then
CID_HEX='-'
fi
if [ -z "$CID_DEC" ]
then
[ -n "$CID_HEX" ] && CID_DEC=$(echo $((0x$CID_HEX)))
fi
rm $cookie
break
@@ -0,0 +1,62 @@
#!/bin/sh
#
# (c) 2010-2021 Cezary Jackiewicz <cezary@eko.one.pl>
#
# (c) 2021 modified by Rafał Wabik - IceG - From eko.one.pl forum
#
IP=$1
[ -z "$IP" ] && exit 0
T=$(mktemp)
wget -q -O $T "http://$IP/goform/goform_get_cmd_process?multi_data=1&cmd=manufacturer_name,model_name,network_provider,network_type,lte_rsrp,lte_rsrq,lte_rssi,lte_snr,cell_id,lac_code,hmcc,hmnc,rmcc,rmnc,rssi,rscp,ecio"
. /usr/share/libubox/jshn.sh
json_load "$(cat $T)"
json_get_vars manufacturer_name model_name network_provider network_type lte_rsrp lte_rsrq lte_rssi lte_snr cell_id lac_code hmcc hmnc rmcc rmnc rssi rscp ecio
if [ -n "$lte_rssi" ]; then
RSSI=$lte_rssi
fi
if [ -n "$rssi" ]; then
CSQ=$(((rssi+113)/2))
CSQ_PER=$(($CSQ * 100/31))
else
CSQ=0
CSQ_PER=0
fi
echo "+CSQ: $CSQ,99"
MODEL=$manufacturer_name $model_name
MODE=$network_type
echo "^SYSINFOEX:x,x,x,x,,x,\"$network_type\",x,\"$network_type\""
if [ -n "$hmcc" ]; then
COPS_MCC==$(printf "%03d" $hmcc)
else
[ -n "$rmcc" ] && COPS_MCC==$(printf "%03d" $rmcc)
fi
if [ -n "$hmnc" ]; then
COPS_MNC=$(printf "%02d" $hmnc)
else
[ -n "$rmnc" ] && COPS_MNC=$(printf "%02d" $rmnc)
fi
echo "+COPS: 0,2,\"$mcc$mnc\",x"
if [ "x$network_type" = "xLTE" ]; then
echo "^LTERSRP: $lte_rsrp,$lte_rsrq"
RSRP=$lte_rsrp
RSRQ=$lte_rsrq
else
echo "^CSNR: $rscp,$ecio"
fi
echo "+CREG: 2,1,\"$lac_code\",\"$cell_id\""
CID_HEX=$cell_id
LAC_HEX=$lac_code
rm $T
@@ -0,0 +1,204 @@
# Dell DW5930e
# Foxconn T99W175
O=$(sms_tool -d $DEVICE at "at^temp")
T=$(echo "$O" | awk '/^TSENS: / {gsub("C","",$2); print $2}')
T1=$(echo "$O" | awk '/^PA: / {gsub("C","",$2); print $2}')
if [ -n "$T" ] && [ -n "$T1" ]; then
[ "$T1" -gt "$T" ] && T="$T1"
fi
T1=$(echo "$O" | awk '/^Skin Sensor: / {gsub("C","",$2); print $2}')
if [ -n "$T" ] && [ -n "$T1" ]; then
[ "$T1" -gt "$T" ] && T="$T1"
fi
[ -n "$T" ] && TEMP="$T &deg;C"
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at^debug?")
case "$MODE_NUM" in
"7")
MODE="LTE |"
echo "$O" | grep -q "scell:" && MODE="LTE-A |"
;;
"11")
MODE="5G SA |"
;;
"13")
MODE="5G NSA |"
;;
esac
T=$(echo "$O" | awk -F: '/^lte_tac:/ {print $2}')
if [ -n "$T" ]; then
TAC_HEX=$(printf "%X" $T)
TAC_DEC=$(printf "%d" "0x$T")
fi
O1=$(echo "$O" | grep -A 3 pcell)
T=$(echo "$O1" | awk -F: '/^pcell:/ {print $3}' | cut -f1 -d" ")
if [ -n "$T" ]; then
MODE="$MODE $(band4g $T)"
T1=$(echo "$O1" | awk -F: '/^pcell:/ {print $4}' | xargs)
PBAND="$(band4g $T) @${T1/MHz/} MHz"
T=$(echo "$O1" | awk -F: '/pci:/ {print $3}' | xargs)
[ -n "$T" ] && PCI=$T
T=$(echo "$O1" | awk -F: '/^channel:/ {print $2}' | cut -f1 -d" " | xargs)
[ -n "$T" ] && EARFCN=$T
T=$(echo "$O1" | awk -F[:,] '/^lte_rsrp:/ {print $2}')
[ -n "$T" ] && RSRP="${T/dBm/}"
T=$(echo "$O1" | awk -F[:,] '/rsrq:/ {print $4}' | xargs)
[ -n "$T" ] && RSRQ="${T/dB/}"
T=$(echo "$O1" | awk -F[:,] '/^lte_rssi:/ {print $2}')
[ -n "$T" ] && RSSI="${T/dBm/}"
T=$(echo "$O1" | awk -F[:,] '/lte_snr:/ {print $4}' | xargs)
[ -n "$T" ] && [ "$T" != "NA" ] && SINR="${T/dB/}"
fi
O1=$(echo "$O" | grep -A 3 scell)
IDX=0;
while true; do
O2=$(echo "$O1" | head -n4)
if [ -z "$O2" ]; then
break
fi
IDX=$((IDX + 1))
T=$(echo "$O2" | awk -F: '/^scell:/ {print $3}' | cut -f1 -d" ")
MODE="$MODE / $(band4g $T)"
T1=$(echo "$O2" | awk -F: '/^scell:/ {print $4}' | xargs)
if [ -n "$T1" ]; then
case $IDX in
1) S1BAND="$(band4g $T) @${T1/MHz/} MHz";;
2) S2BAND="$(band4g $T) @${T1/MHz/} MHz";;
3) S3BAND="$(band4g $T) @${T1/MHz/} MHz";;
4) S4BAND="$(band4g $T) @${T1/MHz/} MHz";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F: '/pci:/ {print $3}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$T";;
2) S2PCI="$T";;
3) S3PCI="$T";;
4) S4PCI="$T";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F: '/^channel:/ {print $2}' | cut -f1 -d" " | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1EARFCN="$T";;
2) S2EARFCN="$T";;
3) S3EARFCN="$T";;
4) S4EARFCN="$T";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F[:,] '/^lte_rsrp:/ {print $2}')
# [ -n "$T" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "${T/dBm/} dBm"
T=$(echo "$O2" | awk -F[:,] '/rsrq:/ {print $4}' | xargs)
# [ -n "$T" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "${T/dB/} dB"
T=$(echo "$O2" | awk -F[:,] '/^lte_rssi:/ {print $2}')
# [ -n "$T" ] && addon $((POS + 5)) "(S${IDX}) RSSI" "${T/dBm/} dBm"
T=$(echo "$O2" | awk -F[:,] '/lte_snr:/ {print $4}' | xargs)
# [ -n "$T" ] && [ "$T" != "NA" ] && addon $((POS + 8)) "(S${IDX}) SNR" "${T/dB/} dB"
O1=$(echo "$O1" | sed '1,4d')
done
T=$(echo "$O" | awk -F: '/^nr_band:/ {print $2}' | xargs)
if [ -n "$T" ]; then
MODE="$MODE / $(band5g ${T/n/})"
IDX=$((IDX + 1))
T1=$(echo "$O" | awk -F: '/^nr_band_width:/ {print $2}' | xargs)
if [ -n "$T1" ]; then
case $IDX in
1) S1BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
2) S2BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
3) S3BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
4) S4BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_pci:/ {print $2}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$T";;
2) S2PCI="$T";;
3) S3PCI="$T";;
4) S4PCI="$T";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_channel:/ {print $2}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1EARFCN="$T";;
2) S2EARFCN="$T";;
3) S3EARFCN="$T";;
4) S4EARFCN="$T";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_rsrp:/ {print $2}' | cut -f1 -d" ")
# [ -n "$T" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "${T/dBm/} dBm"
T=$(echo "$O" | awk -F: '/^nr_rsrq:/ {print $2}' | xargs)
# [ -n "$T" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "${T/dB/} dB"
T=$(echo "$O" | awk -F: '/^nr_snr:/ {print $2}' | xargs)
# [ -n "$T" ] && [ "$T" != "NA" ] && addon $((POS + 8)) "(S${IDX}) SNR" "${T/dB/} dB"
fi
fi
MODE=$(echo $MODE | sed 's,/,+,'| sed 's,LTE B,LTE | B,')
# Modem
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "//)
MODEL="$MODELBCUT "$MODELACUT
FWA=$(sms_tool -d $DEVICE at "AT+CGMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+CGMR "//)
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+CGSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+CGSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$O" | awk -F [:] '/^\ICCID:/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
if echo "$DEVICE" | grep -q "wwan0at0"
then
PROTO="mbim"
fi
@@ -0,0 +1,530 @@
# Quectel RM520N-GL
# Quectel RM521F-GL
O=$(sms_tool -d $DEVICE at "at+qtemp")
T=$(echo "$O" | awk -F[,:] '/^\+QTEMP/ {print $3}' | sort -r | head -n1 | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
if [ -z "$REG" ] || [ "x$MODE_NUM" = "x11" ]; then
O=$(sms_tool -d $DEVICE at "at+c5greg=2;+c5greg?")
# C5GREG
eval $(echo "$O" | awk -F[,] '/^\+C5GREG/ {gsub(/[[:space:]"]+/,"");printf "T=\"%d\";TAC_HEX=\"%X\";CID_HEX=\"%s\";TAC_DEC=\"%d\";MODE_NUM=\"%d\"", $2, "0x"$3, $4, "0x"$3, $5}')
case "$T" in
0*) REG="0";;
1*) REG="1";;
2*) REG="2";;
3*) REG="3";;
5*) REG="5";;
*) REG="";;
esac
[ "x$REG" = "x1" ] || [ "x$REG" = "x5" ] && REGOK=1
[ "$TAC_DEC" != "0" ]
[ -n "$CID_HEX" ] && CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qcainfo;+qeng=\"servingcell\";+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $2}' | xargs)
if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
COPS="$T"
fi
case "$MODE_NUM" in
7*)
MODE="LTE |"
echo "$O" | grep -q -i "+QCAINFO.*SCC" && MODE="LTE_A"
;;
11*)
MODE="5G SA |"
;;
13*)
MODE="LTE |"
if echo "$O" | grep -q -i "+QCAINFO.*NR5G"; then
MODE="5G NSA |"
else
if echo "$O" | grep -q -i "+QCAINFO.*PCC.*LTE"; then
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
if echo "$O" | grep -q -i "+QCAINFO.*SCC"; then
MODE="LTE-A |"
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
fi
fi
fi
;;
esac
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
MODE="$MODE $(band4g ${B})"
;;
*"NR N"*)
B=$(echo $T | sed 's/NR N\(.*\)/\1/')
MODE="$MODE $(band5g ${B})"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
MODE="$MODE $(band5g ${B})"
;;
esac
T1=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{gsub(" ", "-");print $5}')
if [ -n "$T1" ]; then
for T in $T1; do
case $T in
*"LTE-BAND"*)
B=$(echo $T | sed 's/"LTE-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band4g ${B})"
;;
*"NR-N"*)
B=$(echo $T | sed 's/NR-N\(.*\)/\1/')
MODE="$MODE / $(band5g ${B})"
;;
*"NR5G-BAND"*)
B=$(echo $T | sed 's/"NR5G-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band5g ${B})"
;;
esac
done
fi
else
case "$MODE_NUM" in
7 | 13)
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO:.*LTE.*/{print $4}')
if [ -n "$T" ]; then
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
MODE="$MODE $(band4g ${B})"
fi
;;
11*)
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO:.*NR5G.*/{print $4}')
if [ -n "$T" ]; then
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
MODE="$MODE $(band5g ${B})"
fi
;;
esac
fi
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xNR5G-SA" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $8}')
if [ -n "$T" ]; then
CID_HEX=$T
CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}')
# [ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0) BW="5";;
1) BW="10";;
2) BW="15";;
3) BW="20";;
4) BW="25";;
5) BW="30";;
6) BW="40";;
7) BW="50";;
8) BW="60";;
9) BW="70";;
10) BW="80";;
11) BW="90";;
12) BW="100";;
13) BW="200";;
14) BW="400";;
*) BW="";;
esac
[ -n "$BW" ] && DBW="@$BW MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
if [ -n "$T" ]; then
RSRP="$T"
if [ -n "$BW" ]; then
N=$((BW * 5))
RSSI=$(echo "$T $N" | awk '{printf "%d\n", $1 + 10*log(12*$2)/log(10)}')
if [ -n "$RSSI" ]; then
[ $RSSI -lt -113 ] && RSSI="-113"
[ $RSSI -gt -51 ] && RSSI="-51"
RSSI="$RSSI"
[ -z "$CSQ_PER" ] && CSQ_PER=$(((RSSI + 113) * 100 / 62 ))
[ -z "$CSQ" ] && CSQ=$(((31 * CSQ_PER) / 100))
fi
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}')
[ -n "$T" ] && SINR="$T"
fi
fi
IFS="
"
if [ "x$MODE_NUM" = "x13" ]; then
LINES=$(echo "$O" | grep "+QENG")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/{print $2}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $12}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX=$T
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $16}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR="$T"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $10}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $11}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
elif [ "x$T" = "xservingcell" ]; then
if [ "x${MODE:0:3}" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
T_DEC=$(printf "%d" "0x$T")
T_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.1f\n", 0.2*$1*10 - 20}')
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
done
fi
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
;;
esac
T3=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $4}')
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
if [ -z "$T4" ]; then
PBAND="$T2"
if [ -n "$DBW" ]; then
PBAND="$T2 $DBW"
fi
else
PBAND="$T2 @$T4 MHz"
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $6}' | xargs)
[ -n "$T" ] && PCI="$T"
else
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $7}')
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $10}')
[ -n "$T" ] && RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $8}')
[ -n "$T" ] && RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $9}')
[ -n "$T" ] && RSRQ="$T"
fi
IDX=1
LINES=$(echo "$O" | grep -E "^\+QCAINFO: \"(scc|SCC)\"")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $5}')
T3=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $4}')
T4=""
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $10}' | xargs)
# [ -n "$T5" ] && addon $((POS + 5)) "(S${IDX}) RSSI" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}' | xargs)
# [ -n "$T5" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}' | xargs)
# [ -n "$T5" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
case $T3 in
0) T4="5";;
1) T4="10";;
2) T4="15";;
3) T4="20";;
4) T4="25";;
5) T4="30";;
6) T4="40";;
7) T4="50";;
8) T4="60";;
9) T4="70";;
10) T4="80";;
11) T4="90";;
12) T4="100";;
13) T4="200";;
14) T4="400";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}')
[ -n "$T5" ]
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
if [ "x$MODE_NUM" = "x11" ]; then
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ] && [ "$T5" != "-" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
else
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $6}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
fi
;;
esac
if [ -z "$T4" ]; then
case $IDX in
1) S1BAND="$T2";;
2) S2BAND="$T2";;
3) S3BAND="$T2";;
4) S4BAND="$T2";;
*) ;;
esac
else
case $IDX in
1) S1BAND="$T2 @$T4 MHz";;
2) S2BAND="$T2 @$T4 MHz";;
3) S3BAND="$T2 @$T4 MHz";;
4) S4BAND="$T2 @$T4 MHz";;
*) ;;
esac
fi
IDX=$((IDX + 1))
done
fi
fi
MODE=$(echo $MODE | sed 's,/,+,'| sed 's,LTE B,LTE | B,')
if [ "${LAC_DEC}" = "0" ]; then
LAC_DEC="-"
LAC_HEX="-"
fi
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+GMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+GMR "//)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "//)
MODEL="$MODELBCUT "$MODELACUT
# Slot SIM
O=$(sms_tool -d $DEVICE at "AT+QUIMSLOT?")
T=$(echo "$O" | awk -F [:] '/^\+QUIMSLOT/{print $2}' | xargs)
if [ -n "$T" ]; then
SSIM="$T"
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+GSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+QCCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+QCCID/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM
if [ -d "/sys/class/mhi_uci_q" ]; then
if ls /sys/class/mhi_uci_q/mhi_QMI0 > /dev/null 2>&1; then
PROTO="qmi"
elif ls /sys/class/mhi_uci_q/mhi_MBIM* > /dev/null 2>&1; then
PROTO="mbim"
else
# Fallback - assume qmi if MHI exists but no specific match
PROTO="qmi"
fi
fi
@@ -0,0 +1,530 @@
# Quectel RM520N-GL
# Quectel RM521F-GL
O=$(sms_tool -d $DEVICE at "at+qtemp")
T=$(echo "$O" | awk -F[,:] '/^\+QTEMP/ {print $3}' | sort -r | head -n1 | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
if [ -z "$REG" ] || [ "x$MODE_NUM" = "x11" ]; then
O=$(sms_tool -d $DEVICE at "at+c5greg=2;+c5greg?")
# C5GREG
eval $(echo "$O" | awk -F[,] '/^\+C5GREG/ {gsub(/[[:space:]"]+/,"");printf "T=\"%d\";TAC_HEX=\"%X\";CID_HEX=\"%s\";TAC_DEC=\"%d\";MODE_NUM=\"%d\"", $2, "0x"$3, $4, "0x"$3, $5}')
case "$T" in
0*) REG="0";;
1*) REG="1";;
2*) REG="2";;
3*) REG="3";;
5*) REG="5";;
*) REG="";;
esac
[ "x$REG" = "x1" ] || [ "x$REG" = "x5" ] && REGOK=1
[ "$TAC_DEC" != "0" ]
[ -n "$CID_HEX" ] && CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qcainfo;+qeng=\"servingcell\";+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $2}' | xargs)
if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
COPS="$T"
fi
case "$MODE_NUM" in
7*)
MODE="LTE |"
echo "$O" | grep -q -i "+QCAINFO.*SCC" && MODE="LTE_A"
;;
11*)
MODE="5G SA |"
;;
13*)
MODE="LTE |"
if echo "$O" | grep -q -i "+QCAINFO.*NR5G"; then
MODE="5G NSA |"
else
if echo "$O" | grep -q -i "+QCAINFO.*PCC.*LTE"; then
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
if echo "$O" | grep -q -i "+QCAINFO.*SCC"; then
MODE="LTE-A |"
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
fi
fi
fi
;;
esac
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
MODE="$MODE $(band4g ${B})"
;;
*"NR N"*)
B=$(echo $T | sed 's/NR N\(.*\)/\1/')
MODE="$MODE $(band5g ${B})"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
MODE="$MODE $(band5g ${B})"
;;
esac
T1=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{gsub(" ", "-");print $5}')
if [ -n "$T1" ]; then
for T in $T1; do
case $T in
*"LTE-BAND"*)
B=$(echo $T | sed 's/"LTE-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band4g ${B})"
;;
*"NR-N"*)
B=$(echo $T | sed 's/NR-N\(.*\)/\1/')
MODE="$MODE / $(band5g ${B})"
;;
*"NR5G-BAND"*)
B=$(echo $T | sed 's/"NR5G-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band5g ${B})"
;;
esac
done
fi
else
case "$MODE_NUM" in
7 | 13)
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO:.*LTE.*/{print $4}')
if [ -n "$T" ]; then
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
MODE="$MODE $(band4g ${B})"
fi
;;
11*)
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO:.*NR5G.*/{print $4}')
if [ -n "$T" ]; then
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
MODE="$MODE $(band5g ${B})"
fi
;;
esac
fi
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xNR5G-SA" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $8}')
if [ -n "$T" ]; then
CID_HEX=$T
CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}')
# [ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0) BW="5";;
1) BW="10";;
2) BW="15";;
3) BW="20";;
4) BW="25";;
5) BW="30";;
6) BW="40";;
7) BW="50";;
8) BW="60";;
9) BW="70";;
10) BW="80";;
11) BW="90";;
12) BW="100";;
13) BW="200";;
14) BW="400";;
*) BW="";;
esac
[ -n "$BW" ] && DBW="@$BW MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
if [ -n "$T" ]; then
RSRP="$T"
if [ -n "$BW" ]; then
N=$((BW * 5))
RSSI=$(echo "$T $N" | awk '{printf "%d\n", $1 + 10*log(12*$2)/log(10)}')
if [ -n "$RSSI" ]; then
[ $RSSI -lt -113 ] && RSSI="-113"
[ $RSSI -gt -51 ] && RSSI="-51"
RSSI="$RSSI"
[ -z "$CSQ_PER" ] && CSQ_PER=$(((RSSI + 113) * 100 / 62 ))
[ -z "$CSQ" ] && CSQ=$(((31 * CSQ_PER) / 100))
fi
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}')
[ -n "$T" ] && SINR="$T"
fi
fi
IFS="
"
if [ "x$MODE_NUM" = "x13" ]; then
LINES=$(echo "$O" | grep "+QENG")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/{print $2}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $12}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX=$T
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $16}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR="$T"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $10}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $11}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
elif [ "x$T" = "xservingcell" ]; then
if [ "x${MODE:0:3}" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
T_DEC=$(printf "%d" "0x$T")
T_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.1f\n", 0.2*$1*10 - 20}')
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
done
fi
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
;;
esac
T3=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $4}')
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
if [ -z "$T4" ]; then
PBAND="$T2"
if [ -n "$DBW" ]; then
PBAND="$T2 $DBW"
fi
else
PBAND="$T2 @$T4 MHz"
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $6}' | xargs)
[ -n "$T" ] && PCI="$T"
else
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $7}')
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $10}')
[ -n "$T" ] && RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $8}')
[ -n "$T" ] && RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $9}')
[ -n "$T" ] && RSRQ="$T"
fi
IDX=1
LINES=$(echo "$O" | grep -E "^\+QCAINFO: \"(scc|SCC)\"")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $5}')
T3=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $4}')
T4=""
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $10}' | xargs)
# [ -n "$T5" ] && addon $((POS + 5)) "(S${IDX}) RSSI" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}' | xargs)
# [ -n "$T5" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}' | xargs)
# [ -n "$T5" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
case $T3 in
0) T4="5";;
1) T4="10";;
2) T4="15";;
3) T4="20";;
4) T4="25";;
5) T4="30";;
6) T4="40";;
7) T4="50";;
8) T4="60";;
9) T4="70";;
10) T4="80";;
11) T4="90";;
12) T4="100";;
13) T4="200";;
14) T4="400";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}')
[ -n "$T5" ]
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
if [ "x$MODE_NUM" = "x11" ]; then
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ] && [ "$T5" != "-" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
else
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $6}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
fi
;;
esac
if [ -z "$T4" ]; then
case $IDX in
1) S1BAND="$T2";;
2) S2BAND="$T2";;
3) S3BAND="$T2";;
4) S4BAND="$T2";;
*) ;;
esac
else
case $IDX in
1) S1BAND="$T2 @$T4 MHz";;
2) S2BAND="$T2 @$T4 MHz";;
3) S3BAND="$T2 @$T4 MHz";;
4) S4BAND="$T2 @$T4 MHz";;
*) ;;
esac
fi
IDX=$((IDX + 1))
done
fi
fi
MODE=$(echo $MODE | sed 's,/,+,'| sed 's,LTE B,LTE | B,')
if [ "${LAC_DEC}" = "0" ]; then
LAC_DEC="-"
LAC_HEX="-"
fi
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+GMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+GMR "//)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "//)
MODEL="$MODELBCUT "$MODELACUT
# Slot SIM
O=$(sms_tool -d $DEVICE at "AT+QUIMSLOT?")
T=$(echo "$O" | awk -F [:] '/^\+QUIMSLOT/{print $2}' | xargs)
if [ -n "$T" ]; then
SSIM="$T"
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+GSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+QCCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+QCCID/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM
if [ -d "/sys/class/mhi_uci_q" ]; then
if ls /sys/class/mhi_uci_q/mhi_QMI0 > /dev/null 2>&1; then
PROTO="qmi"
elif ls /sys/class/mhi_uci_q/mhi_MBIM* > /dev/null 2>&1; then
PROTO="mbim"
else
# Fallback - assume qmi if MHI exists but no specific match
PROTO="qmi"
fi
fi
@@ -0,0 +1,128 @@
# Telit LN940 (QMI) / Telit LN940 (MBIM) / HP lt4220 (MBIM) / HP lt4220 (QMI)
O=$(sms_tool -D -d $DEVICE at "AT^CA_INFO?;^RFSTS?;+TEMP")
TR=$(echo "$O" |grep -A2 RFSTS: | awk 'NR ==2{print $0}')
if [ "$MODE" = "LTE" ]; then
RSRP=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$3}')
RSSI=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$4}')
RSRQ=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$5}')
SINR=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$16*2-20}')
else
SINR=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$4}')
RSSI=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$6}')
fi
T=$(echo "$O" | awk -F[,:] '/^\PCC info: /{print $2}' | sed 's/Band is //g')
[ -z "$T" ] && T=$(echo "$O" | awk -F[,] '/^\PCC info: /{print $2}')
if [ -n "$T" ]; then
PC=$(echo $T | tr -d 'LTE_B')
MODE="LTE | $(band4g $PC)"
T=$(echo "$O" | awk -F[,:] '/^\SCC1 info: /{print $2}' | sed 's/Band is //g')
if [ -n "$T" ]; then
SC1=$(echo $T | tr -d 'LTE_B')
MODE="${MODE/LTE/LTE_A} / "$(band4g ${SC1} "")
fi
T=$(echo "$O" | awk -F[,:] '/^\SCC2 info: /{print $2}' | sed 's/Band is //g')
if [ -n "$T" ]; then
SC2=$(echo $T | tr -d 'LTE_B')
MODE="${MODE} / "$(band4g ${SC2} "")
fi
fi
MODE=$(echo $MODE | sed 's,/,+,' | sed 's,LTE_A,LTE-A ,')
# Primary band
T1=$(echo "$O" | awk '/PCC/{print $5}' | sed -e 's/LTE_//g' -e 's/.$//')
if [ -n "$T1" ]; then
T2=$(echo "$O" | awk '/PCC/{print $8}' | sed -e 's/Band_width//g')
PBAND="$(band4g ${T1/B/} "") @$T2 MHz"
EARFCN=$(echo "$TR" |awk -F [,] '{print $2}')
PCI=$(echo "$TR" |awk -F [,] '{print $11}')
fi
# CA band (S1)
T3=$(echo "$O" | awk '/SCC1/{print $5}' | sed -e 's/LTE_//g' -e 's/.$//')
if [ -n "$T3" ]; then
T4=$(echo "$O" | awk '/SCC1/{print $8}' | sed -e 's/Band_width//g')
S1BAND="$(band4g ${T3/B/} "") @$T4 MHz"
# S1EARFCN=$(echo "$TR" |awk -F [,] '{print $2}')
# S1PCI=$(echo "$TR" |awk -F [,] '{print $11}')
fi
# CA band (S2)
T5=$(echo "$O" | awk '/SCC2/{print $5}' | sed -e 's/LTE_//g' -e 's/.$//')
if [ -n "$T5" ]; then
T6=$(echo "$O" | awk '/SCC2/{print $8}' | sed -e 's/Band_width//g')
S2BAND="$(band4g ${T5/B/} "") @$T6 MHz"
# S2EARFCN=$(echo "$TR" |awk -F [,] '{print $2}')
# S2PCI=$(echo "$TR" |awk -F [,] '{print $11}')
fi
# Temperature
T=$(echo "$O" | awk -F [:] '/tsens_tz_sensor0:/ {print $2}' | xargs)
if [ -n "$T" ]; then
TEMP=$(echo "$T &deg;C")
fi
# Cell ID & LAC & TAC
LAC_HEX=$(printf "%X" $LAC_DEC)
if [ -n "$LAC_DEC" ]; then
TAC_HEX=$LAC_HEX
fi
CID_HEX=$(printf "%X" $CID_DEC)
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=03f0 ProdID=0857' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
# Model
PVMODEL=$(echo $PV | awk -F 'Vendor=03f0 ProdID=0857' '{print $2}' | cut -c-150)
if [ -z "$MODEL" ]
then
MODELBCUT=$(echo $PVMODEL | awk -F 'Manufacturer=|S: Product=' '{print $2}'| xargs)
MODELACUT=$(echo $PVMODEL | awk -F 'Product=|S: SerialNumber' '{print $2}'| xargs)
MODELC="$MODELBCUT "$MODELACUT
MODEL=$(echo "$MODELC" | awk '{for (i=1;i<=NF;i++) if (!a[$i]++) printf("%s%s",$i,FS)}{printf("\n")}')
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | awk -F " " '/GSN /{print $2}')
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | awk -F " " '/CIMI /{print $2}')
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID" | xargs)
NR_D=$(echo "$O" | awk -F [:] '/ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# FW
OF=$(sms_tool -d $DEVICE at "ati")
DEV2=$(echo $OF | tr -s "\n" | xargs)
FW=$(echo $DEV2 | awk -F 'Revision: | IMEI: ' '{print $2}' | cut -c-50)
@@ -0,0 +1,128 @@
# Telit LN940 (QMI) / Telit LN940 (MBIM) / HP lt4220 (MBIM) / HP lt4220 (QMI)
O=$(sms_tool -D -d $DEVICE at "AT^CA_INFO?;^RFSTS?;+TEMP")
TR=$(echo "$O" |grep -A2 RFSTS: | awk 'NR ==2{print $0}')
if [ "$MODE" = "LTE" ]; then
RSRP=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$3}')
RSSI=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$4}')
RSRQ=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$5}')
SINR=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$16*2-20}')
else
SINR=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$4}')
RSSI=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$6}')
fi
T=$(echo "$O" | awk -F[,:] '/^\PCC info: /{print $2}' | sed 's/Band is //g')
[ -z "$T" ] && T=$(echo "$O" | awk -F[,] '/^\PCC info: /{print $2}')
if [ -n "$T" ]; then
PC=$(echo $T | tr -d 'LTE_B')
MODE="LTE | $(band4g $PC)"
T=$(echo "$O" | awk -F[,:] '/^\SCC1 info: /{print $2}' | sed 's/Band is //g')
if [ -n "$T" ]; then
SC1=$(echo $T | tr -d 'LTE_B')
MODE="${MODE/LTE/LTE_A} / "$(band4g ${SC1} "")
fi
T=$(echo "$O" | awk -F[,:] '/^\SCC2 info: /{print $2}' | sed 's/Band is //g')
if [ -n "$T" ]; then
SC2=$(echo $T | tr -d 'LTE_B')
MODE="${MODE} / "$(band4g ${SC2} "")
fi
fi
MODE=$(echo $MODE | sed 's,/,+,' | sed 's,LTE_A,LTE-A ,')
# Primary band
T1=$(echo "$O" | awk '/PCC/{print $5}' | sed -e 's/LTE_//g' -e 's/.$//')
if [ -n "$T1" ]; then
T2=$(echo "$O" | awk '/PCC/{print $8}' | sed -e 's/Band_width//g')
PBAND="$(band4g ${T1/B/} "") @$T2 MHz"
EARFCN=$(echo "$TR" |awk -F [,] '{print $2}')
PCI=$(echo "$TR" |awk -F [,] '{print $11}')
fi
# CA band (S1)
T3=$(echo "$O" | awk '/SCC1/{print $5}' | sed -e 's/LTE_//g' -e 's/.$//')
if [ -n "$T3" ]; then
T4=$(echo "$O" | awk '/SCC1/{print $8}' | sed -e 's/Band_width//g')
S1BAND="$(band4g ${T3/B/} "") @$T4 MHz"
# S1EARFCN=$(echo "$TR" |awk -F [,] '{print $2}')
# S1PCI=$(echo "$TR" |awk -F [,] '{print $11}')
fi
# CA band (S2)
T5=$(echo "$O" | awk '/SCC2/{print $5}' | sed -e 's/LTE_//g' -e 's/.$//')
if [ -n "$T5" ]; then
T6=$(echo "$O" | awk '/SCC2/{print $8}' | sed -e 's/Band_width//g')
S2BAND="$(band4g ${T5/B/} "") @$T6 MHz"
# S2EARFCN=$(echo "$TR" |awk -F [,] '{print $2}')
# S2PCI=$(echo "$TR" |awk -F [,] '{print $11}')
fi
# Temperature
T=$(echo "$O" | awk -F [:] '/tsens_tz_sensor0:/ {print $2}' | xargs)
if [ -n "$T" ]; then
TEMP=$(echo "$T &deg;C")
fi
# Cell ID & LAC & TAC
LAC_HEX=$(printf "%X" $LAC_DEC)
if [ -n "$LAC_DEC" ]; then
TAC_HEX=$LAC_HEX
fi
CID_HEX=$(printf "%X" $CID_DEC)
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=03f0 ProdID=0a57' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
# Model
PVMODEL=$(echo $PV | awk -F 'Vendor=03f0 ProdID=0a57' '{print $2}' | cut -c-150)
if [ -z "$MODEL" ]
then
MODELBCUT=$(echo $PVMODEL | awk -F 'Manufacturer=|S: Product=' '{print $2}'| xargs)
MODELACUT=$(echo $PVMODEL | awk -F 'Product=|S: SerialNumber' '{print $2}'| xargs)
MODELC="$MODELBCUT "$MODELACUT
MODEL=$(echo "$MODELC" | awk '{for (i=1;i<=NF;i++) if (!a[$i]++) printf("%s%s",$i,FS)}{printf("\n")}')
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | awk -F " " '/GSN /{print $2}')
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | awk -F " " '/CIMI /{print $2}')
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID" | xargs)
NR_D=$(echo "$O" | awk -F [:] '/ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# FW
OF=$(sms_tool -d $DEVICE at "ati")
DEV2=$(echo $OF | tr -s "\n" | xargs)
FW=$(echo $DEV2 | awk -F 'Revision: | IMEI: ' '{print $2}' | cut -c-50)
@@ -0,0 +1,113 @@
# Huawei E3272/E3372/E3276
O=$(sms_tool -d $DEVICE at "at^chiptemp?;^hcsq?")
T=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $2}' | xargs)
if [ -n "$T" ]; then
MODE="$T"
case "$MODE" in
WCDMA*)
PARAM2=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $4}' | xargs)
PARAM3=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $5}' | xargs)
RSCP=$(awk 'BEGIN {print -121 + '$PARAM2'}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSCP":"'$RSCP' dBm"}'
ECIO=$(awk 'BEGIN {print -32.5 + '$PARAM3'/2}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"ECIO":"'$ECIO' dB"}'
;;
LTE*)
PARAM2=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $4}' | xargs)
PARAM3=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $5}' | xargs)
PARAM4=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $6}' | xargs)
RSRP=$(awk 'BEGIN {print -141 + '$PARAM2'}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSRP":"'$RSRP' dBm"}'
SINR=$(awk 'BEGIN {print -20.2 + '$PARAM3'/5}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"SINR":"'$SINR' dB"}'
RSRQ=$(awk 'BEGIN {print -20 + '$PARAM4'/2}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSRQ":"'$RSRQ' dB"}'
;;
esac
fi
# Modem
OF=$(sms_tool -d $DEVICE at "ati")
DEV2=$(echo $OF | tr -s "\n" | xargs)
MODELB=$(echo $DEV2 | awk -F 'Manufacturer:|Revision:' '{print $2}'| xargs)
MODELC=$(echo $MODELB | sed 's/Model://' | xargs)
MODEL=$(echo $MODELC | awk '{print toupper(substr($0,0,1))tolower(substr($0,2))}')
FW=$(echo $DEV2 | awk -F 'Revision:|IMEI' '{print $2}'| xargs)
# Protocol
# Driver=qmi_wwan & Driver=cdc_mbim & Driver=cdc_ether & Driver=huawei_cdc_ncm
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=12d1 ProdID=1506' '{print $2}' | cut -c-1104)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
elif echo "$PVCUT" | grep -q "cdc_ncm"
then
PROTO="ncm"
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | sed 's/AT+GSN//g' | xargs)
if [ -n "NR_I" ]
then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed 's/AT+CIMI//g' | xargs)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT^ICCID?")
NR_D=$(echo "$O" | awk -F [:] '/^\^ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# DL / UL / Band
OTB=$(sms_tool -d $DEVICE at "AT^HFREQINFO?")
TBX=$(echo "$OTB" | awk -F [:] '/^\^HFREQINFO:/{print $2}' | xargs)
TB=$(echo "$TBX" | cut -d ',' -f3-3 )
TDL=$(echo "$TBX" | cut -d ',' -f6-6 )
DL=$(($TDL/1000))
TUL=$(echo "$TBX" | cut -d ',' -f9-9 )
UL=$(($TUL/1000))
ULBW="UL: @$UL MHz"
DLBW="DL: @$DL MHz"
PBAND="$(band4g $TB "") $DLBW $ULBW"
EARFCN=$(echo "$TBX" | cut -d ',' -f4-4 )
PCI="-"
# LAC & TAC
T_HEX=$LAC_HEX
T_DEC=$LAC_DEC
# Temperature
T=$(echo "$O" | awk -F[,:] '/^\^CHIPTEMP/ {gsub(/[ \r]/,"");t=0;for(i=2;i<=NF;i++)if($i!=65535){if($i>100){$i=$i/10};if($i>t){t=$i}};printf "%.1f", t}')
if [ "x$T" != "x0.0" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
TEMP="$T &deg;C"
#ADDON="$ADDON"'{"Temperatura":"'$T' &deg;C"}'
fi
@@ -0,0 +1,29 @@
# Qualcomm CDMA Technologies MSM
# Modem
MODEL="Qualcomm CDMA Technologies MSM"
FWA=$(sms_tool -d $DEVICE at "AT+CGMR")
FW=$(echo $FWA | cut -c 9- | sed s/"OK"// | xargs)
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | cut -c 8- | sed s/"OK"// | xargs)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | cut -c 9- | sed s/"OK"// | xargs)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$O" | awk -F [:] '/^\ICCID:/{print $2}' | sed s/"OK"// | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
@@ -0,0 +1,223 @@
# Foxconn T99W175 (FW 6.0.0.6)
O=$(sms_tool -d $DEVICE at "AT^TEMP?")
T=$(echo "$O" | awk '/^TSENS: / {gsub("C","",$2); print $2}')
T1=$(echo "$O" | awk '/^PA: / {gsub("C","",$2); print $2}')
if [ -n "$T" ] && [ -n "$T1" ]; then
if [[ "$T1" =~ ^[0-9]+$ && "$T" =~ ^[0-9]+$ ]]; then
if [ "$T1" -gt "$T" ]; then
T="$T1"
fi
fi
fi
T1=$(echo "$O" | awk '/^Skin Sensor: / {gsub("C","",$2); print $2}')
if [ -n "$T" ] && [ -n "$T1" ]; then
if [[ "$T1" =~ ^[0-9]+$ && "$T" =~ ^[0-9]+$ ]]; then
if [ "$T1" -gt "$T" ]; then
T="$T1"
fi
fi
fi
[ -n "$T" ] && TEMP="$T &deg;C"
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at^debug?")
case "$MODE_NUM" in
"7")
MODE="LTE |"
echo "$O" | grep -q "scell:" && MODE="LTE-A |"
;;
"11")
MODE="5G SA |"
;;
"13")
MODE="5G NSA |"
;;
esac
T=$(echo "$O" | awk -F: '/^lte_tac:/ {print $2}' | xargs)
if [ -n "$T" ]; then
# TAC_HEX=$(printf "%X" $T)
# TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX=$(printf "%X" $T)
TAC_DEC="$T"
fi
O1=$(echo "$O" | grep -A 3 pcell)
T=$(echo "$O1" | awk -F: '/^pcell:/ {print $3}' | cut -f1 -d" ")
if [ -n "$T" ]; then
MODE="$MODE $(band4g $T)"
T1=$(echo "$O1" | awk -F: '/^pcell:/ {print $4}' | xargs)
PBAND="$(band4g $T) @${T1/MHz/} MHz"
T=$(echo "$O1" | awk -F: '/pci:/ {print $3}' | xargs)
[ -n "$T" ] && PCI=$T
T=$(echo "$O1" | awk -F: '/^channel:/ {print $2}' | cut -f1 -d" " | xargs)
[ -n "$T" ] && EARFCN=$T
T=$(echo "$O1" | awk -F[:,] '/^lte_rsrp:/ {print $2}')
[ -n "$T" ] && RSRP="${T/dBm/}"
T=$(echo "$O1" | awk -F[:,] '/rsrq:/ {print $4}' | xargs)
[ -n "$T" ] && RSRQ="${T/dB/}"
T=$(echo "$O1" | awk -F[:,] '/^lte_rssi:/ {print $2}')
[ -n "$T" ] && RSSI="${T/dBm/}"
T=$(echo "$O1" | awk -F[:,] '/lte_snr:/ {print $4}' | xargs)
[ -n "$T" ] && [ "$T" != "NA" ] && SINR="${T/dB/}"
fi
O1=$(echo "$O" | grep -A 3 scell)
IDX=0;
while true; do
O2=$(echo "$O1" | head -n4)
if [ -z "$O2" ]; then
break
fi
IDX=$((IDX + 1))
T=$(echo "$O2" | awk -F: '/^scell:/ {print $3}' | cut -f1 -d" ")
MODE="$MODE / $(band4g $T)"
T1=$(echo "$O2" | awk -F: '/^scell:/ {print $4}' | xargs)
if [ -n "$T1" ]; then
case $IDX in
1) S1BAND="$(band4g $T) @${T1/MHz/} MHz";;
2) S2BAND="$(band4g $T) @${T1/MHz/} MHz";;
3) S3BAND="$(band4g $T) @${T1/MHz/} MHz";;
4) S4BAND="$(band4g $T) @${T1/MHz/} MHz";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F: '/pci:/ {print $3}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$T";;
2) S2PCI="$T";;
3) S3PCI="$T";;
4) S4PCI="$T";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F: '/^channel:/ {print $2}' | cut -f1 -d" " | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1EARFCN="$T";;
2) S2EARFCN="$T";;
3) S3EARFCN="$T";;
4) S4EARFCN="$T";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F[:,] '/^lte_rsrp:/ {print $2}')
# [ -n "$T" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "${T/dBm/} dBm"
T=$(echo "$O2" | awk -F[:,] '/rsrq:/ {print $4}' | xargs)
# [ -n "$T" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "${T/dB/} dB"
T=$(echo "$O2" | awk -F[:,] '/^lte_rssi:/ {print $2}')
# [ -n "$T" ] && addon $((POS + 5)) "(S${IDX}) RSSI" "${T/dBm/} dBm"
T=$(echo "$O2" | awk -F[:,] '/lte_snr:/ {print $4}' | xargs)
# [ -n "$T" ] && [ "$T" != "NA" ] && addon $((POS + 8)) "(S${IDX}) SNR" "${T/dB/} dB"
O1=$(echo "$O1" | sed '1,4d')
done
T=$(echo "$O" | awk -F: '/^nr_band:/ {print $2}' | xargs)
if [ -n "$T" ]; then
MODE="$MODE / $(band5g ${T/n/})"
IDX=$((IDX + 1))
T1=$(echo "$O" | awk -F: '/^nr_band_width:/ {print $2}' | xargs)
if [ -n "$T1" ]; then
case $IDX in
1) S1BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
2) S2BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
3) S3BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
4) S4BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_pci:/ {print $2}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$T";;
2) S2PCI="$T";;
3) S3PCI="$T";;
4) S4PCI="$T";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_channel:/ {print $2}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1EARFCN="$T";;
2) S2EARFCN="$T";;
3) S3EARFCN="$T";;
4) S4EARFCN="$T";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_rsrp:/ {print $2}' | cut -f1 -d" ")
# [ -n "$T" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "${T/dBm/} dBm"
T=$(echo "$O" | awk -F: '/^nr_rsrq:/ {print $2}' | xargs)
# [ -n "$T" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "${T/dB/} dB"
T=$(echo "$O" | awk -F: '/^nr_snr:/ {print $2}' | xargs)
# [ -n "$T" ] && [ "$T" != "NA" ] && addon $((POS + 8)) "(S${IDX}) SNR" "${T/dB/} dB"
fi
fi
MODE=$(echo $MODE | sed 's,/,+,'| sed 's,LTE B,LTE | B,')
# Modem
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "//)
MODEL="$MODELBCUT "$MODELACUT
FWA=$(sms_tool -d $DEVICE at "AT+CGMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+CGMR "//)
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+CGSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+CGSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$O" | awk -F [:] '/^\ICCID:/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=05c6 ProdID=9025' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,223 @@
# Foxconn T99W175 (FW 6.0.0.6)
O=$(sms_tool -d $DEVICE at "AT^TEMP?")
T=$(echo "$O" | awk '/^TSENS: / {gsub("C","",$2); print $2}')
T1=$(echo "$O" | awk '/^PA: / {gsub("C","",$2); print $2}')
if [ -n "$T" ] && [ -n "$T1" ]; then
if [[ "$T1" =~ ^[0-9]+$ && "$T" =~ ^[0-9]+$ ]]; then
if [ "$T1" -gt "$T" ]; then
T="$T1"
fi
fi
fi
T1=$(echo "$O" | awk '/^Skin Sensor: / {gsub("C","",$2); print $2}')
if [ -n "$T" ] && [ -n "$T1" ]; then
if [[ "$T1" =~ ^[0-9]+$ && "$T" =~ ^[0-9]+$ ]]; then
if [ "$T1" -gt "$T" ]; then
T="$T1"
fi
fi
fi
[ -n "$T" ] && TEMP="$T &deg;C"
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at^debug?")
case "$MODE_NUM" in
"7")
MODE="LTE |"
echo "$O" | grep -q "scell:" && MODE="LTE-A |"
;;
"11")
MODE="5G SA |"
;;
"13")
MODE="5G NSA |"
;;
esac
T=$(echo "$O" | awk -F: '/^lte_tac:/ {print $2}' | xargs)
if [ -n "$T" ]; then
# TAC_HEX=$(printf "%X" $T)
# TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX=$(printf "%X" $T)
TAC_DEC="$T"
fi
O1=$(echo "$O" | grep -A 3 pcell)
T=$(echo "$O1" | awk -F: '/^pcell:/ {print $3}' | cut -f1 -d" ")
if [ -n "$T" ]; then
MODE="$MODE $(band4g $T)"
T1=$(echo "$O1" | awk -F: '/^pcell:/ {print $4}' | xargs)
PBAND="$(band4g $T) @${T1/MHz/} MHz"
T=$(echo "$O1" | awk -F: '/pci:/ {print $3}' | xargs)
[ -n "$T" ] && PCI=$T
T=$(echo "$O1" | awk -F: '/^channel:/ {print $2}' | cut -f1 -d" " | xargs)
[ -n "$T" ] && EARFCN=$T
T=$(echo "$O1" | awk -F[:,] '/^lte_rsrp:/ {print $2}')
[ -n "$T" ] && RSRP="${T/dBm/}"
T=$(echo "$O1" | awk -F[:,] '/rsrq:/ {print $4}' | xargs)
[ -n "$T" ] && RSRQ="${T/dB/}"
T=$(echo "$O1" | awk -F[:,] '/^lte_rssi:/ {print $2}')
[ -n "$T" ] && RSSI="${T/dBm/}"
T=$(echo "$O1" | awk -F[:,] '/lte_snr:/ {print $4}' | xargs)
[ -n "$T" ] && [ "$T" != "NA" ] && SINR="${T/dB/}"
fi
O1=$(echo "$O" | grep -A 3 scell)
IDX=0;
while true; do
O2=$(echo "$O1" | head -n4)
if [ -z "$O2" ]; then
break
fi
IDX=$((IDX + 1))
T=$(echo "$O2" | awk -F: '/^scell:/ {print $3}' | cut -f1 -d" ")
MODE="$MODE / $(band4g $T)"
T1=$(echo "$O2" | awk -F: '/^scell:/ {print $4}' | xargs)
if [ -n "$T1" ]; then
case $IDX in
1) S1BAND="$(band4g $T) @${T1/MHz/} MHz";;
2) S2BAND="$(band4g $T) @${T1/MHz/} MHz";;
3) S3BAND="$(band4g $T) @${T1/MHz/} MHz";;
4) S4BAND="$(band4g $T) @${T1/MHz/} MHz";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F: '/pci:/ {print $3}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$T";;
2) S2PCI="$T";;
3) S3PCI="$T";;
4) S4PCI="$T";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F: '/^channel:/ {print $2}' | cut -f1 -d" " | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1EARFCN="$T";;
2) S2EARFCN="$T";;
3) S3EARFCN="$T";;
4) S4EARFCN="$T";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F[:,] '/^lte_rsrp:/ {print $2}')
# [ -n "$T" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "${T/dBm/} dBm"
T=$(echo "$O2" | awk -F[:,] '/rsrq:/ {print $4}' | xargs)
# [ -n "$T" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "${T/dB/} dB"
T=$(echo "$O2" | awk -F[:,] '/^lte_rssi:/ {print $2}')
# [ -n "$T" ] && addon $((POS + 5)) "(S${IDX}) RSSI" "${T/dBm/} dBm"
T=$(echo "$O2" | awk -F[:,] '/lte_snr:/ {print $4}' | xargs)
# [ -n "$T" ] && [ "$T" != "NA" ] && addon $((POS + 8)) "(S${IDX}) SNR" "${T/dB/} dB"
O1=$(echo "$O1" | sed '1,4d')
done
T=$(echo "$O" | awk -F: '/^nr_band:/ {print $2}' | xargs)
if [ -n "$T" ]; then
MODE="$MODE / $(band5g ${T/n/})"
IDX=$((IDX + 1))
T1=$(echo "$O" | awk -F: '/^nr_band_width:/ {print $2}' | xargs)
if [ -n "$T1" ]; then
case $IDX in
1) S1BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
2) S2BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
3) S3BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
4) S4BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_pci:/ {print $2}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$T";;
2) S2PCI="$T";;
3) S3PCI="$T";;
4) S4PCI="$T";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_channel:/ {print $2}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1EARFCN="$T";;
2) S2EARFCN="$T";;
3) S3EARFCN="$T";;
4) S4EARFCN="$T";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_rsrp:/ {print $2}' | cut -f1 -d" ")
# [ -n "$T" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "${T/dBm/} dBm"
T=$(echo "$O" | awk -F: '/^nr_rsrq:/ {print $2}' | xargs)
# [ -n "$T" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "${T/dB/} dB"
T=$(echo "$O" | awk -F: '/^nr_snr:/ {print $2}' | xargs)
# [ -n "$T" ] && [ "$T" != "NA" ] && addon $((POS + 8)) "(S${IDX}) SNR" "${T/dB/} dB"
fi
fi
MODE=$(echo $MODE | sed 's,/,+,'| sed 's,LTE B,LTE | B,')
# Modem
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "//)
MODEL="$MODELBCUT "$MODELACUT
FWA=$(sms_tool -d $DEVICE at "AT+CGMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+CGMR "//)
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+CGSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+CGSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$O" | awk -F [:] '/^\ICCID:/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=05c6 ProdID=90d5' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,117 @@
# Quectel EC20-E
# Quectel EC25
OCT=$(sms_tool -d $DEVICE at "at+qtemp")
T=$(echo "$OCT" | awk -F[,:] '/^\+QTEMP/ {t=$2*1;if($3*1>t)t=$3*1;if($4*1>t)t=$4*1;printf "%d", t}')
if [ -n "$T" ]; then
TEMP="$T &deg;C"
fi
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qeng=\"servingcell\";+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO/ {print $2"/"$4}' | xargs)
if [ -n "$T" ]; then
if [ "x$MODE_NUM" = "x7" ]; then
B=$(echo $T | sed 's/.*LTE BAND \(.*\)/\1/')
MODE="LTE | $(band4g ${B})"
MAINCUT="$(band4g ${B})"
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ] || [ "x$T" = "x4G" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
T_DEC=$(printf "%d" "0x$T")
T_HEX=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0) T1="1.4";;
1) T1="3";;
2) T1="5";;
3) T1="10";;
4) T1="15";;
5) T1="20";;
*) T1="?";;
esac
ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0) T1="1.4";;
1) T1="3";;
2) T1="5";;
3) T1="10";;
4) T1="15";;
5) T1="20";;
*) T1="?";;
esac
DLBW="DL: @$T1 MHz"
PBAND="$MAINCUT $DLBW $ULBW"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}')
PCI=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $10}')
EARFCN=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $17}')
RSSI=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}')
RSRP=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}')
RSRQ=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", $1*0.2-20}')
SINR=$T
fi
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $4}' | xargs)
if [ -n "$T" ]; then
COPS="$T"
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | cut -c 8-)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | cut -c 9-)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+QCCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+QCCID/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Modem
OF=$(sms_tool -d $DEVICE at "ati")
DEVV=$(echo $OF | tr -s "\n" | xargs)
FW=$(echo $DEVV | awk -F 'Revision:' '{print $2}'| xargs)
MODEL=$(echo $DEVV | awk -F 'ati|Revision:' '{print $1}'| xargs)
if [ -z "$MODEL" ]
then
MODEL=$(echo $DEVV | awk -F 'ati|Revision:' '{print $2}'| xargs)
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices)
PVCUT=$(echo $PV | awk -F 'Vendor=05c6 ProdID=9215' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,85 @@
# YUGA CLM920-NC5
O=$(sms_tool -d $DEVICE at "at+temp")
T=$(echo "$O" | awk -F[,:] '/^temp:/ {print $2}')
[ -n "$T" ] && TEMP="$T &deg;C"
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at+qnwinfo")
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO/ {print $4}')
if [ -n "$T" ]; then
B=$(echo $T | sed 's/.*LTE_EUTRAN_BAND\(.*\)"/\1/')
MODE="LTE $(band4g ${B})"
PBAND="$(band4g ${B})"
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO/ {print $5}')
EARFCN="$T"
fi
O=$(sms_tool -d $DEVICE at "at+qnwinfo")
T=$(echo "$O" | awk -F[,:] '/^\+LTEINFO/ {print $3}')
if [ -n "$T" ]; then
T_HEX=$(printf "%X" "$T")
T_DEC=$(printf "%d" "$T")
fi
T=$(echo "$O" | awk -F[,:] '/^\+LTEINFO/ {print $5}')
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+LTEINFO/ {print $12}')
[ -n "$T" ] && RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+LTEINFO/ {print $11}')
[ -n "$T" ] && RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+LTEINFO/ {print $10}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+LTEINFO/ {print $13}' | xargs)
[ -n "$T" ] && SINR="$T"
fi
fi
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+CGMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+CGMR"//)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "// | sed s/"Co.,Ltd."//)
MODEL="$MODELBCUT "$MODELACUT
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT^IMEI?" | xargs)
NR_I=$(echo "$O" | awk -F': ' '/\^IMEI:/ {print $2}')
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+QCIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+QCIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+ICCID:/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=05c6 ProdID=9625' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,310 @@
# Fibocom modems with ProdID=0e8d +GTUSBMODE: 40
# Fibocom FM350-GL
convert_bw() {
case "${1}" in
"6") echo "1.4 MHz";;
"15") echo "3 MHz";;
"25") echo "5 MHz";;
"50") echo "10 MHz";;
"75") echo "15 MHz";;
"100") echo "20 MHz";;
"125") echo "25 MHz";;
"150") echo "30 MHz";;
"200") echo "40 MHz";;
"250") echo "50 MHz";;
"300") echo "60 MHz";;
"400") echo "80 MHz";;
"450") echo "90 MHz";;
"500") echo "100 MHz";;
"1000") echo "200 MHz";;
"2000") echo "400 MHz";;
*) echo "";;
esac
}
O=$(sms_tool -d $DEVICE at "AT+GTCCINFO?;+GTCAINFO?")
case "$MODE_NUM" in
7*)
if echo "$O" | grep -q -E '^SCC'; then
MODE="LTE-A |"
fi
;;
11*)
MODE="5G SA |"
;;
13*) MODE="5G NSA |"
;;
esac
T_MODE=""
T1=$(echo "$O" | grep -A3 '+GTCCINFO:' | grep "1,[49],${COPS_MCC}")
if [ -n "$T1" ]; then
T_RAT=$(echo "$T1" | awk -F, '{print $2}')
T=$(echo "$T1" | awk -F, '{print $5}')
if [ -n "$T" ]; then
T_DEC=$(printf "%d" "0x$T")
T_HEX=$T
fi
T=$(echo "$T1" | awk -F, '{print $7}')
if [ -n "$T" ]; then
EARFCN=$T
fi
T=$(echo "$T1" | awk -F, '{print $8}')
if [ -n "$T" ]; then
PCI=$T
fi
T=$(echo "$T1" | awk -F, '{print $9}')
if [ -n "$T" ]; then
case $T_RAT in
4)
T=$((T - 100))
T_MODE="$(band4g $T)"
PBAND="$(band4g $T)"
;;
9)
T=$(echo "$T" | sed 's/^50//')
T_MODE="$(band5g $T)"
PBAND="$(band5g $T)"
;;
esac
fi
T=$(echo "$T1" | awk -F, '{print $11}')
if [ -n "$T" -a "$T" -ne "255" ]; then
case $T_RAT in
4) SINR=$(echo "$T" | awk '{printf "%0.1f", $1/2 }');;
9) SINR=$(echo "$T" | awk '{printf "%0.1f", ($1-45)/2-1 }');;
esac
fi
T=$(echo "$T1" | awk -F, '{print $13}')
if [ -n "$T" -a "$T" -ne "255" ]; then
case $T_RAT in
4) RSRP=$((T - 141));;
9) RSRP=$((T - 157));;
esac
fi
T=$(echo "$T1" | awk -F, '{print $14}')
if [ -n "$T" -a "$T" -ne "255" ]; then
case $T_RAT in
4) RSRQ=$(echo "$T" | awk '{printf "%0.1f", ($1-34)/2-3 }');;
9) RSRQ=$(echo "$T" | awk '{printf "%0.1f", ($1-87)/2 }');;
esac
fi
if [ -n "$CSQ" ]; then
RSSI=$((2 * $CSQ -113))
fi
fi
IFS="
"
IDX=1
LINES=$(echo "$O" | grep -E '^PCC:')
[ -n "$LINES" ] && T_MODE=""
T_4G_MODE=""
T_4G_PBAND=""
T_4G_PCI=""
T_4G_EARFCN=""
T_5G_MODE=""
T_5G_PBAND=""
T_5G_PCI=""
T_5G_EARFCN=""
for LINE in $LINES; do
T_BAND=$(echo "$LINE" | awk -F[:,] '/^PCC:/{print $2}')
T_PCI=$(echo "$LINE" | awk -F[:,] '/^PCC:/{print $3}')
T_EARFCN=$(echo "$LINE" | awk -F[:,] '/^PCC:/{print $4}')
T_DBW=$(echo "$LINE" | awk -F[:,] '/^PCC:/{print $5}')
if [ -n "$T_BAND" ]; then
DBW=""
if [ -n "$T_DBW" -a "$T_DBW" -ne "0" ]; then
DBW=" @$(convert_bw $T_DBW)"
fi
if [ "$T_BAND" -lt "200" ]; then
T_BAND=$((T_BAND - 100))
T_4G_MODE="$(band4g ${T_BAND}) + "
T_4G_PBAND="$(band4g ${T_BAND})${DBW}"
T_4G_PCI="$T_PCI"
T_4G_EARFCN="$T_EARFCN"
elif [ "$T_BAND" -gt "500" ]; then
T_BAND=$(echo "$T_BAND" | sed 's/^50//')
T_5G_MODE="$(band5g ${T_BAND}) + "
T_5G_PBAND="$(band5g ${T_BAND})${DBW}"
T_5G_PCI="$T_PCI"
T_5G_EARFCN="$T_EARFCN"
fi
fi
IDX=$((IDX + 1))
done
if [ -n "$T_4G_PBAND" ]; then
PBAND="$T_4G_PBAND"
PCI="$T_4G_PCI"
EARFCN="$T_4G_EARFCN"
elif [ -n "$T_5G_PBAND" ]; then
PBAND="$T_5G_PBAND"
PCI="$T_5G_PCI"
EARFCN="$T_5G_EARFCN"
fi
IFS="
"
IDX=1
LINES=$(echo "$O" | grep -E '^SCC\s?[0-9]:2,')
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[:,] '/^SCC\s?'$IDX':2,/{print $4}')
if [ -n "$T" ]; then
T_DBW=$(echo "$LINE" | awk -F[:,] '/^SCC\s?'$IDX':2,/{print $7}')
DBW=""
if [ -n "$T_DBW" -a "$T_DBW" -ne "0" ]; then
DBW=" @$(convert_bw $T_DBW)"
fi
T2=""
if [ "$T" -lt "200" ]; then
T=$((T - 100))
T2="$(band4g $T)${DBW}"
T_4G_MODE="${T_4G_MODE}$(band4g $T) / "
elif [ "$T" -gt "500" ]; then
T=$(echo "$T" | sed 's/^50//')
T2="$(band5g $T)${DBW}"
T_5G_MODE="${T_5G_MODE}$(band5g $T) / "
fi
if [ -n "$T2" ]; then
case $IDX in
"1") S1BAND="$T2";;
"2") S2BAND="$T2";;
"3") S3BAND="$T2";;
"4") S4BAND="$T2";;
*);;
esac
fi
fi
T=$(echo "$LINE" | awk -F[:,] '/^SCC\s?'$IDX':2,/{print $5}')
if [ -n "$T" ]; then
case $IDX in
"1") S1PCI="$T";;
"2") S2PCI="$T";;
"3") S3PCI="$T";;
"4") S4PCI="$T";;
*);;
esac
fi
T=$(echo "$LINE" | awk -F[:,] '/^SCC\s?'$IDX':2,/{print $6}')
if [ -n "$T" ]; then
case $IDX in
"1") S1EARFCN="$T";;
"2") S2EARFCN="$T";;
"3") S3EARFCN="$T";;
"4") S4EARFCN="$T";;
*);;
esac
fi
IDX=$((IDX + 1))
done
T_4G_MODE=$(echo "$T_4G_MODE" | sed 's/ [\/\+] $//')
T_5G_MODE=$(echo "$T_5G_MODE" | sed 's/ [\/\+] $//')
if [ -n "$T_4G_PBAND" -a -n "$T_5G_PBAND" ]; then
if [ -n "$T_5G_PBAND" ]; then
case $IDX in
"1") S1BAND="$T_5G_PBAND";;
"2") S2BAND="$T_5G_PBAND";;
"3") S3BAND="$T_5G_PBAND";;
"4") S4BAND="$T_5G_PBAND";;
*);;
esac
fi
if [ -n "$T_5G_PCI" ]; then
case $IDX in
"1") S1PCI="$T_5G_PCI";;
"2") S2PCI="$T_5G_PCI";;
"3") S3PCI="$T_5G_PCI";;
"4") S4PCI="$T_5G_PCI";;
*);;
esac
fi
if [ -n "$T_5G_EARFCN" ]; then
case $IDX in
"1") S1EARFCN="$T_5G_EARFCN";;
"2") S2EARFCN="$T_5G_EARFCN";;
"3") S3EARFCN="$T_5G_EARFCN";;
"4") S4EARFCN="$T_5G_EARFCN";;
*);;
esac
fi
fi
if [ -z "$T_MODE" ]; then
if [ -n "$T_4G_MODE" ]; then
MODE="$MODE $T_4G_MODE"
fi
if [ -n "$T_5G_MODE" ]; then
[ -n "$T_4G_MODE" ] && MODE="$MODE /"
MODE="$MODE $T_5G_MODE"
fi
fi
# Modem
OA=$(sms_tool -d $DEVICE at "AT+CGMM?")
MODELA=$(echo "$OA" | awk -F [:,] '/\+CGMM/{print $2}' | xargs)
OB=$(sms_tool -d $DEVICE at "AT+CGMI?")
MODELB=$(echo "$OB" | awk -F [:,] '/\+CGMI/{print $2}' | xargs)
MODELBCUT=$(echo $MODELB | sed s/"Wireless Inc."//)
MODEL="$MODELBCUT $MODELA"
OF=$(sms_tool -d $DEVICE at "AT+GMR?")
FW=$(echo "$OF" | awk -F[,:] '/\+GMR:/ {print $2}' | xargs)
# International Mobile Equipment Identity (IMEI)
OAA=$(sms_tool -d $DEVICE at "AT+CGSN?")
NR_IMEI=$(echo "$OAA" | awk -F[,:] '/\+CGSN:/ {print $2}' | xargs)
# International Mobile Subscriber Identity (IMSI)
OBB=$(sms_tool -d $DEVICE at "AT+CIMI?")
NR_IMSI=$(echo "$OBB" | awk -F [,:] '/\+CIMI:/ {print $2}' | xargs)
# Integrated Circuit Card Identifier (ICCID)
OCC=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_ICCID=$(echo "$OCC" | awk -F [,:] '/\+ICCID:/ {print $2}' | xargs)
# Temp
OT=$(sms_tool -d "$DEVICE" at "AT+ETHERMAL?")
TM=$(echo "$OT" | awk -F, '/\+ETHERMAL:/{ sum+=$2; count++ } END { if(count > 0) { printf "%.1f", sum/count } else { print 0 } }' | xargs)
if [ -n "$TM" ]; then
TEMP="$TM &deg;C"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
TTY=$(basename $DEVICE)
devpath=$(readlink -f /sys/class/tty/$TTY/device)
BASE=$(readlink -f ${devpath%/*/*})
NETIF=$(for a in /sys/class/net/*; do readlink -f $a; done | grep "$BASE")
NETDRV=$(basename $(readlink -f $NETIF/../../driver))
case $NETDRV in
"qmi_wwan")
PROTO="qmi";;
"cdc_mbim")
PROTO="mbim";;
"cdc_ether")
PROTO="ecm";;
"rndis_host")
PROTO="ncm";;
esac
@@ -0,0 +1,316 @@
# Fibocom modems with ProdID=0e8d +GTUSBMODE: 41
# Fibocom FM350-GL
convert_bw() {
case "${1}" in
"6") echo "1.4 MHz";;
"15") echo "3 MHz";;
"25") echo "5 MHz";;
"50") echo "10 MHz";;
"75") echo "15 MHz";;
"100") echo "20 MHz";;
"125") echo "25 MHz";;
"150") echo "30 MHz";;
"200") echo "40 MHz";;
"250") echo "50 MHz";;
"300") echo "60 MHz";;
"400") echo "80 MHz";;
"450") echo "90 MHz";;
"500") echo "100 MHz";;
"1000") echo "200 MHz";;
"2000") echo "400 MHz";;
*) echo "";;
esac
}
O=$(sms_tool -d $DEVICE at "AT+GTCCINFO?;+GTCAINFO?")
case "$MODE_NUM" in
7*)
if echo "$O" | grep -q -E '^SCC'; then
MODE="LTE-A |"
fi
;;
11*)
MODE="5G SA |"
;;
13*) MODE="5G NSA |"
;;
esac
T_MODE=""
T1=$(echo "$O" | grep -A3 '+GTCCINFO:' | grep "1,[49],${COPS_MCC}")
if [ -n "$T1" ]; then
T_RAT=$(echo "$T1" | awk -F, '{print $2}')
T=$(echo "$T1" | awk -F, '{print $5}')
if [ -n "$T" ]; then
T_DEC=$(printf "%d" "0x$T")
T_HEX=$T
fi
T=$(echo "$T1" | awk -F, '{print $7}')
if [ -n "$T" ]; then
EARFCN=$T
fi
T=$(echo "$T1" | awk -F, '{print $8}')
if [ -n "$T" ]; then
PCI=$T
fi
T=$(echo "$T1" | awk -F, '{print $9}')
if [ -n "$T" ]; then
case $T_RAT in
4)
T=$((T - 100))
T_MODE="$(band4g $T)"
PBAND="$(band4g $T)"
;;
9)
T=$(echo "$T" | sed 's/^50//')
T_MODE="$(band5g $T)"
PBAND="$(band5g $T)"
;;
esac
fi
T=$(echo "$T1" | awk -F, '{print $11}')
if [ -n "$T" -a "$T" -ne "255" ]; then
case $T_RAT in
4) SINR=$(echo "$T" | awk '{printf "%0.1f", $1/2 }');;
9) SINR=$(echo "$T" | awk '{printf "%0.1f", ($1-45)/2-1 }');;
esac
fi
T=$(echo "$T1" | awk -F, '{print $13}')
if [ -n "$T" -a "$T" -ne "255" ]; then
case $T_RAT in
4) RSRP=$((T - 141));;
9) RSRP=$((T - 157));;
esac
fi
T=$(echo "$T1" | awk -F, '{print $14}')
if [ -n "$T" -a "$T" -ne "255" ]; then
case $T_RAT in
4) RSRQ=$(echo "$T" | awk '{printf "%0.1f", ($1-34)/2-3 }');;
9) RSRQ=$(echo "$T" | awk '{printf "%0.1f", ($1-87)/2 }');;
esac
fi
if [ -n "$CSQ" ]; then
RSSI=$((2 * $CSQ -113))
fi
fi
IFS="
"
IDX=1
LINES=$(echo "$O" | grep -E '^PCC:')
[ -n "$LINES" ] && T_MODE=""
T_4G_MODE=""
T_4G_PBAND=""
T_4G_PCI=""
T_4G_EARFCN=""
T_5G_MODE=""
T_5G_PBAND=""
T_5G_PCI=""
T_5G_EARFCN=""
for LINE in $LINES; do
T_BAND=$(echo "$LINE" | awk -F[:,] '/^PCC:/{print $2}')
T_PCI=$(echo "$LINE" | awk -F[:,] '/^PCC:/{print $3}')
T_EARFCN=$(echo "$LINE" | awk -F[:,] '/^PCC:/{print $4}')
T_DBW=$(echo "$LINE" | awk -F[:,] '/^PCC:/{print $5}')
if [ -n "$T_BAND" ]; then
DBW=""
if [ -n "$T_DBW" -a "$T_DBW" -ne "0" ]; then
DBW=" @$(convert_bw $T_DBW)"
fi
if [ "$T_BAND" -lt "200" ]; then
T_BAND=$((T_BAND - 100))
T_4G_MODE="$(band4g ${T_BAND}) + "
T_4G_PBAND="$(band4g ${T_BAND})${DBW}"
T_4G_PCI="$T_PCI"
T_4G_EARFCN="$T_EARFCN"
elif [ "$T_BAND" -gt "500" ]; then
T_BAND=$(echo "$T_BAND" | sed 's/^50//')
T_5G_MODE="$(band5g ${T_BAND}) + "
T_5G_PBAND="$(band5g ${T_BAND})${DBW}"
T_5G_PCI="$T_PCI"
T_5G_EARFCN="$T_EARFCN"
fi
fi
IDX=$((IDX + 1))
done
if [ -n "$T_4G_PBAND" ]; then
PBAND="$T_4G_PBAND"
PCI="$T_4G_PCI"
EARFCN="$T_4G_EARFCN"
elif [ -n "$T_5G_PBAND" ]; then
PBAND="$T_5G_PBAND"
PCI="$T_5G_PCI"
EARFCN="$T_5G_EARFCN"
fi
IFS="
"
IDX=1
LINES=$(echo "$O" | grep -E '^SCC\s?[0-9]:2,')
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[:,] '/^SCC\s?'$IDX':2,/{print $4}')
if [ -n "$T" ]; then
T_DBW=$(echo "$LINE" | awk -F[:,] '/^SCC\s?'$IDX':2,/{print $7}')
DBW=""
if [ -n "$T_DBW" -a "$T_DBW" -ne "0" ]; then
DBW=" @$(convert_bw $T_DBW)"
fi
T2=""
if [ "$T" -lt "200" ]; then
T=$((T - 100))
T2="$(band4g $T)${DBW}"
T_4G_MODE="${T_4G_MODE}$(band4g $T) / "
elif [ "$T" -gt "500" ]; then
T=$(echo "$T" | sed 's/^50//')
T2="$(band5g $T)${DBW}"
T_5G_MODE="${T_5G_MODE}$(band5g $T) / "
fi
if [ -n "$T2" ]; then
case $IDX in
"1") S1BAND="$T2";;
"2") S2BAND="$T2";;
"3") S3BAND="$T2";;
"4") S4BAND="$T2";;
*);;
esac
fi
fi
T=$(echo "$LINE" | awk -F[:,] '/^SCC\s?'$IDX':2,/{print $5}')
if [ -n "$T" ]; then
case $IDX in
"1") S1PCI="$T";;
"2") S2PCI="$T";;
"3") S3PCI="$T";;
"4") S4PCI="$T";;
*);;
esac
fi
T=$(echo "$LINE" | awk -F[:,] '/^SCC\s?'$IDX':2,/{print $6}')
if [ -n "$T" ]; then
case $IDX in
"1") S1EARFCN="$T";;
"2") S2EARFCN="$T";;
"3") S3EARFCN="$T";;
"4") S4EARFCN="$T";;
*);;
esac
fi
IDX=$((IDX + 1))
done
T_4G_MODE=$(echo "$T_4G_MODE" | sed 's/ [\/\+] $//')
T_5G_MODE=$(echo "$T_5G_MODE" | sed 's/ [\/\+] $//')
if [ -n "$T_4G_PBAND" -a -n "$T_5G_PBAND" ]; then
if [ -n "$T_5G_PBAND" ]; then
case $IDX in
"1") S1BAND="$T_5G_PBAND";;
"2") S2BAND="$T_5G_PBAND";;
"3") S3BAND="$T_5G_PBAND";;
"4") S4BAND="$T_5G_PBAND";;
*);;
esac
fi
if [ -n "$T_5G_PCI" ]; then
case $IDX in
"1") S1PCI="$T_5G_PCI";;
"2") S2PCI="$T_5G_PCI";;
"3") S3PCI="$T_5G_PCI";;
"4") S4PCI="$T_5G_PCI";;
*);;
esac
fi
if [ -n "$T_5G_EARFCN" ]; then
case $IDX in
"1") S1EARFCN="$T_5G_EARFCN";;
"2") S2EARFCN="$T_5G_EARFCN";;
"3") S3EARFCN="$T_5G_EARFCN";;
"4") S4EARFCN="$T_5G_EARFCN";;
*);;
esac
fi
fi
if [ -z "$T_MODE" ]; then
if [ -n "$T_4G_MODE" ]; then
MODE="$MODE $T_4G_MODE"
fi
if [ -n "$T_5G_MODE" ]; then
[ -n "$T_4G_MODE" ] && MODE="$MODE /"
MODE="$MODE $T_5G_MODE"
fi
fi
# Modem data forcing
if [ "$CSQ" = "0" ]; then
$CSQ="1"
$CSQ_PER="10"
fi
# Modem
OA=$(sms_tool -d $DEVICE at "AT+CGMM?")
MODELA=$(echo "$OA" | awk -F [:,] '/\+CGMM/{print $2}' | xargs)
OB=$(sms_tool -d $DEVICE at "AT+CGMI?")
MODELB=$(echo "$OB" | awk -F [:,] '/\+CGMI/{print $2}' | xargs)
MODELBCUT=$(echo $MODELB | sed s/"Wireless Inc."//)
MODEL="$MODELBCUT $MODELA"
OF=$(sms_tool -d $DEVICE at "AT+GMR?")
FW=$(echo "$OF" | awk -F[,:] '/\+GMR:/ {print $2}' | xargs)
# International Mobile Equipment Identity (IMEI)
OAA=$(sms_tool -d $DEVICE at "AT+CGSN?")
NR_IMEI=$(echo "$OAA" | awk -F[,:] '/\+CGSN:/ {print $2}' | xargs)
# International Mobile Subscriber Identity (IMSI)
OBB=$(sms_tool -d $DEVICE at "AT+CIMI?")
NR_IMSI=$(echo "$OBB" | awk -F [,:] '/\+CIMI:/ {print $2}' | xargs)
# Integrated Circuit Card Identifier (ICCID)
OCC=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_ICCID=$(echo "$OCC" | awk -F [,:] '/\+ICCID:/ {print $2}' | xargs)
# Temp
OT=$(sms_tool -d "$DEVICE" at "AT+ETHERMAL?")
TM=$(echo "$OT" | awk -F, '/\+ETHERMAL:/{ sum+=$2; count++ } END { if(count > 0) { printf "%.1f", sum/count } else { print 0 } }' | xargs)
if [ -n "$TM" ]; then
TEMP="$TM &deg;C"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
TTY=$(basename $DEVICE)
devpath=$(readlink -f /sys/class/tty/$TTY/device)
BASE=$(readlink -f ${devpath%/*/*})
NETIF=$(for a in /sys/class/net/*; do readlink -f $a; done | grep "$BASE")
NETDRV=$(basename $(readlink -f $NETIF/../../driver))
case $NETDRV in
"qmi_wwan")
PROTO="qmi";;
"cdc_mbim")
PROTO="mbim";;
"cdc_ether")
PROTO="ecm";;
"rndis_host")
PROTO="ncm";;
esac
@@ -0,0 +1,84 @@
# Sierra Wireless 320u
O=$(sms_tool -d $DEVICE at "at!gstatus?")
T=$(echo "$O" | awk '/^LTE band:/ {print $3}' | xargs)
if [ -n "$T" ]; then
case "$T" in
*"B1") MODE=$(band 1 "LTE ");;
*"B3") MODE=$(band 3 "LTE ");;
*"B5") MODE=$(band 5 "LTE ");;
*"B7") MODE=$(band 7 "LTE ");;
*"B8") MODE=$(band 8 "LTE ");;
*) MODE="LTE ${T}";;
esac
fi
T=$(echo "$O" | awk '/^RSSI/ {print $3}' | xargs)
if [ -n "$T" ]; then
RSSI="${T// //}"
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSSI":"'${T// //}' dBm"}'
fi
T=$(echo "$O" | awk '/^RSRP/ {print $3}' | xargs)
if [ -n "$T" ]; then
RSRP="${T// //}"
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSRP":"'${T// //}' dBm"}'
fi
T=$(echo "$O" | awk '/^RSRQ/ {print $3}' | xargs)
if [ -n "$T" ]; then
RSRQ="$T"
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSRQ":"'$T' dB"}'
fi
T=$(echo "$O" | awk '/^SINR/ {print $3}' | xargs)
if [ -n "$T" ]; then
SINR="$T"
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"SINR":"'$T' dB"}'
fi
T=$(echo "$O" | awk -F: '/Temperature:/ {print $3}' | xargs)
if [ -n "$T" ]; then
TEMP="$T &deg;C"
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"Temperatura":"'$T' &deg;C"}'
fi
TAC_HEX=$(echo "$O" |awk -F: '/TAC:/ {print $3}' | awk '{ print $1 }' | xargs)
TAC_DEC=$(echo "$O" | sed 's/[()]//g' |awk -F: '/TAC:/ {print $3}' | awk '{ print $2 }' | xargs)
BW=$(echo "$O" |awk -F: '/LTE bw:/ {print $3}' | xargs)
RXCH=$(echo "$O" |awk -F: '/LTE Rx chan:/ {print $2}' | cut -f1 | xargs)
TXCH=$(echo "$O" |awk -F: '/LTE Tx chan:/ {print $3}' | cut -f1 | xargs)
PBAND="RxCh:$RXCH / TxCh:$TXCH / Bw:$BW"
#EARFCN=$(echo "$O" |awk -F: '/^LTE Rx chan:/ {print $2}' | cut -f1 | xargs)
PCI="-"
# Modem
OF=$(sms_tool -d $DEVICE at "ati")
DEV2=$(echo $OF | tr -s "\n" | xargs)
MODELB=$(echo $DEV2 | awk -F 'Manufacturer:|Revision:' '{print $2}'| xargs)
MODEL=$(echo $MODELB | sed 's/Model://' | xargs)
FW=$(echo $DEV2 | awk -F 'Revision:|IMEI' '{print $2}'| xargs)
NR_IMEI=$(echo "$OF" | awk '/^IMEI:/ {print $2}' | xargs)
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed 's/AT+CIMI//g' | xargs)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_ICCID=$(echo "$O" | awk '/^ICCID/ {print $2}')
PROTO=sierra
@@ -0,0 +1,39 @@
# Sierra Wireless MC7710
O=$(sms_tool -d $DEVICE at "at!gstatus?")
T=$(echo "$O" | awk -F: '/Temperature:/ {print $3}' | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
if [ "$REGOK" = "1" ]; then
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk '/.*TAC:/ {print $5}')
if [ -n "$T" ]; then
T_DEC=$(printf "%d" "0x$T")
TAC="${T_DEC} ($T)"
fi
T=$(echo "$O" | awk '/^RSSI/ {print $3}')
[ -n "$T" ] && RSSI="$T"
T=$(echo "$O" | awk '/^RSRP/ {print $3}')
[ -n "$T" ] && RSRP="$T"
T=$(echo "$O" | awk '/^RSRQ/ {print $3}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk '/^SINR/ {print $3}')
[ -n "$T" ] && SINR="$T"
T=$(echo "$O" | awk '/^LTE band:/ {print $3}')
if [ -n "$T" ]; then
T1=$(echo "$O" | awk '/^LTE band:/ {print $6}')
PBAND="$(band4g ${T/B/}) @${T1} MHz"
MODE="LTE $(band4g ${T/B/})"
fi
T=$(echo "$O" | awk '/^LTE Rx chan:/ {print $4}')
# [ -n "$T" ] && addon 34 "EARFCN DL" "$T"
T=$(echo "$O" | awk '/^LTE Rx chan:/ {print $8}')
# [ -n "$T" ] && addon 34 "EARFCN UL" "$T"
fi
fi
@@ -0,0 +1,103 @@
# Sierra Wireless EM7355 (maybe? I do not own one to test with)
# Sierra Wireless MC7355
O=$(sms_tool -d $DEVICE at "at!gstatus?")
T=$(echo "$O" | awk -F: '/Temperature:/ {print $3}' | grep -oE "\d+\.?\d{0,2}")
[ -n "$T" ] && TEMP="$T &deg;C"
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk '/.*TAC:/ {print $5}')
if [ -n "$T" ]; then
T_DEC=$(printf "%d" "0x$T")
T_HEX=$T
fi
T=$(echo "$O" | awk '/^PCC.*RSSI/ {print $4}' | xargs)
[ -n "$T" ] && RSSI="${T// //}"
T=$(echo "$O" | awk '/^PCC.*RSRP/ {print $7}' | xargs)
[ -n "$T" ] && RSRP="${T// //}"
T=$(echo "$O" | awk '/^RSRQ/ {print $3}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk '/^SINR/ {print $3}')
[ -n "$T" ] && SINR="$T"
T=$(echo "$O" | awk '/^LTE band:/ {print $3}')
if [ -n "$T" ]; then
T1=$(echo "$O" | awk '/^LTE band:/ {print $6}')
PBAND="$(band4g ${T/B/}) @${T1} MHz"
MODE="$MODE $(band4g ${T/B/})"
fi
T=$(echo "$O" | awk '/^LTE Rx chan:/ {print $4}')
# [ -n "$T" ] && addon 34 "EARFCN DL" "$T"
T=$(echo "$O" | awk '/^LTE Rx chan:/ {print $8}')
# [ -n "$T" ] && addon 34 "EARFCN UL" "$T"
T=$(echo "$O" | awk -F: '/^LTE CA state:.*ACTIVE/ {print $3}')
if [ -n "$T" ]; then
T1=$(echo "$O" | awk '/^LTE Scell bw:/ {print $3}')
if [ -n "$T1" ]; then
S1BAND="$(band ${T/B/}) @${T1#bw:} MHz"
else
S1BAND="$(band ${T/B/})"
fi
MODE="${MODE/LTE/LTE_A} / $(band4g ${T/B/})"
T=$(echo "$O" | awk '/.*LTE Scell chan:/ {print $7}')
[ -n "$T" ] && S1EARFCN="${T#chan:}"
T=$(echo "$O" | awk '/^SCC.*RSSI/ {print $4}' | xargs)
[ -n "$T" ] && RSSI="${T// //}"
T=$(echo "$O" | awk '/^SCC.*RSRP/ {print $7}' | xargs)
[ -n "$T" ] && RSRP="${T// //}"
fi
fi
MODE=$(echo $MODE | sed "s/LTE_A/LTE-A |/g" | sed 's,/,+,')
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+CGMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+CGMR "//)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "// | cut -f1 -d",")
MODEL="$MODELBCUT "$MODELACUT
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+CGSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+CGSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$O" | awk -F[,:] '/^ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices)
PVCUT=$(echo $PV | awk -F 'Vendor=1199 ProdID=9041' '{print $2}' | cut -c-1100)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,104 @@
# DW5809e Dell Wireless 5809e Gobi 4G LTE Mobile Broadband Card (EM7305)
# DW5811e Snapdragon X7 LTE (EM7455B)
# Sierra Wireless EM7455
O=$(sms_tool -d $DEVICE at "at!gstatus?")
T=$(echo "$O" | awk -F: '/Temperature:/ {print $3}' | grep -oE "\d+\.?\d{0,2}")
[ -n "$T" ] && TEMP="$T &deg;C"
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk '/.*TAC:/ {print $5}')
if [ -n "$T" ]; then
T_DEC=$(printf "%d" "0x$T")
T_HEX=$T
fi
T=$(echo "$O" | awk '/^PCC.*RSSI/ {print $4}' | xargs)
[ -n "$T" ] && RSSI="${T// //}"
T=$(echo "$O" | awk '/^PCC.*RSRP/ {print $7}' | xargs)
[ -n "$T" ] && RSRP="${T// //}"
T=$(echo "$O" | awk '/^RSRQ/ {print $3}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk '/^SINR/ {print $3}')
[ -n "$T" ] && SINR="$T"
T=$(echo "$O" | awk '/^LTE band:/ {print $3}')
if [ -n "$T" ]; then
T1=$(echo "$O" | awk '/^LTE band:/ {print $6}')
PBAND="$(band4g ${T/B/}) @${T1} MHz"
MODE="$MODE $(band4g ${T/B/})"
fi
T=$(echo "$O" | awk '/^LTE Rx chan:/ {print $4}')
# [ -n "$T" ] && addon 34 "EARFCN DL" "$T"
T=$(echo "$O" | awk '/^LTE Rx chan:/ {print $8}')
# [ -n "$T" ] && addon 34 "EARFCN UL" "$T"
T=$(echo "$O" | awk -F: '/^LTE CA state:.*ACTIVE/ {print $3}')
if [ -n "$T" ]; then
T1=$(echo "$O" | awk '/^LTE Scell bw:/ {print $3}')
if [ -n "$T1" ]; then
S1BAND="$(band4g ${T/B/}) @${T1#bw:} MHz"
else
S1BAND="$(band4g ${T/B/})"
fi
MODE="${MODE/LTE/LTE_A} / $(band4g ${T/B/})"
T=$(echo "$O" | awk '/.*LTE Scell chan:/ {print $7}')
[ -n "$T" ] && S1EARFCN="${T#chan:}"
T=$(echo "$O" | awk '/^SCC.*RSSI/ {print $4}' | xargs)
[ -n "$T" ] && RSSI="${T// //} dBm"
T=$(echo "$O" | awk '/^SCC.*RSRP/ {print $7}' | xargs)
[ -n "$T" ] && RSRP="${T// //} dBm"
fi
fi
MODE=$(echo $MODE | sed "s/LTE_A/LTE-A |/g" | sed 's,/,+,')
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+CGMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+CGMR "//)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "// | cut -f1 -d",")
MODEL="$MODELBCUT "$MODELACUT
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+CGSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+CGSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$O" | awk -F[,:] '/^ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices)
PVCUT=$(echo $PV | awk -F 'Vendor=1199 ProdID=9071' '{print $2}' | cut -c-1100)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,147 @@
# Sierra Wireless EM9190
O=$(sms_tool -d $DEVICE at "at!gstatus?")
T=$(echo "$O" | awk -F: '/Temperature:/ {print $3}')
[ -n "$T" ] && TEMP="$T &deg;C"
T=$(echo "$O" | awk '/^System mode:/ {print $3}')
case $T in
"LTE")
MODE="LTE"
;;
"ENDC")
MODE="5G NSA"
;;
esac
T=$(echo "$O" | awk '/.*TAC:/ {print $6}')
if [ -n "$T" ]; then
T_DEC=$(printf "%d" "0x$T")
T_HEX=$T
fi
T=$(echo "$O" | awk '/^PCC.*RSSI/ {print $4}' | xargs)
[ -n "$T" ] && && RSSI="${T// //}"
T=$(echo "$O" | awk '/^PCC.*RSRP/ {print $8}' | xargs)
[ -n "$T" ] && RSRP="${T// //}"
T=$(echo "$O" | awk '/^RSRQ/ {print $3}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk '/^SINR/ {print $3}')
[ -n "$T" ] && SINR="$T"
T=$(echo "$O" | awk '/^LTE band:/ {print $3}')
if [ -n "$T" ]; then
T1=$(echo "$O" | awk '/^LTE band:/ {print $6}')
PBAND="$(band4g ${T/B/}) @${T1} MHz"
MODE="$MODE $(band4g ${T/B/})"
fi
T=$(echo "$O" | awk '/^LTE Rx chan:/ {print $4}')
# [ -n "$T" ] && addon 34 "EARFCN DL" "$T"
T=$(echo "$O" | awk '/^LTE Rx chan:/ {print $8}')
# [ -n "$T" ] && addon 34 "EARFCN UL" "$T"
T=$(echo "$O" | awk -F: '/^LTE SCC1 state:.*ACTIVE/ {print $3}')
if [ -n "$T" ]; then
T1=$(echo "$O" | awk '/^LTE SCC1 bw/ {print $5}')
if [ -n "$T1" ]; then
S1BAND=$(band4g ${T/B/}) @${T1} MHz"
else
S1BAND="$(band4g ${T/B/})"
fi
MODE="${MODE/LTE/LTE_A} / $(band4g ${T/B/})"
T=$(echo "$O" | awk '/.*LTE SCC1 Rx chan:/ {print $11}')
# [ -n "$T" ] && addon 54 "(S1) EARFCN DL" "${T}"
T=$(echo "$O" | awk '/.*LTE SCC1 Tx chan:/ {print $10}')
# [ -n "$T" ] && addon 54 "(S1) EARFCN UL" "${T}"
T=$(echo "$O" | awk '/^SCC1.*RSSI/ {print $4}' | xargs)
# [ -n "$T" ] && addon 55 "(S1) RSSI" "${T// //} dBm"
T=$(echo "$O" | awk '/^SCC1.*RSRP/ {print $8}' | xargs)
# [ -n "$T" ] && addon 56 "(S1) RSRP" "${T// //} dBm"
fi
T=$(echo "$O" | awk -F: '/^LTE SCC2 state:.*ACTIVE/ {print $3}')
if [ -n "$T" ]; then
T1=$(echo "$O" | awk '/^LTE SCC2 bw/ {print $5}')
if [ -n "$T1" ]; then
S2BAND="$(band4g ${T/B/}) @${T1} MHz"
else
S2BAND="$(band4g ${T/B/})"
fi
MODE="$MODE / $(band4g ${T/B/})"
T=$(echo "$O" | awk '/.*LTE SCC2 Rx chan:/ {print $11}')
# [ -n "$T" ] && addon 64 "(S2) EARFCN DL" "${T}"
T=$(echo "$O" | awk '/.*LTE SCC2 Tx chan:/ {print $10}')
# [ -n "$T" ] && addon 64 "(S2) EARFCN UL" "${T}"
T=$(echo "$O" | awk '/^SCC2.*RSSI/ {print $4}' | xargs)
# [ -n "$T" ] && addon 65 "(S2) RSSI" "${T// //} dBm"
T=$(echo "$O" | awk '/^SCC2.*RSRP/ {print $8}' | xargs)
# [ -n "$T" ] && addon 66 "(S2) RSRP" "${T// //} dBm"
fi
T=$(echo "$O" | awk -F: '/^LTE SCC3 state:.*ACTIVE/ {print $3}')
if [ -n "$T" ]; then
T1=$(echo "$O" | awk '/^LTE SCC3 bw/ {print $5}')
if [ -n "$T1" ]; then
S3BAND"$(band4g ${T/B/}) @${T1} MHz"
else
S3BAND"$(band4g ${T/B/})"
fi
MODE="$MODE / $(band4g ${T/B/})"
T=$(echo "$O" | awk '/.*LTE SCC3 Rx chan:/ {print $11}')
# [ -n "$T" ] && addon 74 "(S3) EARFCN DL" "${T}"
T=$(echo "$O" | awk '/.*LTE SCC3 Tx chan:/ {print $10}')
# [ -n "$T" ] && addon 74 "(S3) EARFCN UL" "${T}"
T=$(echo "$O" | awk '/^SCC3.*RSSI/ {print $4}' | xargs)
# [ -n "$T" ] && addon 75 "(S3) RSSI" "${T// //} dBm"
T=$(echo "$O" | awk '/^SCC3.*RSRP/ {print $8}' | xargs)
# [ -n "$T" ] && addon 76 "(S3) RSRP" "${T// //} dBm"
fi
T=$(echo "$O" | awk '/^SCC. NR5G band:/ {print $4}')
if [ -n "$T" ] && [ "$T" != "---" ]; then
MODE="$MODE / $(band5g ${T/n/})"
T1=$(echo "$O" | awk '/^SCC.*SCC. NR5G bw:/ {print $8}')
if [ -n "$T1" ]; then
# addon 80 "5G band" "$(band5g ${T/n/}) @${T1} MHz"
else
# addon 80 "5G band" "$(band5g ${T/n/})"
fi
T=$(echo "$O" | awk '/^SCC. NR5G Rx chan:/ {print $5}')
# [ -n "$T" ] && addon 84 "EARFCN DL" "$T"
T=$(echo "$O" | awk '/^SCC.*SCC. NR5G Tx chan:/ {print $10}')
# [ -n "$T" ] && addon 84 "EARFCN UL" "$T"
T=$(echo "$O" | awk '/^NR5G RSRP/ {print $4}')
# [ -n "$T" ] && addon 86 "RSRP" "$T dBm"
T=$(echo "$O" | awk '/^NR5G.*RSRQ/ {print $8}')
# [ -n "$T" ] && addon 87 "RSRQ" "$T dB"
T=$(echo "$O" | awk '/^NR5G SINR/ {print $4}')
# [ -n "$T" ] && addon 88 "RSRP" "$T dBm"
fi
MODE=$(echo $MODE | sed "s/LTE_A/LTE-A |/g" | sed 's,/,+,')
# Modem
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices)
PVCUT=$(echo $PV | awk -F 'Vendor=1199 ProdID=90d3' '{print $2}' | cut -c-1100)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,122 @@
# Huawei E3272/E3372/E3276
O=$(sms_tool -d $DEVICE at "at^chiptemp?;^hcsq?;^iccid?")
T=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $2}' | xargs)
if [ -n "$T" ]; then
MODE="$T"
case "$MODE" in
WCDMA*)
PARAM2=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $4}' | xargs)
PARAM3=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $5}' | xargs)
RSCP=$(awk 'BEGIN {print -121 + '$PARAM2'}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSCP":"'$RSCP' dBm"}'
ECIO=$(awk 'BEGIN {print -32.5 + '$PARAM3'/2}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"ECIO":"'$ECIO' dB"}'
;;
LTE*)
PARAM2=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $4}' | xargs)
PARAM3=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $5}' | xargs)
PARAM4=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $6}' | xargs)
RSRP=$(awk 'BEGIN {print -141 + '$PARAM2'}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSRP":"'$RSRP' dBm"}'
SINR=$(awk 'BEGIN {print -20.2 + '$PARAM3'/5}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"SINR":"'$SINR' dB"}'
RSRQ=$(awk 'BEGIN {print -20 + '$PARAM4'/2}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSRQ":"'$RSRQ' dB"}'
;;
esac
fi
# Modem
OF=$(sms_tool -d $DEVICE at "ati")
DEV2=$(echo $OF | tr -s "\n" | xargs)
MODELB=$(echo $DEV2 | awk -F 'Manufacturer:|Revision:' '{print $2}'| xargs)
MODELC=$(echo $MODELB | sed 's/Model://' | xargs)
MODEL=$(echo $MODELC | awk '{print toupper(substr($0,0,1))tolower(substr($0,2))}')
FW=$(echo $DEV2 | awk -F 'Revision:|IMEI' '{print $2}'| xargs)
# Protocol
# Driver=qmi_wwan & Driver=cdc_mbim & Driver=cdc_ether & Driver=huawei_cdc_ncm
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=12d1 ProdID=1506' '{print $2}' | cut -c-1104)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
elif echo "$PVCUT" | grep -q "cdc_ncm"
then
PROTO="ncm"
fi
# International Mobile Equipment Identity (IMEI)
OI=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$OI" | sed 's/AT+GSN//g' | xargs)
if [ -n "NR_I" ]
then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
OC=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$OC" | sed 's/AT+CIMI//g' | xargs)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
NR_D=$(echo "$O" | awk -F [:] '/^\^ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
XFR=$(sms_tool -d $DEVICE at "at^hfreqinfo?")
XFRCOUNT=$(echo -n "$XFR" | wc -c)
if [ -n "$XFR" ] && [ "$XFRCOUNT" -gt "15" ]; then
# DL / UL / Band
TBX=$(echo "$XFR" | awk -F [:] '/^\^HFREQINFO:/{print $2}' | xargs)
TB=$(echo "$TBX" | cut -d ',' -f3-3 )
TDL=$(echo "$TBX" | cut -d ',' -f6-6 )
DL=$(($TDL/1000))
TUL=$(echo "$TBX" | cut -d ',' -f9-9 )
UL=$(($TUL/1000))
ULBW="UL: @$UL MHz"
DLBW="DL: @$DL MHz"
PBAND="$(band4g $TB "") $DLBW $ULBW"
EARFCN=$(echo "$TBX" | cut -d ',' -f4-4 )
PCI="-"
if [[ "$MODE" == *"LTE"* ]] && [ -n "$TB" ]; then
MODE="LTE | "$(band4g $TB "")
fi
fi
# LAC & TAC
T_HEX=$LAC_HEX
T_DEC=$LAC_DEC
# Temperature
T=$(echo "$O" | awk -F[,:] '/^\^CHIPTEMP/ {gsub(/[ \r]/,"");t=0;for(i=2;i<=NF;i++)if($i!=65535){if($i>100){$i=$i/10};if($i>t){t=$i}};printf "%.1f", t}')
if [ "x$T" != "x0.0" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
TEMP="$T &deg;C"
#ADDON="$ADDON"'{"Temperatura":"'$T' &deg;C"}'
fi
@@ -0,0 +1,127 @@
# Huawei E3272/E3372/E3276
O=$(sms_tool -d $DEVICE at "at^chiptemp?;^hcsq?;^iccid?")
T=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $2}' | xargs)
if [ -n "$T" ]; then
MODE="$T"
case "$MODE" in
WCDMA*)
PARAM2=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $4}' | xargs)
PARAM3=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $5}' | xargs)
RSCP=$(awk 'BEGIN {print -121 + '$PARAM2'}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSCP":"'$RSCP' dBm"}'
ECIO=$(awk 'BEGIN {print -32.5 + '$PARAM3'/2}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"ECIO":"'$ECIO' dB"}'
;;
LTE*)
PARAM2=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $4}' | xargs)
PARAM3=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $5}' | xargs)
PARAM4=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $6}' | xargs)
RSRP=$(awk 'BEGIN {print -141 + '$PARAM2'}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSRP":"'$RSRP' dBm"}'
SINR=$(awk 'BEGIN {print -20.2 + '$PARAM3'/5}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"SINR":"'$SINR' dB"}'
RSRQ=$(awk 'BEGIN {print -20 + '$PARAM4'/2}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSRQ":"'$RSRQ' dB"}'
;;
esac
fi
# Modem
OF=$(sms_tool -d $DEVICE at "ati")
DEV2=$(echo $OF | tr -s "\n" | xargs)
MODELB=$(echo $DEV2 | awk -F 'Manufacturer:|Revision:' '{print $2}'| xargs)
MODELC=$(echo $MODELB | sed 's/Model://' | xargs)
MODEL=$(echo $MODELC | awk '{print toupper(substr($0,0,1))tolower(substr($0,2))}')
FW=$(echo $DEV2 | awk -F 'Revision:|IMEI' '{print $2}'| xargs)
# Protocol
# Driver=qmi_wwan & Driver=cdc_mbim & Driver=cdc_ether & Driver=huawei_cdc_ncm
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=12d1 ProdID=155e' '{print $2}' | cut -c-1104)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
elif echo "$PVCUT" | grep -q "cdc_ncm"
then
PROTO="ncm"
fi
# International Mobile Equipment Identity (IMEI)
OI=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$OI" | sed 's/AT+GSN//g' | xargs)
if [ -n "NR_I" ]
then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
OC=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$OC" | sed 's/AT+CIMI//g' | xargs)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
NR_D=$(echo "$O" | awk -F [:] '/^\^ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
if [[ "$MODE" == *"LTE"* ]]; then
XFR=$(sms_tool -d $DEVICE at "at^hfreqinfo?")
XFRCOUNT=$(echo -n "$XFR" | wc -c)
if [ -n "$XFR" ]; then
if [ -n "$XFRCOUNT" ]; then
if [ "$XFRCOUNT" -gt "15" ]; then
# DL / UL / Band
TBX=$(echo "$XFR" | awk -F [:] '/^\^HFREQINFO:/{print $2}' | xargs)
TB=$(echo "$TBX" | cut -d ',' -f3-3 )
TDL=$(echo "$TBX" | cut -d ',' -f6-6 )
DL=$(($TDL/1000))
TUL=$(echo "$TBX" | cut -d ',' -f9-9 )
UL=$(($TUL/1000))
ULBW="UL: @$UL MHz"
DLBW="DL: @$DL MHz"
PBAND="$(band4g $TB "") $DLBW $ULBW"
EARFCN=$(echo "$TBX" | cut -d ',' -f4-4 )
PCI="-"
fi
fi
fi
MODE="LTE | "$(band4g $TB "")
fi
# LAC & TAC
T_HEX=$LAC_HEX
T_DEC=$LAC_DEC
# Temperature
T=$(echo "$O" | awk -F[,:] '/^\^CHIPTEMP/ {gsub(/[ \r]/,"");t=0;for(i=2;i<=NF;i++)if($i!=65535){if($i>100){$i=$i/10};if($i>t){t=$i}};printf "%.1f", t}')
if [ "x$T" != "x0.0" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
TEMP="$T &deg;C"
#ADDON="$ADDON"'{"Temperatura":"'$T' &deg;C"}'
fi
@@ -0,0 +1,113 @@
# Huawei E3272/E3372/E3276
O=$(sms_tool -d $DEVICE at "at^chiptemp?;^hcsq?")
T=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $2}' | xargs)
if [ -n "$T" ]; then
MODE="$T"
case "$MODE" in
WCDMA*)
PARAM2=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $4}' | xargs)
PARAM3=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $5}' | xargs)
RSCP=$(awk 'BEGIN {print -121 + '$PARAM2'}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSCP":"'$RSCP' dBm"}'
ECIO=$(awk 'BEGIN {print -32.5 + '$PARAM3'/2}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"ECIO":"'$ECIO' dB"}'
;;
LTE*)
PARAM2=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $4}' | xargs)
PARAM3=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $5}' | xargs)
PARAM4=$(echo "$O" | awk -F[,:] '/^\^HCSQ:/ {print $6}' | xargs)
RSRP=$(awk 'BEGIN {print -141 + '$PARAM2'}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSRP":"'$RSRP' dBm"}'
SINR=$(awk 'BEGIN {print -20.2 + '$PARAM3'/5}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"SINR":"'$SINR' dB"}'
RSRQ=$(awk 'BEGIN {print -20 + '$PARAM4'/2}')
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSRQ":"'$RSRQ' dB"}'
;;
esac
fi
# Modem
OF=$(sms_tool -d $DEVICE at "ati")
DEV2=$(echo $OF | tr -s "\n" | xargs)
MODELB=$(echo $DEV2 | awk -F 'Manufacturer:|Revision:' '{print $2}'| xargs)
MODELC=$(echo $MODELB | sed 's/Model://' | xargs)
MODEL=$(echo $MODELC | awk '{print toupper(substr($0,0,1))tolower(substr($0,2))}')
FW=$(echo $DEV2 | awk -F 'Revision:|IMEI' '{print $2}'| xargs)
# Protocol
# Driver=qmi_wwan & Driver=cdc_mbim & Driver=cdc_ether & Driver=huawei_cdc_ncm
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=12d1 ProdID=1506' '{print $2}' | cut -c-1104)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
elif echo "$PVCUT" | grep -q "cdc_ncm"
then
PROTO="ncm"
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | sed 's/AT+GSN//g' | xargs)
if [ -n "NR_I" ]
then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed 's/AT+CIMI//g' | xargs)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT^ICCID?")
NR_D=$(echo "$O" | awk -F [:] '/^\^ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# DL / UL / Band
OTB=$(sms_tool -d $DEVICE at "AT^HFREQINFO?")
TBX=$(echo "$OTB" | awk -F [:] '/^\^HFREQINFO:/{print $2}' | xargs)
TB=$(echo "$TBX" | cut -d ',' -f3-3 )
TDL=$(echo "$TBX" | cut -d ',' -f6-6 )
DL=$(($TDL/1000))
TUL=$(echo "$TBX" | cut -d ',' -f9-9 )
UL=$(($TUL/1000))
ULBW="UL: @$UL MHz"
DLBW="DL: @$DL MHz"
PBAND="$(band4g $TB "") $DLBW $ULBW"
EARFCN=$(echo "$TBX" | cut -d ',' -f4-4 )
PCI="-"
# LAC & TAC
T_HEX=$LAC_HEX
T_DEC=$LAC_DEC
# Temperature
T=$(echo "$O" | awk -F[,:] '/^\^CHIPTEMP/ {gsub(/[ \r]/,"");t=0;for(i=2;i<=NF;i++)if($i!=65535){if($i>100){$i=$i/10};if($i>t){t=$i}};printf "%.1f", t}')
if [ "x$T" != "x0.0" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
TEMP="$T &deg;C"
#ADDON="$ADDON"'{"Temperatura":"'$T' &deg;C"}'
fi
@@ -0,0 +1,50 @@
# Fibocom NL668-CN
# Modem
OA=$(sms_tool -d $DEVICE at "AT+CGMM?")
MODELA=$(echo "$OA" | awk -F [:,] '/\+CGMM/{print $2}' | xargs)
OB=$(sms_tool -d $DEVICE at "AT+CGMI?")
MODELB=$(echo "$OB" | awk -F [:,] '/\+CGMI/{print $2}' | xargs)
MODELBCUT=$(echo $MODELB | sed s/"Wireless Inc."//)
MODEL="$MODELBCUT $MODELA"
OF=$(sms_tool -d $DEVICE at "AT+GMR?")
FW=$(echo "$OF" | awk -F[,:] '/\+GMR:/ {print $2}' | xargs)
# International Mobile Equipment Identity (IMEI)
OAA=$(sms_tool -d $DEVICE at "AT+CGSN?")
NR_IMEI=$(echo "$OAA" | awk -F[,:] '/\+CGSN:/ {print $2}' | xargs)
# International Mobile Subscriber Identity (IMSI)
OBB=$(sms_tool -d $DEVICE at "AT+CIMI?")
NR_IMSI=$(echo "$OBB" | awk -F [,:] '/\+CIMI:/ {print $2}' | xargs)
# Integrated Circuit Card Identifier (ICCID)
OCC=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_ICCID=$(echo "$OCC" | awk -F [,:] '/\+ICCID:/ {print $2}' | xargs)
# Temp
OT=$(sms_tool -d $DEVICE at "AT+MTSM=1")
TM=$(echo "$OT" | awk '/\+MTSM:/{print $2}')
if [ -n "$TM" ]; then
TEMP="$TM &deg;C"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
TTY=$(basename $DEVICE)
devpath=$(readlink -f /sys/class/tty/$TTY/device)
BASE=$(readlink -f ${devpath%/*/*})
NETIF=$(for a in /sys/class/net/*; do readlink -f $a; done | grep "$BASE")
NETDRV=$(basename $(readlink -f $NETIF/../../driver))
case $NETDRV in
"qmi_wwan")
PROTO="QMI";;
"cdc_mbim")
PROTO="MBIM";;
"cdc_ether")
PROTO="ECM";;
esac
@@ -0,0 +1,148 @@
# ASKEY WWHC050
O=$(sms_tool -d $DEVICE at "at\$qcai?;+ccputemp;+cgcelli;+cgnws")
T=$(echo "$O" | awk 'BEGIN{FS="BEARER:"}/^\+CGCELLI/{print $2}' | awk 'BEGIN{FS=","}{print $1}')
case "$T" in
"0x01"*)
MODE="GPRS";;
"0x02"*)
MODE="EDGE";;
"0x03"*)
MODE="HSDPA";;
"0x04"*)
MODE="HSUPA";;
"0x05"*)
MODE="WCDMA";;
"0x06"*)
MODE="CDMA";;
"0x07"*)
MODE="EV-DO REV 0";;
"0x08"*)
MODE="EV-DO REV A";;
"0x09"*)
MODE="GSM";;
"0x0a"*|"0x0A"*)
MODE="EV-DO REV B";;
"0x0b"*|"0x0B"*)
MODE="LTE";;
"0x0c"*|"0x0C"*)
MODE="HSDPA+";;
"0x0d"*|"0x0D"*)
MODE="DC-HSDPA+";;
esac
if [ $MODE != "LTE" ]; then
O1=$(echo "$O" | grep CGCELLI | sed 's/+CGCELLI://')
T1="$O1"
while true; do
T2=${T1%%,*}
[ -z "$T2" ] && break
if echo "$T2" | grep -q ":"; then
F1=${T2%%:*}
F2=${T2##*:}
UNIT=""
IGNORE=0
case "$F1" in
RSCP|RSRP|RSSI) UNIT=" dBm";;
ECIO|SINR|RSRQ) UNIT=" dB";;
LAC|PLMN|BEARER) IGNORE=1;;
esac
if [ $IGNORE -eq 0 ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"'$F1'":"'$F2''$UNIT'"}'
fi
fi
if echo "$T1" | grep -q ","; then
T2="${T2},"
fi
T1=$(echo "$T1" | sed 's/^'$T2'//')
done
fi
T=$(echo "$O" | awk -F[,] '/^\$QCAI/{print $7}')
if [ -n "$T" ]; then
case $T in
*"Band:1") MODE=$(band4g 1 "LTE ");;
*"Band:3") MODE=$(band4g 3 "LTE ");;
*"Band:7") MODE=$(band4g 7 "LTE ");;
*"Band:8") MODE=$(band4g 8 "LTE ");;
*"Band:20") MODE=$(band4g 20 "LTE ");;
*) MODE="LTE ${T}";;
esac
fi
T=$(echo "$O" | awk -F[,] '/CA:ADDED/{print $16}')
if [ -n "$T" ]; then
case $T in
*"(S)Band:1") MODE="${MODE/LTE/LTE_A} / "$(band4g 1 "");;
*"(S)Band:3") MODE="${MODE/LTE/LTE_A} / "$(band4g 3 "");;
*"(S)Band:7") MODE="${MODE/LTE/LTE_A} / "$(band4g 7 "");;
*"(S)Band:8") MODE="${MODE/LTE/LTE_A} / "$(band4g 8 "");;
*"(S)Band:20") MODE="${MODE/LTE/LTE_A} / "$(band4g 20 "");;
*) MODE="${MODE/LTE/LTE_A} / B${T}";;
esac
fi
T=$(echo "$O" | awk -F[,] '/^\$QCAI/{print $3}')
if [ -n "$T" ]; then
RSRP=${T##*:}
T=$(echo "$O" | awk -F[,] '/^\$QCAI/{print $12}')
if [ -n "$T" ]; then
RSRP="$RSRP / "${T##*:}" dBm"
fi
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"RSRP":"'$RSRP'"}'
fi
T=$(echo "$O" | awk -F[,] '/^\$QCAI/{print $4}')
if [ -n "$T" ]; then
RSRQ=${T##*:}
T=$(echo "$O" | awk -F[,] '/^\$QCAI/{print $13}')
if [ -n "$T" ]; then
RSRQ="$RSRQ / "${T##*:}" dB"
fi
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"RSRQ":"'$RSRQ'"}'
fi
T=$(echo "$O" | awk -F[,] '/^\$QCAI/{print $5}')
if [ -n "$T" ]; then
RSSI=${T##*:}
T=$(echo "$O" | awk -F[,] '/^\$QCAI/{print $14}')
if [ -n "$T" ]; then
RSSI="$RSSI / "${T##*:}" dBm"
fi
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"RSSI":"'$RSSI'"}'
fi
#T=$(echo "$O" | awk -F[,] '/^\$QCAI/{print $6}')
#if [ -n "$T" ]; then
# SINR=${T##*:}
# T=$(echo "$O" | awk -F[,] '/^\$QCAI/{print $15}')
# if [ -n "$T" ]; then
# SINR="$SINR / "${T##*:}" dB"
# fi
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"SINR":"'$SINR'"}'
#fi
#T=$(echo "$O" | awk -F[,] '/^\$QCAI/{print $8}')
#if [ -n "$T" ]; then
# BW=${T##*:}" MHz"
# T=$(echo "$O" | awk -F[,] '/^\$QCAI/{print $17}')
# if [ -n "$T" ]; then
# BW="$BW / "${T##*:}" MHz"
# fi
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"BW":"'$BW'"}'
#fi
T=$(echo "$O" | awk -F[:] '/^\+CCPUTEMP/ {print $2}' | xargs)
if [ -n "$T" ]; then
TEMP="$T &deg;C"
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"Temperatura":"'$T' &deg;C"}'
fi
T=$(echo "$O" | awk -F[,] '/^\+CGNWS/ {print $9}' | xargs)
if [ -n "$T" ]; then
COPS="$T"
fi
@@ -0,0 +1,19 @@
# ZTE MF821
O=$(sms_tool -d $DEVICE at "at+zcellinfo?")
BAND=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO:/ {print $4}')
case "$MODE_NUM" in
7*)
case "$BAND" in
*"B1") MODE=$(band4g 1 "LTE ");;
*"B3") MODE=$(band4g 3 "LTE ");;
*"B7") MODE=$(band4g 7 "LTE ");;
*"B8") MODE=$(band4g 8 "LTE ");;
*"B20") MODE=$(band4g 20 "LTE ");;
*) MODE="$MODE B${BAND}";;
esac
;;
*)
MODE="$MODE $BAND"
;;
esac
@@ -0,0 +1,62 @@
# ZTE MF28D/MF290
O=$(sms_tool -d $DEVICE at "at+zrssi?;+zcellinfo?")
case "$MODE_NUM" in
3*)
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $2}' | xargs)
[ -n "$ADDON" ] && ADDON="$ADDON,"
RSSI="$T"
ADDON="$ADDON"'{"RSSI":"'$T' dBm"}'
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $4}' | xargs)
[ -n "$T" ] && MODE="$T"
;;
2*|\
4*|\
5*|\
6*)
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $2}' | xargs)
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"RSCP":"'$T' dBm"}'
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $3}' | xargs)
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"ECIO":"'$T' dB"}'
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $4}' | xargs)
[ -n "$T" ] && MODE="$T"
;;
7*)
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $2}' | xargs)
[ -n "$ADDON" ] && ADDON="$ADDON,"
RSRP="$T"
ADDON="$ADDON"'{"RSRP":"'$T' dBm"}'
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $3}' | xargs)
[ -n "$ADDON" ] && ADDON="$ADDON,"
RSRQ="$T"
ADDON="$ADDON"'{"RSRQ":"'$T' dB"}'
# T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $5}' | xargs)
# [ -n "$ADDON" ] && ADDON="$ADDON,"
SINR="$T"
# ADDON="$ADDON"'{"SINR":"'$T' dB"}'
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCELLINFO/ {print $3}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
PCI="$T"
ADDON="$ADDON"'{"PCI":"'$T'"}'
fi
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $5}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
EARFCN="$T"
ADDON="$ADDON"'{"EARFCN":"'$T'"}'
fi
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $4}' | xargs)
case "$T" in
*"LTE B1") MODE=$(band4g 1 "LTE ");;
*"LTE B3") MODE=$(band4g 3 "LTE ");;
*"LTE B7") MODE=$(band4g 7 "LTE ");;
*"LTE B8") MODE=$(band4g 8 "LTE ");;
*"LTE B20") MODE=$(band4g 20 "LTE ");;
*) MODE="${T}";;
esac
;;
esac
@@ -0,0 +1,58 @@
# ZTE P685M
# ZTE ZM8630A
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at+zrssi;+zcellinfo?;+zcainfo?")
case "$MODE_NUM" in
3*)
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $2}' | xargs)
RSSI="$T"
;;
2*|\
4*|\
5*|\
6*)
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $2}' | xargs)
# addon 35 "RSCP" "$T dBm"
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $3}' | xargs)
# addon 36 "ECIO" "$T dB"
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $4}' | xargs)
[ -n "$T" ] && MODE="$T"
;;
7*)
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $4}' | xargs)
if [ -n "$T" ]; then
T_HEX=$(printf "%X" $T)
T_DEC=$(printf "%d" "0x${T_HEX}")
fi
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $4}' | xargs)
[ -n "$T" ] && RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $2}' | xargs)
[ -n "$T" ] && RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $3}' | xargs)
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $5}' | xargs)
[ -n "$T" ] && SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $4}' | xargs)
MODE="LTE | $(band4g ${T/LTE B/})"
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $3}' | xargs)
if [ -n "$T" ]; then
T1=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $6}' | xargs)
if [ -z "$T1" ] || [ "x$T1" = "x0.0" ]; then
PBAND="$(band4g $T)"
else
PBAND="$(band4g $T) @${T1} MHz"
fi
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $2}' | xargs)
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $5}' | xargs)
[ -n "$T" ] && EARFCN="$T"
fi
;;
esac
fi
@@ -0,0 +1,134 @@
# ZTE MF286
# ZTE MF286A
O=$(sms_tool -d $DEVICE at "at+zrssi;+zcellinfo?;+zcainfo?")
case "$MODE_NUM" in
3*)
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $2}' | xargs)
RSSI="$T"
;;
2*|\
4*|\
5*|\
6*)
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $4}' | xargs)
[ -n "$T" ] && MODE="$T"
;;
7*)
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $4}' | xargs)
if [ -n "$T" ]; then
T_HEX=$(printf "%X" $T)
T_DEC=$T
fi
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $4}' | xargs)
RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $2}' | xargs)
RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $3}' | xargs)
RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $5}' | xargs)
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $4}' | xargs)
MODE="LTE $(band4g ${T/LTE B/})"
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $3}' | xargs)
if [ -n "$T" ]; then
T1=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $6}' | xargs)
PBAND="$(band4g $T "") @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $2}' | xargs)
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $5}' | xargs)
[ -n "$T" ] && EARFCN="$T"
fi
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $9}' | xargs)
if [ -n "$T" ]; then
T1=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $11}' | xargs)
S1BAND="$(band4g $T "") @$T1 MHz"
MODE="${MODE/LTE/LTE_A} / $(band4g ${T})"
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $7}' | xargs)
[ -n "$T" ] && S1PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO/ {print $10}' | xargs)
[ -n "$T" ] && S1EARFCN="$T"
fi
;;
esac
MODE=$(echo $MODE | sed "s/LTE_A/LTE-A |/g" | sed 's,/,+,')
if [ "${LAC_DEC}" = "0" ]; then
LAC_DEC="-"
LAC_HEX="-"
fi
OF=$(sms_tool -d $DEVICE at "ati")
DEVV=$(echo $OF | tr -s "\n" | xargs)
FWA=$(sms_tool -d $DEVICE at "AT+GMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | cut -c 8-)
MODELA=$(echo $DEVV | awk -F 'Revision: ' '{print $1}'| xargs)
MODELB=$(echo $MODELA | awk -F 'Manufacturer: |CORPORATION' '{print $2}'| xargs)
MODELD=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELDCUT=$(echo $MODELD | cut -c 9-)
MODEL="$MODELB "$MODELDCUT
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | cut -c 8-)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | cut -c 9-)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$O" | awk -F [:] '/^\ICCID:/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PV85=$(echo $PV | awk -F 'Vendor=19d2 ProdID=1485' '{print $2}' | cut -c-1220)
if [ -n "$PV85" ]; then
if echo "$PV85" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PV85" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PV85" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
fi
PV32=$(echo $PV | awk -F 'Vendor=19d2 ProdID=1432' '{print $2}' | cut -c-1220)
if [ -n "$PV32" ]; then
if echo "$PV32" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PV32" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PV32" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
fi
#T=$(echo "$O" | awk -F[,:] '/^\+ZDON/ {print $2}' | xargs)
#if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
# COPS="$T"
#fi
@@ -0,0 +1,202 @@
# ZTE MF286D
# ZTE MF289F
O=$(sms_tool -d $DEVICE at "at+zrssi;+zcellinfo?;+zcainfo?")
case "$MODE_NUM" in
3*)
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $2}' | xargs)
RSSI="$T"
if [ "x${LAC_DEC}" = "x0" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $2}' | xargs)
if [ -n "$T" ]; then
LAC_DEC=$T
LAC_HEX=$(printf "%X" $T)
fi
fi
if [ "x${CID_DEC}" = "x0" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $3}' | xargs)
if [ -n "$T" ]; then
CID_DEC=$T
CID_HEX=$(printf "%X" $T)
fi
fi
;;
2*|\
4*|\
5*|\
6*)
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $4}' | xargs)
[ -n "$T" ] && MODE="$T"
if [ "x${LAC_DEC}" = "x0" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $2}' | xargs)
if [ -n "$T" ]; then
LAC_DEC=$T
LAC_HEX=$(printf "%X" $T)
fi
fi
if [ "x${CID_DEC}" = "x0" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $3}' | xargs)
if [ -n "$T" ]; then
CID_DEC=$T
CID_HEX=$(printf "%X" $T)
fi
fi
;;
7*)
if [ "x${CID_DEC}" = "x0" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $2}' | xargs)
if [ -n "$T" ]; then
CID_DEC=$T
CID_HEX=$(printf "%X" $T)
fi
fi
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $4}' | xargs)
if [ -n "$T" ]; then
T_HEX=$(printf "%X" $T)
T_DEC=$T
fi
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $4}' | xargs)
RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $2}' | xargs)
RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $3}' | xargs)
RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $5}' | xargs)
SINR="$T"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCELLINFO/ {print $4}' | xargs)
MODE="LTE $(band4g ${T/LTE B/})"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $3}' | xargs)
if [ -n "$T" ]; then
T1=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $6}' | xargs)
PBAND="$(band4g $T "") @$T1 MHz"
[ "x$MODE" = "xLTE BUnknown" ] && MODE="LTE $(band4g $T)"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $2}' | xargs)
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $5}' | xargs)
[ -n "$T" ] && EARFCN="$T"
fi
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $9}' | xargs)
if [ -n "$T" ]; then
T1=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $11}' | xargs)
S1BAND="$(band4g $T "") @$T1 MHz"
MODE="${MODE/LTE/LTE_A} / $(band4g ${T})"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $7}' | xargs)
[ -n "$T" ] && S1PCI="$T"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $10}' | xargs)
[ -n "$T" ] && S1EARFCN="$T"
fi
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $14}' | xargs)
if [ -n "$T" ]; then
T1=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $16}' | xargs)
S2BAND="$(band4g $T "") @$T1 MHz"
MODE="$MODE / $(band4g ${T})"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $12}' | xargs)
[ -n "$T" ] && S2PCI="$T"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $15}' | xargs)
[ -n "$T" ] && S2EARFCN="$T"
fi
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $19}' | xargs)
if [ -n "$T" ]; then
T1=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $21}' | xargs)
S3BAND="$(band4g $T "") @$T1 MHz"
MODE="$MODE / $(band4g ${T})"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $17}' | xargs)
[ -n "$T" ] && S3PCI="$T"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $20}' | xargs)
[ -n "$T" ] && S3EARFCN="$T"
fi
;;
esac
MODE=$(echo $MODE | sed "s/LTE_A/LTE-A |/g" | sed 's,/,+,')
if [ "${LAC_DEC}" = "0" ]; then
LAC_DEC="-"
LAC_HEX="-"
fi
# Firmware
OF=$(sms_tool -d $DEVICE at "ati")
DEVV=$(echo $OF | tr -s "\n" | xargs)
FWA=$(sms_tool -d $DEVICE at "AT+GMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | cut -c 8-)
# Model
MODELA=$(echo $DEVV | awk -F 'Revision: ' '{print $1}'| xargs)
MODELB=$(echo $MODELA | awk -F 'Manufacturer: |CORPORATION' '{print $2}'| xargs)
MODELD=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
SUB='MODULE'
if [[ "$MODELD" == *"$SUB"* ]]; then
MODELDCUT=$(echo $MODELD | awk -F 'CGMM |MODULE' '{print $2}'| xargs)
MODEL="$MODELB "$MODELDCUT
else
MODELDCUT=$(echo $MODELD | cut -c 9-)
MODEL="$MODELB "$MODELDCUT
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | cut -c 8-)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | cut -c 9-)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$O" | awk -F [:] '/^\ICCID:/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PV85=$(echo $PV | awk -F 'Vendor=19d2 ProdID=1485' '{print $2}' | cut -c-1220)
if [ -n "$PV85" ]; then
if echo "$PV85" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PV85" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PV85" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
fi
PV32=$(echo $PV | awk -F 'Vendor=19d2 ProdID=1432' '{print $2}' | cut -c-1220)
if [ -n "$PV32" ]; then
if echo "$PV32" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PV32" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PV32" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
fi
#T=$(echo "$O" | awk -F[,:] '/^\+ZDON/ {print $2}' | xargs)
#if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
# COPS="$T"
#fi
@@ -0,0 +1,139 @@
# ZTE MF286R
O=$(sms_tool -d $DEVICE at "at+zrssi;+zcellinfo?;+zcainfo?")
case "$MODE_NUM" in
3*)
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $2}' | xargs)
RSSI="$T"
;;
2*|\
4*|\
5*|\
6*|\
8*)
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $4}' | xargs)
[ -n "$T" ] && MODE="$T"
;;
7*|\
9*)
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $4}' | xargs)
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
T_HEX=$(printf "%X" $T)
T_DEC=$T
LAC_DEC=$T_DEC
LAC_HEX=$T_HEX
fi
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $4}' | xargs)
RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $2}' | xargs)
RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $3}' | xargs)
RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZRSSI/ {print $5}' | xargs)
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $4}' | xargs)
MODE="LTE $(band4g ${T/LTE B/})"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $3}' | xargs)
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
T1=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $6}' | xargs)
PBAND="$(band4g $T "") @$T1 MHz"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $2}' | xargs)
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
PCI="$T"
fi
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $5}' | xargs)
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
EARFCN="$T"
fi
fi
if [ "x$MODE_NUM" = "x9" ]; then
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $9}' | xargs)
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
T1=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $11}' | xargs)
S1BAND="$(band4g $T "") @$T1 MHz"
MODE="${MODE/LTE/LTE_A} / $(band4g ${T})"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $7}' | xargs)
[ -n "$T" ] && S1PCI="$T"
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO/ {print $10}' | xargs)
[ -n "$T" ] && S1EARFCN="$T"
fi
fi
;;
esac
MODE=$(echo $MODE | sed "s/LTE_A/LTE-A |/g" | sed 's,/,+,')
# Firmware
FWB=$(sms_tool -d $DEVICE at "AT+GMR")
FW=$(echo $FWB | tr -d " \t\n\r" | xargs)
if [[ "$FW" == *"MF286RA"* && "$CSQ" == *"-"* ]]; then
OQ=$(sms_tool -D -d $DEVICE at "AT+CSQ")
CSQ=$(echo "$OQ" | awk -F[,\ ] '/^\+CSQ/ {print $2}')
[ "x$CSQ" = "x" ] && CSQ=-1
if [ $CSQ -ge 0 -a $CSQ -le 31 ]; then
CSQ_PER=$(($CSQ * 100/31))
fi
fi
# Modem
MODELA=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
if [[ "$MODELA" == *"ZTE"* ]]; then
MODELACUT=$(echo $MODELA | awk -F'CGMI: ' '{print $2}' | sed 's/"//g' | sed 's/ CORPORATION//g')
MODELO=$(echo $MODELACUT | tr -d " \t\n\r" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMM")
MODELBCUT=$(echo $MODELB | awk -F'CGMM: ' '{print $2}' | sed 's/"//g')
MODELCUT=$(echo $MODELBCUT | tr -d " \t\n\r" | xargs)
MODEL="$MODELO "$MODELCUT
else
MODELO=$(echo $MODELA | tr -d " \t\n\r" | cut -d ":" -f2 | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMM")
MODELCUT=$(echo $MODELB | tr -d " \t\n\r" | cut -d ":" -f2 | xargs)
MODEL="$MODELO "$MODELCUT
fi
# International Mobile Equipment Identity (IMEI)
OI=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$OI" | sed 's/AT+GSN//g' | xargs)
if [ -z "NR_I" ]; then
OIB=$(sms_tool -d $DEVICE at "AT*MRD_IMEI?" | xargs)
NR_I=$(echo "$OIB" | awk -F [:] '/^\*MRD_IMEI:/{print $2}' | xargs)
NR_IMEI="$NR_I"
else
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
OS=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$OS" | sed 's/AT+CIMI//g' | xargs)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
OD=$(sms_tool -d $DEVICE at "AT*ICCID?" | xargs)
NR_D=$(echo "$OD" | awk -F [:] '/^\*ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=19d2 ProdID=1489' '{print $2}' | cut -c-1450)
if echo "$PVCUT" | grep -q "rndis_host"
then
PROTO="ncm"
fi
@@ -0,0 +1,162 @@
# Telit LN940-CP
O=$(sms_tool -d $DEVICE at "at#servinfo;#cainfo?")
channeltoband()
{
if [ $1 -ge 0 ] && [ $1 -le 599 ]; then
echo "1"
elif [ $1 -ge 1200 ] && [ $1 -le 1949 ]; then
echo "3"
elif [ $1 -ge 2750 ] && [ $1 -le 3449 ]; then
echo "7"
elif [ $1 -ge 3450 ] && [ $1 -le 3799 ]; then
echo "8"
elif [ $1 -ge 6150 ] && [ $1 -le 6449 ]; then
echo "20"
else
echo "?"
fi
}
case "$MODE_NUM" in
7*)
T=$(echo "$O" | awk -F[,:] '/^#SERVINFO/ {print $4}' | xargs)
[ -n "$COPS" ] && COPS="$T"
T=$(echo "$O" | awk -F[,:] '/^#SERVINFO/ {print $7}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
T_DEC=$(printf "%d" "0x$T")
# ADDON="$ADDON"'{"TAC":"'$T_DEC' ('$T')"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#SERVINFO/ {print $3}' | xargs)
if [ -n "$T" ]; then
RSSI=$T
[ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSSI":"'$T' dBm"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#SERVINFO/ {print $10}' | xargs)
if [ -n "$T" ]; then
RSRP=$T
[ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSRP":"'$T' dBm"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#SERVINFO/ {print $2}' | xargs)
if [ -n "$T" ]; then
EARFCN=$T
[ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"EARFCN":"'$T'"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $3}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
T1=$(channeltoband $T)
PBAND="$(band4g $T1 "")"
ADDON="$ADDON"'{"Primary band":"'$(band4g $T1 "")'"}'
MODE=$(band4g $T1 "LTE ")
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $5}' | xargs)
if [ -n "$T" ]; then
PCI=$T
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"PCI":"'$T'"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $7}' | xargs)
if [ -n "$T" ]; then
RSSI=$T
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSSI":"'$T' dBm"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $6}' | xargs)
if [ -n "$T" ]; then
RSRP=$T
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSRP":"'$T' dBm"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $8}' | xargs)
if [ -n "$T" ]; then
RSRQ=$T
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"RSRQ":"'$T'"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $9}' | xargs)
if [ -n "$T" ]; then
SINR=$T
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"SINR":"'$T'"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $15}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
T1=$(channeltoband $T)
S1BAND=="$(band4g $T1 "")"
# ADDON="$ADDON"'{"(S1) band":"'$(band4g $T1 "")'"}'
# MODE="${MODE/LTE/LTE_A} / "$(band4g $T1 "")
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $17}' | xargs)
if [ -n "$T" ]; then
S1PCI=$T
# [ -n "$ADDON" ] && ADDON="$ADDON,"
# ADDON="$ADDON"'{"(S1) PCI":"'$T'"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $19}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"(S1) RSSI":"'$T' dBm"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $18}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"(S1) RSRP":"'$T' dBm"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $20}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"(S1) RSRQ":"'$T' dB"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $21}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"(S1) SINR":"'$T' dB"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $26}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
T1=$(channeltoband $T)
S2BAND=="$(band4g $T1 "")"
ADDON="$ADDON"'{"(S2) band":"'$(band4g $T1 "")'"}'
MODE="${MODE} / "$(band4g $T1 "")
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $28}' | xargs)
if [ -n "$T" ]; then
S2PCI="$T"
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"(S2) PCI":"'$T'"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $30}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"(S2) RSSI":"'$T' dBm"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $29}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"(S2) RSRP":"'$T' dBm"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $31}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"(S2) RSRQ":"'$T' dB"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#CAINFO/ {print $32}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
ADDON="$ADDON"'{"(S2) SINR":"'$T' dB"}'
fi
;;
esac
MODE=$(echo $MODE | sed 's,/,+,')
@@ -0,0 +1,42 @@
# Telit LE910-EUG
O=$(sms_tool -d $DEVICE at "at#servinfo")
case "$MODE_NUM" in
7*)
T=$(echo "$O" | awk -F[,:] '/^#SERVINFO/ {print $4}' | xargs)
[ -n "$COPS" ] && COPS="$T"
T=$(echo "$O" | awk -F[,:] '/^#SERVINFO/ {print $7}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
T_DEC=$(printf "%d" "0x$T")
TAC_HEX=$T
TAC_DEC=$T_DEC
ADDON="$ADDON"'{"TAC":"'$T_DEC' ('$T')"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#SERVINFO/ {print $3}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
RSSI="$T"
ADDON="$ADDON"'{"RSSI":"'$T' dBm"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#SERVINFO/ {print $10}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
RSRP="$T"
ADDON="$ADDON"'{"RSRP":"'$T' dBm"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#SERVINFO/ {print $6}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
PCI="$(printf "%d" "0x$T")"
ADDON="$ADDON"'{"PCI":"'$(printf "%d" "0x$T")'"}'
fi
T=$(echo "$O" | awk -F[,:] '/^#SERVINFO/ {print $2}' | xargs)
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
EARFCN="$T"
ADDON="$ADDON"'{"EARFCN":"'$T'"}'
fi
;;
esac
@@ -0,0 +1,128 @@
# Telit LN940 (QMI) / Telit LN940 (MBIM) / HP lt4220 (MBIM) / HP lt4220 (QMI)
O=$(sms_tool -D -d $DEVICE at "AT^CA_INFO?;^RFSTS?;+TEMP")
TR=$(echo "$O" |grep -A2 RFSTS: | awk 'NR ==2{print $0}')
if [ "$MODE" = "LTE" ]; then
RSRP=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$3}')
RSSI=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$4}')
RSRQ=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$5}')
SINR=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$16*2-20}')
else
SINR=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$4}')
RSSI=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$6}')
fi
T=$(echo "$O" | awk -F[,:] '/^\PCC info: /{print $2}' | sed 's/Band is //g')
[ -z "$T" ] && T=$(echo "$O" | awk -F[,] '/^\PCC info: /{print $2}')
if [ -n "$T" ]; then
PC=$(echo $T | tr -d 'LTE_B')
MODE="LTE | $(band4g $PC)"
T=$(echo "$O" | awk -F[,:] '/^\SCC1 info: /{print $2}' | sed 's/Band is //g')
if [ -n "$T" ]; then
SC1=$(echo $T | tr -d 'LTE_B')
MODE="${MODE/LTE/LTE_A} / "$(band4g ${SC1} "")
fi
T=$(echo "$O" | awk -F[,:] '/^\SCC2 info: /{print $2}' | sed 's/Band is //g')
if [ -n "$T" ]; then
SC2=$(echo $T | tr -d 'LTE_B')
MODE="${MODE} / "$(band4g ${SC2} "")
fi
fi
MODE=$(echo $MODE | sed 's,/,+,' | sed 's,LTE_A,LTE-A ,')
# Primary band
T1=$(echo "$O" | awk '/PCC/{print $5}' | sed -e 's/LTE_//g' -e 's/.$//')
if [ -n "$T1" ]; then
T2=$(echo "$O" | awk '/PCC/{print $8}' | sed -e 's/Band_width//g')
PBAND="$(band4g ${T1/B/} "") @$T2 MHz"
EARFCN=$(echo "$TR" |awk -F [,] '{print $2}')
PCI=$(echo "$TR" |awk -F [,] '{print $11}')
fi
# CA band (S1)
T3=$(echo "$O" | awk '/SCC1/{print $5}' | sed -e 's/LTE_//g' -e 's/.$//')
if [ -n "$T3" ]; then
T4=$(echo "$O" | awk '/SCC1/{print $8}' | sed -e 's/Band_width//g')
S1BAND="$(band4g ${T3/B/} "") @$T4 MHz"
# S1EARFCN=$(echo "$TR" |awk -F [,] '{print $2}')
# S1PCI=$(echo "$TR" |awk -F [,] '{print $11}')
fi
# CA band (S2)
T5=$(echo "$O" | awk '/SCC2/{print $5}' | sed -e 's/LTE_//g' -e 's/.$//')
if [ -n "$T5" ]; then
T6=$(echo "$O" | awk '/SCC2/{print $8}' | sed -e 's/Band_width//g')
S2BAND="$(band4g ${T5/B/} "") @$T6 MHz"
# S2EARFCN=$(echo "$TR" |awk -F [,] '{print $2}')
# S2PCI=$(echo "$TR" |awk -F [,] '{print $11}')
fi
# Temperature
T=$(echo "$O" | awk -F [:] '/tsens_tz_sensor0:/ {print $2}' | xargs)
if [ -n "$T" ]; then
TEMP=$(echo "$T &deg;C")
fi
# Cell ID & LAC & TAC
LAC_HEX=$(printf "%X" $LAC_DEC)
if [ -n "$LAC_DEC" ]; then
TAC_HEX=$LAC_HEX
fi
CID_HEX=$(printf "%X" $CID_DEC)
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=1bc7 ProdID=1900' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
# Model
PVMODEL=$(echo $PV | awk -F 'Vendor=1bc7 ProdID=1900' '{print $2}' | cut -c-150)
if [ -z "$MODEL" ]
then
MODELBCUT=$(echo $PVMODEL | awk -F 'Manufacturer=|S: Product=' '{print $2}'| xargs)
MODELACUT=$(echo $PVMODEL | awk -F 'Product=|S: SerialNumber' '{print $2}'| xargs)
MODELC="$MODELBCUT "$MODELACUT
MODEL=$(echo "$MODELC" | awk '{for (i=1;i<=NF;i++) if (!a[$i]++) printf("%s%s",$i,FS)}{printf("\n")}')
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | awk -F " " '/GSN /{print $2}')
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | awk -F " " '/CIMI /{print $2}')
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID" | xargs)
NR_D=$(echo "$O" | awk -F [:] '/ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# FW
OF=$(sms_tool -d $DEVICE at "ati")
DEV2=$(echo $OF | tr -s "\n" | xargs)
FW=$(echo $DEV2 | awk -F 'Revision: | IMEI: ' '{print $2}' | cut -c-50)v
@@ -0,0 +1,128 @@
# Telit LN940 (QMI) / Telit LN940 (MBIM) / HP lt4220 (MBIM) / HP lt4220 (QMI)
O=$(sms_tool -D -d $DEVICE at "AT^CA_INFO?;^RFSTS?;+TEMP")
TR=$(echo "$O" |grep -A2 RFSTS: | awk 'NR ==2{print $0}')
if [ "$MODE" = "LTE" ]; then
RSRP=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$3}')
RSSI=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$4}')
RSRQ=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$5}')
SINR=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$16*2-20}')
else
SINR=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$4}')
RSSI=$(echo "$TR" | awk -F [,] '{printf "%.0f\n",$6}')
fi
T=$(echo "$O" | awk -F[,:] '/^\PCC info: /{print $2}' | sed 's/Band is //g')
[ -z "$T" ] && T=$(echo "$O" | awk -F[,] '/^\PCC info: /{print $2}')
if [ -n "$T" ]; then
PC=$(echo $T | tr -d 'LTE_B')
MODE="LTE | $(band4g $PC)"
T=$(echo "$O" | awk -F[,:] '/^\SCC1 info: /{print $2}' | sed 's/Band is //g')
if [ -n "$T" ]; then
SC1=$(echo $T | tr -d 'LTE_B')
MODE="${MODE/LTE/LTE_A} / "$(band4g ${SC1} "")
fi
T=$(echo "$O" | awk -F[,:] '/^\SCC2 info: /{print $2}' | sed 's/Band is //g')
if [ -n "$T" ]; then
SC2=$(echo $T | tr -d 'LTE_B')
MODE="${MODE} / "$(band4g ${SC2} "")
fi
fi
MODE=$(echo $MODE | sed 's,/,+,' | sed 's,LTE_A,LTE-A ,')
# Primary band
T1=$(echo "$O" | awk '/PCC/{print $5}' | sed -e 's/LTE_//g' -e 's/.$//')
if [ -n "$T1" ]; then
T2=$(echo "$O" | awk '/PCC/{print $8}' | sed -e 's/Band_width//g')
PBAND="$(band4g ${T1/B/} "") @$T2 MHz"
EARFCN=$(echo "$TR" |awk -F [,] '{print $2}')
PCI=$(echo "$TR" |awk -F [,] '{print $11}')
fi
# CA band (S1)
T3=$(echo "$O" | awk '/SCC1/{print $5}' | sed -e 's/LTE_//g' -e 's/.$//')
if [ -n "$T3" ]; then
T4=$(echo "$O" | awk '/SCC1/{print $8}' | sed -e 's/Band_width//g')
S1BAND="$(band4g ${T3/B/} "") @$T4 MHz"
# S1EARFCN=$(echo "$TR" |awk -F [,] '{print $2}')
# S1PCI=$(echo "$TR" |awk -F [,] '{print $11}')
fi
# CA band (S2)
T5=$(echo "$O" | awk '/SCC2/{print $5}' | sed -e 's/LTE_//g' -e 's/.$//')
if [ -n "$T5" ]; then
T6=$(echo "$O" | awk '/SCC2/{print $8}' | sed -e 's/Band_width//g')
S2BAND="$(band4g ${T5/B/} "") @$T6 MHz"
# S2EARFCN=$(echo "$TR" |awk -F [,] '{print $2}')
# S2PCI=$(echo "$TR" |awk -F [,] '{print $11}')
fi
# Temperature
T=$(echo "$O" | awk -F [:] '/tsens_tz_sensor0:/ {print $2}' | xargs)
if [ -n "$T" ]; then
TEMP=$(echo "$T &deg;C")
fi
# Cell ID & LAC & TAC
LAC_HEX=$(printf "%X" $LAC_DEC)
if [ -n "$LAC_DEC" ]; then
TAC_HEX=$LAC_HEX
fi
CID_HEX=$(printf "%X" $CID_DEC)
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=1bc7 ProdID=1901' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
# Model
PVMODEL=$(echo $PV | awk -F 'Vendor=1bc7 ProdID=1901' '{print $2}' | cut -c-150)
if [ -z "$MODEL" ]
then
MODELBCUT=$(echo $PVMODEL | awk -F 'Manufacturer=|S: Product=' '{print $2}'| xargs)
MODELACUT=$(echo $PVMODEL | awk -F 'Product=|S: SerialNumber' '{print $2}'| xargs)
MODELC="$MODELBCUT "$MODELACUT
MODEL=$(echo "$MODELC" | awk '{for (i=1;i<=NF;i++) if (!a[$i]++) printf("%s%s",$i,FS)}{printf("\n")}')
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | awk -F " " '/GSN /{print $2}')
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | awk -F " " '/CIMI /{print $2}')
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID" | xargs)
NR_D=$(echo "$O" | awk -F [:] '/ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# FW
OF=$(sms_tool -d $DEVICE at "ati")
DEV2=$(echo $OF | tr -s "\n" | xargs)
FW=$(echo $DEV2 | awk -F 'Revision: | IMEI: ' '{print $2}' | cut -c-50)
@@ -0,0 +1,100 @@
# SIMCOM SIM8200EA-M2
# SIMCOM SIM7906
OT=$(sms_tool -d $DEVICE at "AT+CPMUTEMP")
T=$(echo "$OT" | awk -F[,:] '/^\+CPMUTEMP: / {print $2}' | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
O=$(sms_tool -d $DEVICE at "AT+CPSI?")
case $MODE_NUM in
7)
MODE="LTE |"
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $5}')
if [ -n "$T" ]; then
TAC_DEC=$(printf "%d" "$T")
TAC_HEX="${T/0x/}"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $7}')
[ -n "$T" ] && PCI=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $8}')
if [ -n "$T" ]; then
PBAND="$(band4g ${T/EUTRAN-BAND/})"
MODE="$MODE $(band4g ${T/EUTRAN-BAND/})"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $9}')
[ -n "$T" ] && EARFCN=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $10}')
if [ -n "$T" ]; then
DLBW="DL: @$T MHz"
PBAND="$(band4g ${T/EUTRAN-BAND/}) $DLBW"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $11}')
if [ -n "$T" ]; then
ULBW="UL: @$T MHz"
PBAND="$(band4g ${T/EUTRAN-BAND/}) $DLBW $ULBW"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $12/10}')
[ -n "$T" ] && RSRQ=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $13/10}')
[ -n "$T" ] && RSRP=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $14/10}')
[ -n "$T" ] && RSSI=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $15}' | xargs)
[ -n "$T" ] && SINR=$T
;;
11) MODE="5G SA";;
13) MODE="5G NSA";;
esac
MODE=$(echo $MODE | sed 's,/,+,'| sed 's,LTE B,LTE | B,')
# Modem
OF=$(sms_tool -d $DEVICE at "AT+CGMR")
FWA=$(echo "$OF" | awk -F [:] '/^\+CGMR: /{print $2}' | xargs)
if [ -n "$FWA" ]; then
FW="$FWA"
fi
OL=$(sms_tool -d $DEVICE at "AT+CGMM")
MODELB=$(echo "$OL" | sed s/"AT+CGMM"// | tr -s "\n" | xargs)
if [ -n "$MODELB" ]; then
MODEL="$(echo $MODELB | sed 's,_, ,')"
fi
# International Mobile Equipment Identity (IMEI)
OM=$(sms_tool -d $DEVICE at "AT+CGSN")
NR_I=$(echo "$OM" | sed s/"AT+CGSN"// | xargs)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
OC=$(sms_tool -d $DEVICE at "AT+CIMI")
NR_C=$(echo "$OC" | sed s/"AT+CIMI"// | tr -s "\n" | xargs)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
OI=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$OI" | awk -F [:] '/^\+ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=1e0e ProdID=9000' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,100 @@
# SIMCOM SIM8200EA-M2
# SIMCOM SIM7906
OT=$(sms_tool -d $DEVICE at "AT+CPMUTEMP")
T=$(echo "$OT" | awk -F[,:] '/^\+CPMUTEMP: / {print $2}' | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
O=$(sms_tool -d $DEVICE at "AT+CPSI?")
case $MODE_NUM in
7)
MODE="LTE |"
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $5}')
if [ -n "$T" ]; then
TAC_DEC=$(printf "%d" "$T")
TAC_HEX="${T/0x/}"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $7}')
[ -n "$T" ] && PCI=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $8}')
if [ -n "$T" ]; then
PBAND="$(band4g ${T/EUTRAN-BAND/})"
MODE="$MODE $(band4g ${T/EUTRAN-BAND/})"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $9}')
[ -n "$T" ] && EARFCN=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $10}')
if [ -n "$T" ]; then
DLBW="DL: @$T MHz"
PBAND="$(band4g ${T/EUTRAN-BAND/}) $DLBW"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $11}')
if [ -n "$T" ]; then
ULBW="UL: @$T MHz"
PBAND="$(band4g ${T/EUTRAN-BAND/}) $DLBW $ULBW"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $12/10}')
[ -n "$T" ] && RSRQ=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $13/10}')
[ -n "$T" ] && RSRP=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $14/10}')
[ -n "$T" ] && RSSI=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $15}' | xargs)
[ -n "$T" ] && SINR=$T
;;
11) MODE="5G SA";;
13) MODE="5G NSA";;
esac
MODE=$(echo $MODE | sed 's,/,+,'| sed 's,LTE B,LTE | B,')
# Modem
OF=$(sms_tool -d $DEVICE at "AT+CGMR")
FWA=$(echo "$OF" | awk -F [:] '/^\+CGMR: /{print $2}' | xargs)
if [ -n "$FWA" ]; then
FW="$FWA"
fi
OL=$(sms_tool -d $DEVICE at "AT+CGMM")
MODELB=$(echo "$OL" | sed s/"AT+CGMM"// | tr -s "\n" | xargs)
if [ -n "$MODELB" ]; then
MODEL="$(echo $MODELB | sed 's,_, ,')"
fi
# International Mobile Equipment Identity (IMEI)
OM=$(sms_tool -d $DEVICE at "AT+CGSN")
NR_I=$(echo "$OM" | sed s/"AT+CGSN"// | xargs)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
OC=$(sms_tool -d $DEVICE at "AT+CIMI")
NR_C=$(echo "$OC" | sed s/"AT+CIMI"// | tr -s "\n" | xargs)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
OI=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$OI" | awk -F [:] '/^\+ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=1e0e ProdID=9001' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,100 @@
# SIMCOM SIM8200EA-M2
# SIMCOM SIM7906
OT=$(sms_tool -d $DEVICE at "AT+CPMUTEMP")
T=$(echo "$OT" | awk -F[,:] '/^\+CPMUTEMP: / {print $2}' | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
O=$(sms_tool -d $DEVICE at "AT+CPSI?")
case $MODE_NUM in
7)
MODE="LTE |"
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $5}')
if [ -n "$T" ]; then
TAC_DEC=$(printf "%d" "$T")
TAC_HEX="${T/0x/}"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $7}')
[ -n "$T" ] && PCI=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $8}')
if [ -n "$T" ]; then
PBAND="$(band4g ${T/EUTRAN-BAND/})"
MODE="$MODE $(band4g ${T/EUTRAN-BAND/})"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $9}')
[ -n "$T" ] && EARFCN=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $10}')
if [ -n "$T" ]; then
DLBW="DL: @$T MHz"
PBAND="$(band4g ${T/EUTRAN-BAND/}) $DLBW"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $11}')
if [ -n "$T" ]; then
ULBW="UL: @$T MHz"
PBAND="$(band4g ${T/EUTRAN-BAND/}) $DLBW $ULBW"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $12/10}')
[ -n "$T" ] && RSRQ=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $13/10}')
[ -n "$T" ] && RSRP=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $14/10}')
[ -n "$T" ] && RSSI=$T
T=$(echo "$O" | awk -F[,:] '/^\+CPSI: LTE/ {print $15}' | xargs)
[ -n "$T" ] && SINR=$T
;;
11) MODE="5G SA";;
13) MODE="5G NSA";;
esac
MODE=$(echo $MODE | sed 's,/,+,'| sed 's,LTE B,LTE | B,')
# Modem
OF=$(sms_tool -d $DEVICE at "AT+CGMR")
FWA=$(echo "$OF" | awk -F [:] '/^\+CGMR: /{print $2}' | xargs)
if [ -n "$FWA" ]; then
FW="$FWA"
fi
OL=$(sms_tool -d $DEVICE at "AT+CGMM")
MODELB=$(echo "$OL" | sed s/"AT+CGMM"// | tr -s "\n" | xargs)
if [ -n "$MODELB" ]; then
MODEL="$(echo $MODELB | sed 's,_, ,')"
fi
# International Mobile Equipment Identity (IMEI)
OM=$(sms_tool -d $DEVICE at "AT+CGSN")
NR_I=$(echo "$OM" | sed s/"AT+CGSN"// | xargs)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
OC=$(sms_tool -d $DEVICE at "AT+CIMI")
NR_C=$(echo "$OC" | sed s/"AT+CIMI"// | tr -s "\n" | xargs)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
OI=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$OI" | awk -F [:] '/^\+ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=1e0e ProdID=9003' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,225 @@
# Dell DW5930e
# Foxconn T99W175
# Thales Cinterion MV31-W
O=$(sms_tool -d $DEVICE at "AT^TEMP?")
T=$(echo "$O" | awk '/^TSENS: / {gsub("C","",$2); print $2}')
T1=$(echo "$O" | awk '/^PA: / {gsub("C","",$2); print $2}')
if [ -n "$T" ] && [ -n "$T1" ]; then
if [[ "$T1" =~ ^[0-9]+$ && "$T" =~ ^[0-9]+$ ]]; then
if [ "$T1" -gt "$T" ]; then
T="$T1"
fi
fi
fi
T1=$(echo "$O" | awk '/^Skin Sensor: / {gsub("C","",$2); print $2}')
if [ -n "$T" ] && [ -n "$T1" ]; then
if [[ "$T1" =~ ^[0-9]+$ && "$T" =~ ^[0-9]+$ ]]; then
if [ "$T1" -gt "$T" ]; then
T="$T1"
fi
fi
fi
[ -n "$T" ] && TEMP="$T &deg;C"
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at^debug?")
case "$MODE_NUM" in
"7")
MODE="LTE |"
echo "$O" | grep -q "scell:" && MODE="LTE-A |"
;;
"11")
MODE="5G SA |"
;;
"13")
MODE="5G NSA |"
;;
esac
T=$(echo "$O" | awk -F: '/^lte_tac:/ {print $2}' | xargs)
if [ -n "$T" ]; then
# TAC_HEX=$(printf "%X" $T)
# TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX=$(printf "%X" $T)
TAC_DEC="$T"
fi
O1=$(echo "$O" | grep -A 3 pcell)
T=$(echo "$O1" | awk -F: '/^pcell:/ {print $3}' | cut -f1 -d" ")
if [ -n "$T" ]; then
MODE="$MODE $(band4g $T)"
T1=$(echo "$O1" | awk -F: '/^pcell:/ {print $4}' | xargs)
PBAND="$(band4g $T) @${T1/MHz/} MHz"
T=$(echo "$O1" | awk -F: '/pci:/ {print $3}' | xargs)
[ -n "$T" ] && PCI=$T
T=$(echo "$O1" | awk -F: '/^channel:/ {print $2}' | cut -f1 -d" " | xargs)
[ -n "$T" ] && EARFCN=$T
T=$(echo "$O1" | awk -F[:,] '/^lte_rsrp:/ {print $2}')
[ -n "$T" ] && RSRP="${T/dBm/}"
T=$(echo "$O1" | awk -F[:,] '/rsrq:/ {print $4}' | xargs)
[ -n "$T" ] && RSRQ="${T/dB/}"
T=$(echo "$O1" | awk -F[:,] '/^lte_rssi:/ {print $2}')
[ -n "$T" ] && RSSI="${T/dBm/}"
T=$(echo "$O1" | awk -F[:,] '/lte_snr:/ {print $4}' | xargs)
[ -n "$T" ] && [ "$T" != "NA" ] && SINR="${T/dB/}"
fi
O1=$(echo "$O" | grep -A 3 scell)
IDX=0;
while true; do
O2=$(echo "$O1" | head -n4)
if [ -z "$O2" ]; then
break
fi
IDX=$((IDX + 1))
T=$(echo "$O2" | awk -F: '/^scell:/ {print $3}' | cut -f1 -d" ")
MODE="$MODE / $(band4g $T)"
T1=$(echo "$O2" | awk -F: '/^scell:/ {print $4}' | xargs)
if [ -n "$T1" ]; then
case $IDX in
1) S1BAND="$(band4g $T) @${T1/MHz/} MHz";;
2) S2BAND="$(band4g $T) @${T1/MHz/} MHz";;
3) S3BAND="$(band4g $T) @${T1/MHz/} MHz";;
4) S4BAND="$(band4g $T) @${T1/MHz/} MHz";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F: '/pci:/ {print $3}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$T";;
2) S2PCI="$T";;
3) S3PCI="$T";;
4) S4PCI="$T";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F: '/^channel:/ {print $2}' | cut -f1 -d" " | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1EARFCN="$T";;
2) S2EARFCN="$T";;
3) S3EARFCN="$T";;
4) S4EARFCN="$T";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F[:,] '/^lte_rsrp:/ {print $2}')
# [ -n "$T" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "${T/dBm/} dBm"
T=$(echo "$O2" | awk -F[:,] '/rsrq:/ {print $4}' | xargs)
# [ -n "$T" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "${T/dB/} dB"
T=$(echo "$O2" | awk -F[:,] '/^lte_rssi:/ {print $2}')
# [ -n "$T" ] && addon $((POS + 5)) "(S${IDX}) RSSI" "${T/dBm/} dBm"
T=$(echo "$O2" | awk -F[:,] '/lte_snr:/ {print $4}' | xargs)
# [ -n "$T" ] && [ "$T" != "NA" ] && addon $((POS + 8)) "(S${IDX}) SNR" "${T/dB/} dB"
O1=$(echo "$O1" | sed '1,4d')
done
T=$(echo "$O" | awk -F: '/^nr_band:/ {print $2}' | xargs)
if [ -n "$T" ]; then
MODE="$MODE / $(band5g ${T/n/})"
IDX=$((IDX + 1))
T1=$(echo "$O" | awk -F: '/^nr_band_width:/ {print $2}' | xargs)
if [ -n "$T1" ]; then
case $IDX in
1) S1BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
2) S2BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
3) S3BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
4) S4BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_pci:/ {print $2}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$T";;
2) S2PCI="$T";;
3) S3PCI="$T";;
4) S4PCI="$T";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_channel:/ {print $2}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1EARFCN="$T";;
2) S2EARFCN="$T";;
3) S3EARFCN="$T";;
4) S4EARFCN="$T";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_rsrp:/ {print $2}' | cut -f1 -d" ")
# [ -n "$T" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "${T/dBm/} dBm"
T=$(echo "$O" | awk -F: '/^nr_rsrq:/ {print $2}' | xargs)
# [ -n "$T" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "${T/dB/} dB"
T=$(echo "$O" | awk -F: '/^nr_snr:/ {print $2}' | xargs)
# [ -n "$T" ] && [ "$T" != "NA" ] && addon $((POS + 8)) "(S${IDX}) SNR" "${T/dB/} dB"
fi
fi
MODE=$(echo $MODE | sed 's,/,+,'| sed 's,LTE B,LTE | B,')
# Modem
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "//)
MODEL="$MODELBCUT "$MODELACUT
FWA=$(sms_tool -d $DEVICE at "AT+CGMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+CGMR "//)
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+CGSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+CGSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$O" | awk -F [:] '/^\ICCID:/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=1e2d ProdID=00b3' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,225 @@
# Dell DW5930e
# Foxconn T99W175
# Thales Cinterion MV31-W
O=$(sms_tool -d $DEVICE at "AT^TEMP?")
T=$(echo "$O" | awk '/^TSENS: / {gsub("C","",$2); print $2}')
T1=$(echo "$O" | awk '/^PA: / {gsub("C","",$2); print $2}')
if [ -n "$T" ] && [ -n "$T1" ]; then
if [[ "$T1" =~ ^[0-9]+$ && "$T" =~ ^[0-9]+$ ]]; then
if [ "$T1" -gt "$T" ]; then
T="$T1"
fi
fi
fi
T1=$(echo "$O" | awk '/^Skin Sensor: / {gsub("C","",$2); print $2}')
if [ -n "$T" ] && [ -n "$T1" ]; then
if [[ "$T1" =~ ^[0-9]+$ && "$T" =~ ^[0-9]+$ ]]; then
if [ "$T1" -gt "$T" ]; then
T="$T1"
fi
fi
fi
[ -n "$T" ] && TEMP="$T &deg;C"
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at^debug?")
case "$MODE_NUM" in
"7")
MODE="LTE |"
echo "$O" | grep -q "scell:" && MODE="LTE-A |"
;;
"11")
MODE="5G SA |"
;;
"13")
MODE="5G NSA |"
;;
esac
T=$(echo "$O" | awk -F: '/^lte_tac:/ {print $2}' | xargs)
if [ -n "$T" ]; then
# TAC_HEX=$(printf "%X" $T)
# TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX=$(printf "%X" $T)
TAC_DEC="$T"
fi
O1=$(echo "$O" | grep -A 3 pcell)
T=$(echo "$O1" | awk -F: '/^pcell:/ {print $3}' | cut -f1 -d" ")
if [ -n "$T" ]; then
MODE="$MODE $(band4g $T)"
T1=$(echo "$O1" | awk -F: '/^pcell:/ {print $4}' | xargs)
PBAND="$(band4g $T) @${T1/MHz/} MHz"
T=$(echo "$O1" | awk -F: '/pci:/ {print $3}' | xargs)
[ -n "$T" ] && PCI=$T
T=$(echo "$O1" | awk -F: '/^channel:/ {print $2}' | cut -f1 -d" " | xargs)
[ -n "$T" ] && EARFCN=$T
T=$(echo "$O1" | awk -F[:,] '/^lte_rsrp:/ {print $2}')
[ -n "$T" ] && RSRP="${T/dBm/}"
T=$(echo "$O1" | awk -F[:,] '/rsrq:/ {print $4}' | xargs)
[ -n "$T" ] && RSRQ="${T/dB/}"
T=$(echo "$O1" | awk -F[:,] '/^lte_rssi:/ {print $2}')
[ -n "$T" ] && RSSI="${T/dBm/}"
T=$(echo "$O1" | awk -F[:,] '/lte_snr:/ {print $4}' | xargs)
[ -n "$T" ] && [ "$T" != "NA" ] && SINR="${T/dB/}"
fi
O1=$(echo "$O" | grep -A 3 scell)
IDX=0;
while true; do
O2=$(echo "$O1" | head -n4)
if [ -z "$O2" ]; then
break
fi
IDX=$((IDX + 1))
T=$(echo "$O2" | awk -F: '/^scell:/ {print $3}' | cut -f1 -d" ")
MODE="$MODE / $(band4g $T)"
T1=$(echo "$O2" | awk -F: '/^scell:/ {print $4}' | xargs)
if [ -n "$T1" ]; then
case $IDX in
1) S1BAND="$(band4g $T) @${T1/MHz/} MHz";;
2) S2BAND="$(band4g $T) @${T1/MHz/} MHz";;
3) S3BAND="$(band4g $T) @${T1/MHz/} MHz";;
4) S4BAND="$(band4g $T) @${T1/MHz/} MHz";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F: '/pci:/ {print $3}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$T";;
2) S2PCI="$T";;
3) S3PCI="$T";;
4) S4PCI="$T";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F: '/^channel:/ {print $2}' | cut -f1 -d" " | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1EARFCN="$T";;
2) S2EARFCN="$T";;
3) S3EARFCN="$T";;
4) S4EARFCN="$T";;
*) ;;
esac
fi
T=$(echo "$O2" | awk -F[:,] '/^lte_rsrp:/ {print $2}')
# [ -n "$T" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "${T/dBm/} dBm"
T=$(echo "$O2" | awk -F[:,] '/rsrq:/ {print $4}' | xargs)
# [ -n "$T" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "${T/dB/} dB"
T=$(echo "$O2" | awk -F[:,] '/^lte_rssi:/ {print $2}')
# [ -n "$T" ] && addon $((POS + 5)) "(S${IDX}) RSSI" "${T/dBm/} dBm"
T=$(echo "$O2" | awk -F[:,] '/lte_snr:/ {print $4}' | xargs)
# [ -n "$T" ] && [ "$T" != "NA" ] && addon $((POS + 8)) "(S${IDX}) SNR" "${T/dB/} dB"
O1=$(echo "$O1" | sed '1,4d')
done
T=$(echo "$O" | awk -F: '/^nr_band:/ {print $2}' | xargs)
if [ -n "$T" ]; then
MODE="$MODE / $(band5g ${T/n/})"
IDX=$((IDX + 1))
T1=$(echo "$O" | awk -F: '/^nr_band_width:/ {print $2}' | xargs)
if [ -n "$T1" ]; then
case $IDX in
1) S1BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
2) S2BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
3) S3BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
4) S4BAND="$(band5g ${T/n/}) @${T1/MHz/} MHz";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_pci:/ {print $2}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$T";;
2) S2PCI="$T";;
3) S3PCI="$T";;
4) S4PCI="$T";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_channel:/ {print $2}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1EARFCN="$T";;
2) S2EARFCN="$T";;
3) S3EARFCN="$T";;
4) S4EARFCN="$T";;
*) ;;
esac
fi
T=$(echo "$O" | awk -F: '/^nr_rsrp:/ {print $2}' | cut -f1 -d" ")
# [ -n "$T" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "${T/dBm/} dBm"
T=$(echo "$O" | awk -F: '/^nr_rsrq:/ {print $2}' | xargs)
# [ -n "$T" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "${T/dB/} dB"
T=$(echo "$O" | awk -F: '/^nr_snr:/ {print $2}' | xargs)
# [ -n "$T" ] && [ "$T" != "NA" ] && addon $((POS + 8)) "(S${IDX}) SNR" "${T/dB/} dB"
fi
fi
MODE=$(echo $MODE | sed 's,/,+,'| sed 's,LTE B,LTE | B,')
# Modem
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "//)
MODEL="$MODELBCUT "$MODELACUT
FWA=$(sms_tool -d $DEVICE at "AT+CGMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+CGMR "//)
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+CGSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+CGSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$O" | awk -F [:] '/^\ICCID:/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=1e2d ProdID=00b7' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,89 @@
# BroadMobi BM806U (DLINK DWR-921 C1)
if [ "x$MODE_NUM" = "x7" ]; then
O=$(sms_tool -d $DEVICE at "AT+BMTCELLINFO")
echo "$O" | grep "^+BMTCELLINFO" | grep -q ",LAC_ID:" && O=$(echo "$O"| sed 's/,[ ]*/\n/g')
T=$(echo "$O" | awk -F[,:] '/^TAC:/ {print $2}' | xargs)
if [ -n "$T" ]; then
T_HEX=$(printf "%X" $T)
fi
T=$(echo "$O" | awk -F[,:] '/^RSSI:/ {print $2}' | xargs)
[ -n "$T" ] && RSSI="-${T}"
T=$(echo "$O" | awk -F[,:] '/^RSRP:/ {print $2}' | xargs)
[ -n "$T" ] && RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^RSRQ:/ {print $2}' | xargs)
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^SINR:/ {print $2}' | xargs)
[ -n "$T" ] && SINR="$T"
TB=$(echo "$O" | awk -F[,:] '/^ACTIVE BAND:/ {print $2}' | xargs)
[ -n "$TB" ] && MODE="LTE | $(band4g ${TB})" && PBAND="$(band4g ${TB})"
if [ -z "$TB" ]; then
T=$(echo "$O" | awk -F[,:] '/^active band:/ {print $2}' | xargs)
[ -n "$T" ] && MODE="LTE | $(band4g ${T})"
PBAND="$(band4g ${T})"
fi
T=$(echo "$O" | awk -F[,:] '/^PCI:/ {print $2}' | xargs)
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^EARFCN_DL:/ {print $2}' | xargs)
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
EARFCN="$T"
# EARFCN DL="$T"
fi
T=$(echo "$O" | awk -F[,:] '/^EARFCN_UL:/ {print $2}' | xargs)
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
EARFCN UL="$T"
fi
fi
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+CGMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+CGMR "//)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "//)
MODEL="$MODELBCUT "$MODELACUT
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+CGSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+CGSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$O" | awk -F [:] '/^\ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=2020 ProdID=2033' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,502 @@
# Quectel RM551E-GL
O=$(sms_tool -d $DEVICE at "at+qtemp")
T=$(echo "$O" | awk -F[,:] '/^\+QTEMP/ {print $3}' | sort -r | head -n1 | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
if [ -z "$REG" ] || [ "x$MODE_NUM" = "x11" ]; then
O=$(sms_tool -d $DEVICE at "at+c5greg=2;+c5greg?")
# C5GREG
eval $(echo "$O" | awk -F[,] '/^\+C5GREG/ {gsub(/[[:space:]"]+/,"");printf "T=\"%d\";TAC_HEX=\"%X\";CID_HEX=\"%s\";TAC_DEC=\"%d\";MODE_NUM=\"%d\"", $2, "0x"$3, $4, "0x"$3, $5}')
case "$T" in
0*) REG="0";;
1*) REG="1";;
2*) REG="2";;
3*) REG="3";;
5*) REG="5";;
*) REG="";;
esac
[ "x$REG" = "x1" ] || [ "x$REG" = "x5" ] && REGOK=1
[ "$TAC_DEC" != "0" ]
[ -n "$CID_HEX" ] && CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qcainfo;+qeng=\"servingcell\";+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $2}' | xargs)
if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
COPS="$T"
fi
case "$MODE_NUM" in
7*)
if echo "$O" | grep -q -i "+QCAINFO.*SCC"; then
MODE="LTE-A |"
fi
;;
11*)
MODE="5G SA |"
;;
13*)
if echo "$O" | grep -q -i "+QCAINFO.*NR5G"; then
MODE="5G NSA |"
else
if echo "$O" | grep -q -i "+QCAINFO.*PCC.*LTE"; then
MODE="LTE |"
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
if echo "$O" | grep -q -i "+QCAINFO.*SCC"; then
MODE="LTE-A |"
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
fi
fi
fi
;;
esac
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
MODE="$MODE $(band4g ${B})"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
MODE="$MODE $(band5g ${B})"
;;
esac
T1=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{gsub(" ", "-");print $5}')
if [ -n "$T1" ]; then
for T in $T1; do
case $T in
*"LTE-BAND"*)
B=$(echo $T | sed 's/"LTE-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band4g ${B})"
;;
*"NR5G-BAND"*)
B=$(echo $T | sed 's/"NR5G-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band5g ${B})"
;;
esac
done
fi
fi
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xNR5G-SA" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $8}')
if [ -n "$T" ]; then
CID_HEX=$T
CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}')
# [ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0) BW="5";;
1) BW="10";;
2) BW="15";;
3) BW="20";;
4) BW="25";;
5) BW="30";;
6) BW="40";;
7) BW="50";;
8) BW="60";;
9) BW="70";;
10) BW="80";;
11) BW="90";;
12) BW="100";;
13) BW="200";;
14) BW="400";;
*) BW="";;
esac
[ -n "$BW" ] && DBW="@$BW MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
if [ -n "$T" ]; then
RSRP="$T"
if [ -n "$BW" ]; then
N=$((BW * 5))
RSSI=$(echo "$T $N" | awk '{printf "%d\n", $1 + 10*log(12*$2)/log(10)}')
if [ -n "$RSSI" ]; then
[ $RSSI -lt -113 ] && RSSI="-113"
[ $RSSI -gt -51 ] && RSSI="-51"
RSSI="$RSSI"
[ -z "$CSQ_PER" ] && CSQ_PER=$(((RSSI + 113) * 100 / 62 ))
[ -z "$CSQ" ] && CSQ=$(((31 * CSQ_PER) / 100))
fi
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}')
[ -n "$T" ] && SINR="$T"
fi
fi
IFS="
"
if [ "x$MODE_NUM" = "x13" ]; then
LINES=$(echo "$O" | grep "+QENG")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/{print $2}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $12}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX=$T
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $16}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR="$T"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $10}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $11}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
elif [ "x$T" = "xservingcell" ]; then
if [ "x${MODE:0:3}" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
T_DEC=$(printf "%d" "0x$T")
T_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.1f\n", 0.2*$1*10 - 20}')
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
done
fi
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
;;
esac
T3=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $4}')
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
if [ -z "$T4" ]; then
PBAND="$T2"
if [ -n "$DBW" ]; then
PBAND="$T2 $DBW"
fi
else
PBAND="$T2 @$T4 MHz"
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $6}' | xargs)
[ -n "$T" ] && PCI="$T"
else
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $7}')
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $10}')
[ -n "$T" ] && RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $8}')
[ -n "$T" ] && RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $9}')
[ -n "$T" ] && RSRQ="$T"
fi
IDX=1
LINES=$(echo "$O" | grep -E "^\+QCAINFO: \"(scc|SCC)\"")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $5}')
T3=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $4}')
T4=""
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $10}' | xargs)
# [ -n "$T5" ] && addon $((POS + 5)) "(S${IDX}) RSSI" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}' | xargs)
# [ -n "$T5" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}' | xargs)
# [ -n "$T5" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
case $T3 in
0) T4="5";;
1) T4="10";;
2) T4="15";;
3) T4="20";;
4) T4="25";;
5) T4="30";;
6) T4="40";;
7) T4="50";;
8) T4="60";;
9) T4="70";;
10) T4="80";;
11) T4="90";;
12) T4="100";;
13) T4="200";;
14) T4="400";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}')
[ -n "$T5" ]
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
if [ "x$MODE_NUM" = "x11" ]; then
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ] && [ "$T5" != "-" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
else
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $6}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
fi
;;
esac
if [ -z "$T4" ]; then
case $IDX in
1) S1BAND="$T2";;
2) S2BAND="$T2";;
3) S3BAND="$T2";;
4) S4BAND="$T2";;
*) ;;
esac
else
case $IDX in
1) S1BAND="$T2 @$T4 MHz";;
2) S2BAND="$T2 @$T4 MHz";;
3) S3BAND="$T2 @$T4 MHz";;
4) S4BAND="$T2 @$T4 MHz";;
*) ;;
esac
fi
IDX=$((IDX + 1))
done
fi
fi
MODE=$(echo $MODE | sed 's,/,+,'| sed 's,LTE B,LTE | B,')
if [ "${LAC_DEC}" = "0" ]; then
LAC_DEC="-"
LAC_HEX="-"
fi
# Modem
GETNFO=$(gcom -d $DEVICE -s /usr/share/3ginfo-lite/vendorproduct.gcom)
FW=$(echo "$GETNFO" | awk -F [:] '/^\+CGMR:/{print $2}' | xargs)
MVENDOR=$(echo "$GETNFO" | awk -F [:] '/^\+CGMI:/{print $2}' | xargs)
MPRODUCT=$(echo "$GETNFO" | awk -F [:] '/^\+CGMM:/{print $2}' | xargs)
MODEL="$MVENDOR "$MPRODUCT
# Slot SIM
O=$(sms_tool -d $DEVICE at "AT+QUIMSLOT?")
T=$(echo "$O" | awk -F [:] '/^\+QUIMSLOT/{print $2}' | xargs)
if [ -n "$T" ]; then
SSIM="$T"
fi
# International Mobile Equipment Identity (IMEI)
NR_I=$(echo "$GETNFO" | awk -F [:] '/^\+CGSN:/{print $2}' | xargs)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
NR_C=$(echo "$GETNFO" | awk -F [:] '/^\+CIMI:/{print $2}' | xargs)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
NR_D=$(echo "$GETNFO" | awk -F [:] '/^\+ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=2c7c ProdID=0801' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,118 @@
# Quectel EC20-E
# Quectel EC25
O=$(sms_tool -d $DEVICE at "at+qtemp")
T=$(echo "$O" | awk -F[,:] '/^\+QTEMP/ {t=$2*1;if($3*1>t)t=$3*1;if($4*1>t)t=$4*1;printf "%d", t}')
[ -n "$T" ] && TEMP="$T &deg;C"
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qeng=\"servingcell\";+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO/ {print $2"/"$4}' | xargs)
if [ -n "$T" ]; then
if [ "x$MODE_NUM" = "x7" ]; then
B=$(echo $T | sed 's/.*LTE BAND \(.*\)/\1/')
MODE="LTE | $(band4g ${B})"
MAINCUT="$(band4g ${B})"
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ] || [ "x$T" = "x4G" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0) T1="1.4";;
1) T1="3";;
2) T1="5";;
3) T1="10";;
4) T1="15";;
5) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0) T1="1.4";;
1) T1="3";;
2) T1="5";;
3) T1="10";;
4) T1="15";;
5) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
PBAND="$MAINCUT $DLBW $ULBW"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}')
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $10}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $17}')
RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}')
RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}')
RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.1f\n", $1*0.2-20}')
SINR="$T"
fi
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $4}' | xargs)
if [ -n "$T" ]; then
COPS="$T"
fi
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | cut -c 8-)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | cut -c 9-)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+QCCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+QCCID/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Modem
OF=$(sms_tool -d $DEVICE at "ati")
DEVV=$(echo $OF | tr -s "\n" | xargs)
FW=$(echo $DEVV | awk -F 'Revision:' '{print $2}'| xargs)
MODEL=$(echo $DEVV | awk -F 'ati|Revision:' '{print $1}'| xargs)
if [ -z "$MODEL" ]
then
MODEL=$(echo $DEVV | awk -F 'ati|Revision:' '{print $2}'| xargs)
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices)
PVCUT=$(echo $PV | awk -F 'Vendor=2c7c ProdID=0125' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,502 @@
# Quectel RM551E-GL
O=$(sms_tool -d $DEVICE at "at+qtemp")
T=$(echo "$O" | awk -F[,:] '/^\+QTEMP/ {print $3}' | sort -r | head -n1 | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
if [ -z "$REG" ] || [ "x$MODE_NUM" = "x11" ]; then
O=$(sms_tool -d $DEVICE at "at+c5greg=2;+c5greg?")
# C5GREG
eval $(echo "$O" | awk -F[,] '/^\+C5GREG/ {gsub(/[[:space:]"]+/,"");printf "T=\"%d\";TAC_HEX=\"%X\";CID_HEX=\"%s\";TAC_DEC=\"%d\";MODE_NUM=\"%d\"", $2, "0x"$3, $4, "0x"$3, $5}')
case "$T" in
0*) REG="0";;
1*) REG="1";;
2*) REG="2";;
3*) REG="3";;
5*) REG="5";;
*) REG="";;
esac
[ "x$REG" = "x1" ] || [ "x$REG" = "x5" ] && REGOK=1
[ "$TAC_DEC" != "0" ]
[ -n "$CID_HEX" ] && CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qcainfo;+qeng=\"servingcell\";+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $2}' | xargs)
if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
COPS="$T"
fi
case "$MODE_NUM" in
7*)
if echo "$O" | grep -q -i "+QCAINFO.*SCC"; then
MODE="LTE-A |"
fi
;;
11*)
MODE="5G SA |"
;;
13*)
if echo "$O" | grep -q -i "+QCAINFO.*NR5G"; then
MODE="5G NSA |"
else
if echo "$O" | grep -q -i "+QCAINFO.*PCC.*LTE"; then
MODE="LTE |"
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
if echo "$O" | grep -q -i "+QCAINFO.*SCC"; then
MODE="LTE-A |"
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
fi
fi
fi
;;
esac
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
MODE="$MODE $(band4g ${B})"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
MODE="$MODE $(band5g ${B})"
;;
esac
T1=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{gsub(" ", "-");print $5}')
if [ -n "$T1" ]; then
for T in $T1; do
case $T in
*"LTE-BAND"*)
B=$(echo $T | sed 's/"LTE-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band4g ${B})"
;;
*"NR5G-BAND"*)
B=$(echo $T | sed 's/"NR5G-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band5g ${B})"
;;
esac
done
fi
fi
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xNR5G-SA" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $8}')
if [ -n "$T" ]; then
CID_HEX=$T
CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}')
# [ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0) BW="5";;
1) BW="10";;
2) BW="15";;
3) BW="20";;
4) BW="25";;
5) BW="30";;
6) BW="40";;
7) BW="50";;
8) BW="60";;
9) BW="70";;
10) BW="80";;
11) BW="90";;
12) BW="100";;
13) BW="200";;
14) BW="400";;
*) BW="";;
esac
[ -n "$BW" ] && DBW="@$BW MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
if [ -n "$T" ]; then
RSRP="$T"
if [ -n "$BW" ]; then
N=$((BW * 5))
RSSI=$(echo "$T $N" | awk '{printf "%d\n", $1 + 10*log(12*$2)/log(10)}')
if [ -n "$RSSI" ]; then
[ $RSSI -lt -113 ] && RSSI="-113"
[ $RSSI -gt -51 ] && RSSI="-51"
RSSI="$RSSI"
[ -z "$CSQ_PER" ] && CSQ_PER=$(((RSSI + 113) * 100 / 62 ))
[ -z "$CSQ" ] && CSQ=$(((31 * CSQ_PER) / 100))
fi
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}')
[ -n "$T" ] && SINR="$T"
fi
fi
IFS="
"
if [ "x$MODE_NUM" = "x13" ]; then
LINES=$(echo "$O" | grep "+QENG")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/{print $2}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $12}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX=$T
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $16}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
SINR="$T"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $10}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $11}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
elif [ "x$T" = "xservingcell" ]; then
if [ "x${MODE:0:3}" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
T_DEC=$(printf "%d" "0x$T")
T_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.1f\n", 0.2*$1*10 - 20}')
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
done
fi
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
;;
esac
T3=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $4}')
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
if [ -z "$T4" ]; then
PBAND="$T2"
if [ -n "$DBW" ]; then
PBAND="$T2 $DBW"
fi
else
PBAND="$T2 @$T4 MHz"
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $6}' | xargs)
[ -n "$T" ] && PCI="$T"
else
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $7}')
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $10}')
[ -n "$T" ] && RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $8}')
[ -n "$T" ] && RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $9}')
[ -n "$T" ] && RSRQ="$T"
fi
IDX=1
LINES=$(echo "$O" | grep -E "^\+QCAINFO: \"(scc|SCC)\"")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $5}')
T3=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $4}')
T4=""
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $10}' | xargs)
# [ -n "$T5" ] && addon $((POS + 5)) "(S${IDX}) RSSI" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}' | xargs)
# [ -n "$T5" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}' | xargs)
# [ -n "$T5" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
case $T3 in
0) T4="5";;
1) T4="10";;
2) T4="15";;
3) T4="20";;
4) T4="25";;
5) T4="30";;
6) T4="40";;
7) T4="50";;
8) T4="60";;
9) T4="70";;
10) T4="80";;
11) T4="90";;
12) T4="100";;
13) T4="200";;
14) T4="400";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}')
[ -n "$T5" ]
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
if [ "x$MODE_NUM" = "x11" ]; then
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ] && [ "$T5" != "-" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
else
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $6}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
fi
;;
esac
if [ -z "$T4" ]; then
case $IDX in
1) S1BAND="$T2";;
2) S2BAND="$T2";;
3) S3BAND="$T2";;
4) S4BAND="$T2";;
*) ;;
esac
else
case $IDX in
1) S1BAND="$T2 @$T4 MHz";;
2) S2BAND="$T2 @$T4 MHz";;
3) S3BAND="$T2 @$T4 MHz";;
4) S4BAND="$T2 @$T4 MHz";;
*) ;;
esac
fi
IDX=$((IDX + 1))
done
fi
fi
MODE=$(echo $MODE | sed 's,/,+,'| sed 's,LTE B,LTE | B,')
if [ "${LAC_DEC}" = "0" ]; then
LAC_DEC="-"
LAC_HEX="-"
fi
# Modem
GETNFO=$(gcom -d $DEVICE -s /usr/share/3ginfo-lite/vendorproduct.gcom)
FW=$(echo "$GETNFO" | awk -F [:] '/^\+CGMR:/{print $2}' | xargs)
MVENDOR=$(echo "$GETNFO" | awk -F [:] '/^\+CGMI:/{print $2}' | xargs)
MPRODUCT=$(echo "$GETNFO" | awk -F [:] '/^\+CGMM:/{print $2}' | xargs)
MODEL="$MVENDOR "$MPRODUCT
# Slot SIM
O=$(sms_tool -d $DEVICE at "AT+QUIMSLOT?")
T=$(echo "$O" | awk -F [:] '/^\+QUIMSLOT/{print $2}' | xargs)
if [ -n "$T" ]; then
SSIM="$T"
fi
# International Mobile Equipment Identity (IMEI)
NR_I=$(echo "$GETNFO" | awk -F [:] '/^\+CGSN:/{print $2}' | xargs)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
NR_C=$(echo "$GETNFO" | awk -F [:] '/^\+CIMI:/{print $2}' | xargs)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
NR_D=$(echo "$GETNFO" | awk -F [:] '/^\+ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=2c7c ProdID=0801' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,151 @@
# Quectel EP06
# Quectel EG06
O=$(sms_tool -d $DEVICE at "at+qtemp")
T=$(echo "$O" | awk -F[,:] '/^\+QTEMP/ {t=$2*1;if($3*1>t)t=$3*1;if($4*1>t)t=$4*1;printf "%d", t}')
[ -n "$T" ] && TEMP="$T &deg;C"
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qeng=\"servingcell\";+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO/ {print $2"/"$4}' | xargs)
if [ -n "$T" ]; then
if [ "x$MODE_NUM" = "x7" ]; then
B=$(echo $T | sed 's/.*LTE BAND \(.*\)/\1/')
MODE="LTE $(band4g ${B})"
MAINCUT="$(band4g ${B})"
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ] || [ "x$T" = "x4G" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
T_DEC=$(printf "%d" "0x$T")
T_HEX=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0) T1="1.4";;
1) T1="3";;
2) T1="5";;
3) T1="10";;
4) T1="15";;
5) T1="20";;
*) T1="?";;
esac
ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0) T1="1.4";;
1) T1="3";;
2) T1="5";;
3) T1="10";;
4) T1="15";;
5) T1="20";;
*) T1="?";;
esac
DLBW="DL: @$T1 MHz"
PBAND="$MAINCUT $DLBW $ULBW"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}')
PCI=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $10}')
EARFCN=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $17}')
RSSI=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}')
RSRP=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}')
RSRQ=$T
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.1f\n", $1*0.2-20}')
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.1f\n", 0.2*$1*10 - 20}')
SINR=$T
fi
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $2}' | xargs)
if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
COPS="$T"
fi
if [ "x$MODE_NUM" = "x7" ]; then
O=$(sms_tool -d $DEVICE at "AT+QCAINFO")
T=$(echo "$O" | awk -F[,] '/^\+QCAINFO: "scc"/{print $4}' | xargs)
if [ -n "$T" ]; then
B=$(echo $T | sed 's/.*LTE BAND \(.*\)/\1/')
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $4}')
case $T in
6) T1="1.4";;
15) T1="3";;
25) T1="5";;
50) T1="10";;
75) T1="15";;
100) T1="20";;
*) T1="?";;
esac
MODE="${MODE/LTE/LTE_A} / $(band4g ${B})"
S1BAND="$(band4g ${B}) @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $7}')
S1PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $3}')
S1EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $10}')
RSSI=$T
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $8}')
RSRP=$T
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $9}')
RSRQ=$T
# T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $11}' | awk '{printf "%.1f\n", $1*0.2-20}')
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.1f\n", 0.2*$1*10 - 20}')
SINR=$T
fi
fi
MODE=$(echo $MODE | sed 's,/,+,' | sed "s/LTE_A/LTE-A | /g")
# Modem
OF=$(sms_tool -d $DEVICE at "ati")
DEVV=$(echo $OF | tr -s "\n" | xargs)
FW=$(echo $DEVV | awk -F 'Revision:' '{print $2}'| xargs)
MODEL=$(echo $DEVV | awk -F 'ati|Revision:' '{print $1}'| xargs)
if [ -z "$MODEL" ]
then
MODEL=$(echo $DEVV | awk -F 'ati|Revision:' '{print $2}'| xargs)
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | cut -c 8-)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | cut -c 9-)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+QCCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+QCCID/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=2c7c ProdID=0306' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,147 @@
# Quectel EM06
QTEMP=$(sms_tool -d $DEVICE at "AT+QTEMP" | grep cpuss-usr)
QTEMPEXTRACTED=$(echo "${QTEMP}" | awk -F[,:] '/^\+QTEMP/ {t=$2*1;if($3*1>t)t=$3*1;if($4*1>t)t=$4*1;printf "%d", t}')
[ -n "${QTEMP}" ] && TEMP="${QTEMPEXTRACTED} &deg;C"
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qeng=\"servingcell\";+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO/ {print $2"/"$4}' | xargs)
if [ -n "$T" ]; then
if [ "x$MODE_NUM" = "x7" ]; then
B=$(echo $T | sed 's/.*LTE BAND \(.*\)/\1/')
MODE="LTE $(band4g ${B})"
MAINCUT="$(band4g ${B})"
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ] || [ "x$T" = "x4G" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
T_DEC=$(printf "%d" "0x$T")
T_HEX=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0) T1="1.4";;
1) T1="3";;
2) T1="5";;
3) T1="10";;
4) T1="15";;
5) T1="20";;
*) T1="?";;
esac
ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0) T1="1.4";;
1) T1="3";;
2) T1="5";;
3) T1="10";;
4) T1="15";;
5) T1="20";;
*) T1="?";;
esac
DLBW="DL: @$T1 MHz"
PBAND="$MAINCUT $DLBW $ULBW"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}')
PCI=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $10}')
EARFCN=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $17}')
RSSI=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}')
RSRP=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}')
RSRQ=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.1f\n", $1*0.2-20}')
SINR=$T
fi
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $2}' | xargs)
if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
COPS="$T"
fi
if [ "x$MODE_NUM" = "x7" ]; then
O=$(sms_tool -d $DEVICE at "AT+QCAINFO")
T=$(echo "$O" | awk -F[,] '/^\+QCAINFO: "scc"/{print $4}' | xargs)
if [ -n "$T" ]; then
B=$(echo $T | sed 's/.*LTE BAND \(.*\)/\1/')
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $4}')
case $T in
6) T1="1.4";;
15) T1="3";;
25) T1="5";;
50) T1="10";;
75) T1="15";;
100) T1="20";;
*) T1="?";;
esac
MODE="${MODE/LTE/LTE_A} / $(band4g ${B})"
S1BAND="$(band4g ${B}) @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $7}')
S1PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $3}')
S1EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $10}')
RSSI=$T
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $8}')
RSRP=$T
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $9}')
RSRQ=$T
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "scc"/ {print $11}' | awk '{printf "%.1f\n", $1*0.2-20}')
SINR=$T
fi
fi
MODE=$(echo $MODE | sed 's,/,+,' | sed "s/LTE_A/LTE-A | /g")
# Modem
OF=$(sms_tool -d $DEVICE at "ati")
DEVV=$(echo $OF | tr -s "\n" | xargs)
FW=$(echo $DEVV | awk -F 'Revision:' '{print $2}'| xargs)
MODEL=$(echo $DEVV | awk -F 'ati|Revision:' '{print $1}'| xargs)
if [ -z "$MODEL" ]
then
MODEL=$(echo $DEVV | awk -F 'ati|Revision:' '{print $2}'| xargs)
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | cut -c 8-)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | cut -c 9-)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+QCCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+QCCID/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=2c7c ProdID=030b' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,253 @@
# Quectel EG18-EA
# Quectel EM12-G
# Quectel EM160R-GL
O=$(sms_tool -d $DEVICE at "at+qtemp")
T=$(echo "$O" | awk -F[,:] '/^\+QTEMP/ {print $3}' | sort -r | head -n1 | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qcainfo;+qeng=\"servingcell\";+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $2}' | xargs)
if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
COPS="$T"
fi
if [ "x$MODE_NUM" = "x7" ]; then
echo "$O" | grep -q -i "+QCAINFO.*SCC" && MODE="LTE-A"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0) T1="1.4";;
1) T1="3";;
2) T1="5";;
3) T1="10";;
4) T1="15";;
5) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0) T1="1.4";;
1) T1="3";;
2) T1="5";;
3) T1="10";;
4) T1="15";;
5) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -z "$T" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO:/{print $4}')
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
MODE="$MODE $T2"
T3=$(echo "$O" | awk -F[,:] '/^\+QNWINFO:"/{print $11}')
case $T3 in
6) T4="1.4";;
15) T4="3";;
25) T4="5";;
50) T4="10";;
75) T4="15";;
100) T4="20";;
*) T4="";;
esac
if [ -z "$T4" ]; then
PBAND="$T2"
else
PBAND="$T2 @${T4} MHz"
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}')
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $10}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $17}')
[ -n "$T" ] && RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}')
[ -n "$T" ] && RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {printf "%.1f\n", $18/5-20}' | xargs)
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
[ -n "$T" ] && SINR="$T"
else
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
MODE="$MODE $T2"
T3=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $4}')
case $T3 in
6) T4="1.4";;
15) T4="3";;
25) T4="5";;
50) T4="10";;
75) T4="15";;
100) T4="20";;
*) T4="";;
esac
if [ -z "$T4" ]; then
PBAND="$T2"
else
PBAND="$T2 @${T4} MHz"
fi
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $7}')
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $10}')
[ -n "$T" ] && RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $8}')
[ -n "$T" ] && RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $9}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{printf "%.1f\n", $11/5-20}' | xargs)
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
[ -n "$T" ] && SINR="$T"
IFS="
"
IDX=1
LINES=$(echo "$O" | grep -E "^\+QCAINFO: \"(scc|SCC)\"")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $5}')
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
MODE="$MODE / $T2"
T3=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $4}')
case $T3 in
6) T4="1.4";;
15) T4="3";;
25) T4="5";;
50) T4="10";;
75) T4="15";;
100) T4="20";;
*) T4="";;
esac
if [ -z "$T4" ]; then
case $IDX in
1) S1BAND="$T2";;
2) S2BAND="$T2";;
3) S3BAND="$T2";;
4) S4BAND="$T2";;
*) ;;
esac
else
case $IDX in
1) S1BAND="$T2 @${T4} MHz";;
2) S2BAND="$T2 @${T4} MHz";;
3) S3BAND="$T2 @${T4} MHz";;
4) S4BAND="$T2 @${T4} MHz";;
*) ;;
esac
fi
T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}')
if [ -n "$T" ]; then
case $IDX in
1) S1EARFCN="$T";;
2) S2EARFCN="$T";;
3) S3EARFCN="$T";;
4) S4EARFCN="$T";;
*) ;;
esac
fi
T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}')
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$T";;
2) S2PCI="$T";;
3) S3PCI="$T";;
4) S4PCI="$T";;
*) ;;
esac
fi
# T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $10}')
# addon $((POS + 5)) "(S${IDX}) RSSI" "$T dBm"
# T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# addon $((POS + 6)) "(S${IDX}) RSRP" "$T dBm"
# T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}')
# addon $((POS + 7)) "(S${IDX}) RSRQ" "$T dB"
# T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{printf "%.1f\n", $11/5-20}' | xargs)
# addon $((POS + 8)) "(S${IDX}) SINR" "$T dB"
IDX=$((IDX + 1))
done
fi
fi
fi
MODE=$(echo $MODE | sed 's,/,+,' | sed 's,LTE B,LTE | B,' | sed 's,LTE_A,LTE-A,' | sed 's,LTE-A B,LTE-A | B,')
# Modem
OF=$(sms_tool -d $DEVICE at "ati")
DEVV=$(echo $OF | tr -s "\n" | xargs)
FWA=$(sms_tool -d $DEVICE at "AT+GMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | cut -c 8-)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | cut -c 9-)
MODELBCUT=$(echo $MODELB | cut -c 9-)
MODEL="$MODELBCUT "$MODELACUT
if [ -z "$MODEL" ]
then
MODEL=$(echo $DEVV | awk -F 'ati|Revision:' '{print $2}'| xargs)
fi
# Slot SIM
O=$(sms_tool -d $DEVICE at "AT+QUIMSLOT?")
T=$(echo "$O" | awk -F [:] '/^\+QUIMSLOT/{print $2}' | xargs)
if [ -n "$T" ]; then
SSIM="$T"
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | cut -c 8-)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | cut -c 9-)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+QCCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+QCCID/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=2c7c ProdID=0512' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,256 @@
# Quectel EM160R-GL
O=$(sms_tool -d $DEVICE at "at+qtemp")
T=$(echo "$O" | awk -F[,:] '/^\+QTEMP/ {print $3}' | sort -r | head -n1 | xargs)
if [ -n "$T" ]; then
TEMP="$T &deg;C"
fi
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qcainfo;+qeng=\"servingcell\";+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $2}' | xargs)
if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
COPS="$T"
fi
if [ "x$MODE_NUM" = "x7" ]; then
echo "$O" | grep -q -i "+QCAINFO.*SCC" && MODE="LTE-A |"
fi
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
MODE="$MODE $(band4g ${B})"
T1=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{gsub(" ", "-");print $5}')
if [ -n "$T1" ]; then
for T in $T1; do
B=$(echo $T | sed 's/"LTE-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band4g ${B})"
done
fi
fi
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
T_DEC=$(printf "%d" "0x$T")
T_HEX=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR=$T
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $17}' | xargs)
if [ -n "$T" ]; then
RSSI=$T
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}' | xargs)
if [ -n "$T" ]; then
RSRP=$T
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}' | xargs)
if [ -n "$T" ]; then
RSRQ=$T
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}' | xargs)
if [ -n "$T" ]; then
PCI=$T
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $10}' | xargs)
if [ -n "$T" ]; then
EARFCN=$T
fi
QO=$(sms_tool -d $DEVICE at "at+qnwinfo;")
PBAND=$(echo "$QO" | awk -F[,:] '/^\+QNWINFO:/ {print $4}' | xargs)
MAINCUT=$(echo $PBAND | sed 's/LTE BAND //g')
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="?";;
esac
ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
DLBW="DL: @$T1 MHz"
PBAND="$(band4g $MAINCUT "") $DLBW $ULBW"
if [ "x$MODE" = "xLTE" ]; then
MODE="LTE | $(band4g $MAINCUT "")"
fi
fi
fi
IFS="
"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
T3=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $4}')
case $T3 in
6) T4="1.4";;
15) T4="3";;
25) T4="5";;
50) T4="10";;
75) T4="15";;
100) T4="20";;
*) T4="?";;
esac
if [ -z "$T4" ]; then
PBAND="$T2"
else
PBAND="$T2 @$T4 MHz"
fi
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
EARFCN=$T
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $7}')
PCI=$T
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $10}')
RSSI=$T
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $8}')
RSRP=$T
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $9}')
RSRQ=$T
IDX=1
LINES=$(echo "$O" | grep -E "^\+QCAINFO: \"(scc|SCC)\"")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $5}')
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
T3=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $4}')
case $T3 in
6) T4="1.4";;
15) T4="3";;
25) T4="5";;
50) T4="10";;
75) T4="15";;
100) T4="20";;
*) T4="?";;
esac
if [ -z "$T4" ]; then
case $IDX in
1) S1BAND="$T2";;
2) S2BAND="$T2";;
3) S3BAND="$T2";;
4) S4BAND="$T2";;
*) ;;
esac
else
case $IDX in
1) S1BAND="$T2 @$T4 MHz";;
2) S2BAND="$T2 @$T4 MHz";;
3) S3BAND="$T2 @$T4 MHz";;
4) S4BAND="$T2 @$T4 MHz";;
*) ;;
esac
fi
T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}')
if [ -n "$T" ]; then
case $IDX in
1) S1EARFCN="$T";;
2) S2EARFCN="$T";;
3) S3EARFCN="$T";;
4) S4EARFCN="$T";;
*) ;;
esac
fi
T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}')
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$T";;
2) S2PCI="$T";;
3) S3PCI="$T";;
4) S4PCI="$T";;
*) ;;
esac
fi
IDX=$((IDX + 1))
done
fi
MODE=$(echo $MODE | sed 's,/,+,' | sed 's,LTE B,LTE | B,' | sed 's,LTE_A,LTE-A,' | sed 's,LTE-A B,LTE-A | B,')
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+GMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+GMR "//)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "//)
MODEL="$MODELBCUT "$MODELACUT
# Slot SIM
O=$(sms_tool -d $DEVICE at "AT+QUIMSLOT?")
T=$(echo "$O" | awk -F [:] '/^\+QUIMSLOT/{print $2}' | xargs)
if [ -n "$T" ]; then
SSIM="$T"
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | cut -c 8-)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | cut -c 9-)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+QCCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+QCCID/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=2c7c ProdID=0620' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,539 @@
# Quectel RG500Q-EA
# Quectel RG502Q-EA
# Quectel RM500Q-GL
# Quectel RM502Q-AE
O=$(sms_tool -d $DEVICE at "at+qtemp")
T=$(echo "$O" | awk -F[,:] '/^\+QTEMP/ {print $3}' | sort -r | head -n1 | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
if [ -z "$REG" ] || [ "x$MODE_NUM" = "x11" ]; then
O=$(sms_tool -d $DEVICE at "at+c5greg=2;+c5greg?")
# C5GREG
eval $(echo "$O" | busybox awk -F[,] '/^\+C5GREG/ {gsub(/[[:space:]"]+/,"");printf "T=\"%d\";TAC_HEX=\"%X\";CID_HEX=\"%s\";TAC_DEC=\"%d\";MODE_NUM=\"%d\"", $2, "0x"$3, $4, "0x"$3, $5}')
case "$T" in
0*) REG="0";;
1*) REG="1";;
2*) REG="2";;
3*) REG="3";;
5*) REG="5";;
*) REG="";;
esac
[ "x$REG" = "x1" ] || [ "x$REG" = "x5" ] && REGOK=1
[ "$TAC_DEC" != "0" ]
[ -n "$CID_HEX" ] && CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qcainfo;+qeng=\"servingcell\";+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $2}' | xargs)
if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
COPS="$T"
fi
case "$MODE_NUM" in
7*)
MODE="LTE |"
echo "$O" | grep -q -i "+QCAINFO.*SCC" && MODE="LTE_A"
;;
11*)
MODE="5G SA |"
;;
13*)
MODE="LTE |"
if echo "$O" | grep -q -i "+QCAINFO.*NR5G"; then
MODE="5G NSA |"
else
if echo "$O" | grep -q -i "+QCAINFO.*PCC.*LTE"; then
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
# OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
if echo "$O" | grep -q -i "+QCAINFO.*SCC"; then
MODE="LTE-A |"
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
# OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
fi
fi
fi
;;
esac
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
MODE="$MODE $(band4g ${B})"
;;
*"NR N"*)
B=$(echo $T | sed 's/NR N\(.*\)/\1/')
MODE="$MODE $(band5g ${B})"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
MODE="$MODE $(band5g ${B})"
;;
esac
T1=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{gsub(" ", "-");print $5}')
if [ -n "$T1" ]; then
for T in $T1; do
case $T in
*"LTE-BAND"*)
B=$(echo $T | sed 's/"LTE-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band4g ${B})"
;;
*"NR-N"*)
B=$(echo $T | sed 's/NR-N\(.*\)/\1/')
MODE="$MODE / $(band5g ${B})"
;;
*"NR5G-BAND"*)
B=$(echo $T | sed 's/"NR5G-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band5g ${B})"
;;
esac
done
fi
else
case "$MODE_NUM" in
7 | 13)
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO:.*LTE.*/{print $4}')
if [ -n "$T" ]; then
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
MODE="$MODE $(band4g ${B})"
fi
;;
11*)
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO:.*NR5G.*/{print $4}')
if [ -n "$T" ]; then
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
MODE="$MODE $(band5g ${B})"
fi
;;
esac
fi
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xNR5G-SA" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $8}')
if [ -n "$T" ]; then
CID_HEX=$T
CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}')
# [ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0) BW="5";;
1) BW="10";;
2) BW="15";;
3) BW="20";;
4) BW="25";;
5) BW="30";;
6) BW="40";;
7) BW="50";;
8) BW="60";;
9) BW="70";;
10) BW="80";;
11) BW="90";;
12) BW="100";;
13) BW="200";;
14) BW="400";;
*) BW="";;
esac
[ -n "$BW" ] && DBW="@$BW MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
if [ -n "$T" ]; then
RSRP="$T"
if [ -n "$BW" ]; then
N=$((BW * 5))
RSSI=$(echo "$T $N" | awk '{printf "%d\n", $1 + 10*log(12*$2)/log(10)}')
if [ -n "$RSSI" ]; then
[ $RSSI -lt -113 ] && RSSI="-113"
[ $RSSI -gt -51 ] && RSSI="-51"
RSSI="$RSSI"
[ -z "$CSQ_PER" ] && CSQ_PER=$(((RSSI + 113) * 100 / 62 ))
[ -z "$CSQ" ] && CSQ=$(((31 * CSQ_PER) / 100))
fi
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}')
[ -n "$T" ] && SINR="$T"
fi
fi
IFS="
"
if [ "x$MODE_NUM" = "x13" ]; then
LINES=$(echo "$O" | grep "+QENG")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/{print $2}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $12}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX=$T
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $16}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR="$T"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $10}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $11}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
elif [ "x$T" = "xservingcell" ]; then
if [ "x${MODE:0:3}" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
T_DEC=$(printf "%d" "0x$T")
T_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.1f\n", 0.2*$1*10 - 20}')
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
done
fi
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
;;
esac
T3=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $4}')
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
if [ -z "$T4" ]; then
PBAND="$T2"
if [ -n "$DBW" ]; then
PBAND="$T2 $DBW"
fi
else
PBAND="$T2 @$T4 MHz"
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $6}' | xargs)
[ -n "$T" ] && PCI="$T"
else
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $7}')
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $10}')
[ -n "$T" ] && RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $8}')
[ -n "$T" ] && RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $9}')
[ -n "$T" ] && RSRQ="$T"
fi
IDX=1
LINES=$(echo "$O" | grep -E "^\+QCAINFO: \"(scc|SCC)\"")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $5}')
T3=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $4}')
T4=""
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $10}' | xargs)
# [ -n "$T5" ] && addon $((POS + 5)) "(S${IDX}) RSSI" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}' | xargs)
# [ -n "$T5" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}' | xargs)
# [ -n "$T5" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
case $T3 in
0) T4="5";;
1) T4="10";;
2) T4="15";;
3) T4="20";;
4) T4="25";;
5) T4="30";;
6) T4="40";;
7) T4="50";;
8) T4="60";;
9) T4="70";;
10) T4="80";;
11) T4="90";;
12) T4="100";;
13) T4="200";;
14) T4="400";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}')
[ -n "$T5" ]
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
if [ "x$MODE_NUM" = "x11" ]; then
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ] && [ "$T5" != "-" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
else
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $6}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
fi
;;
esac
if [ -z "$T4" ]; then
case $IDX in
1) S1BAND="$T2";;
2) S2BAND="$T2";;
3) S3BAND="$T2";;
4) S4BAND="$T2";;
*) ;;
esac
else
case $IDX in
1) S1BAND="$T2 @$T4 MHz";;
2) S2BAND="$T2 @$T4 MHz";;
3) S3BAND="$T2 @$T4 MHz";;
4) S4BAND="$T2 @$T4 MHz";;
*) ;;
esac
fi
IDX=$((IDX + 1))
done
fi
fi
MODE=$(echo $MODE | sed 's,/,+,' | sed 's,LTE B,LTE | B,' | sed 's,LTE_A,LTE-A,' | sed 's,LTE-A B,LTE-A | B,')
if [ "${LAC_DEC}" = "0" ]; then
LAC_DEC="-"
LAC_HEX="-"
fi
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+GMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+GMR "//)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "//)
MODEL="$MODELBCUT "$MODELACUT
# Slot SIM
O=$(sms_tool -d $DEVICE at "AT+QUIMSLOT?")
T=$(echo "$O" | awk -F [:] '/^\+QUIMSLOT/{print $2}' | xargs)
if [ -n "$T" ]; then
SSIM="$T"
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+GSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+QCCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+QCCID/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=2c7c ProdID=0800' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,549 @@
# Quectel RM520N-GL
# Quectel RM521F-GL
O=$(sms_tool -d $DEVICE at "at+qtemp")
T=$(echo "$O" | awk -F[,:] '/^\+QTEMP/ {print $3}' | sort -r | head -n1 | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
if [ -z "$REG" ] || [ "x$MODE_NUM" = "x11" ]; then
O=$(sms_tool -d $DEVICE at "at+c5greg=2;+c5greg?")
# C5GREG
T=""
TAC_HEX=""
CID_HEX=""
TAC_DEC=""
eval $(echo "$O" | busybox awk -F[,] '/^\+C5GREG/ {gsub(/[[:space:]"]+/,"");printf "T=\"%d\";TAC_HEX=\"%X\";CID_HEX=\"%s\";TAC_DEC=\"%d\";MODE_NUM=\"%d\"", $2, "0x"$3, $4, "0x"$3, $5}')
case "$T" in
0*) REG="0";;
1*) REG="1";;
2*) REG="2";;
3*) REG="3";;
5*) REG="5";;
*) REG="";;
esac
[ "x$REG" = "x1" ] || [ "x$REG" = "x5" ] && REGOK=1
[ -n "$TAC_DEC" ] && [ "$TAC_DEC" != "0" ] && TAC_DEC="${TAC_DEC}"
[ -n "$CID_HEX" ] && CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qcainfo;+qeng=\"servingcell\";+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $2}' | xargs)
if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
COPS="$T"
fi
if [ "$CID_HEX" = "0" ]; then
Oz=$(sms_tool -d $DEVICE at "at+qeng=\"servingcell\";")
CID_HEX=$(echo "$Oz" | awk -F',' '/LTE/ {print $5}')
CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
case "$MODE_NUM" in
7*)
MODE="LTE |"
echo "$O" | grep -q -i "+QCAINFO.*SCC" && MODE="LTE_A"
;;
11*)
MODE="5G SA |"
;;
13*)
MODE="LTE |"
if echo "$O" | grep -q -i "+QCAINFO.*NR5G"; then
MODE="5G NSA |"
else
if echo "$O" | grep -q -i "+QCAINFO.*PCC.*LTE"; then
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
# OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
if echo "$O" | grep -q -i "+QCAINFO.*SCC"; then
MODE="LTE-A |"
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
# OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
fi
fi
fi
;;
esac
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
MODE="$MODE $(band4g ${B})"
;;
*"NR N"*)
B=$(echo $T | sed 's/NR N\(.*\)/\1/')
MODE="$MODE $(band5g ${B})"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
MODE="$MODE $(band5g ${B})"
;;
esac
T1=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{gsub(" ", "-");print $5}')
if [ -n "$T1" ]; then
for T in $T1; do
case $T in
*"LTE-BAND"*)
B=$(echo $T | sed 's/"LTE-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band4g ${B})"
;;
*"NR-N"*)
B=$(echo $T | sed 's/NR-N\(.*\)/\1/')
MODE="$MODE / $(band5g ${B})"
;;
*"NR5G-BAND"*)
B=$(echo $T | sed 's/"NR5G-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band5g ${B})"
;;
esac
done
fi
else
case "$MODE_NUM" in
7 | 13)
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO:.*LTE.*/{print $4}')
if [ -n "$T" ]; then
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
MODE="$MODE $(band4g ${B})"
fi
;;
11*)
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO:.*NR5G.*/{print $4}')
if [ -n "$T" ]; then
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
MODE="$MODE $(band5g ${B})"
fi
;;
esac
fi
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xNR5G-SA" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $8}')
if [ -n "$T" ]; then
CID_HEX=$T
CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}')
# [ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0) BW="5";;
1) BW="10";;
2) BW="15";;
3) BW="20";;
4) BW="25";;
5) BW="30";;
6) BW="40";;
7) BW="50";;
8) BW="60";;
9) BW="70";;
10) BW="80";;
11) BW="90";;
12) BW="100";;
13) BW="200";;
14) BW="400";;
*) BW="";;
esac
[ -n "$BW" ] && DBW="@$BW MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
if [ -n "$T" ]; then
RSRP="$T"
if [ -n "$BW" ]; then
N=$((BW * 5))
RSSI=$(echo "$T $N" | awk '{printf "%d\n", $1 + 10*log(12*$2)/log(10)}')
if [ -n "$RSSI" ]; then
[ $RSSI -lt -113 ] && RSSI="-113"
[ $RSSI -gt -51 ] && RSSI="-51"
RSSI="$RSSI"
[ -z "$CSQ_PER" ] && CSQ_PER=$(((RSSI + 113) * 100 / 62 ))
[ -z "$CSQ" ] && CSQ=$(((31 * CSQ_PER) / 100))
fi
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}')
[ -n "$T" ] && SINR="$T"
fi
fi
IFS="
"
if [ "x$MODE_NUM" = "x13" ]; then
LINES=$(echo "$O" | grep "+QENG")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/{print $2}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $12}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX=$T
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $16}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR="$T"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $10}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $11}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
elif [ "x$T" = "xservingcell" ]; then
if [ "x${MODE:0:3}" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
T_DEC=$(printf "%d" "0x$T")
T_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.1f\n", 0.2*$1*10 - 20}')
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
done
fi
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
;;
esac
T3=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $4}')
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
if [ -z "$T4" ]; then
PBAND="$T2"
if [ -n "$DBW" ]; then
PBAND="$T2 $DBW"
fi
else
PBAND="$T2 @$T4 MHz"
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $6}' | xargs)
[ -n "$T" ] && PCI="$T"
else
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $7}')
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $10}')
[ -n "$T" ] && RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $8}')
[ -n "$T" ] && RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $9}')
[ -n "$T" ] && RSRQ="$T"
fi
IDX=1
LINES=$(echo "$O" | grep -E "^\+QCAINFO: \"(scc|SCC)\"")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $5}')
T3=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $4}')
T4=""
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $10}' | xargs)
# [ -n "$T5" ] && addon $((POS + 5)) "(S${IDX}) RSSI" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}' | xargs)
# [ -n "$T5" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}' | xargs)
# [ -n "$T5" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
case $T3 in
0) T4="5";;
1) T4="10";;
2) T4="15";;
3) T4="20";;
4) T4="25";;
5) T4="30";;
6) T4="40";;
7) T4="50";;
8) T4="60";;
9) T4="70";;
10) T4="80";;
11) T4="90";;
12) T4="100";;
13) T4="200";;
14) T4="400";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}')
[ -n "$T5" ]
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
if [ "x$MODE_NUM" = "x11" ]; then
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ] && [ "$T5" != "-" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
else
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $6}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
fi
;;
esac
if [ -z "$T4" ]; then
case $IDX in
1) S1BAND="$T2";;
2) S2BAND="$T2";;
3) S3BAND="$T2";;
4) S4BAND="$T2";;
*) ;;
esac
else
case $IDX in
1) S1BAND="$T2 @$T4 MHz";;
2) S2BAND="$T2 @$T4 MHz";;
3) S3BAND="$T2 @$T4 MHz";;
4) S4BAND="$T2 @$T4 MHz";;
*) ;;
esac
fi
IDX=$((IDX + 1))
done
fi
fi
MODE=$(echo $MODE | sed 's,/,+,' | sed 's,LTE B,LTE | B,' | sed 's,LTE_A,LTE-A,' | sed 's,LTE-A B,LTE-A | B,')
if [ "${LAC_DEC}" = "0" ]; then
LAC_DEC="-"
LAC_HEX="-"
fi
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+GMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+GMR "//)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "//)
MODEL="$MODELBCUT "$MODELACUT
# Slot SIM
O=$(sms_tool -d $DEVICE at "AT+QUIMSLOT?")
T=$(echo "$O" | awk -F [:] '/^\+QUIMSLOT/{print $2}' | xargs)
if [ -n "$T" ]; then
SSIM="$T"
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+GSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+QCCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+QCCID/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=2c7c ProdID=0801' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,524 @@
# Quectel RM500U-CNV
O=$(sms_tool -d $DEVICE at "at+qtemp")
T=$(echo "$O" | awk -F[,:] '/^\+QTEMP/ {print $3}' | sort -r | head -n1 | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
if [ -z "$REG" ] || [ "x$MODE_NUM" = "x11" ]; then
O=$(sms_tool -d $DEVICE at "at+c5greg=2;+c5greg?")
# C5GREG
eval $(echo "$O" | busybox awk -F[,] '/^\+C5GREG/ {gsub(/[[:space:]"]+/,"");printf "T=\"%d\";TAC_HEX=\"%X\";CID_HEX=\"%s\";TAC_DEC=\"%d\";MODE_NUM=\"%d\"", $2, "0x"$3, $4, "0x"$3, $5}')
case "$T" in
0*) REG="0";;
1*) REG="1";;
2*) REG="2";;
3*) REG="3";;
5*) REG="5";;
*) REG="";;
esac
[ "x$REG" = "x1" ] || [ "x$REG" = "x5" ] && REGOK=1
[ "$TAC_DEC" != "0" ]
[ -n "$CID_HEX" ] && CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qcainfo;+qeng=\"servingcell\";+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $2}' | xargs)
if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
COPS="$T"
fi
case "$MODE_NUM" in
7*)
if echo "$O" | grep -q -i "+QCAINFO.*SCC"; then
MODE="LTE-A |"
fi
;;
11*)
MODE="5G SA |"
;;
13*)
if echo "$O" | grep -q -i "+QCAINFO.*NR5G"; then
MODE="5G NSA |"
else
if echo "$O" | grep -q -i "+QCAINFO.*PCC.*LTE"; then
MODE="LTE |"
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
# OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
if echo "$O" | grep -q -i "+QCAINFO.*SCC"; then
MODE="LTE-A |"
OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
# OTS=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR=$OTS
TDX=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$TDX")
TAC_HEX=$TDX
fi
fi
fi
;;
esac
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
MODE="$MODE $(band4g ${B})"
;;
*"NR N"*)
B=$(echo $T | sed 's/NR N\(.*\)/\1/')
MODE="$MODE $(band5g ${B})"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
MODE="$MODE $(band5g ${B})"
;;
esac
T1=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{gsub(" ", "-");print $5}')
if [ -n "$T1" ]; then
for T in $T1; do
case $T in
*"LTE-BAND"*)
B=$(echo $T | sed 's/"LTE-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band4g ${B})"
;;
*"NR-N"*)
B=$(echo $T | sed 's/NR-N\(.*\)/\1/')
MODE="$MODE / $(band5g ${B})"
;;
*"NR5G-BAND"*)
B=$(echo $T | sed 's/"NR5G-BAND-\(.*\)"/\1/')
MODE="$MODE / $(band5g ${B})"
;;
esac
done
fi
fi
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xNR5G-SA" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $8}')
if [ -n "$T" ]; then
CID_HEX=$T
CID_DEC=$(printf "%d" "0x${CID_HEX}")
fi
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $9}')
# [ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0) BW="5";;
1) BW="10";;
2) BW="15";;
3) BW="20";;
4) BW="25";;
5) BW="30";;
6) BW="40";;
7) BW="50";;
8) BW="60";;
9) BW="70";;
10) BW="80";;
11) BW="90";;
12) BW="100";;
13) BW="200";;
14) BW="400";;
*) BW="";;
esac
[ -n "$BW" ] && DBW="@$BW MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
if [ -n "$T" ]; then
RSRP="$T"
if [ -n "$BW" ]; then
N=$((BW * 5))
RSSI=$(echo "$T $N" | awk '{printf "%d\n", $1 + 10*log(12*$2)/log(10)}')
if [ -n "$RSSI" ]; then
[ $RSSI -lt -113 ] && RSSI="-113"
[ $RSSI -gt -51 ] && RSSI="-51"
RSSI="$RSSI"
[ -z "$CSQ_PER" ] && CSQ_PER=$(((RSSI + 113) * 100 / 62 ))
[ -z "$CSQ" ] && CSQ=$(((31 * CSQ_PER) / 100))
fi
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $15}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $16}')
[ -n "$T" ] && SINR="$T"
fi
fi
IFS="
"
if [ "x$MODE_NUM" = "x13" ]; then
LINES=$(echo "$O" | grep "+QENG")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/{print $2}' | xargs)
if [ "x$T" = "xLTE" ]; then
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $12}')
TAC_DEC=$(printf "%d" "0x$T")
TAC_HEX=$T
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $16}' | awk '{printf "%.0f\n", 0.2*$1*10 - 20}')
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR="$T"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $10}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$LINE" | awk -F[,:] '/^\+QENG:/ {print $11}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
elif [ "x$T" = "xservingcell" ]; then
if [ "x${MODE:0:3}" = "xLTE" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $14}')
T_DEC=$(printf "%d" "0x$T")
T_HEX="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | awk '{printf "%.1f\n", 0.2*$1*10 - 20}')
# T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $18}' | xargs)
SINR="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && ULBW="UL: @$T1 MHz"
T=$(echo "$O" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0*) T1="1.4";;
1*) T1="3";;
2*) T1="5";;
3*) T1="10";;
4*) T1="15";;
5*) T1="20";;
*) T1="";;
esac
[ -n "$T1" ] && DLBW="DL: @$T1 MHz"
fi
fi
done
fi
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $5}')
if [ -n "$T" ]; then
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
;;
*"NR N"*)
B=$(echo $T | sed 's/NR N\(.*\)/\1/')
T2=$(band5g ${B})
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
;;
esac
T3=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $4}')
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
if [ -z "$T4" ]; then
PBAND="$T2"
if [ -n "$DBW" ]; then
PBAND="$T2 $DBW"
fi
else
PBAND="$T2 @$T4 MHz"
fi
if [ "x$MODE_NUM" = "x11" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $6}' | xargs)
[ -n "$T" ] && PCI="$T"
else
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $3}')
[ -n "$T" ] && EARFCN="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $7}')
[ -n "$T" ] && PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $10}')
[ -n "$T" ] && RSSI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $8}')
[ -n "$T" ] && RSRP="$T"
T=$(echo "$O" | awk -F[,:] '/^\+QCAINFO: "(pcc|PCC)"/{print $9}')
[ -n "$T" ] && RSRQ="$T"
fi
IDX=1
LINES=$(echo "$O" | grep -E "^\+QCAINFO: \"(scc|SCC)\"")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $5}')
T3=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $4}')
T4=""
case $T in
*"LTE BAND"*)
B=$(echo $T | sed 's/"LTE BAND \(.*\)"/\1/')
T2=$(band4g ${B})
case $T3 in
6*) T4="1.4";;
15*) T4="3";;
25*) T4="5";;
50*) T4="10";;
75*) T4="15";;
100*) T4="20";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $10}' | xargs)
# [ -n "$T5" ] && addon $((POS + 5)) "(S${IDX}) RSSI" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}' | xargs)
# [ -n "$T5" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}' | xargs)
# [ -n "$T5" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
;;
*"NR5G BAND"*)
B=$(echo $T | sed 's/"NR5G BAND \(.*\)"/\1/')
T2=$(band5g ${B})
case $T3 in
0) T4="5";;
1) T4="10";;
2) T4="15";;
3) T4="20";;
4) T4="25";;
5) T4="30";;
6) T4="40";;
7) T4="50";;
8) T4="60";;
9) T4="70";;
10) T4="80";;
11) T4="90";;
12) T4="100";;
13) T4="200";;
14) T4="400";;
*) T4="";;
esac
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $3}')
[ -n "$T5" ]
if [ -n "$T5" ]; then
case $IDX in
1) S1EARFCN="$T5";;
2) S2EARFCN="$T5";;
3) S3EARFCN="$T5";;
4) S4EARFCN="$T5";;
*) ;;
esac
fi
if [ "x$MODE_NUM" = "x11" ]; then
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}' | xargs)
if [ -n "$T5" ] && [ "$T5" != "-" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $9}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
else
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $6}' | xargs)
if [ -n "$T5" ]; then
case $IDX in
1) S1PCI="$T5";;
2) S2PCI="$T5";;
3) S3PCI="$T5";;
4) S4PCI="$T5";;
*) ;;
esac
fi
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $7}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$T5 dBm"
T5=$(echo "$LINE" | awk -F[,:] '/^\+QCAINFO: "(scc|SCC)"/{print $8}')
# [ -n "$T5" ] && [ "$T5" != "-" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$T5 dB"
fi
;;
esac
if [ -z "$T4" ]; then
case $IDX in
1) S1BAND="$T2";;
2) S2BAND="$T2";;
3) S3BAND="$T2";;
4) S4BAND="$T2";;
*) ;;
esac
else
case $IDX in
1) S1BAND="$T2 @$T4 MHz";;
2) S2BAND="$T2 @$T4 MHz";;
3) S3BAND="$T2 @$T4 MHz";;
4) S4BAND="$T2 @$T4 MHz";;
*) ;;
esac
fi
IDX=$((IDX + 1))
done
fi
fi
MODE=$(echo $MODE | sed 's,/,+,' | sed 's,LTE B,LTE | B,' | sed 's,LTE_A,LTE-A,' | sed 's,LTE-A B,LTE-A | B,')
if [ "${LAC_DEC}" = "0" ]; then
LAC_DEC="-"
LAC_HEX="-"
fi
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+GMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+GMR "//)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "//)
MODEL="$MODELBCUT "$MODELACUT
# Slot SIM
O=$(sms_tool -d $DEVICE at "AT+QUIMSLOT?")
T=$(echo "$O" | awk -F [:] '/^\+QUIMSLOT/{print $2}' | xargs)
if [ -n "$T" ]; then
SSIM="$T"
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+GSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+QCCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+QCCID/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=2c7c ProdID=0900' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,116 @@
# Quectel EC200T
O=$(sms_tool -d $DEVICE at "at+qtemp")
T=$(echo "$O" | awk -F[,:] '/^\+QTEMP/ {print $2}' | sort -r | head -n1 | xargs)
if [ -n "$T" ]; then
TEMP="$T &deg;C"
fi
O=$(sms_tool -d $DEVICE at "at+qnwinfo;+qspn")
T=$(echo "$O" | awk -F[,:] '/^\+QNWINFO/ {print $2"/"$4}' | xargs)
if [ -n "$T" ]; then
if [ "x$MODE_NUM" = "x7" ]; then
B=$(echo $T | sed 's/.*LTE BAND \(.*\)/\1/')
MODE="LTE | $(band4g ${B})"
MAINCUT="$(band4g ${B})"
fi
fi
E=$(sms_tool -d $DEVICE at "at+qeng=\"servingcell\"")
T=$(echo "$E" | awk -F[,:] '/^\+QENG:/ {print $4}' | xargs)
if [ "x$T" = "xLTE" ] || [ "x$T" = "x4G" ]; then
T=$(echo "$E" | awk -F[,:] '/^\+QENG:/ {print $14}')
T_DEC=$(printf "%d" "0x$T")
T_HEX=$T
T=$(echo "$E" | awk -F[,:] '/^\+QENG:/ {print $12}')
case $T in
0) T1="1.4";;
1) T1="3";;
2) T1="5";;
3) T1="10";;
4) T1="15";;
5) T1="20";;
*) T1="?";;
esac
ULBW="UL: @$T1 MHz"
T=$(echo "$E" | awk -F[,:] '/^\+QENG:/ {print $13}')
case $T in
0) T1="1.4";;
1) T1="3";;
2) T1="5";;
3) T1="10";;
4) T1="15";;
5) T1="20";;
*) T1="?";;
esac
DLBW="DL: @$T1 MHz"
PBAND="$MAINCUT $DLBW $ULBW"
T=$(echo "$E" | awk -F[,:] '/^\+QENG:/ {print $9}')
PCI=$T
T=$(echo "$E" | awk -F[,:] '/^\+QENG:/ {print $10}')
EARFCN=$T
T=$(echo "$E" | awk -F[,:] '/^\+QENG:/ {print $17}')
RSSI=$T
T=$(echo "$E" | awk -F[,:] '/^\+QENG:/ {print $15}')
RSRP=$T
T=$(echo "$E" | awk -F[,:] '/^\+QENG:/ {print $16}')
RSRQ=$T
T=$(echo "$E" | awk -F[,:] '/^\+QENG:/ {print $18}')
SINR=$T
fi
T=$(echo "$O" | awk -F[,:] '/^\+QSPN/ {print $2}' | xargs)
if [ -n "$T" ] && [ -z "$FORCE_PLMN" ]; then
COPS="$T"
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O" | sed 's/AT+GSN//g' | xargs)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed 's/AT+CIMI//g' | xargs)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+QCCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+QCCID/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+GMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+GMR"//)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM"//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI"//)
MODEL="$MODELBCUT "$MODELACUT
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices)
PVCUT=$(echo $PV | awk -F 'Vendor=2c7c ProdID=6026' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,293 @@
# Fibocom L850-GL
convertchannel() {
if [ $1 -ge 0 ] && [ $1 -le 599 ]; then
newband=1
elif [ $1 -ge 600 ] && [ $1 -le 1199 ]; then
newband=2
elif [ $1 -ge 1200 ] && [ $1 -le 1949 ]; then
newband=3
elif [ $1 -ge 1950] && [ $1 -le 2399 ]; then
newband=4
elif [ $1 -ge 2400] && [ $1 -le 2469 ]; then
newband=5
elif [ $1 -ge 2750 ] && [ $1 -le 3449 ]; then
newband=7
elif [ $1 -ge 3450 ] && [ $1 -le 3799 ]; then
newband=8
elif [ $1 -ge 6150 ] && [ $1 -le 6449 ]; then
newband=20
elif [ $1 -ge 9210 ] && [ $1 -le 9659 ]; then
newband=28
elif [ $1 -ge 9870 ] && [ $1 -le 9919 ]; then
newband=31
elif [ $1 -ge 37750 ] && [ $1 -le 38249 ]; then
newband=38
elif [ $1 -ge 38650 ] && [ $1 -le 39649 ]; then
newband=40
else
newband=0
fi
}
O=$(sms_tool -d $DEVICE at "at+xlec?;+rsrp?;+rsrq?;+xmci=1")
T=$(echo "$O" | awk -F [:_] '/\+XLEC:/{gsub("\r",""); print $4}' | awk -F [:,] '{print $1}')
if [ -n "$T" ]; then
case $T in
*"1"*) MODE="${MODE} "$(band4g 1 "");;
*"2"*) MODE="${MODE} "$(band4g 2 "");;
*"3"*) MODE="${MODE} "$(band4g 3 "");;
*"4"*) MODE="${MODE} "$(band4g 4 "");;
*"5"*) MODE="${MODE} "$(band4g 5 "");;
*"7"*) MODE="${MODE} "$(band4g 7 "");;
*"8"*) MODE="${MODE} "$(band4g 8 "");;
*"12"*) MODE="${MODE} "$(band4g 12 "");;
*"13"*) MODE="${MODE} "$(band4g 13 "");;
*"14"*) MODE="${MODE} "$(band4g 14 "");;
*"17"*) MODE="${MODE} "$(band4g 17 "");;
*"18"*) MODE="${MODE} "$(band4g 18 "");;
*"19"*) MODE="${MODE} "$(band4g 19 "");;
*"20"*) MODE="${MODE} "$(band4g 20 "");;
*"21"*) MODE="${MODE} "$(band4g 21 "");;
*"25"*) MODE="${MODE} "$(band4g 25 "");;
*"26"*) MODE="${MODE} "$(band4g 26 "");;
*"28"*) MODE="${MODE} "$(band4g 28 "");;
*"29"*) MODE="${MODE} "$(band4g 29 "");;
*"30"*) MODE="${MODE} "$(band4g 30 "");;
*"32"*) MODE="${MODE} "$(band4g 32 "");;
*"34"*) MODE="${MODE} "$(band4g 34 "");;
*"38"*) MODE="${MODE} "$(band4g 38 "");;
*"39"*) MODE="${MODE} "$(band4g 39 "");;
*"40"*) MODE="${MODE} "$(band4g 40 "");;
*"41"*) MODE="${MODE} "$(band4g 41 "");;
*"42"*) MODE="${MODE} "$(band4g 42 "");;
*"43"*) MODE="${MODE} "$(band4g 43 "");;
*"46"*) MODE="${MODE} "$(band4g 46 "");;
*"48"*) MODE="${MODE} "$(band4g 48 "");;
*"66"*) MODE="${MODE} "$(band4g 66 "");;
*"71"*) MODE="${MODE} "$(band4g 71 "");;
*) MODE="${MODE} ${T}";;
esac
fi
RSRP=$(echo "$O" | awk -F [:,] '/\+RSRP:/{printf "%.0f\n", $4}')
BWDL=$(echo "$O" | awk -F [:,] '/\+XLEC:/{gsub("\r","",$4); print $4}')
case $BWDL in
1) NP=15 ;;
2) NP=25 ;;
3) NP=50 ;;
4) NP=75 ;;
5) NP=100 ;;
*) NP=0 ;;
esac
CSQ=$(echo $RSRP $NP | awk '{printf "%.0f\n", (($1+10*log(12*$2)/log(10))+113)/2}')
[ "x$CSQ" = "x" ] && CSQ=-1
if [ $CSQ -ge 0 -a $CSQ -le 31 ]; then
CSQ_PER=$(($CSQ * 100/31))
RSSI=$((2 * CSQ - 113))
# Fibocom RSSI up -51dBm. Thanks to TSA74 at 4pda.to
elif [ $CSQ -ge 32 -a $CSQ -le 50 ]; then
RSSI=$((2 * CSQ - 113))
CSQ_PER="100"
CSQ="31"
else
CSQ_PER="0"
fi
RSRQ=$(echo "$O" | awk -F [:,] '/\+RSRQ:/{printf "%.0f\n", $4}')
SINR=$(echo "$O" | awk -F [:,] '/\+XMCI: 4/{gsub(/"/,""); printf "%.0f\n", $13/4+5}')
LTE_Cx=$(echo "$O" | awk -F [:,] '/\+XLEC:/{print $3}')
LTE_CA=$(($LTE_Cx -1))
if [ -n "LTE_CA" ]; then
case $LTE_CA in
1*)
CAx=$(echo "$O" | awk -F [:,] '/\+RSRP:/{print $6}')
BWCx=$(echo "$O" | awk -F [:,] '/\+XLEC:/{gsub("\r",""); print $4" "$5}')
;;
2*)
CAx=$(echo "$O" | awk -F [:,] '/\+RSRP:/{print $6" "$9}')
BWCx=$(echo "$O" | awk -F [:,] '/\+XLEC:/{gsub("\r",""); print $4" "$5" "$6}');;
3*)
CAx=$(echo "$O" | awk -F [:,] '/\+RSRP:/{print $6" "$9" "$12}')
BWCx=$(echo "$O" | awk -F [:,] '/\+XLEC:/{gsub("\r",""); print $4" "$5" "$6" "$7}')
;;
4*)
CAx=$(echo "$O" | awk -F [:,] '/\+RSRP:/{print $6" "$9" "$12" "$15}')
BWCx=$(echo "$O" | awk -F [:,] '/\+XLEC:/{gsub("\r",""); print $4" "$5" "$6" "$7" "$8}')
;;
esac
CA_BAND=""
for sca in $CAx; do
convertchannel $sca 2> /dev/null
BAND="$(band4g $newband "")"
CA_BAND=$CA_BAND' / '$BAND
CABANDx=$CABANDx','$newband
done
MODE="LTE-A | $(band4g $T "")${CA_BAND}"
S1=$(echo "$CABANDx" | awk -F [,] '/\,/{print $2" "}' | sed 's/ //g')
S2=$(echo "$CABANDx" | awk -F [,] '/\,/{print $3" "}' | sed 's/ //g')
S3=$(echo "$CABANDx" | awk -F [,] '/\,/{print $4" "}' | sed 's/ //g')
S4=$(echo "$CABANDx" | awk -F [,] '/\,/{print $5" "}' | sed 's/ //g')
BWCA=0
BWCA_INFO=""
for T3 in $BWCx; do
case $T3 in
1*) T5="3";;
2*) T5="5";;
3*) T5="10";;
4*) T5="15";;
5*) T5="20";;
*) T5="0";;
esac
BWCA=$(($BWCA+$T5))
[[ -z ${BWCA_INFO} ]] && BWCA_INFO="${T5}" || BWCA_INFO="${BWCA_INFO},${T5}"
done
BW1=$(echo "$BWCA_INFO" | awk -F [,] '/\,/{print $2" "}')
BW2=$(echo "$BWCA_INFO" | awk -F [,] '/\,/{print $3" "}')
BW3=$(echo "$BWCA_INFO" | awk -F [,] '/\,/{print $4" "}')
BW4=$(echo "$BWCA_INFO" | awk -F [,] '/\,/{print $5" "}')
T2=$(echo "$O" | awk -F [:,] '/\+XLEC:/{gsub("\r",""); print $4" "}')
case $T2 in
1*) T4="3";;
2*) T4="5";;
3*) T4="10";;
4*) T4="15";;
5*) T4="20";;
*) T4="0";;
esac
if [ -n "$T4" ]; then
PBAND="$(band4g $T "") @$T4 MHz"
PCI=$(echo "$O" | awk -F[,:] '/^\+RSRP:/ {print $2}')
EARFCN=$(echo "$O" | awk -F[,:] '/^\+RSRP:/ {print $3}')
fi
if [ -n "$S1" ]; then
S1BAND="$(band4g $S1 "") @$BW1 MHz"
S1PCI=$(echo "$O" | awk -F[,:] '/^\+RSRP:/ {print $5}')
S1EARFCN=$(echo "$O" | awk -F[,:] '/^\+RSRP:/ {print $6}')
fi
if [ -n "$S2" ]; then
S2BAND="$(band4g $S2 "") @$BW2 MHz"
S2PCI=$(echo "$O" | awk -F[,:] '/^\+RSRP:/ {print $8}')
S2EARFCN=$(echo "$O" | awk -F[,:] '/^\+RSRP:/ {print $9}')
fi
if [ -n "$S3" ]; then
S3BAND="$(band4g $S3 "") @$BW3 MHz"
S3PCI=$(echo "$O" | awk -F[,:] '/^\+RSRP:/ {print $11}')
S3EARFCN=$(echo "$O" | awk -F[,:] '/^\+RSRP:/ {print $12}')
fi
if [ -n "$S4" ]; then
S4BAND="$(band4g $S4 "") @$BW4 MHz"
S4PCI=$(echo "$O" | awk -F[,:] '/^\+RSRP:/ {print $14}')
S4EARFCN=$(echo "$O" | awk -F[,:] '/^\+RSRP:/ {print $15}')
fi
fi
if [[ "$MODE" != *"LTE-A"* ]]; then
if [ -n "$T" ]; then
MODE="LTE | $(band4g $T "")"
T2=$(echo "$O" | awk -F [:,] '/\+XLEC:/{gsub("\r",""); print $4" "}')
case $T2 in
1*) T4="3";;
2*) T4="5";;
3*) T4="10";;
4*) T4="15";;
5*) T4="20";;
*) T4="0";;
esac
if [ -n "$T4" ]; then
PBAND="$(band4g $T "") @$T4 MHz"
PCI=$(echo "$O" | awk -F[,:] '/^\+RSRP:/ {print $2}')
EARFCN=$(echo "$O" | awk -F[,:] '/^\+RSRP:/ {print $3}')
fi
fi
fi
MODE=$(echo $MODE | sed 's,/,+,')
OT=$(sms_tool -d $DEVICE at "AT+XCCINFO=1;+XCCINFO?")
if [ -n "$OT" ]; then
T=$(echo "$OT" | awk -F[,:] '/^\+XCCINFO:/{print $11}' | xargs)
if [ -n "$T" ]; then
T_DEC=$(printf "%d" "0x$T")
fi
if [ -z "$T_HEX" ]; then
[ -n "$T_DEC" ] && T_HEX=$(printf %0X $T_DEC)
fi
fi
if [ "$REG" == "6" ]; then
REG="1"
fi
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+GTPKGVER?" | xargs)
FW=$(echo "$FWA" | cut -d ":" -f2 | xargs)
MDL=$(sms_tool -d $DEVICE at "AT+GMM?" | xargs)
MODELM=$(echo $MDL | awk -F [:] '/^\+GMM: /{print $2}'| awk -F 'LTE Module' '{print $1}' | xargs)
MODELF=$(sms_tool -d $DEVICE at "AT+CGMI" | xargs)
MODELMCUT=$(echo $MODELM)
MODELFCUT=$(echo $MODELF | awk -F [:] '/^\+CGMI:/{print $2}' | xargs)
MODEL="$MODELFCUT "$MODELMCUT
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+CGSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+CGSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+CCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+CCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCAX=$(echo $PV | awk -F"Vendor=2cb7 ProdID=0007" '{print $2}')
PVCA=$(echo "$PVCAX" | cut -c-2453)
if [ -n "$PVCA" ]; then
case $PVCA in
*"Driver=qmi_wwan"*)
PROTO="qmi"
;;
*"Driver=cdc_ncm"*)
PROTO="ncm"
;;
*"Driver=cdc_mbim"*)
PROTO="mbim"
;;
*"Driver=cdc_ether"*)
PROTO="ecm"
;;
esac
fi
@@ -0,0 +1,205 @@
# Fibocom FM150-AE
O=$(sms_tool -d $DEVICE at "at+gtccinfo?;+gtcainfo?")
if [ "x$MODE" = "xLTE" ]; then
if [[ "$O" == *"SCC"* ]]; then
MODE="LTE_A"
fi
T1=$(echo "$O" | grep -A 3 'LTE service cell' | grep '1,4,'${COPS_MCC}','${COPS_MNC}',')
if [ -n "$T1" ]; then
T=$(echo "$T1" | awk -F, '{print $5}')
if [ -n "$T" ]; then
T_DEC=$(printf "%d" "0x$T")
T_HEX=$T
fi
T=$(echo "$T1" | awk -F, '{print $8}')
if [ -n "$T" ]; then
PCI=$T
fi
T=$(echo "$T1" | awk -F, '{print $7}')
if [ -n "$T" ]; then
EARFCN=$T
fi
T=$(echo "$T1" | awk -F, '{print $11}')
if [ -n "$T" ]; then
if [ $T -ge -100 ] || [ $T -le 100 ]; then
T=$(echo "$T" | awk -F, '{printf "%0.1f", $T/2}')
fi
fi
T=$(echo "$T1" | awk -F, '{print $13}')
if [ -n "$T" ]; then
RSRP=$((T - 141))
fi
T=$(echo "$T1" | awk -F, '{print $14}')
if [ -n "$T" ]; then
T2=$(echo "$T" | awk '{printf "%0.1f", ($1-34)/2-3 }')
RSRQ=$T2
fi
T=$(echo "$T1" | awk -F, '{print $11}')
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
T2=$(echo "$T" | awk '{printf "%0.1f", $1/4+5 }')
SINR=$T2
fi
T=$(echo "$T1" | awk -F, '{print $14}')
if [ -n "$T" ]; then
[ -n "$ADDON" ] && ADDON="$ADDON,"
T2=$(echo "$T" | awk '{printf "%0.1f", $1-110 }')
RSSI=$T2
fi
T=$(echo "$T1" | awk -F, '{print $9}')
if [ -n "$T" ]; then
T=$((T - 100))
case $T in
*"1") MODE="$MODE | "$(band4g 1 "");;
*"2") MODE="$MODE | "$(band4g 2 "");;
*"3") MODE="$MODE | "$(band4g 3 "");;
*"5") MODE="$MODE | "$(band4g 5 "");;
*"7") MODE="$MODE | "$(band4g 7 "");;
*"8") MODE="$MODE | "$(band4g 8 "");;
*"18") MODE="$MODE | "$(band4g 18 "");;
*"19") MODE="$MODE | "$(band4g 19 "");;
*"20") MODE="$MODE | "$(band4g 20 "");;
*"28") MODE="$MODE | "$(band4g 28 "");;
*"32") MODE="$MODE | "$(band4g 32 "");;
*"34") MODE="$MODE | "$(band4g 34 "");;
*"38") MODE="$MODE | "$(band4g 38 "");;
*"39") MODE="$MODE | "$(band4g 39 "");;
*"40") MODE="$MODE | "$(band4g 40 "");;
*"41") MODE="$MODE | "$(band4g 41 "");;
*"42") MODE="$MODE | "$(band4g 42 "");;
*"43") MODE="$MODE | "$(band4g 43 "");;
*) MODE="$MODE / B${T}";;
esac
PBAND="$(band4g $T "")"
fi
fi
T=$(echo "$O" | awk -F[:,] '/^PCC/{print $3}')
if [ -n "$T" ]; then
PCI=$T
fi
T=$(echo "$O" | awk -F[:,] '/^PCC/{print $4}')
if [ -n "$T" ]; then
EARFCN=$T
fi
IFS="
"
IDX=1
LINES=$(echo "$O" | grep -E "^SCC[0-9]: ")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[:,] '/^SCC'$IDX': 1,0/{print $4}')
T=$((T - 100))
case $T in
"1") T2=$(band4g 1 "");;
"2") T2=$(band4g 2 "");;
"3") T2=$(band4g 3 "");;
"5") T2=$(band4g 5 "");;
"7") T2=$(band4g 7 "");;
"8") T2=$(band4g 8 "");;
"18") T2=$(band4g 18 "");;
"19") T2=$(band4g 19 "");;
"20") T2=$(band4g 20 "");;
"28") T2=$(band4g 28 "");;
"32") T2=$(band4g 32 "");;
"34") T2=$(band4g 34 "");;
"38") T2=$(band4g 38 "");;
"39") T2=$(band4g 39 "");;
"40") T2=$(band4g 40 "");;
"41") T2=$(band4g 41 "");;
"42") T2=$(band4g 42 "");;
"43") T2=$(band4g 43 "");;
*) T2="B${T}";;
esac
MODE="$MODE / $T2"
if [ -n "$T" ]; then
case $IDX in
"1") S1BAND="$T2";;
"2") S2BAND="$T2";;
"3") S3BAND="$T2";;
"4") S4BAND="$T2";;
*);;
esac
case $IDX in
"1") S1PCI="$T";;
"2") S2PCI="$T";;
"3") S3PCI="$T";;
"4") S4PCI="$T";;
*);;
esac
fi
T=$(echo "$LINE" | awk -F[:,] '/^SCC'$IDX': 1,0/{print $6}')
if [ -n "$T" ]; then
case $IDX in
"1") S1EARFCN="$T";;
"2") S2EARFCN="$T";;
"3") S3EARFCN="$T";;
"4") S4EARFCN="$T";;
*);;
esac
fi
IDX=$((IDX + 1))
done
fi
MODE=$(echo $MODE | sed "s/LTE_A /LTE-A /g" | sed 's,/,+,')
# Modem
OA=$(sms_tool -d $DEVICE at "AT+CGMM?")
MODELA=$(echo "$OA" | awk -F [:,] '/\+CGMM/{print $2}' | xargs)
OB=$(sms_tool -d $DEVICE at "AT+CGMI?")
MODELB=$(echo "$OB" | awk -F [:,] '/\+CGMI/{print $2}' | xargs)
MODELBCUT=$(echo $MODELB | sed s/"Wireless Inc."//)
MODEL="$MODELBCUT $MODELA"
OF=$(sms_tool -d $DEVICE at "AT+GMR?")
FW=$(echo "$OF" | awk -F[,:] '/\+GMR:/ {print $2}' | xargs)
# International Mobile Equipment Identity (IMEI)
OAA=$(sms_tool -d $DEVICE at "AT+CGSN?")
NR_IMEI=$(echo "$OAA" | awk -F[,:] '/\+CGSN:/ {print $2}' | xargs)
# International Mobile Subscriber Identity (IMSI)
OBB=$(sms_tool -d $DEVICE at "AT+CIMI?")
NR_IMSI=$(echo "$OBB" | awk -F [,:] '/\+CIMI:/ {print $2}' | xargs)
# Integrated Circuit Card Identifier (ICCID)
OCC=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_ICCID=$(echo "$OCC" | awk -F [,:] '/\+ICCID:/ {print $2}' | xargs)
# Temp
OT=$(sms_tool -d $DEVICE at "AT+MTSM=1")
TX=$(echo "$OT" | awk '/\+MTSM:/{print $2}')
if [ -n "$TX" ]; then
TEMP="$TX &deg;C"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=2cb7 ProdID=0104' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,176 @@
# Fibocom modems with ProdID=0105
# NL952-EAU in ECM mode (LTE CAT18)
O=$(sms_tool -d $DEVICE at "AT+GTCCINFO?;+GTCAINFO?")
if [ "x$MODE" = "xLTE" ]; then
if [[ "$O" == *"SCC"* ]]; then
MODE="LTE_A"
fi
T1=$(echo "$O" | grep -A 3 'LTE service cell' | grep '1,4,'${COPS_MCC}','${COPS_MNC}',')
if [ -n "$T1" ]; then
T=$(echo "$T1" | awk -F, '{print $5}')
if [ -n "$T" ]; then
T_DEC=$(printf "%d" "0x$T")
T_HEX=$T
LAC_DEC=""
LAC_HEX=""
fi
T=$(echo "$T1" | awk -F, '{print $7}')
if [ -n "$T" ]; then
EARFCN=$T
fi
T=$(echo "$T1" | awk -F, '{print $8}')
if [ -n "$T" ]; then
PCI=$T
fi
T=$(echo "$T1" | awk -F, '{print $9}')
if [ -n "$T" ]; then
T=$((T - 100))
MODE="$MODE | $(band4g $T)"
PBAND="$(band4g $T "")"
fi
T=$(echo "$T1" | awk -F, '{print $11}')
if [ -n "$T" ]; then
T2=$(echo "$T" | awk '{printf "%0.1f", $1/2 }')
SINR=$T2
fi
T=$(echo "$T1" | awk -F, '{print $13}')
if [ -n "$T" ]; then
RSRP=$((T - 141))
fi
T=$(echo "$T1" | awk -F, '{print $14}')
if [ -n "$T" ]; then
T2=$(echo "$T" | awk '{printf "%0.1f", ($1-34)/2-3 }')
RSRQ=$T2
fi
if [ -n "$CSQ" ]; then
RSSI=$((2 * $CSQ -113))
fi
fi
T=$(echo "$O" | awk -F[:,] '/^PCC/{print $3}')
if [ -n "$T" ]; then
PCI=$T
fi
T=$(echo "$O" | awk -F[:,] '/^PCC/{print $4}')
if [ -n "$T" ]; then
EARFCN=$T
fi
IFS="
"
IDX=1
LINES=$(echo "$O" | grep -E "^SCC[0-9]: 2")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[:,] '/^SCC'$IDX': 2,./{print $4}')
T=$((T - 100))
T2=$(band4g $T)
MODE="$MODE / $T2"
if [ -n "$T" ]; then
case $IDX in
"1") S1BAND="$T2";;
"2") S2BAND="$T2";;
"3") S3BAND="$T2";;
"4") S4BAND="$T2";;
*);;
esac
case $IDX in
"1") S1PCI="$T";;
"2") S2PCI="$T";;
"3") S3PCI="$T";;
"4") S4PCI="$T";;
*);;
esac
fi
T=$(echo "$LINE" | awk -F[:,] '/^SCC'$IDX': 2,./{print $6}')
if [ -n "$T" ]; then
case $IDX in
"1") S1EARFCN="$T";;
"2") S2EARFCN="$T";;
"3") S3EARFCN="$T";;
"4") S4EARFCN="$T";;
*);;
esac
fi
IDX=$((IDX + 1))
done
fi
MODE=$(echo $MODE | sed "s/LTE_A /LTE-A /g" | sed 's,/,+,')
# Modem
OA=$(sms_tool -d $DEVICE at "AT+CGMM?")
MODELA=$(echo "$OA" | awk -F [:,] '/\+CGMM/{print $2}' | xargs)
OB=$(sms_tool -d $DEVICE at "AT+CGMI?")
MODELB=$(echo "$OB" | awk -F [:,] '/\+CGMI/{print $2}' | xargs)
MODELBCUT=$(echo $MODELB | sed s/"Wireless Inc."//)
MODEL="$MODELBCUT $MODELA"
OF=$(sms_tool -d $DEVICE at "AT+GMR?")
FW=$(echo "$OF" | awk -F[,:] '/\+GMR:/ {print $2}' | xargs)
# International Mobile Equipment Identity (IMEI)
OAA=$(sms_tool -d $DEVICE at "AT+CGSN?")
NR_IMEI=$(echo "$OAA" | awk -F[,:] '/\+CGSN:/ {print $2}' | xargs)
# International Mobile Subscriber Identity (IMSI)
OBB=$(sms_tool -d $DEVICE at "AT+CIMI?")
NR_IMSI=$(echo "$OBB" | awk -F [,:] '/\+CIMI:/ {print $2}' | xargs)
# Integrated Circuit Card Identifier (ICCID)
OCC=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_ICCID=$(echo "$OCC" | awk -F [,:] '/\+ICCID:/ {print $2}' | xargs)
# Temp
OT=$(sms_tool -d $DEVICE at "AT+MTSM=1")
TM=$(echo "$OT" | awk '/\+MTSM:/{print $2}')
if [ -n "$TM" ]; then
TEMP="$TM &deg;C"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
TTY=$(basename $DEVICE)
devpath=$(readlink -f /sys/class/tty/$TTY/device)
BASE=$(readlink -f ${devpath%/*/*})
NETIF=$(for a in /sys/class/net/*; do readlink -f $a; done | grep "$BASE")
NETDRV=$(basename $(readlink -f $NETIF/../../driver))
case $NETDRV in
"qmi_wwan")
PROTO="QMI";;
"cdc_mbim")
PROTO="MBIM";;
"cdc_ether")
PROTO="ECM";;
esac
#PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
#PVCUT=$(echo $PV | awk -F 'Vendor=2cb7 ProdID=0105' '{print $2}' | cut -c-1290)
#if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
#then
# PROTO="qmi"
#elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
#then
# PROTO="mbim"
#elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
#then
# PROTO="ecm"
#fi
@@ -0,0 +1,88 @@
# Mikrotik R11e-LTE6
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "at+cesq;+zcainfo?;+zpas?;+zcellinfo?")
T=$(echo "$O" | awk -F[,:] '/^\+CESQ/ {print $2}' | xargs)
if [ -n "$T" ]; then
[ "$T" != "99" ] && RSSI="$((T - 111))"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CESQ/ {print $4}' | xargs)
#if [ -n "$T" ]; then
# [ "$T" != "255" ] && addon 35 "RSCP" "$((T - 121)) dBm"
#fi
T=$(echo "$O" | awk -F[,:] '/^\+CESQ/ {print $5}' | xargs)
#if [ -n "$T" ]; then
# if [ "$T" != "255" ]; then
# T=$(echo "$T" | awk '{printf "%.1f", -1 * (24.5 - $1 * 0.5)}')
# addon 36 "ECIO" "$T dB"
# fi
#fi
T=$(echo "$O" | awk -F[,:] '/^\+CESQ/ {print $7}' | xargs)
if [ -n "$T" ]; then
[ "$T" != "255" ] && RSRP="$((T - 141))"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CESQ/ {print $6}' | xargs)
if [ -n "$T" ]; then
if [ "$T" != "255" ]; then
T=$(echo "$T" | awk '{printf "%.1f", -1 * (20 - $1 * 0.5)}')
RSRQ="$T"
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+ZPAS/ {print $2}' | xargs)
[ -n "$T" ] && MODE=$T
case "$MODE_NUM" in
7*)
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $4}' | xargs)
MODE="$MODE $(band4g ${T/LTE B/})"
PBAND="$(band4g ${T/LTE B/})"
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $3}' | xargs)
PCI="$T"
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $5}' | xargs)
EARFCN="$T"
;;
9*)
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $4}' | xargs)
MODE="$MODE $(band4g ${T/LTE B/})"
if [ -n "$T" ] && [ "$T" != "0" ]; then
PBAND="$(band4g ${T/LTE B/})"
fi
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO: /{print $6}')
if [ -n "$T" ] && [ "$T" != "0" ]; then
DBW="$T MHz"
PBAND="$PBAND @$DBW"
fi
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO: /{print $2}' | xargs)
if [ -n "$T" ] && [ "$T" != "0" ]; then
PCI="$T"
fi
T=$(echo "$O" | awk -F[,:] '/^\+ZCAINFO: /{print $5}')
if [ -n "$T" ] && [ "$T" != "0" ]; then
EARFCN="$T"
fi
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO: /{print $13}')
if [ -n "$T" ] && [ "$T" != "0" ]; then
MODE="$MODE / $(band4g ${T})"
S1BAND="$(band4g ${T})"
fi
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO: /{print $15}')
if [ -n "$T" ] && [ "$T" != "0" ]; then
S1DBW="$T MHz"
S1BAND="$S1BAND @$S1DBW"
fi
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO: /{print $11}')
if [ -n "$T" ] && [ "$T" != "0" ]; then
S1PCI="$T"
fi
T=$(echo "$O" | awk -F[,:\;] '/^\+ZCAINFO: /{print $14}')
if [ -n "$T" ] && [ "$T" != "0" ]; then
S1EARFCN="$T"
fi
;;
esac
fi
@@ -0,0 +1,101 @@
# Mikrotik R11e-LTE6
O=$(sms_tool -d $DEVICE at "at+cesq;+zcainfo?;+zpas?;+zcellinfo?")
T=$(echo "$O" | awk -F[,:] '/^\+CESQ/ {print $2}' | xargs)
if [ -n "$T" ]; then
[ "$T" != "99" ] && RSSI="$((T - 111))"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CESQ/ {print $4}' | xargs)
if [ -n "$T" ]; then
[ "$T" != "255" ] && RSCP="$((T - 121))"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CESQ/ {print $5}' | xargs)
if [ -n "$T" ]; then
if [ "$T" != "255" ]; then
T=$(echo "$T" | awk '{printf "%.1f", -1 * (24.5 - $1 * 0.5)}')
ECIO="$T dB"
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+CESQ/ {print $7}' | xargs)
if [ -n "$T" ]; then
[ "$T" != "255" ] && RSRP="$((T - 141))"
fi
T=$(echo "$O" | awk -F[,:] '/^\+CESQ/ {print $6}' | xargs)
if [ -n "$T" ]; then
if [ "$T" != "255" ]; then
T=$(echo "$T" | awk '{printf "%.1f", -1 * (20 - $1 * 0.5)}')
RSRQ="$T"
SINR=""
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+ZPAS/ {print $2}' | xargs)
if [ -n "$T" ]; then
MODE=$T
T=$(echo "$O" | awk -F[,:] '/^\+ZCELLINFO/ {print $4}' | xargs)
if [ "x$MODE_NUM" = "x7" ] || [ "x$MODE_NUM" = "x9" ]; then
MODE="$MODE $(band4g ${T/LTE B/})"
PBAND="$(band4g ${T/LTE B/})"
else
MODE="$MODE $T"
PBAND="$(band4g ${T})"
fi
fi
case "$MODE_NUM" in
9*)
T=$(echo "$O" | awk -F[,] '/^\+ZCAINFO: /{print $11}')
if [ -n "$T" ]; then
if [ "$T" != "0" ]; then
MODE="$MODE / $(band4g ${T})"
S1BAND="$(band4g ${T})"
fi
fi
;;
esac
MODE=$(echo $MODE | sed 's,/,+,' | sed "s/LTE_A/LTE-A | /g")
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+CGMR" | xargs)
FW=$(echo $FWA | sed s/"AT+CGMR"//)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | xargs)
MODELACUT=$(echo $MODELA | awk -F [:] '/^\+CGMM:/{print $2}' | xargs)
MODELBCUT=$(echo $MODELB | awk -F [:] '/^\+CGMI:/{print $2}' | xargs)
MODEL="$MODELBCUT "$MODELACUT
# LAC & TAC
T_HEX=$LAC_HEX
T_DEC=$LAC_DEC
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+CGSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+CGSN"//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI"//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT*ICCID?")
NR_D=$(echo "$O" | awk -F [:] '/^\*ICCID:/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=2cd2 ProdID=0004' '{print $2}' | cut -c-1220)
if echo "$PVCUT" | grep -q "Driver=rndis_host"
then
PROTO="ncm"
fi
@@ -0,0 +1,103 @@
# DW5809e Dell Wireless 5809e Gobi 4G LTE Mobile Broadband Card (EM7305)
# DW5811e Snapdragon X7 LTE (EM7455B)
# Sierra Wireless EM7455
O=$(sms_tool -d $DEVICE at "at!gstatus?")
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk '/.*TAC:/ {print $5}')
if [ -n "$T" ]; then
T_DEC=$(printf "%d" "0x$T")
T_HEX="$T"
fi
T=$(echo "$O" | awk '/^PCC.*RSSI/ {print $4}' | xargs)
[ -n "$T" ] && RSSI="$(echo "${T// //}" | sed 's,/.*,,')"
T=$(echo "$O" | awk '/^PCC.*RSRP/ {print $7}' | xargs)
[ -n "$T" ] && RSRP="$(echo "${T// //}" | sed 's,/.*,,')"
T=$(echo "$O" | awk '/^RSRQ/ {print $3}')
[ -n "$T" ] && RSRQ="$T"
T=$(echo "$O" | awk '/^SINR/ {print $3}')
[ -n "$T" ] && SINR="$T"
T=$(echo "$O" | awk '/^LTE band:/ {print $3}')
if [ -n "$T" ]; then
T1=$(echo "$O" | awk '/^LTE band:/ {print $6}')
PBAND="$(band4g ${T/B/}) @${T1} MHz"
MODE="$MODE $(band4g ${T/B/})"
fi
T=$(echo "$O" | awk -F: '/^LTE CA state:.*ACTIVE/ {print $3}')
if [ -n "$T" ]; then
T1=$(echo "$O" | awk '/^LTE Scell bw:/ {print $3}')
if [ -n "$T1" ]; then
S1BAND="$(band4g ${T/B/}) @${T1#bw:} MHz"
else
S1BAND="$(band4g ${T/B/})"
fi
MODE="${MODE/LTE/LTE_A} / $(band4g ${T/B/})"
T=$(echo "$O" | awk '/.*LTE Scell chan:/ {print $7}')
[ -n "$T" ] && EARFCN="${T#chan:}"
T=$(echo "$O" | awk '/^SCC.*RSSI/ {print $4}' | xargs)
[ -n "$T" ] && RSSI=$(echo "${T// //}" | sed 's,/.*,,')
T=$(echo "$O" | awk '/^SCC.*RSRP/ {print $7}' | xargs)
[ -n "$T" ] && RSRP=$(echo "${T// //}" | sed 's,/.*,,')
fi
fi
T=$(echo "$O" | awk -F: '/Temperature:/ {print $3}' | xargs)
if [ -n "$T" ]; then
TEMP="$T &deg;C"
fi
MODE=$(echo $MODE | sed "s/LTE_A/LTE-A |/g" | sed 's,/,+,')
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+CGMR" | tr -s "\n" | xargs)
FW=$(echo $FWA | sed s/"AT+CGMR "//)
MODELA=$(sms_tool -d $DEVICE at "AT+CGMM" | tr -s "\n" | xargs)
MODELB=$(sms_tool -d $DEVICE at "AT+CGMI" | tr -s "\n" | xargs)
MODELACUT=$(echo $MODELA | sed s/"AT+CGMM "//)
MODELBCUT=$(echo $MODELB | sed s/"AT+CGMI "// | cut -f1 -d",")
MODEL="$MODELBCUT "$MODELACUT
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+CGSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+CGSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID")
NR_D=$(echo "$O" | awk -F[,:] '/^ICCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCUT=$(echo $PV | awk -F 'Vendor=413c ProdID=81b6' '{print $2}' | cut -c-1290)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
@@ -0,0 +1,221 @@
# DW5821e Snapdragon X20 LTE
O=$(sms_tool -d $DEVICE at "at+temp")
T=$(echo "$O" | awk -F: '/xo_therm_buf:/ {print $2}' | xargs)
if [ -n "$T" ]; then
TEMP="$T &deg;C"
else
O=$(sms_tool -d $DEVICE at "at^temp?")
T=$(echo "$O" | awk '{gsub("C","");print $2}' | sort -r | head -n 1)
[ -n "$T" ] && TEMP="$T &deg;C"
fi
O=$(sms_tool -d $DEVICE at "at^ca_info?;^debug?")
O1=$(echo "$O" | sed -n '/^RAT:/,/^SCell1:/p')
[ -z "$O1" ] && O1=$(echo "$O" | sed -n '/^EARFCN/,/^SCell1:/p')
T=$(echo "$O1" | awk '/TAC:/ {print $2}')
if [ -n "$T" ]; then
T_DEC=$(printf "%d" "0x$T")
T_HEX=$T
fi
T=$(echo "$O" | awk '/^RSSI:/ {print $2}' | sed 's/dBm//')
[ -n "$T" ] && RSSI=$T
T=$(echo "$O" | awk '/^RSRP:/ {print $2}' | sed 's/dBm//')
[ -n "$T" ] && RSRP=$T
T=$(echo "$O" | awk '/^RSRQ:/ {print $2}' | sed 's/dB//')
[ -n "$T" ] && RSRQ=$T
T=$(echo "$O" | awk '/^RS-SINR/ {print $2}' | sed 's/dB//')
[ -n "$T" ] && SINR=$T
T=$(echo "$O" | awk '/^RS-SNR/ {print $2}' | sed 's/dB//')
[ -n "$T" ] && SINR=$T
# SNR > SINR
T=$(echo "$O1" | awk '/^BAND:/ {print $2}')
if [ -n "$T" ]; then
B=$(band4g $T)
PBAND="$B"
MODE="$MODE $B"
fi
T=$(echo "$O1" | awk '/^BW:/ {print $2}')
[ -n "$T" ] && PBAND="$PBAND @$T MHz"
T=$(echo "$O1" | awk -F[\(\)] '/^eNB ID\(PCI\)/ {print $4}')
[ -n "$T" ] && PCI="$T"
T=$(echo "$O1" | awk '/^EARFCN/ {print $2}' | xargs)
if [ -n "$T" ]; then
EARFCN="$(echo $T | cut -f1 -d/)"
# addon 34 "EARFCN DL" "$(echo $T | cut -f1 -d/)"
# addon 34 "EARFCN UL" "$(echo $T | cut -f2 -d/)"
fi
T=$(echo "$O" | awk '/^SCC1 info:/ {print $5}')
if [ -n "$T" ]; then
T=${T/,/}
T=${T/LTE_B/}
S1BAND="$(band4g $T)"
MODE="${MODE/LTE/LTE_A} / $(band4g $T)"
T=$(echo "$O" | awk '/^SCC1 info:/ {print $8}')
[ -n "$T" ] && S1BAND="$S1BAND @$T MHz"
O1=$(echo "$O" | sed -n '/^SCell1:/,/^SCell2:/p')
T=$(echo "$O1" | awk -F [:,\ ] '/^EARFCN/{print $2}')
[ -n "$T" ] && S1EARFCN="$T"
T=$(echo "$O1" | awk -F [:,\ ] '/^EARFCN/{print $4}' | xargs)
[ -n "$T" ] && S1PCI="$T"
T=$(echo "$O1" | awk -F [:,] '/^RSRP/{print $2}' | sed 's/dBm//')
# [ -n "$T" ] && addon 56 "(S1) RSRP" "$T"
T=$(echo "$O1" | awk -F [:,] '/^RSRP/{print $4}' | xargs | sed 's/dB//')
# [ -n "$T" ] && addon 57 "(S1) RSRQ" "$T"
T=$(echo "$O1" | awk -F [:,] '/^RSSI/{print $2}' | sed 's/dBm//')
# [ -n "$T" ] && addon 55 "(S1) RSSI" "$T"
T=$(echo "$O1" | awk -F [:,] '/^RSSI/{print $4}' | xargs | sed 's/dB//')
# [ -n "$T" ] && addon 58 "(S1) SNR" "$T"
fi
T=$(echo "$O" | awk '/^SCC2 info:/ {print $5}')
if [ -n "$T" ]; then
T=${T/,/}
T=${T/LTE_B/}
S2BAND="$(band4g $T)"
MODE="${MODE} / $(band4g $T)"
T=$(echo "$O" | awk '/^SCC2 info:/ {print $8}')
[ -n "$T" ] && S2BAND="$S2BAND @$T MHz"
O1=$(echo "$O" | sed -n '/^SCell2:/,/^SCell3:/p')
T=$(echo "$O1" | awk -F [:,\ ] '/^EARFCN/{print $2}')
[ -n "$T" ] && S2EARFCN="$T"
T=$(echo "$O1" | awk -F [:,\ ] '/^EARFCN/{print $4}' | xargs)
[ -n "$T" ] && S2PCI="$T"
T=$(echo "$O1" | awk -F [:,] '/^RSRP/{print $2}' | sed 's/dBm/ dBm/')
# [ -n "$T" ] && addon 66 "(S2) RSRP" "$T"
T=$(echo "$O1" | awk -F [:,] '/^RSRP/{print $4}' | xargs | sed 's/dB/ dB/')
# [ -n "$T" ] && addon 67 "(S2) RSRQ" "$T"
T=$(echo "$O1" | awk -F [:,] '/^RSSI/{print $2}' | sed 's/dBm/ dBm/')
# [ -n "$T" ] && addon 65 "(S2) RSSI" "$T"
T=$(echo "$O1" | awk -F [:,] '/^RSSI/{print $4}' | xargs | sed 's/dB/ dB/')
# [ -n "$T" ] && addon 68 "(S2) SNR" "$T"
fi
T=$(echo "$O" | awk '/^SCC3 info:/ {print $5}')
if [ -n "$T" ]; then
T=${T/,/}
T=${T/LTE_B/}
S3BAND="$(band4g $T)"
MODE="${MODE} / $(band4g $T)"
T=$(echo "$O" | awk '/^SCC3 info:/ {print $8}')
[ -n "$T" ] && S3BAND="$S3BAND @$T MHz"
O1=$(echo "$O" | sed -n '/^SCell3:/,/^SCell4:/p')
T=$(echo "$O1" | awk -F [:,\ ] '/^EARFCN/{print $2}')
[ -n "$T" ] && S3EARFCN="$T"
T=$(echo "$O1" | awk -F [:,\ ] '/^EARFCN/{print $4}' | xargs)
[ -n "$T" ] && S3PCI="$T"
T=$(echo "$O1" | awk -F [:,] '/^RSRP/{print $2}' | sed 's/dBm/ dBm/')
# [ -n "$T" ] && addon 66 "(S3) RSRP" "$T"
T=$(echo "$O1" | awk -F [:,] '/^RSRP/{print $4}' | xargs | sed 's/dB/ dB/')
# [ -n "$T" ] && addon 67 "(S3) RSRQ" "$T"
T=$(echo "$O1" | awk -F [:,] '/^RSSI/{print $2}' | sed 's/dBm/ dBm/')
# [ -n "$T" ] && addon 65 "(S3) RSSI" "$T"
T=$(echo "$O1" | awk -F [:,] '/^RSSI/{print $4}' | xargs | sed 's/dB/ dB/')
# [ -n "$T" ] && addon 68 "(S3) SNR" "$T"
fi
T=$(echo "$O" | awk '/^SCC4 info:/ {print $5}')
if [ -n "$T" ]; then
T=${T/,/}
T=${T/LTE_B/}
S4BAND="$(band4g $T)"
MODE="${MODE} / $(band4g $T)"
T=$(echo "$O" | awk '/^SCC4 info:/ {print $8}')
[ -n "$T" ] && S4BAND="$S4BAND @$T MHz"
O1=$(echo "$O" | sed -n '/^SCell4:/,/^SCell5:/p')
T=$(echo "$O1" | awk -F [:,\ ] '/^EARFCN/{print $2}')
[ -n "$T" ] && S4EARFCN="$T"
T=$(echo "$O1" | awk -F [:,\ ] '/^EARFCN/{print $4}' | xargs)
[ -n "$T" ] && S4PCI="$T"
T=$(echo "$O1" | awk -F [:,] '/^RSRP/{print $2}' | sed 's/dBm/ dBm/')
# [ -n "$T" ] && addon 66 "(S4) RSRP" "$T"
T=$(echo "$O1" | awk -F [:,] '/^RSRP/{print $4}' | xargs | sed 's/dB/ dB/')
# [ -n "$T" ] && addon 67 "(S4) RSRQ" "$T"
T=$(echo "$O1" | awk -F [:,] '/^RSSI/{print $2}' | sed 's/dBm/ dBm/')
# [ -n "$T" ] && addon 65 "(S4) RSSI" "$T"
T=$(echo "$O1" | awk -F [:,] '/^RSSI/{print $4}' | xargs | sed 's/dB/ dB/')
# [ -n "$T" ] && addon 68 "(S4) SNR" "$T"
fi
MODE=$(echo $MODE | sed 's,/,+,' | sed 's,LTE_A,LTE-A | ,' | sed 's,LTE B,LTE | B,')
# Cell ID & LAC & TAC
LAC_HEX=$(printf "%X" $LAC_DEC)
if [ -n "$LAC_DEC" ]; then
TAC_HEX=$LAC_HEX
fi
CID_HEX=$(printf "%X" $CID_DEC)
if [ -z "$TAC_DEC" ]
then
[ -n "$TAC_HEX" ] && TAC_DEC=$(echo $((0x$TAC_HEX)))
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices)
PVCUT=$(echo $PV | awk -F 'Vendor=413c ProdID=81d7' '{print $2}' | cut -c-1520)
if echo "$PVCUT" | grep -q "Driver=qmi_wwan"
then
PROTO="qmi"
elif echo "$PVCUT" | grep -q "Driver=cdc_mbim"
then
PROTO="mbim"
elif echo "$PVCUT" | grep -q "Driver=cdc_ether"
then
PROTO="ecm"
fi
# Modem
PVMODEL=$(echo $PV | awk -F 'Vendor=413c ProdID=81d7' '{print $2}' | cut -c-150)
if [ -z "$MODEL" ]
then
MODELBCUT=$(echo $PVMODEL | awk -F 'Manufacturer=|S: Product=' '{print $2}' | sed s/"Inc. "// | xargs)
MODELACUT=$(echo $PVMODEL | awk -F 'Product=| S: SerialNumber' '{print $2}'| xargs)
MODEL="$MODELBCUT "$MODELACUT
# MODELC="$MODELBCUT "$MODELACUT
# MODEL=$(echo "$MODELC" | awk '{for (i=1;i<=NF;i++) if (!a[$i]++) printf("%s%s",$i,FS)}{printf("\n")}' | tr -d '\r\n')
fi
# FW
OF=$(sms_tool -d $DEVICE at "ati")
DEV2=$(echo $OF | tr -s "\n" | xargs)
FW=$(echo $DEV2 | awk -F 'Revision: | IMEI: ' '{print $2}' | cut -c-50)
T=$(echo "$O" | awk -F ': ' '/ICCID:/ {print $2}')
if [ -n "$T" ]; then
NR_ICCID="$T"
fi
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+GSN" | xargs)
NR_I=$(echo "$O")
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O")
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+ICCID" | xargs)
NR_D=$(echo "$O" | awk -F [:] '/^\ICCID:/{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
@@ -0,0 +1,488 @@
# Fibocom L860
bandwidth() {
case $1 in
0) echo "1.4";;
1) echo "3";;
2) echo "5";;
3) echo "10";;
4) echo "15";;
5) echo "20";;
*) echo "";;
esac
}
channeltoband()
{
if [ $1 -ge 0 ] && [ $1 -le 599 ]; then
echo "1"
elif [ $1 -ge 600 ] && [ $1 -le 1199 ]; then
echo "2"
elif [ $1 -ge 1200 ] && [ $1 -le 1949 ]; then
echo "3"
elif [ $1 -ge 1950] && [ $1 -le 2399 ]; then
echo "4"
elif [ $1 -ge 2400] && [ $1 -le 2469 ]; then
echo "5"
elif [ $1 -ge 2750 ] && [ $1 -le 3449 ]; then
echo "7"
elif [ $1 -ge 3450 ] && [ $1 -le 3799 ]; then
echo "8"
elif [ $1 -ge 6150 ] && [ $1 -le 6449 ]; then
echo "20"
elif [ $1 -ge 9210 ] && [ $1 -le 9659 ]; then
echo "28"
elif [ $1 -ge 9870 ] && [ $1 -le 9919 ]; then
echo "31"
elif [ $1 -ge 37750 ] && [ $1 -le 38249 ]; then
echo "38"
elif [ $1 -ge 38650 ] && [ $1 -le 39649 ]; then
echo "40"
else
echo "0"
fi
}
O=$(sms_tool -d $DEVICE at "AT+MTSM=1")
T=$(echo "$O" | awk -F: '/^\+MTSM:/ {print $2}' | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "AT+XLEC?;+XMCI=1;+XCCINFO=1;+XCCINFO?")
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+XCCINFO:/{print $11}' | xargs)
if [ -n "$T" ]; then
T_DEC=$(printf "%d" "0x$T")
fi
PB=""
S1B=""
S2B=""
S3B=""
S4B=""
BWP=""
BWS1=""
BWS2=""
BWS3=""
BWS4=""
CELLS=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $3}')
[ -z "$CELLS" ] && CELLS=0
case $CELLS in
"1")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $4}')
BWP=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $5}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
PB=$(band4g ${T/BAND_LTE_/})
if [ -z "$BWP" ]; then
PBAND="$PB"
else
PBAND="$PB @${BWP} MHz"
fi
MODE="$MODE $PB"
fi
;;
"2")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $4}')
BWP=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $5}')
BWS1=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $6}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
PB=$(band4g ${T/BAND_LTE_/})
if [ -z "$BWP" ]; then
PBAND="$(band4g ${T/BAND_LTE_/})"
else
PBAND="$(band4g ${T/BAND_LTE_/}) @${BWP} MHz"
fi
MODE="$MODE $PB"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $7}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S1B=$(band4g $T)
if [ -z "$BWS1" ]; then
S1BAND="$S1B"
else
S1BAND="$S1B @${BWS1} MHz"
fi
MODE="${MODE/LTE/LTE_A} / $S1B"
fi
;;
"3")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $4}')
BWP=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $5}')
BWS1=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $6}')
BWS2=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $7}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
PB=$(band4g ${T/BAND_LTE_/})
if [ -z "$BWP" ]; then
PBAND="$(band4g ${T/BAND_LTE_/})"
else
PBAND="$(band4g ${T/BAND_LTE_/}) @${BWP} MHz"
fi
MODE="$MODE $PB"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $8}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S1B=$(band4g $T)
if [ -z "$BWS1" ]; then
S1BAND="$S1B"
else
S1BAND="$S1B @${BWS1} MHz"
fi
MODE="${MODE/LTE/LTE_A} / $S1B"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $9}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S2B=$(band4g $T)
if [ -z "$BWS2" ]; then
S2BAND="$S2B"
else
S2BAND="$S2B @${BWS2} MHz"
fi
MODE="$MODE / $S2B"
fi
;;
"4")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $4}')
BWP=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $5}')
BWS1=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $6}')
BWS2=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $7}')
BWS3=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $8}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
PB=$(band4g ${T/BAND_LTE_/})
if [ -z "$BWP" ]; then
PBAND="$PB"
else
PBAND="$PB @${BWP} MHz"
fi
MODE="$MODE $PB"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $9}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S1B=$(band4g $T)
if [ -z "$BWS1" ]; then
S1BAND="$S1B"
else
S1BAND="$S1B @${BWS1} MHz"
fi
MODE="${MODE/LTE/LTE_A} / $S1B"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $10}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S2B=$(band4g $T)
if [ -z "$BWS2" ]; then
S2BAND="$S2B"
else
S2BAND="$S2B @${BWS2} MHz"
fi
MODE="$MODE / $S2B"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $11}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S3B=$(band4g $T)
if [ -z "$BWS3" ]; then
S3BAND="$S3B"
else
S3BAND="$S3B @${BWS3} MHz"
fi
MODE="$MODE / $S3B"
fi
;;
"5")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $4}')
BWP=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $5}')
BWS1=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $6}')
BWS2=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $7}')
BWS3=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $8}')
BWS4=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $9}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
PB=$(band4g ${T/BAND_LTE_/})
if [ -z "$BWP" ]; then
PBAND="$PB"
else
PBAND="$PB @${BWP} MHz"
fi
MODE="$MODE $PB"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $10}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S1B=$(band4g $T)
if [ -z "$BWS1" ]; then
S1BAND="$S1B"
else
S1BAND="$S1B @${BWS1} MHz"
fi
MODE="${MODE/LTE/LTE_A} / $S1B"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $11}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S2B=$(band4g $T)
if [ -z "$BWS2" ]; then
S2BAND="S2B"
else
S2BAND="S2B @${BWS2} MHz"
fi
MODE="$MODE / $S2B"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $12}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S3B=$(band4g $T)
if [ -z "$BWS3" ]; then
S3BAND="$S3B"
else
S3BAND="$S3B @${BWS3} MHz"
fi
MODE="$MODE / $S3B"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $13}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S4B=$(band4g $T)
if [ -z "$BWS4" ]; then
S4BAND="$S4B"
else
S4BAND="$S4B @${BWS4} MHz"
fi
MODE="$MODE / $S4B"
fi
;;
esac
T=$(echo "$O" | awk -F[,:] '/^\+XMCI: 4/{print $7}' | xargs)
if [ -n "$T" ]; then
PCI="$(printf "%d" "$T")"
T=$(echo "$O" | awk -F[,:] '/^\+XMCI: 4/{print $8}' | xargs)
if [ "$T" != "0xFFFFFFFF" ]; then
# EARFCN DL
EARFCN="$(printf "%d" "$T")"
if [ -z "$PB" ]; then
T1=$(channeltoband $(printf "%d" "$T"))
PB=$(band4g $T1)
if [ -z "$BWP" ]; then
PBAND="$PB"
else
PBAND="$PB @${BWP} MHz"
fi
MODE="$MODE $PB"
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+XMCI: 4/{print $9}' | xargs)
# [ "$T" != "0xFFFFFFFF" ] && addon 34 "EARFCN UL" "$(printf "%d" "$T")"
T=$(echo "$O" | awk -F[,:] '/^\+XMCI: 4/{print $11}')
if [ "$T" != "255" ]; then
RSRP="$((-141 + T))"
N=""
case $BWP in
"1.4") N=6;;
"3") N=15;;
"5") N=25;;
"10") N=50;;
"15") N=75;;
"20") N=100;;
esac
if [ -n "$N" ]; then
RSSI=$(echo "$((-141 + T)) $N" | awk '{printf "%d\n", $1 + 10*log(12*$2)/log(10)}')
if [ -n "$RSSI" ]; then
[ $RSSI -lt -113 ] && RSSI="-113"
[ $RSSI -gt -51 ] && RSSI="-51"
RSSI="$RSSI"
CSQ_PER=$(((RSSI + 113) * 100 / 62))
fi
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+XMCI: 4/{print $12}')
[ "$T" != "255" ] && RSRQ="$((-20 + T/2))"
# SNR
# T=$(echo "$O" | awk -F[,:] '/^\+XMCI: 4/{print $13}')
# [ "$T" != "255" ] && SNR="$T"
# SINR
SINR=$(echo "$O" | awk -F [:,] '/\+XMCI: 4/{gsub(/"/,""); printf "%.0f\n", $13/4+5}')
fi
IFS="
"
IDX=1
LINES=$(echo "$O" | grep "+XMCI: 5")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+XMCI: 5/{print $7}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$(printf "%d" "$T")";;
2) S2PCI="$(printf "%d" "$T")";;
3) S3PCI="$(printf "%d" "$T")";;
4) S4PCI="$(printf "%d" "$T")";;
*) ;;
esac
T=$(echo "$LINE" | awk -F[,:] '/^\+XMCI: 5/{print $8}' | xargs)
if [ "$T" != "0xFFFFFFFF" ]; then
# EARFCN DL
case $IDX in
1) S1EARFCN="$(printf "%d" "$T")";;
2) S2EARFCN="$(printf "%d" "$T")";;
3) S3EARFCN="$(printf "%d" "$T")";;
4) S4EARFCN="$(printf "%d" "$T")";;
*) ;;
esac
case $IDX in
1)
if [ -z "$S1B" ]; then
T1=$(channeltoband $(printf "%d" "$T"))
S1B=$(band4g $T1)
if [ -z "$BWS1" ]; then
S1BAND="$S1B"
else
S1BAND="$S1B @${BWS1} MHz"
fi
MODE="${MODE/LTE/LTE_A} / $S1B"
fi
;;
2)
if [ -z "$S2B" ]; then
T1=$(channeltoband $(printf "%d" "$T"))
S2B=$(band4g $T1)
if [ -z "$BWS2" ]; then
S2BAND="$S2B"
else
S2BAND="$S2B @${BWS2} MHz"
fi
MODE="$MODE / $S2B"
fi
;;
3)
if [ -z "$S3B" ]; then
T1=$(channeltoband $(printf "%d" "$T"))
S3B=$(band4g $T1)
if [ -z "$BWS3" ]; then
S3BAND="$S3B"
else
S3BAND="$S3B @${BWS3} MHz"
fi
MODE="$MODE / $S3B"
fi
;;
4)
if [ -z "$S4B" ]; then
T1=$(channeltoband $(printf "%d" "$T"))
S4B=$(band4g $T1)
if [ -z "$BWS4" ]; then
S4BAND="$S4B"
else
S4BAND="$S4B @${BWS4} MHz"
fi
MODE="$MODE / $S4B"
fi
;;
esac
fi
# T=$(echo "$LINE" | awk -F[,:] '/^\+XMCI: 5/{print $9}' | xargs)
# [ "$T" != "0xFFFFFFFF" ] && addon $((POS + 4)) "(S${IDX}) EARFCN UL" "$(printf "%d" "$T")"
# T=$(echo "$LINE" | awk -F[,:] '/^\+XMCI: 5/{print $11}')
# [ "$T" != "255" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$((-141 + T)) dBm"
# T=$(echo "$LINE" | awk -F[,:] '/^\+XMCI: 5/{print $12}')
# [ "$T" != "255" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$((-20 + T/2)) dB"
# T=$(echo "$LINE" | awk -F[,:] '/^\+XMCI: 4/{print $13}')
# [ "$T" != "255" ] && addon $((POS + 8)) "(S${IDX}) SNR" "$T dB"
IDX=$((IDX + 1))
[ $IDX -ge $CELLS ] && break
POS=$((POS + 10))
fi
done
fi
fi
MODE=$(echo $MODE | sed 's,/,+,')
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+GTPKGVER?" | xargs)
FW=$(echo "$FWA" | cut -d ":" -f2 | xargs)
MDL=$(sms_tool -d $DEVICE at "AT+GMM?" | xargs)
MODELM=$(echo "$MDL" | cut -d ':' -f2 | cut -d ',' -f1 | awk -F'"' '{print $1}')
MODELF=$(sms_tool -d $DEVICE at "AT+CGMI" | xargs)
MODELMCUT=$(echo $MODELM)
MODELFCUT=$(echo $MODELF | sed s/"AT+CGMI "//)
MODEL="$MODELFCUT "$MODELMCUT
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+CGSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+CGSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+CCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+CCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCAX=$(echo $PV | awk -F"Vendor=8087 ProdID=07f9" '{print $2}')
PVCA=$(echo "$PVCAX" | cut -c-2453)
PVCBX=$(echo $PV | awk -F"Vendor=8087 ProdID=095a" '{print $2}')
PVCB=$(echo "$PVCBX" | cut -c-2453)
if [ -n "$PVCA" ]; then
case $PVCA in
*"Driver=qmi_wwan"*)
PROTO="qmi"
;;
*"Driver=cdc_ncm"*)
PROTO="ncm"
;;
*"Driver=cdc_mbim"*)
PROTO="mbim"
;;
*"Driver=cdc_ether"*)
PROTO="ecm"
;;
esac
fi
if [ -n "$PVCB" ]; then
case $PVCB in
*"Driver=qmi_wwan"*)
PROTO="qmi"
;;
*"Driver=cdc_ncm"*)
PROTO="ncm"
;;
*"Driver=cdc_mbim"*)
PROTO="mbim"
;;
*"Driver=cdc_ether"*)
PROTO="ecm"
;;
esac
fi
@@ -0,0 +1,488 @@
# Fibocom L860
bandwidth() {
case $1 in
0) echo "1.4";;
1) echo "3";;
2) echo "5";;
3) echo "10";;
4) echo "15";;
5) echo "20";;
*) echo "";;
esac
}
channeltoband()
{
if [ $1 -ge 0 ] && [ $1 -le 599 ]; then
echo "1"
elif [ $1 -ge 600 ] && [ $1 -le 1199 ]; then
echo "2"
elif [ $1 -ge 1200 ] && [ $1 -le 1949 ]; then
echo "3"
elif [ $1 -ge 1950] && [ $1 -le 2399 ]; then
echo "4"
elif [ $1 -ge 2400] && [ $1 -le 2469 ]; then
echo "5"
elif [ $1 -ge 2750 ] && [ $1 -le 3449 ]; then
echo "7"
elif [ $1 -ge 3450 ] && [ $1 -le 3799 ]; then
echo "8"
elif [ $1 -ge 6150 ] && [ $1 -le 6449 ]; then
echo "20"
elif [ $1 -ge 9210 ] && [ $1 -le 9659 ]; then
echo "28"
elif [ $1 -ge 9870 ] && [ $1 -le 9919 ]; then
echo "31"
elif [ $1 -ge 37750 ] && [ $1 -le 38249 ]; then
echo "38"
elif [ $1 -ge 38650 ] && [ $1 -le 39649 ]; then
echo "40"
else
echo "0"
fi
}
O=$(sms_tool -d $DEVICE at "AT+MTSM=1")
T=$(echo "$O" | awk -F: '/^\+MTSM:/ {print $2}' | xargs)
[ -n "$T" ] && TEMP="$T &deg;C"
if [ "$REGOK" = "1" ]; then
O=$(sms_tool -d $DEVICE at "AT+XLEC?;+XMCI=1;+XCCINFO=1;+XCCINFO?")
if [ "x$MODE_NUM" = "x7" ]; then
T=$(echo "$O" | awk -F[,:] '/^\+XCCINFO:/{print $11}' | xargs)
if [ -n "$T" ]; then
T_DEC=$(printf "%d" "0x$T")
fi
PB=""
S1B=""
S2B=""
S3B=""
S4B=""
BWP=""
BWS1=""
BWS2=""
BWS3=""
BWS4=""
CELLS=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $3}')
[ -z "$CELLS" ] && CELLS=0
case $CELLS in
"1")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $4}')
BWP=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $5}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
PB=$(band4g ${T/BAND_LTE_/})
if [ -z "$BWP" ]; then
PBAND="$PB"
else
PBAND="$PB @${BWP} MHz"
fi
MODE="$MODE $PB"
fi
;;
"2")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $4}')
BWP=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $5}')
BWS1=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $6}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
PB=$(band4g ${T/BAND_LTE_/})
if [ -z "$BWP" ]; then
PBAND="$(band4g ${T/BAND_LTE_/})"
else
PBAND="$(band4g ${T/BAND_LTE_/}) @${BWP} MHz"
fi
MODE="$MODE $PB"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $7}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S1B=$(band4g $T)
if [ -z "$BWS1" ]; then
S1BAND="$S1B"
else
S1BAND="$S1B @${BWS1} MHz"
fi
MODE="${MODE/LTE/LTE_A} / $S1B"
fi
;;
"3")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $4}')
BWP=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $5}')
BWS1=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $6}')
BWS2=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $7}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
PB=$(band4g ${T/BAND_LTE_/})
if [ -z "$BWP" ]; then
PBAND="$(band4g ${T/BAND_LTE_/})"
else
PBAND="$(band4g ${T/BAND_LTE_/}) @${BWP} MHz"
fi
MODE="$MODE $PB"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $8}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S1B=$(band4g $T)
if [ -z "$BWS1" ]; then
S1BAND="$S1B"
else
S1BAND="$S1B @${BWS1} MHz"
fi
MODE="${MODE/LTE/LTE_A} / $S1B"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $9}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S2B=$(band4g $T)
if [ -z "$BWS2" ]; then
S2BAND="$S2B"
else
S2BAND="$S2B @${BWS2} MHz"
fi
MODE="$MODE / $S2B"
fi
;;
"4")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $4}')
BWP=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $5}')
BWS1=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $6}')
BWS2=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $7}')
BWS3=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $8}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
PB=$(band4g ${T/BAND_LTE_/})
if [ -z "$BWP" ]; then
PBAND="$PB"
else
PBAND="$PB @${BWP} MHz"
fi
MODE="$MODE $PB"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $9}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S1B=$(band4g $T)
if [ -z "$BWS1" ]; then
S1BAND="$S1B"
else
S1BAND="$S1B @${BWS1} MHz"
fi
MODE="${MODE/LTE/LTE_A} / $S1B"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $10}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S2B=$(band4g $T)
if [ -z "$BWS2" ]; then
S2BAND="$S2B"
else
S2BAND="$S2B @${BWS2} MHz"
fi
MODE="$MODE / $S2B"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $11}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S3B=$(band4g $T)
if [ -z "$BWS3" ]; then
S3BAND="$S3B"
else
S3BAND="$S3B @${BWS3} MHz"
fi
MODE="$MODE / $S3B"
fi
;;
"5")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $4}')
BWP=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $5}')
BWS1=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $6}')
BWS2=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $7}')
BWS3=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $8}')
BWS4=$(bandwidth "$T")
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $9}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
PB=$(band4g ${T/BAND_LTE_/})
if [ -z "$BWP" ]; then
PBAND="$PB"
else
PBAND="$PB @${BWP} MHz"
fi
MODE="$MODE $PB"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $10}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S1B=$(band4g $T)
if [ -z "$BWS1" ]; then
S1BAND="$S1B"
else
S1BAND="$S1B @${BWS1} MHz"
fi
MODE="${MODE/LTE/LTE_A} / $S1B"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $11}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S2B=$(band4g $T)
if [ -z "$BWS2" ]; then
S2BAND="S2B"
else
S2BAND="S2B @${BWS2} MHz"
fi
MODE="$MODE / $S2B"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $12}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S3B=$(band4g $T)
if [ -z "$BWS3" ]; then
S3BAND="$S3B"
else
S3BAND="$S3B @${BWS3} MHz"
fi
MODE="$MODE / $S3B"
fi
T=$(echo "$O" | awk -F[,:] '/^\+XLEC:/{print $13}')
if [ -n "$T" ] && [ "x$T" != "x0" ]; then
S4B=$(band4g $T)
if [ -z "$BWS4" ]; then
S4BAND="$S4B"
else
S4BAND="$S4B @${BWS4} MHz"
fi
MODE="$MODE / $S4B"
fi
;;
esac
T=$(echo "$O" | awk -F[,:] '/^\+XMCI: 4/{print $7}' | xargs)
if [ -n "$T" ]; then
PCI="$(printf "%d" "$T")"
T=$(echo "$O" | awk -F[,:] '/^\+XMCI: 4/{print $8}' | xargs)
if [ "$T" != "0xFFFFFFFF" ]; then
# EARFCN DL
EARFCN="$(printf "%d" "$T")"
if [ -z "$PB" ]; then
T1=$(channeltoband $(printf "%d" "$T"))
PB=$(band4g $T1)
if [ -z "$BWP" ]; then
PBAND="$PB"
else
PBAND="$PB @${BWP} MHz"
fi
MODE="$MODE $PB"
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+XMCI: 4/{print $9}' | xargs)
# [ "$T" != "0xFFFFFFFF" ] && addon 34 "EARFCN UL" "$(printf "%d" "$T")"
T=$(echo "$O" | awk -F[,:] '/^\+XMCI: 4/{print $11}')
if [ "$T" != "255" ]; then
RSRP="$((-141 + T))"
N=""
case $BWP in
"1.4") N=6;;
"3") N=15;;
"5") N=25;;
"10") N=50;;
"15") N=75;;
"20") N=100;;
esac
if [ -n "$N" ]; then
RSSI=$(echo "$((-141 + T)) $N" | awk '{printf "%d\n", $1 + 10*log(12*$2)/log(10)}')
if [ -n "$RSSI" ]; then
[ $RSSI -lt -113 ] && RSSI="-113"
[ $RSSI -gt -51 ] && RSSI="-51"
RSSI="$RSSI"
CSQ_PER=$(((RSSI + 113) * 100 / 62))
fi
fi
fi
T=$(echo "$O" | awk -F[,:] '/^\+XMCI: 4/{print $12}')
[ "$T" != "255" ] && RSRQ="$((-20 + T/2))"
# SNR
# T=$(echo "$O" | awk -F[,:] '/^\+XMCI: 4/{print $13}')
# [ "$T" != "255" ] && SNR="$T"
# SINR
SINR=$(echo "$O" | awk -F [:,] '/\+XMCI: 4/{gsub(/"/,""); printf "%.0f\n", $13/4+5}')
fi
IFS="
"
IDX=1
LINES=$(echo "$O" | grep "+XMCI: 5")
for LINE in $LINES; do
T=$(echo "$LINE" | awk -F[,:] '/^\+XMCI: 5/{print $7}' | xargs)
if [ -n "$T" ]; then
case $IDX in
1) S1PCI="$(printf "%d" "$T")";;
2) S2PCI="$(printf "%d" "$T")";;
3) S3PCI="$(printf "%d" "$T")";;
4) S4PCI="$(printf "%d" "$T")";;
*) ;;
esac
T=$(echo "$LINE" | awk -F[,:] '/^\+XMCI: 5/{print $8}' | xargs)
if [ "$T" != "0xFFFFFFFF" ]; then
# EARFCN DL
case $IDX in
1) S1EARFCN="$(printf "%d" "$T")";;
2) S2EARFCN="$(printf "%d" "$T")";;
3) S3EARFCN="$(printf "%d" "$T")";;
4) S4EARFCN="$(printf "%d" "$T")";;
*) ;;
esac
case $IDX in
1)
if [ -z "$S1B" ]; then
T1=$(channeltoband $(printf "%d" "$T"))
S1B=$(band4g $T1)
if [ -z "$BWS1" ]; then
S1BAND="$S1B"
else
S1BAND="$S1B @${BWS1} MHz"
fi
MODE="${MODE/LTE/LTE_A} / $S1B"
fi
;;
2)
if [ -z "$S2B" ]; then
T1=$(channeltoband $(printf "%d" "$T"))
S2B=$(band4g $T1)
if [ -z "$BWS2" ]; then
S2BAND="$S2B"
else
S2BAND="$S2B @${BWS2} MHz"
fi
MODE="$MODE / $S2B"
fi
;;
3)
if [ -z "$S3B" ]; then
T1=$(channeltoband $(printf "%d" "$T"))
S3B=$(band4g $T1)
if [ -z "$BWS3" ]; then
S3BAND="$S3B"
else
S3BAND="$S3B @${BWS3} MHz"
fi
MODE="$MODE / $S3B"
fi
;;
4)
if [ -z "$S4B" ]; then
T1=$(channeltoband $(printf "%d" "$T"))
S4B=$(band4g $T1)
if [ -z "$BWS4" ]; then
S4BAND="$S4B"
else
S4BAND="$S4B @${BWS4} MHz"
fi
MODE="$MODE / $S4B"
fi
;;
esac
fi
# T=$(echo "$LINE" | awk -F[,:] '/^\+XMCI: 5/{print $9}' | xargs)
# [ "$T" != "0xFFFFFFFF" ] && addon $((POS + 4)) "(S${IDX}) EARFCN UL" "$(printf "%d" "$T")"
# T=$(echo "$LINE" | awk -F[,:] '/^\+XMCI: 5/{print $11}')
# [ "$T" != "255" ] && addon $((POS + 6)) "(S${IDX}) RSRP" "$((-141 + T)) dBm"
# T=$(echo "$LINE" | awk -F[,:] '/^\+XMCI: 5/{print $12}')
# [ "$T" != "255" ] && addon $((POS + 7)) "(S${IDX}) RSRQ" "$((-20 + T/2)) dB"
# T=$(echo "$LINE" | awk -F[,:] '/^\+XMCI: 4/{print $13}')
# [ "$T" != "255" ] && addon $((POS + 8)) "(S${IDX}) SNR" "$T dB"
IDX=$((IDX + 1))
[ $IDX -ge $CELLS ] && break
POS=$((POS + 10))
fi
done
fi
fi
MODE=$(echo $MODE | sed 's,/,+,')
# Modem
FWA=$(sms_tool -d $DEVICE at "AT+GTPKGVER?" | xargs)
FW=$(echo "$FWA" | cut -d ":" -f2 | xargs)
MDL=$(sms_tool -d $DEVICE at "AT+GMM?" | xargs)
MODELM=$(echo "$MDL" | cut -d ':' -f2 | cut -d ',' -f1 | awk -F'"' '{print $1}')
MODELF=$(sms_tool -d $DEVICE at "AT+CGMI" | xargs)
MODELMCUT=$(echo $MODELM)
MODELFCUT=$(echo $MODELF | sed s/"AT+CGMI "//)
MODEL="$MODELFCUT "$MODELMCUT
# International Mobile Equipment Identity (IMEI)
O=$(sms_tool -d $DEVICE at "AT+CGSN" | xargs)
NR_I=$(echo "$O" | sed s/"AT+CGSN "//)
if [ -n "$NR_I" ]; then
NR_IMEI="$NR_I"
fi
# International Mobile Subscriber Identity (IMSI)
O=$(sms_tool -d $DEVICE at "AT+CIMI" | xargs)
NR_C=$(echo "$O" | sed s/"AT+CIMI "//)
if [ -n "$NR_C" ]; then
NR_IMSI="$NR_C"
fi
# Integrated Circuit Card Identifier (ICCID)
O=$(sms_tool -d $DEVICE at "AT+CCID")
NR_D=$(echo "$O" | awk -F [:] '/^\+CCID: /{print $2}' | xargs)
if [ -n "$NR_D" ]; then
NR_ICCID="$NR_D"
fi
# Protocol
# DRIVER=QMI_WWAN & DRIVER=CDC_MBIM & DRIVER=CDC_ETHER
PV=$(cat /sys/kernel/debug/usb/devices 2>/dev/null)
PVCAX=$(echo $PV | awk -F"Vendor=8087 ProdID=07f9" '{print $2}')
PVCA=$(echo "$PVCAX" | cut -c-2453)
PVCBX=$(echo $PV | awk -F"Vendor=8087 ProdID=095a" '{print $2}')
PVCB=$(echo "$PVCBX" | cut -c-2453)
if [ -n "$PVCA" ]; then
case $PVCA in
*"Driver=qmi_wwan"*)
PROTO="qmi"
;;
*"Driver=cdc_ncm"*)
PROTO="ncm"
;;
*"Driver=cdc_mbim"*)
PROTO="mbim"
;;
*"Driver=cdc_ether"*)
PROTO="ecm"
;;
esac
fi
if [ -n "$PVCB" ]; then
case $PVCB in
*"Driver=qmi_wwan"*)
PROTO="qmi"
;;
*"Driver=cdc_ncm"*)
PROTO="ncm"
;;
*"Driver=cdc_mbim"*)
PROTO="mbim"
;;
*"Driver=cdc_ether"*)
PROTO="ecm"
;;
esac
fi
@@ -0,0 +1,91 @@
opengt
set com 115200n81
set comecho off
set senddelay 0.01
waitquiet 0.01 0.01
let $c="ATE0;+CGMI^m"
let $r="+CGMI:"
gosub readatcmdfl
let $c="AT+CGMM^m"
let $r="+CGMM:"
gosub readatcmdfl
let $c="AT+CGMR^m"
let $r="+CGMR:"
gosub readatcmdfl
let $c="AT+GMR^m"
let $r="+GMR:"
gosub readatcmdfl
let $c="AT+CGSN^m"
let $r="+CGSN:"
gosub readatcmdfl
let $c="AT+CIMI^m"
let $r="+CIMI:"
gosub readatcmdfl
let $c="AT\^ICCID?^m"
gosub readatcmd
let $c="AT+ICCID^m"
gosub readatcmd
let $c="AT+QCCID^m"
gosub readatcmd
let $c="AT#CCID^m"
gosub readatcmd
let $c="AT!ICCID?^m"
gosub readatcmd
let $c="AT*ICCID?^m"
gosub readatcmd
let $c="AT+CCID^m"
gosub readatcmd
exit 0
:readatcmd
let i=15
send $c
:loop
get 0.1 "^m" $s
if len($s) < 2 goto loop2
if $mid($s,1,2) = "ER" goto loop1
if $mid($s,1,2) = "OK" goto loop2
if $mid($s,1,2) = "AT" goto loop2
print $s,"\n"
exit 0
:loop1
return
:loop2
if i = 0 return
let i=i-1
goto loop
:readatcmdfl
let i=15
send $c
:loop3
get 0.1 "^m" $s
if len($s) < 2 goto loop5
let f=0
if $mid($s,0,1) ="\n" let f=1
if $mid($s,f,2) = "ER" goto loop4
if $mid($s,f,2) = "OK" goto loop5
if $mid($s,f,2) = "AT" goto loop5
if $mid($s,f,1) = "\^" goto loop5
if $mid($s,f,1) = "#" goto loop5
let l=len($s)
let $s=$mid($s,f,l)
print $r,$s,"\n"
return
:loop4
return
:loop5
if i = 0 return
let i=i-1
goto loop3
@@ -0,0 +1,50 @@
{
"admin/modem": {
"title": "Modem",
"order": 30,
"action": {
"type": "firstchild",
"recurse": true
}
},
"admin/modem/3ginfo-lite": {
"title": "Information about 3G/4G/5G connection",
"order": 10,
"action": {
"type": "alias",
"path": "admin/modem/3ginfo-lite/3gdetail"
},
"depends": {
"acl": [ "luci-app-3ginfo-lite" ],
"uci": { "3ginfo": true }
}
},
"admin/modem/3ginfo-lite/3gdetail": {
"title": "Details",
"order": 10,
"action": {
"type": "view",
"path": "modem/3gdetail"
}
},
"admin/modem/3ginfo-lite/3gdebug": {
"title": "Diagnostics",
"order": 20,
"action": {
"type": "view",
"path": "modem/3gdebug"
}
},
"admin/modem/3ginfo-lite/3gconfig": {
"title": "Configuration",
"order": 30,
"action": {
"type": "view",
"path": "modem/3gconfig"
}
}
}
@@ -0,0 +1,29 @@
{
"luci-app-3ginfo-lite": {
"description": "Grant access to LuCI app 3ginfo-lite",
"read": {
"cgi-io": [ "exec" ],
"file": {
"/usr/share/3ginfo-lite/3ginfo.sh": [ "exec" ],
"/usr/share/3ginfo-lite/detect.sh": [ "exec" ],
"/usr/share/3ginfo-lite/check.gcom": [ "exec" ],
"/usr/share/3ginfo-lite/info.gcom": [ "exec" ],
"/etc/modemdefine": [ "read" ],
"/etc/3ginfo": [ "read" ],
"/sys/kernel/debug/usb/devices": [ "read" ]
},
"uci": [ "3ginfo" ]
},
"write": {
"file": {
"/bin/cat": [ "exec" ],
"/bin/sh -x /usr/share/3ginfo-lite/3ginfo.sh": [ "exec" ],
"/bin/ls /dev": [ "exec" ],
"/etc/modemdefine": [ "write" ],
"/tmp/debug_result.txt": [ "write" ],
"/etc/3ginfo": [ "write" ]
},
"uci": [ "3ginfo" ]
}
}
}