Ok udało mi się odpalić MM i to niewiele pokazuje. Plus musiałem lekko zmienić skrypt (params) abym mógł odczytać dane w LuCI
#!/bin/sh
#
# (c) 2025 Cezary Jackiewicz <cezary@eko.one.pl>
#
DEVICE=$1
if [ -z "$DEVICE" ]; then
echo '{"error":"Device not found"}'
exit 0
fi
FORCE_PLMN=$2
[ "x$FORCE_PLMN" = "x1" ] || FORCE_PLMN=""
. /usr/share/libubox/jshn.sh
mmcli -m "$DEVICE" --signal-setup=3 >/dev/null 2>&1
json_load "$(mmcli -m "$DEVICE" -J --get-cell-info 2>/dev/null | jsonfilter -q -e '@.modem.*')" 2>/dev/null
if json_is_a "cell-info" array; then
json_select "cell-info"
idx=1
while json_is_a ${idx} string; do
json_get_var line $idx
if echo "$line" | grep -q "serving: yes"; then
IFS=','
for F in $line; do
KEY=""
VAL=""
eval $(echo "$F" | awk -F: '{gsub(" ", "");printf "KEY=%s, VAL=%s\n", $1, $2}')
case "$KEY" in
"celltype")
MODE=$VAL
_MODE=$(echo "$VAL" | tr 'a-z' 'A-Z')
case "$_MODE" in
"LTE")
MODE_NUM=7
;;
"UMTS")
MODE_NUM=2
;;
esac
;;
"operatorid")
COPS_NUM=$VAL
_plmn_mcc=${COPS_NUM:0:3}
_plmn_mnc=${COPS_NUM:3:3}
_plmn_mnc=$(printf "%02d" $_plmn_mnc)
;;
"tac")
_TAC=$VAL
;;
"ci")
_CELLID=$VAL
;;
"physicalci")
_pci=$(printf "%d" "0x$VAL")
;;
"earfcn")
_earfcn=$VAL
;;
"rsrp")
_rsrp=$VAL
;;
"rsrq")
_rsrq=$VAL
;;
esac
done
break
fi
idx=$((idx + 1))
done
fi
_SIGNAL=0
T=$(mmcli -m "$DEVICE" -J --signal-get 2>/dev/null | jsonfilter -q -e '@.modem.signal.'$MODE)
if [ -n "$T" ]; then
_rsrp=""
_rseq=""
_rssi=""
_snr=""
_rscp=""
_ecio=""
eval $(echo "$T" | jsonfilter -q -e "_rsrp=@.rsrp" -e "_rsrq=@.rsrq" -e "_rssi=@.rssi" -e "_snr=@.snr" -e "_rscp=@.rscp" -e "_ecio=@.ecio")
if [ -n "$_rssi" ]; then
_rssi=$(echo "$_rssi" | awk '{printf "%d\n", $1}')
[ "$_rssi" -ge -51 ] && _rssi=-51
_SIGNAL=$(((_rssi+113)*100/62))
fi
fi
T=$(mmcli -m "$DEVICE" -J 2>/dev/null)
if [ -n "$FORCE_PLMN" ]; then
_plmn_description=$(awk -F[\;] '/'$COPS_NUM'/ {print $2}' /usr/share/modemdata/mccmnc.dat)
[ -z "$_plmn_description" ] && _plmn_description="$COPS_NUM"
else
_plmn_description=$(echo "$T" | jsonfilter -q -e "@.modem['3gpp']['operator-name']")
fi
T=$(echo "$T" | jsonfilter -q -e "@.modem['3gpp']['registration-state']")
case "$T" in
"home")
_registration=1
;;
*)
_registration=0
;;
esac
echo "{"
echo "\"signal\":\"$_SIGNAL\","
echo "\"operator_name\":\"$_plmn_description\","
echo "\"operator_mcc\":\"$_plmn_mcc\","
echo "\"operator_mnc\":\"$_plmn_mnc\","
[ -n "$_plmn_mcc" ] && COUNTRY=$(awk -F[\;] '/^'$_plmn_mcc';/ {print $2}' /usr/share/modemdata/mcc.dat)
echo "\"country\":\"$COUNTRY\","
echo "\"mode\":\"$_MODE\","
echo "\"registration\":\"$_registration\","
if [ "$MODE_NUM" = "7" ]; then
[ -n "$_CELLID" ] && _CELLID_DEC=$(printf "%d" "0x$_CELLID")
fi
echo "\"lac_dec\":\"\","
echo "\"lac_hex\":\"\","
echo "\"cid_dec\":\"$_CELLID_DEC\","
echo "\"cid_hex\":\"$_CELLID\","
echo "\"addon\":["
[ -n "$_rssi" ] && echo "{\"idx\":35,\"key\":\"RSSI\",\"value\":\"$(printf "%.1f" $_rssi) dBm\"},"
if [ "$MODE_NUM" = "7" ]; then
[ -n "$_rsrp" ] && echo "{\"idx\":36,\"key\":\"RSRP\",\"value\":\"$(printf "%.1f" $_rsrp) dBm\"},"
[ -n "$_rsrq" ] && echo "{\"idx\":37,\"key\":\"RSRQ\",\"value\":\"$(printf "%.1f" $_rsrq) dB\"},"
[ -n "$_snr" ] && echo "{\"idx\":38,\"key\":\"SNR\",\"value\":\"$(printf "%.1f" $_snr) dB\"},"
if [ -n "$_TAC" ]; then
T_DEC=$(printf "%d" "0x$_TAC")
echo "{\"idx\":23,\"key\":\"TAC\",\"value\":\"${T_DEC} (${_TAC})\"},"
fi
fi
if [ "$MODE_NUM" = "2" ]; then
[ -n "$_ecio" ] && echo "{\"idx\":36,\"key\":\"ECIO\",\"value\":\"$_ecio dB\"},"
fi
if [ -n "$_pci" ]; then
echo "{\"idx\":33,\"key\":\"PCI\",\"value\":\"$_pci\"},"
fi
if [ -n "$_earfcn" ]; then
echo "{\"idx\":34,\"key\":\"EARFCN\",\"value\":\"$_earfcn\"}"
fi
echo "]}"
exit 0
Dostosowałem układ do tego co już mam opisane.
[
{
"vendor":"Quectel",
"product":"RM520N-GL",
"revision":"RM520NGLAAR03A04M4G",
"imei":"############",
"iccid":"##############",
"imsi":"###########"
}
,
{
"status":"CONNECTED",
"conn_time":"0d, 00:11:17",
"conn_time_sec":"677",
"conn_time_since":"20250803180152",
"rx":"73.9 MiB",
"tx":"1.3 MiB"
}
,
{
"signal":"100",
"operator_name":"Play",
"operator_mcc":"260",
"operator_mnc":"06",
"country":"Poland",
"mode":"LTE",
"registration":"1",
"lac_dec":"",
"lac_hex":"",
"cid_dec":"6438230",
"cid_hex":"623D56",
"addon":[
{"idx":35,"key":"RSSI","value":"-51.0 dBm"},
{"idx":36,"key":"RSRP","value":"-74.0 dBm"},
{"idx":37,"key":"RSRQ","value":"-13.0 dB"},
{"idx":38,"key":"SNR","value":"17.6 dB"},
{"idx":23,"key":"TAC","value":"1620 (654)"},
{"idx":33,"key":"PCI","value":"482"},
{"idx":34,"key":"EARFCN","value":"1474"}
]}
]
-----------------------------------
General | path: /org/freedesktop/ModemManager1/Modem/0
| device id: 4ae8dc32f8bc85fe3cb4ead89b627783cc65729b
-----------------------------------
Hardware | manufacturer: Quectel
| model: RM520N-GL
| firmware revision: RM520NGLAAR03A04M4G
| carrier config: ROW_Commercial
| carrier config revision: 0A012222
| h/w revision: 20000
| supported: gsm-umts, lte, 5gnr
| current: gsm-umts, lte, 5gnr
| equipment id: 868371055556666
-----------------------------------
System | device: /sys/devices/platform/soc/11200000.usb/usb2/2-1/2-1.1
| physdev: /sys/devices/platform/soc/11200000.usb/usb2/2-1/2-1.1
| drivers: qmi_wwan, option1
| plugin: quectel
| primary port: cdc-wdm0
| ports: cdc-wdm0 (qmi), ttyUSB0 (ignored), ttyUSB1 (gps),
| ttyUSB2 (at), ttyUSB3 (at), wwan0 (net)
-----------------------------------
Status | lock: sim-pin2
| unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3), sim-puk2 (10)
| state: [32mconnected[0m
| power state: on
| access tech: lte, 5gnr
| signal quality: 97% (recent)
-----------------------------------
Modes | supported: allowed: 3g; preferred: none
| allowed: 4g; preferred: none
| allowed: 3g, 4g; preferred: 4g
| allowed: 3g, 4g; preferred: 3g
| allowed: 5g; preferred: none
| allowed: 4g, 5g; preferred: 5g
| allowed: 4g, 5g; preferred: 4g
| allowed: 3g, 5g; preferred: 5g
| allowed: 3g, 5g; preferred: 3g
| allowed: 3g, 4g, 5g; preferred: 5g
| allowed: 3g, 4g, 5g; preferred: 4g
| allowed: 3g, 4g, 5g; preferred: 3g
| current: allowed: 3g, 4g, 5g; preferred: 5g
-----------------------------------
Bands | supported: utran-1, utran-4, utran-6, utran-5, utran-8, utran-2,
| eutran-1, eutran-2, eutran-3, eutran-4, eutran-5, eutran-7, eutran-8,
| eutran-12, eutran-13, eutran-14, eutran-17, eutran-18, eutran-19,
| eutran-20, eutran-25, eutran-26, eutran-28, eutran-29, eutran-30,
| eutran-32, eutran-34, eutran-38, eutran-39, eutran-40, eutran-41,
| eutran-42, eutran-43, eutran-46, eutran-48, eutran-66, eutran-71,
| utran-19, ngran-1, ngran-2, ngran-3, ngran-5, ngran-7, ngran-8,
| ngran-12, ngran-13, ngran-14, ngran-18, ngran-20, ngran-25, ngran-26,
| ngran-28, ngran-29, ngran-30, ngran-38, ngran-40, ngran-41, ngran-48,
| ngran-66, ngran-70, ngran-71, ngran-75, ngran-76, ngran-77, ngran-78,
| ngran-79
| current: utran-1, utran-4, utran-5, utran-8, utran-2, eutran-1,
| eutran-2, eutran-3, eutran-4, eutran-5, eutran-7, eutran-8,
| eutran-12, eutran-13, eutran-14, eutran-17, eutran-18, eutran-19,
| eutran-20, eutran-25, eutran-26, eutran-28, eutran-29, eutran-30,
| eutran-32, eutran-34, eutran-38, eutran-39, eutran-40, eutran-41,
| eutran-42, eutran-43, eutran-46, eutran-48, eutran-66, eutran-71,
| utran-19, ngran-1, ngran-2, ngran-3, ngran-5, ngran-7, ngran-8,
| ngran-12, ngran-13, ngran-14, ngran-18, ngran-20, ngran-25, ngran-26,
| ngran-28, ngran-29, ngran-30, ngran-38, ngran-40, ngran-41, ngran-48,
| ngran-66, ngran-70, ngran-71, ngran-75, ngran-76, ngran-77, ngran-78,
| ngran-79
-----------------------------------
IP | supported: ipv4, ipv6, ipv4v6
-----------------------------------
3GPP | imei: 868355555666444
| enabled locks: fixed-dialing
| operator id: 26006
| operator name: Play
| registration: home
| packet service state: attached
-----------------------------------
3GPP EPS | ue mode of operation: csps-2
| initial bearer path: /org/freedesktop/ModemManager1/Bearer/0
| initial bearer apn: internet
| initial bearer ip type: ipv4
-----------------------------------
SIM | primary sim path: /org/freedesktop/ModemManager1/SIM/0
| sim slot paths: slot 1: /org/freedesktop/ModemManager1/SIM/0 (active)
| slot 2: none
-----------------------------------
Bearer | paths: /org/freedesktop/ModemManager1/Bearer/1
Pozostałe dane trzeba chyba czytać z poleceń at w trybie debugowania czego nie mogę znów włączyć, niby w proto mam to aktywne i ustawione ale i tak nie pozwala mi wykonywać poleceń. Nie wiem czy on czegoś jeszcze do tego wymaga, czy ja jestem MM odporny.