mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-02 17:13:56 +08:00
🍉 Sync 2026-05-13 08:40:30
This commit is contained in:
1 parent
2206a0ea68
commit
6bb23e315c
7 files changed
+93
-410
No files matched your search
@@ -3,8 +3,8 @@ include $(TOPDIR)/rules.mk
|
|||||||
LUCI_TITLE:=Information dashboard for 3G/LTE dongle
|
LUCI_TITLE:=Information dashboard for 3G/LTE dongle
|
||||||
LUCI_DEPENDS:=+modeminfo
|
LUCI_DEPENDS:=+modeminfo
|
||||||
PKG_LICENSE:=GPLv3
|
PKG_LICENSE:=GPLv3
|
||||||
PKG_VERSION:=0.4.5
|
PKG_VERSION:=0.4.6
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
include $(TOPDIR)/feeds/luci/luci.mk
|
include $(TOPDIR)/feeds/luci/luci.mk
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Written by Konstantine Shevlakov at <shevlakov@132lan.ru> 2023
|
Written by Konstantine Shevlakov at <shevlakov@132lan.ru> 2023 - 2026
|
||||||
|
|
||||||
Licensed to the GNU General Public License v3.0.
|
Licensed to the GNU General Public License v3.0.
|
||||||
|
|
||||||
@@ -45,20 +45,44 @@ var callQMIPort = rpc.declare({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var callCheckQmiinfo = rpc.declare({
|
||||||
|
object: 'file',
|
||||||
|
method: 'stat',
|
||||||
|
params: [ 'path' ],
|
||||||
|
expect: { '': {} }
|
||||||
|
});
|
||||||
|
|
||||||
var maindesc = _('Modeminfo: Configuration');
|
var maindesc = _('Modeminfo: Configuration');
|
||||||
var mdesc = _('Configuration panel of Modeminfo.');
|
var mdesc = _('Configuration panel of Modeminfo.');
|
||||||
var qfdesc = _('Get modem data via qmicli (experimental). Require install qmi-utils.');
|
var qfdesc = _('Get modem data via qmi. Require install qminfo.');
|
||||||
var sdesc = _('Select serial port.');
|
var sdesc = _('Select serial port.');
|
||||||
var qdesc = _('Select qmi port.');
|
var qdesc = _('Select qmi port.');
|
||||||
var lacdec = _('Show LAC and CID in decimal.');
|
var lacdec = _('Show LAC and CID in decimal.');
|
||||||
var mmdesc = _('Get device hardware name via mmcli utility if aviable.');
|
var mmdesc = _('Get device hardware name via mmcli utility if aviable.');
|
||||||
var qmidesc = _('Enable qmi-proxy mode.');
|
var qmidesc = _('Set qmi mode.');
|
||||||
var idesc = _('Short info on Overview page');
|
var idesc = _('Short info on Overview page');
|
||||||
var portplace = _('Please select a port');
|
var portplace = _('Please select a port');
|
||||||
|
|
||||||
return view.extend({
|
return view.extend({
|
||||||
render: function(){
|
|
||||||
|
load: function() {
|
||||||
|
return callCheckQmiinfo('/usr/bin/qminfo')
|
||||||
|
.then(function(stat) {
|
||||||
|
return (stat && stat.size != null);
|
||||||
|
})
|
||||||
|
.catch(function() {
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
render: function(qmiinfoInstalled){
|
||||||
|
|
||||||
|
var qfdesc = qmiinfoInstalled
|
||||||
|
? _('Get modem data via qmi.')
|
||||||
|
: _('Please install qminfo package.');
|
||||||
|
|
||||||
var m, s, o;
|
var m, s, o;
|
||||||
|
|
||||||
m = new form.Map('modeminfo', maindesc, mdesc);
|
m = new form.Map('modeminfo', maindesc, mdesc);
|
||||||
|
|
||||||
s = m.section(form.TypedSection, 'general', _('General option'), null);
|
s = m.section(form.TypedSection, 'general', _('General option'), null);
|
||||||
@@ -85,6 +109,11 @@ return view.extend({
|
|||||||
|
|
||||||
o = s.option(form.Flag, 'qmi_mode', _('Use QMI'), qfdesc);
|
o = s.option(form.Flag, 'qmi_mode', _('Use QMI'), qfdesc);
|
||||||
o.rmempty = true;
|
o.rmempty = true;
|
||||||
|
if (!qmiinfoInstalled) {
|
||||||
|
o.readonly = true;
|
||||||
|
o.write = function() {};
|
||||||
|
o.cfgvalue = function() { return '0'; };
|
||||||
|
}
|
||||||
|
|
||||||
o = s.option(form.ListValue, 'device', _('Data port'), sdesc);
|
o = s.option(form.ListValue, 'device', _('Data port'), sdesc);
|
||||||
o.load = function(section_id) {
|
o.load = function(section_id) {
|
||||||
@@ -117,7 +146,10 @@ return view.extend({
|
|||||||
o.rmempty = true;
|
o.rmempty = true;
|
||||||
o.depends('qmi_mode', '0');
|
o.depends('qmi_mode', '0');
|
||||||
|
|
||||||
o = s.option(form.Flag, 'qmi_proxy', _('QMI proxy'), qmidesc);
|
o = s.option(form.ListValue, 'qmi_trap', _('QMI mode'), qmidesc);
|
||||||
|
o.value('',_('Auto'));
|
||||||
|
o.value('qmi',_('Direct QMI'));
|
||||||
|
o.value('mbim',_('QMI over MBIM'));
|
||||||
o.rmempty = true;
|
o.rmempty = true;
|
||||||
o.depends('qmi_mode', '1');
|
o.depends('qmi_mode', '1');
|
||||||
|
|
||||||
|
|||||||
@@ -87,8 +87,14 @@ msgstr "Страница конфигурации Modeminfo."
|
|||||||
msgid "Use QMI"
|
msgid "Use QMI"
|
||||||
msgstr "Использовать QMI"
|
msgstr "Использовать QMI"
|
||||||
|
|
||||||
msgid "Get modem data via qmicli (experimental). Require install qmi-utils."
|
msgid "Get modem data via qmi. Require install qminfo."
|
||||||
msgstr "Получать данные модема через qmicli (экспериментально). Требуется установленный qmi-utils."
|
msgstr "Получать данные модема через qmi. Требуется установленный qminfo."
|
||||||
|
|
||||||
|
msgid "Get modem data via qmi."
|
||||||
|
msgstr "Получать данные модема через qmi."
|
||||||
|
|
||||||
|
msgid "Please install qminfo package."
|
||||||
|
msgstr "Установите пакет qminfo."
|
||||||
|
|
||||||
msgid "Data port"
|
msgid "Data port"
|
||||||
msgstr "Порт данных"
|
msgstr "Порт данных"
|
||||||
@@ -111,11 +117,20 @@ msgstr "Если доступно, использовать утилиту mmcli
|
|||||||
msgid "Name via mmcli"
|
msgid "Name via mmcli"
|
||||||
msgstr "Имя модема через mmcli"
|
msgstr "Имя модема через mmcli"
|
||||||
|
|
||||||
msgid "QMI proxy"
|
msgid "QMI mode"
|
||||||
msgstr "QMI прокси"
|
msgstr "Режим QMI"
|
||||||
|
|
||||||
msgid "Enable qmi-proxy mode."
|
msgid "Set qmi mode."
|
||||||
msgstr "Задействовать режим прокси."
|
msgstr "Задействовать режим QMI."
|
||||||
|
|
||||||
|
msgid "Auto"
|
||||||
|
msgstr "Автоматически"
|
||||||
|
|
||||||
|
msgid "Direct QMI"
|
||||||
|
msgstr "Только QMI"
|
||||||
|
|
||||||
|
msgid "QMI over MBIM"
|
||||||
|
msgstr "QMI через MBIM"
|
||||||
|
|
||||||
msgid "Index page"
|
msgid "Index page"
|
||||||
msgstr "На главную"
|
msgstr "На главную"
|
||||||
@@ -145,4 +160,4 @@ msgid "Wait devices information"
|
|||||||
msgstr "Ожидание ответа от устройств"
|
msgstr "Ожидание ответа от устройств"
|
||||||
|
|
||||||
msgid "Error loading information"
|
msgid "Error loading information"
|
||||||
msgstr "Получение данных завершилось ошибкой"
|
msgstr "Получение данных завершилось ошибкой"
|
||||||
+2
-14
@@ -1,8 +1,8 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=modeminfo
|
PKG_NAME:=modeminfo
|
||||||
PKG_VERSION:=0.4.5
|
PKG_VERSION:=0.4.6
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=3
|
||||||
PKG_MAINTAINER:=Konstantine Shevlakov <shevlakov@132lan.ru>
|
PKG_MAINTAINER:=Konstantine Shevlakov <shevlakov@132lan.ru>
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
@@ -20,12 +20,6 @@ define Package/$(PKG_NAME)
|
|||||||
TITLE:=Signal information for 3G/LTE dongle
|
TITLE:=Signal information for 3G/LTE dongle
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/$(PKG_NAME)-qmi
|
|
||||||
$(call Package/$(PKG_NAME)/Default)
|
|
||||||
DEPENDS:=+modeminfo +qmi-utils
|
|
||||||
TITLE:=QMI addon for modeminfo
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/$(PKG_NAME)-telegram
|
define Package/$(PKG_NAME)-telegram
|
||||||
$(call Package/$(PKG_NAME)/Default)
|
$(call Package/$(PKG_NAME)/Default)
|
||||||
DEPENDS:=+modeminfo +telegrambot
|
DEPENDS:=+modeminfo +telegrambot
|
||||||
@@ -78,11 +72,6 @@ define Package/$(PKG_NAME)/install
|
|||||||
$(CP) ./root/etc/config/* $(1)/etc/config
|
$(CP) ./root/etc/config/* $(1)/etc/config
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/$(PKG_NAME)-qmi/install
|
|
||||||
$(INSTALL_DIR) $(1)/usr/share/modeminfo/scripts
|
|
||||||
$(CP) ./root/usr/share/modeminfo-qmi/* $(1)/usr/share/modeminfo/scripts
|
|
||||||
endef
|
|
||||||
|
|
||||||
define Package/$(PKG_NAME)-telegram/install
|
define Package/$(PKG_NAME)-telegram/install
|
||||||
$(INSTALL_DIR) $(1)/usr/lib/telegrambot/plugins
|
$(INSTALL_DIR) $(1)/usr/lib/telegrambot/plugins
|
||||||
$(CP) ./root/usr/lib/telegrambot/plugins/* $(1)/usr/lib/telegrambot/plugins
|
$(CP) ./root/usr/lib/telegrambot/plugins/* $(1)/usr/lib/telegrambot/plugins
|
||||||
@@ -105,5 +94,4 @@ $(eval $(call SerialPlugin,dell,+kmod-usb-serial-option,Dell DW5821e,DELL))
|
|||||||
#$(eval $(call SerialPlugin,yuge,+kmod-usb-serial-option,Yuge CLM920,YUGE))
|
#$(eval $(call SerialPlugin,yuge,+kmod-usb-serial-option,Yuge CLM920,YUGE))
|
||||||
#$(eval $(call SerialPlugin,zte,+kmod-usb-serial-option,ZTE MF823/MF823D,ZTE))
|
#$(eval $(call SerialPlugin,zte,+kmod-usb-serial-option,ZTE MF823/MF823D,ZTE))
|
||||||
$(eval $(call SerialPlugin,thales,+kmod-usb-serial-option,Thales MV31-W T99W175,THALES))
|
$(eval $(call SerialPlugin,thales,+kmod-usb-serial-option,Thales MV31-W T99W175,THALES))
|
||||||
$(eval $(call BuildPackage,$(PKG_NAME)-qmi))
|
|
||||||
$(eval $(call BuildPackage,$(PKG_NAME)-telegram))
|
$(eval $(call BuildPackage,$(PKG_NAME)-telegram))
|
||||||
@@ -1,180 +0,0 @@
|
|||||||
# qmi addon for luci-app-modeminfo
|
|
||||||
# require full version libqmi (need build in SDK)
|
|
||||||
# (c) 2020-2024 written by Konstantine Shevlakov (c) at <shevlakov@132lan.ru>
|
|
||||||
|
|
||||||
get_device_info(){
|
|
||||||
DEVPORT=$(uci -q get modeminfo.@modeminfo[$s].device_qmi)
|
|
||||||
DEVCTL=$(echo $DEVPORT | awk -F [\/] '{print $NF}')
|
|
||||||
if [ -x /usr/bin/qmicli ]; then
|
|
||||||
export QMICTL="qmicli -p -d $DEVPORT"
|
|
||||||
else
|
|
||||||
logger -t "luci-app-modeminfo" "qmicli not found!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ $DEVPORT ]; then
|
|
||||||
QPROXY=$(uci -q get modeminfo.@modeminfo[$s].qmi_proxy)
|
|
||||||
if [ $QPROXY -eq 1 ]; then
|
|
||||||
export QMICTL="qmicli -p -d $DEVPORT"
|
|
||||||
else
|
|
||||||
export QMICTL="qmicli -d $DEVPORT"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
for qmi in $(ls /dev/cdc-wdm*); do
|
|
||||||
if [ $qmi ]; then
|
|
||||||
QMI_DEVICE=$qmi
|
|
||||||
if [ -n $(which qmicli) ]; then
|
|
||||||
export QMICTL="qmicli -p -d ${QMI_DEVICE}"
|
|
||||||
else
|
|
||||||
logger -t "luci-app-modeminfo" "qmi-utils not found or installed!"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
logger -t "luci-app-modeminfo" "Device is no QMI mode or not found!"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [ $qmi ]; then
|
|
||||||
uci set modeminfo.@modeminfo[0].device_qmi="$qmi"
|
|
||||||
uci commit modeminfo
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
get_hardware_info(){
|
|
||||||
MANUF=$(cat $(readlink -f /sys/class/usbmisc/${DEVCTL})/../../../manufacturer)
|
|
||||||
MODEL="$(cat $(readlink -f /sys/class/usbmisc/${DEVCTL})/../../../product)"
|
|
||||||
|
|
||||||
if [ -n "$(echo "${MODEL}" | grep -Ei "${MANUF}")" ] || [ -n "$(echo "${MANUF}" | grep -Ei QUAL)" ]; then
|
|
||||||
DEVICE="${MODEL}"
|
|
||||||
else
|
|
||||||
DEVICE="${MANUF} ${MODEL}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
IMEI=`$QMICTL --dms-get-ids | awk -F [:] '/IMEI:/{gsub("'\''|\*", ""); print $2}'`
|
|
||||||
FW=$($QMICTL --dms-get-software-version | awk -F [:] '/version:/{print $2}' )
|
|
||||||
ICCID=$($QMICTL --dms-uim-get-iccid | awk -F [:] '/ICCID/{gsub("'\''",""); print $2}' )
|
|
||||||
}
|
|
||||||
|
|
||||||
get_lte_bw(){
|
|
||||||
case $BWDx in
|
|
||||||
3) BWDL=1 ;;
|
|
||||||
5) BWDL=2 ;;
|
|
||||||
10) BWDL=3 ;;
|
|
||||||
15) BWDL=4 ;;
|
|
||||||
20) BWDL=5 ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
get_signal_info(){
|
|
||||||
NETWORK=`$QMICTL --nas-get-home-network | awk -F [:] '/MCC|MNC|Description/{gsub("'\''|^ ", "");print $2}'`
|
|
||||||
COPS_MCC=$(echo ${NETWORK} |awk '{print $1}')
|
|
||||||
COPS_MNC_RAW=$(echo ${NETWORK} |awk '{print $2}')
|
|
||||||
if [ $COPS_MNC_RAW -lt 10 ]; then
|
|
||||||
COPS_MNC=0${COPS_MNC_RAW}
|
|
||||||
else
|
|
||||||
COPS_MNC=$COPS_MNC_RAW
|
|
||||||
fi
|
|
||||||
COPS="$(echo "${NETWORK}" |tail -1)"
|
|
||||||
SIGNAL=$($QMICTL --nas-get-signal-info)
|
|
||||||
MODE=$(echo "$SIGNAL" | awk 'NR ==2{gsub("\:", ""); print $1}')
|
|
||||||
STRENGTH=$(echo "$SIGNAL" | awk '/RSSI|RSRQ|RSRP|SNR|ECIO/{gsub("'\''",""); print $2}')
|
|
||||||
SERVING=$($QMICTL --nas-get-serving-system)
|
|
||||||
RFBAND=$($QMICTL --nas-get-rf-band-info)
|
|
||||||
if [ $MODE == "LTE" ]; then
|
|
||||||
MIMO=$($QMICTL --nas-get-tx-rx-info=lte | grep 'RX Chain' | wc -l)
|
|
||||||
LACTAC=$(echo "$SERVING" | awk -F [:] '/tracking area code:|3GPP cell ID:/{gsub("'\''",""); print $2}')
|
|
||||||
LAC_NUM=$(echo $LACTAC | awk '{print $2}')
|
|
||||||
CID_NUM=$(echo $LACTAC | awk '{print $1}')
|
|
||||||
CID=$(echo $CID_NUM | awk '{printf "%x\n", $1}' |awk '{print toupper($1)}')
|
|
||||||
LAC=$(echo $LAC_NUM | awk '{printf "%x\n", $1}' |awk '{print toupper($1)}')
|
|
||||||
CSQ_RSSI=$(echo ${STRENGTH} | awk '{print $1}')
|
|
||||||
RSRQ=$(echo ${STRENGTH} | awk '{print $2}')
|
|
||||||
RSRP=$(echo ${STRENGTH} | awk '{print $3}')
|
|
||||||
SINR=$(echo ${STRENGTH} | awk '{printf "%.0f\n", $4}')
|
|
||||||
ENBx=$(echo $CID | sed -e 's/..$//')
|
|
||||||
ENBID=$(printf %d 0x$ENBx)
|
|
||||||
CELL=$(printf %d 0x${CID: -2})
|
|
||||||
PCI=$($QMICTL --nas-get-cell-location-info | awk -F [:] '/Serving Cell ID:/{gsub("'\''",""); print $2}')
|
|
||||||
LTE_O=$($QMICTL --nas-get-lte-cphy-ca-info)
|
|
||||||
LTE_CA=$(echo "$LTE_O" |grep -i '^secondary cell' | wc -l)
|
|
||||||
BWDx=$(echo "$LTE_O" | grep -A4 'Primary Cell Info' | awk -F [:] '/DL Bandwidth:/{gsub("'\''| ", ""); print $2}')
|
|
||||||
get_lte_bw
|
|
||||||
if [ $LTE_CA -ge 1 ]; then
|
|
||||||
BWC=$(echo "$LTE_O" | grep -A4 '^Secondary Cell' | awk -F [:] '/DL Bandwidth:/{gsub("'\''| ", ""); printf "+"$2}')
|
|
||||||
BWCA=$(($BWDx$BWC))
|
|
||||||
BANDCH=$(echo "$LTE_O" | grep -A4 '^Primary Cell' | awk -F [:] '/RX Channel:/{gsub("'\''| ", ""); print $2}')
|
|
||||||
# Fix qmicli band T77W968 modem
|
|
||||||
case $DEVICE in
|
|
||||||
*Dell*|*LN960*) CA=$(echo "$LTE_O" | grep -A4 '^Secondary Cell' | awk -F [:-] '/LTE Band:/{gsub("'\''| ", ""); printf " "$NF-1}') ;;
|
|
||||||
*) CA=$(echo "$LTE_O" | grep -A4 '^Secondary Cell' | awk -F [:-] '/LTE Band:/{gsub("'\''| ", ""); print $NF}') ;;
|
|
||||||
esac
|
|
||||||
for cc in $CA; do
|
|
||||||
SCC=$SCC+$cc
|
|
||||||
done
|
|
||||||
else
|
|
||||||
BANDCH=$(echo "$RFBAND" | awk -F [:] '/Active Channel:/{gsub("'\''",""); print $2}' | head -1)
|
|
||||||
if [ "x" == "x$BWDx" ]; then
|
|
||||||
BWDx=$(echo "$RFBAND" | awk -F [:] '/Bandwidth:/{gsub("'\''| ",""); print $2}' | tail -1)
|
|
||||||
get_lte_bw
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
EARFCN=$BANDCH
|
|
||||||
else
|
|
||||||
MIMO=$($QMICTL --nas-get-tx-rx-info=umts | grep 'RX Chain' | wc -l)
|
|
||||||
case $MIMO in
|
|
||||||
0) MIMO=$($QMICTL --nas-get-tx-rx-info=gsm | grep 'RX Chain' | wc -l) ;;
|
|
||||||
esac
|
|
||||||
LACTAC=$(echo "$SERVING" | awk -F [:] '/3GPP location area code:|3GPP cell ID:/{gsub("'\''",""); print $2}')
|
|
||||||
LAC_NUM=$(echo $LACTAC | awk '{print $1}')
|
|
||||||
CID_NUM=$(echo $LACTAC | awk '{print $2}')
|
|
||||||
LAC=$(echo $LAC_NUM | awk '{printf "%x\n", $1}' |awk '{print toupper($1)}')
|
|
||||||
CID=$(echo $CID_NUM | awk '{printf "%x\n", $1}' |awk '{print toupper($1)}')
|
|
||||||
CSQ_RSSI=$(echo ${STRENGTH} | awk '{print $1}')
|
|
||||||
if [ $(echo ${STRENGTH} | awk '{print$2}') ]; then
|
|
||||||
SINR=$(echo ${STRENGTH} | awk '{printf "%.0f\n", $2}')
|
|
||||||
fi
|
|
||||||
BANDCH=$(echo "$RFBAND" | awk -F [:] '/Active Channel:/{gsub("'\''| ",""); print $2}')
|
|
||||||
EARFCN=$(echo $BANDCH | awk '{print $2}')
|
|
||||||
|
|
||||||
fi
|
|
||||||
CSQ_PER=$(echo $CSQ_RSSI |awk '{printf "%d\n", (100*(1-(-50 - $1)/(-50 - -120)))}')
|
|
||||||
[ $CSQ_RSSI -ge -110 ] && CSQ_COL="black"
|
|
||||||
[ $CSQ_RSSI -ge -105 ] && CSQ_COL="red"
|
|
||||||
[ $CSQ_RSSI -ge -95 ] && CSQ_COL="orange"
|
|
||||||
[ $CSQ_RSSI -ge -75 ] && CSQ_COL="green"
|
|
||||||
if [ $CSQ_PER -gt 100 ]; then
|
|
||||||
CSQ_PER=100
|
|
||||||
elif [ $CSQ_PER -lt 0 ]; then
|
|
||||||
CSQ_PER=0
|
|
||||||
fi
|
|
||||||
EARFCN=$BANDCH
|
|
||||||
DISTANCE=$($QMICTL --nas-get-cell-location-info | awk '/LTE Timing Advance:/{gsub("\047",""); printf "%.2f\n", (299792458*($4*10^-6)/1000)/2}')
|
|
||||||
REG=$(echo "$SERVING" | awk -F [:] '/Registration state:/{print $2}' | sed "s/'//g" | awk '{print $1}')
|
|
||||||
case $REG in
|
|
||||||
registered)
|
|
||||||
REGST=1
|
|
||||||
;;
|
|
||||||
registration-denied)
|
|
||||||
REGST=3
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
DECIMAL=$(uci -q get modeminfo.@general[0].decimail)
|
|
||||||
if [ "x${DECIMAL}" != "x" ]; then
|
|
||||||
LAC=$(printf %d 0x$LAC_NUM)
|
|
||||||
CID=$(printf %d 0x$CID_NUM)
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#get_device
|
|
||||||
function get_data_in(){
|
|
||||||
get_hardware_info >/dev/null 2>&1
|
|
||||||
get_signal_info >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
get_hwinfo(){
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,176 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
get_device_info(){
|
|
||||||
DEVPORT=$(uci -q get modeminfo.@modeminfo[0].device_qmi)
|
|
||||||
DEVCTL=$(echo $DEVPORT | awk -F [\/] '{print $NF}')
|
|
||||||
if ! [ -x /sbin/uqmi ]; then
|
|
||||||
logger -t "luci-app-modeminfo" "uqmi not found!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ $DEVPORT ]; then
|
|
||||||
QPROXY=$(uci -q get modeminfo.@modeminfo[0].qmi_proxy)
|
|
||||||
if [ "x${QPROXY}" = "x" ]; then
|
|
||||||
export MBIM=""
|
|
||||||
else
|
|
||||||
export MBIM="-m"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
for qmi in $(ls /dev/cdc-wdm*); do
|
|
||||||
if [ $qmi ]; then
|
|
||||||
QMI_DEVICE=$qmi
|
|
||||||
if ! [ -n $(which uqmi) ]; then
|
|
||||||
logger -t "luci-app-modeminfo" "uqmi not found or installed!"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
logger -t "luci-app-modeminfo" "Device is no QMI mode or not found!"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [ $qmi ]; then
|
|
||||||
uci set modeminfo.@modeminfo[0].device_qmi="$qmi"
|
|
||||||
uci commit modeminfo
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
get_data(){
|
|
||||||
case $1 in
|
|
||||||
hw)
|
|
||||||
uqmi ${MBIM} -s -d ${DEVPORT} --get-imei
|
|
||||||
;;
|
|
||||||
net)
|
|
||||||
uqmi ${MBIM} -s -d ${DEVPORT} \
|
|
||||||
--get-serving-system
|
|
||||||
;;
|
|
||||||
sig)
|
|
||||||
uqmi ${MBIM} -s -d ${DEVPORT} \
|
|
||||||
--get-signal-info
|
|
||||||
;;
|
|
||||||
lte)
|
|
||||||
uqmi ${MBIM} -d ${DEVPORT} \
|
|
||||||
--get-lte-cphy-ca-info
|
|
||||||
;;
|
|
||||||
base)
|
|
||||||
uqmi ${MBIM} -s -d ${DEVPORT} \
|
|
||||||
--get-system-info
|
|
||||||
;;
|
|
||||||
mimo)
|
|
||||||
uqmi ${MBIM} -s -d ${DEVPORT} \
|
|
||||||
--nas-get-tx-rx-info=$MODE
|
|
||||||
;;
|
|
||||||
sta)
|
|
||||||
uqmi ${MBIM} -d ${DEVPORT} \
|
|
||||||
--get-cell-location-info
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
killall -9 uqmi >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
get_hardware_info(){
|
|
||||||
DATA=$(get_data hw)
|
|
||||||
MANUF=$(cat $(readlink -f /sys/class/usbmisc/${DEVCTL})/../../../manufacturer)
|
|
||||||
MODEL="$(cat $(readlink -f /sys/class/usbmisc/${DEVCTL})/../../../product)"
|
|
||||||
DEVICE="$MANUF $MODEL"
|
|
||||||
IMEI=$(echo "$DATA" | tail -1 | tr -d '"')
|
|
||||||
}
|
|
||||||
|
|
||||||
get_signal_info(){
|
|
||||||
DATA=$(get_data net)
|
|
||||||
eval $(jsonfilter -s "$DATA" -e "COPS=$['plmn_description']" \
|
|
||||||
-e "COPS_MCC=$['plmn_mcc']" \
|
|
||||||
-e "COPS_MNC_RAW=$['plmn_mnc']" \
|
|
||||||
-e "REG=$['registration']" \
|
|
||||||
-e "ROAM=$['roaming']" )
|
|
||||||
DATA=$(get_data sig)
|
|
||||||
eval $(jsonfilter -s "$DATA" -e "MODE=$['type']" \
|
|
||||||
-e "CSQ_RSSI=$['rssi']" \
|
|
||||||
-e "RSRP=$['rsrp']" \
|
|
||||||
-e "RSRQ=$['rsrq']" \
|
|
||||||
-e "SINR=$['snr']")
|
|
||||||
DATA=$(get_data base)
|
|
||||||
eval $(jsonfilter -s "$DATA" -e "TAC_NUM=$['$MODE']['tracking_area_code']" \
|
|
||||||
-e "CELL=$['$MODE']['cell_id']" \
|
|
||||||
-e "ENBID=$['$MODE']['enodeb_id']")
|
|
||||||
DATA=$(get_data sta)
|
|
||||||
EARFCN=$(echo "$DATA" | awk '/channel/{gsub(",",""); print $2}' | head -1)
|
|
||||||
PCI=$(echo "$DATA" | awk '/serving_cell_id/{gsub(",",""); print $2}' | head -1)
|
|
||||||
case $MODE in
|
|
||||||
LTE)
|
|
||||||
DATA=$(get_data lte)
|
|
||||||
eval $(jsonfilter -s "$DATA" -e "BW=$['primary']['bandwidth']")
|
|
||||||
CA=$(echo "$DATA" | awk -F [:] '/secondary_/{gsub("\"","");print $1}')
|
|
||||||
LTE_CA=$(echo "$CA" | wc -l)
|
|
||||||
if [ $LTE_CA -ge 1 ]; then
|
|
||||||
BWCA=0
|
|
||||||
for a in $CA; do
|
|
||||||
eval $(jsonfilter -s "$DATA" -e "SCx=$['$a']['band']" \
|
|
||||||
-e "BWC=$['$a']['bandwidth']")
|
|
||||||
SCC="$SCC+$SCx"
|
|
||||||
BWCA=$(($BWCA+$BWC))
|
|
||||||
done
|
|
||||||
BWCA=$(($BW+$BWCA))
|
|
||||||
fi
|
|
||||||
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
MODE=$(echo $MODE | awk '{print toupper($1)}')
|
|
||||||
if [ "$COPS_MNC_RAW" -lt "10" ]; then
|
|
||||||
COPS_MNC=0${COPS_MNC_RAW}
|
|
||||||
else
|
|
||||||
COPS_MNC=${COPS_MNC_RAW}
|
|
||||||
fi
|
|
||||||
if [ "x${COPS}" = "x" ]; then
|
|
||||||
COPS="${COPS_MCC} ${COPS_MNC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
SINR=$(echo $SINR | awk '{printf "%.0f\n", $1}')
|
|
||||||
LAC=$(echo $TAC_NUM | awk '{printf "%x\n", toupper($1)}')
|
|
||||||
ENBID_h=$(printf %x $ENBID)
|
|
||||||
CELL_h=$(printf %x $CELL)
|
|
||||||
if [ "$CELL" -le 15 ]; then
|
|
||||||
CELL_h="0${CID_h}"
|
|
||||||
fi
|
|
||||||
CID="${ENBID_h}${CELL_h}"
|
|
||||||
CID_NUM=$(printf %d 0x$CID)
|
|
||||||
|
|
||||||
case $REG in
|
|
||||||
not_registered) REGST=0 ;;
|
|
||||||
registered)
|
|
||||||
case $ROAM in
|
|
||||||
true) REGST=5 ;;
|
|
||||||
*) REGST=1 ;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
searching) REGST=2 ;;
|
|
||||||
registering_denied) REGST=3 ;;
|
|
||||||
unknown) REGST=4 ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
CSQ_PER=$(echo $CSQ_RSSI |awk '{printf "%d\n", (100*(1-(-50 - $1)/(-50 - -120)))}')
|
|
||||||
[ $CSQ_RSSI -ge -110 ] && CSQ_COL="black"
|
|
||||||
[ $CSQ_RSSI -ge -105 ] && CSQ_COL="red"
|
|
||||||
[ $CSQ_RSSI -ge -95 ] && CSQ_COL="orange"
|
|
||||||
[ $CSQ_RSSI -ge -75 ] && CSQ_COL="green"
|
|
||||||
if [ $CSQ_PER -gt 100 ]; then
|
|
||||||
CSQ_PER=100
|
|
||||||
elif [ $CSQ_PER -lt 0 ]; then
|
|
||||||
CSQ_PER=0
|
|
||||||
fi
|
|
||||||
|
|
||||||
DECIMAL=$(uci -q get modeminfo.@modeminfo[0].general)
|
|
||||||
if [ "x${DECIMAL}" != "x" ]; then
|
|
||||||
LAC=$LAC_NUM
|
|
||||||
CID=$CID_NUM
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_data_in(){
|
|
||||||
get_hardware_info >/dev/null 2>&1
|
|
||||||
get_signal_info >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
get_hwinfo(){
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
@@ -4,7 +4,7 @@ trap 'cleanup >/dev/null 2>&1; exit 0' INT TERM
|
|||||||
SECTIONS=$(echo $(uci show modeminfo | awk -F [\]\[\@=] '/=modeminfo/{print $3}'))
|
SECTIONS=$(echo $(uci show modeminfo | awk -F [\]\[\@=] '/=modeminfo/{print $3}'))
|
||||||
|
|
||||||
get_vars(){
|
get_vars(){
|
||||||
for v in device device_qmi qmi_proxy decimail qmi_mode; do
|
for v in device device_qmi qmi_trap decimail qmi_mode; do
|
||||||
eval $v=$(uci -q get modeminfo.@modeminfo[${s}].${v} 2>/dev/null)
|
eval $v=$(uci -q get modeminfo.@modeminfo[${s}].${v} 2>/dev/null)
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@@ -62,17 +62,12 @@ function if_null() {
|
|||||||
|
|
||||||
|
|
||||||
qmi_device(){
|
qmi_device(){
|
||||||
if [ $qmi_mode ]; then
|
[ -n "$qmi_mode" ] || SCRIPT=/usr/share/modeminfo/scripts/modeminfo
|
||||||
SCRIPT=/usr/share/modeminfo/scripts/modeminfo-qmi
|
[ -r $SCRIPT ] && {
|
||||||
else
|
|
||||||
SCRIPT=/usr/share/modeminfo/scripts/modeminfo
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -r $SCRIPT ]; then
|
|
||||||
. $SCRIPT
|
. $SCRIPT
|
||||||
else
|
} || {
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -86,24 +81,33 @@ echo "{ \"modem\" : ["
|
|||||||
|
|
||||||
for s in $SECTIONS; do
|
for s in $SECTIONS; do
|
||||||
m=$((${s} + 1))
|
m=$((${s} + 1))
|
||||||
if [ "$s" ]; then
|
get_vars
|
||||||
get_vars
|
if [ $qmi_mode ]; then
|
||||||
qmi_device
|
if [ "$s" ]; then
|
||||||
get_device_info
|
/usr/bin/qminfo $device_qmi --json --${qmi_trap}
|
||||||
get_data_in >/dev/null 2>&1
|
fi
|
||||||
if_null
|
if [ "$ARGSLEN" != "${m}" ]; then
|
||||||
json_status
|
echo ","
|
||||||
fi
|
fi
|
||||||
if [ "$ARGSLEN" = "${m}" ]; then
|
|
||||||
echo " }"
|
|
||||||
else
|
else
|
||||||
echo " },"
|
if [ "$s" ]; then
|
||||||
|
qmi_device
|
||||||
|
get_device_info
|
||||||
|
get_data_in >/dev/null 2>&1
|
||||||
|
if_null
|
||||||
|
json_status
|
||||||
|
fi
|
||||||
|
if [ "$ARGSLEN" = "${m}" ]; then
|
||||||
|
echo " }"
|
||||||
|
else
|
||||||
|
echo " },"
|
||||||
|
fi
|
||||||
|
# flush modem variables
|
||||||
|
unset BWCA SCC SC BWDx BWPx BWCx BWDL LTE_CA \
|
||||||
|
DEVICE COPS MODE CSQ_PER LAC CSQ_RSSI \
|
||||||
|
SINR RSRP IMEI REGST EARFCN CHIPTEMP FW \
|
||||||
|
ICCID IMSI RSRQ DISTANCE
|
||||||
fi
|
fi
|
||||||
# flush modem variables
|
|
||||||
unset BWCA SCC SC BWDx BWPx BWCx BWDL LTE_CA \
|
|
||||||
DEVICE COPS MODE CSQ_PER LAC CSQ_RSSI \
|
|
||||||
SINR RSRP IMEI REGST EARFCN CHIPTEMP FW \
|
|
||||||
ICCID IMSI RSRQ DISTANCE
|
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "]}"
|
echo "]}"
|
||||||
|
|||||||
Reference in new issue
Block a user