mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-05 09:54:06 +08:00
🌴 Sync 2026-03-05 23:51:42
This commit is contained in:
1 parent
97c049ed0a
commit
0acff03804
14253 files changed
+3893239
No files matched your search
+531
@@ -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
@@ -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
+63
@@ -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
|
||||
+248
@@ -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" == "<=-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 °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 °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 °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 °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 °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 °C"
|
||||
#ADDON="$ADDON"'{"Temperatura":"'$T' °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 °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 °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 °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 °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 °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 °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 °C"
|
||||
# [ -n "$ADDON" ] && ADDON="$ADDON,"
|
||||
# ADDON="$ADDON"'{"Temperatura":"'$T' °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 °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 °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 °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 °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 °C"
|
||||
#ADDON="$ADDON"'{"Temperatura":"'$T' °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 °C"
|
||||
#ADDON="$ADDON"'{"Temperatura":"'$T' °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 °C"
|
||||
#ADDON="$ADDON"'{"Temperatura":"'$T' °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 °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 °C"
|
||||
[ -n "$ADDON" ] && ADDON="$ADDON,"
|
||||
ADDON="$ADDON"'{"Temperatura":"'$T' °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 °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 °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 °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 °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 °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 °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 °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 °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 °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 °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 °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} °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 °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 °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 °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 °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 °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 °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 °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 °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 °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 °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 °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 °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 °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" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user