Files

503 lines
13 KiB
Plaintext

# 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