use unified version management and saperate script files (#85)

* Add unified version management and update package versions for qmodem applications and saperate script files

* qmodem: define package architecture as 'all' in Makefile
This commit is contained in:
Fu Jianrong
2025-08-07 22:53:27 +08:00
committed by GitHub
parent b14742df6b
commit 384bdbc9e0
47 changed files with 276 additions and 79 deletions

View File

@@ -5,7 +5,7 @@ on:
- 'main'
# only run when "luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json" is changed
paths:
- 'luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json'
- 'application/qmodem/files/usr/share/qmodem/modem_support.json'
env:
TZ: Asia/Shanghai
@@ -29,7 +29,7 @@ jobs:
cd qmodem
is_json_invalid=0
is_diff=0
python3 ./scripts/update_support_list.py temp_support_list ./luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json || is_json_invalid=1
python3 ./scripts/update_support_list.py temp_support_list ./application/qmodem/files/usr/share/qmodem/modem_support.json || is_json_invalid=1
diff ./temp_support_list.md ./docs/support_list.md -u > /tmp/file_diff.txt || is_diff=1
if [ "$is_json_invalid" == "1" ];then
exit 1

View File

@@ -58,7 +58,7 @@ jobs:
id: update_modem_support_list
run: |
cd qmodem
python3 ./scripts/update_support_list.py temp_support_list ./luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json
python3 ./scripts/update_support_list.py temp_support_list ./application/qmodem/files/usr/share/qmodem/modem_support.json
mv temp_support_list_release_notes.md ./release_note.md
- name: Upload Release Note

View File

@@ -3,7 +3,7 @@ on:
pull_request:
# only run when "luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json" is changed
paths:
- 'luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json'
- 'application/qmodem/files/usr/share/qmodem/modem_support.json'
env:
TZ: Asia/Shanghai
@@ -31,7 +31,7 @@ jobs:
run: |
cd pr_branch
is_json_invalid=0
python3 ./scripts/update_support_list.py temp_support_list ./luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json || is_json_invalid=1
python3 ./scripts/update_support_list.py temp_support_list ./application/qmodem/files/usr/share/qmodem/modem_support.json || is_json_invalid=1
if [ "$is_json_invalid" = "1" ]; then
echo "pr_close=1" >> $GITHUB_OUTPUT

View File

@@ -1,2 +1,3 @@
luci-app-qmodem
luci-app-qmodem-sms
qmodem

View File

@@ -0,0 +1,60 @@
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
# Include unified version
include ../../version.mk
PKG_NAME:=qmodem
PKG_RELEASE:=$(QMODEM_RELEASE)
PKG_VERSION:=$(QMODEM_VERSION)
include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)
PKGARCH:=all
SECTION:=utils
CATEGORY:=Utilities
TITLE:=QModem scripts
DEPENDS:= \
+kmod-usb2 +kmod-usb3 \
+kmod-usb-serial +kmod-usb-serial-option +kmod-usb-serial-qualcomm \
+kmod-usb-net +kmod-usb-acm \
+kmod-usb-wdm \
+kmod-usb-net-cdc-ether \
+kmod-usb-net-cdc-mbim \
+kmod-usb-net-rndis \
+kmod-usb-net-cdc-ncm +kmod-usb-net-huawei-cdc-ncm \
+tom_modem +terminfo +sms-tool_q \
+jq +bc\
+coreutils +coreutils-stat \
+usbutils \
+ndisc6 \
+PACKAGE_luci-app-qmodem_INCLUDE_generic-qmi-wwan:kmod-usb-net-qmi-wwan \
+PACKAGE_luci-app-qmodem_INCLUDE_vendor-qmi-wwan:kmod-qmi_wwan_q \
+PACKAGE_luci-app-qmodem_INCLUDE_vendor-qmi-wwan:kmod-qmi_wwan_f \
+PACKAGE_luci-app-qmodem_INCLUDE_vendor-qmi-wwan:kmod-qmi_wwan_s \
+PACKAGE_luci-app-qmodem_INCLUDE_ADD_PCI_SUPPORT:kmod-pcie_mhi \
+PACKAGE_luci-app-qmodem_INCLUDE_ADD_PCI_SUPPORT:pciutils \
+PACKAGE_luci-app-qmodem_INCLUDE_ADD_MTK_T7XX_SUPPORT:umbim \
+PACKAGE_luci-app-qmodem_INCLUDE_ADD_MTK_T7XX_SUPPORT:kmod-mtk-t7xx \
+PACKAGE_luci-app-qmodem_INCLUDE_ADD_QFIREHOSE_SUPPORT:qfirehose \
+PACKAGE_luci-app-qmodem_USE_TOM_CUSTOMIZED_QUECTEL_CM:quectel-CM-5G-M \
+PACKAGE_luci-app-qmodem_USING_QWRT_QUECTEL_CM_5G:quectel-CM-5G \
+PACKAGE_luci-app-qmodem_USING_NORMAL_QUECTEL_CM:quectel-cm
endef
define Package/$(PKG_NAME)/description
QModem scripts
endef
define Build/Prepare
endef
define Build/Compile
endef
define Package/$(PKG_NAME)/install
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,$(PKG_NAME)))

View File

@@ -553,7 +553,7 @@ set_imei()
network_info()
{
m_debug "Fibocom network info"
class="Network Information"
#Network Type网络类型
at_command="AT+PSRAT?"
network_type=$(at ${at_port} ${at_command} | grep "+PSRAT:" | sed 's/+PSRAT: //g' | sed 's/\r//g')
@@ -563,43 +563,27 @@ network_info()
local rat_num=$(at ${at_port} ${at_command} | grep "+COPS:" | awk -F',' '{print $4}' | sed 's/\r//g')
network_type=$(get_rat ${rat_num})
}
#设置网络类型为5G时信号强度指示用RSRP代替
# at_command="AT+GTCSQNREN=1"
# at $at_port $at_command
#CSQ信号强度
# at_command="AT+CSQ"
# response=$(at $at_port $at_command | grep "+CSQ:" | sed 's/+CSQ: //g' | sed 's/\r//g')
#RSSI4G信号强度指示
# rssi_num=$(echo $response | awk -F',' '{print $1}')
# rssi=$(get_rssi $rssi_num)
#BER4G信道误码率
# ber=$(echo $response | awk -F',' '{print $2}')
# #PER信号强度
# if [ -n "$csq" ]; then
# per=$(($csq * 100/31))"%"
# fi
#速率统计
# at_command="AT+GTSTATIS?"
# response=$(at $at_port $at_command | grep "+GTSTATIS:" | sed 's/+GTSTATIS: //g' | sed 's/\r//g')
#当前上传速率单位Byte/s
# tx_rate=$(echo $response | awk -F',' '{print $2}')
#当前下载速率单位Byte/s
# rx_rate=$(echo $response | awk -F',' '{print $1}')
class="Network Information"
add_plain_info_entry "Network Type" "$network_type" "Network Type"
# add_plain_info_entry "CQI UL" "$cqi_ul" "Channel Quality Indicator for Uplink"
# add_plain_info_entry "CQI DL" "$cqi_dl" "Channel Quality Indicator for Downlink"
# add_plain_info_entry "AMBR UL" "$ambr_ul" "Access Maximum Bit Rate for Uplink"
# add_plain_info_entry "AMBR DL" "$ambr_dl" "Access Maximum Bit Rate for Downlink"
# add_speed_entry rx $rx_rate
# add_speed_entry tx $tx_rate
case $platform in
#qualcomm only command
"qualcomm")
#CSQ信号强度
#速率统计
at_command="AT+GTSTATIS?"
response=$(at $at_port $at_command | grep "+GTSTATIS:" | sed 's/+GTSTATIS: //g' | sed 's/\r//g')
#当前上传速率单位Byte/s
tx_rate=$(echo $response | awk -F',' '{print $2}')
#当前下载速率单位Byte/s
rx_rate=$(echo $response | awk -F',' '{print $1}')
if [ -z "$tx_rate" ] || [ -z "$rx_rate" ]; then
return
fi
add_speed_entry rx $rx_rate
add_speed_entry tx $tx_rate
;;
esac
}
get_lockband(){

View File

@@ -0,0 +1,150 @@
#!/bin/sh
# Copyright (C) 2025 Fujr <fjrcn@outlook.com>
_Vendor="Godsuncn"
_Author="Fujr"
_Maintainer="Fujr <fjrcn@outlook.com>"
source /usr/share/qmodem/generic.sh
function get_imei() {
imei=$(at $at_port "AT+CGSN" | grep -o '[0-9]\{15\}')
json_add_string imei "$imei"
}
function set_imei() {
imei=$1
at $at_port "AT+EGMR=1,7,\"$imei\""
}
function get_mode() {
mode=$(at $at_port "AT+ZSWITCH?" | grep -o "+ZSWITCH: [a-zA-Z]" | cut -d' ' -f2)
available_modes=$(uci -q get qmodem.$config_section.modes)
json_add_object "mode"
for available_mode in $available_modes; do
if [ "$mode" = "$available_mode" ]; then
json_add_string "$available_mode" "1"
else
json_add_string "$available_mode" "0"
fi
done
json_close_object
}
function set_mode() {
local mode=$1
case $mode in
"mbim")
at $at_port "AT+ZSWITCH=e"
;;
"rmnet")
at $at_port "AT+ZSWITCH=x"
;;
"rndis")
at $at_port "AT+ZSWITCH=r"
;;
"ecm")
at $at_port "AT+ZSWITCH=E"
;;
*)
echo "Invalid mode"
return 1
;;
esac
}
function get_network_prefer() {
res=$(at $at_port "AT+ZSNT?" | grep -o "+ZSNT: [0-9,]*" | cut -d' ' -f2)
cm_mode=$(echo $res | cut -d',' -f1)
net_sel_mode=$(echo $res | cut -d',' -f2)
pref_acq=$(echo $res | cut -d',' -f3)
json_add_object network_prefer
json_add_string "cm_mode" "$cm_mode"
json_add_string "net_sel_mode" "$net_sel_mode"
json_add_string "pref_acq" "$pref_acq"
json_close_object
}
function set_network_prefer() {
config=$1
cm_mode=$(echo $config | jq -r '.cm_mode')
net_sel_mode=$(echo $config | jq -r '.net_sel_mode')
pref_acq=$(echo $config | jq -r '.pref_acq')
if [ -z "$cm_mode" ] || [ -z "$net_sel_mode" ] || [ -z "$pref_acq" ]; then
echo "Invalid parameters"
return 1
fi
at $at_port "AT+ZSNT=$cm_mode,$net_sel_mode,$pref_acq"
}
function get_lockband() {
json_add_object "lockband"
lte_bands=$(at $at_port "AT+ZBAND?" | grep -o "LTE: [0-9,]*" | cut -d' ' -f2)
supported_bands=$(at $at_port "AT+ZBAND=?" | grep -o "LTE: ([0-9,]*)" | tr -d '()' | cut -d' ' -f2)
json_add_array "available_band"
for band in $(echo $supported_bands | tr ',' '\n'); do
add_avalible_band_entry "$band" "LTE_Band_$band"
done
json_close_array
json_add_array "lock_band"
for band in $(echo $lte_bands | tr ',' '\n'); do
json_add_string "" "$band"
done
json_close_array
json_close_object
}
function set_lockband() {
config=$1
rat=$(echo $config | jq -r '.rat')
lock_band=$(echo $config | jq -r '.lock_band')
lock_band_number=$(echo $lock_band | tr ',' '\n' | wc -l)
if [ "$rat" = "unlock" ]; then
at $at_port "AT+ZBAND=0"
else
at $at_port "AT+ZSNT=$rat,0,0" # Ensure RAT is set before locking bands
at $at_port "AT+ZBAND=$rat,$lock_band_number,$lock_band"
fi
}
function sim_info() {
class="SIM Information"
#SIM StatusSIM状态
at_command="AT+CPIN?"
sim_status=$(at $at_port $at_command | grep "+CPIN:")
sim_status=${sim_status:7:-1}
#lowercase
sim_status=$(echo $sim_status | tr A-Z a-z)
add_plain_info_entry "SIM Status" "$sim_status" "SIM Status"
add_plain_info_entry "SIM Slot" "$sim_slot" "SIM Slot"
}
function base_info() {
class="Base Information"
manufacturer=$(at $at_port "AT+CGMI" | sed -n '2p' | tr -d '\r')
model=$(at $at_port "AT+CGMM" | sed -n '2p' | tr -d '\r')
revision=$(at $at_port "AT+CGMR" | sed -n '2p' | tr -d '\r')
add_plain_info_entry "Manufacturer" "$manufacturer" "Manufacturer"
add_plain_info_entry "Model" "$model" "Model"
add_plain_info_entry "Revision" "$revision" "Revision"
get_connect_status
}
function network_info() {
carrier=$(at $at_port "AT+COPS?" | grep -o "\"[^\"]*\"" | tr -d '"')
rat=$(at $at_port "AT+RAT?" | grep -o "RAT: [a-zA-Z]*" | cut -d' ' -f2)
add_plain_info_entry "Carrier" "$carrier" "Carrier"
add_plain_info_entry "RAT" "$rat" "Radio Access Technology"
}
function vendor_get_disabled_features() {
json_add_string "" "LockBand"
json_add_string "" "NeighborCell"
}
unlock_advance

View File

@@ -1,9 +1,12 @@
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
# Include unified version
include ../../version.mk
PKG_NAME:= quectel-CM-5G-M
PKG_RELEASE:=6
PKG_VERSION:=1.6
PKG_RELEASE:=$(QMODEM_RELEASE)
PKG_VERSION:=$(QMODEM_VERSION)
include $(INCLUDE_DIR)/package.mk

View File

@@ -1,9 +1,12 @@
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
# Include unified version
include ../../version.mk
PKG_NAME:= tom_modem
PKG_RELEASE:=1
PKG_VERSION:=1.0.2
PKG_RELEASE:=$(QMODEM_RELEASE)
PKG_VERSION:=$(QMODEM_VERSION)
include $(INCLUDE_DIR)/package.mk

View File

@@ -3,10 +3,13 @@
include $(TOPDIR)/rules.mk
# Include unified version
include ../../version.mk
PKG_NAME:=luci-app-qmodem-hc
LUCI_TITLE:=Luci qwrt modem sim switch
LUCI_PKGARCH:=all
PKG_VERSION:=2.7.0
PKG_VERSION:=$(QMODEM_VERSION)
PKG_LICENSE:=GPLv3
PKG_LINCESE_FILES:=LICENSE
PKG_MAINTAINER:=Tom <fjrcn@outlook.com>

View File

@@ -3,10 +3,13 @@
include $(TOPDIR)/rules.mk
# Include unified version
include ../../version.mk
PKG_NAME:=luci-app-qmodem-mwan
LUCI_TITLE:=Luci qwrt modem mwan support
LUCI_PKGARCH:=all
PKG_VERSION:=2.7.0
PKG_VERSION:=$(QMODEM_VERSION)
PKG_LICENSE:=GPLv3
PKG_LINCESE_FILES:=LICENSE
PKG_MAINTAINER:=Tom <fjrcn@outlook.com>

View File

@@ -3,11 +3,13 @@
include $(TOPDIR)/rules.mk
# Include unified version
include ../../version.mk
PKG_NAME:=luci-app-qmodem-sms
LUCI_TITLE:=Luci qwrt modem sms support
PKG_VERSION:=2.7.0
PKG_VERSION:=$(QMODEM_VERSION)
LUCI_PKGARCH:=all
PKG_VERSION:=1
PKG_LICENSE:=GPLv3
PKG_LINCESE_FILES:=LICENSE
PKG_MAINTAINER:=Tom <fjrcn@outlook.com>

View File

@@ -3,10 +3,13 @@
include $(TOPDIR)/rules.mk
# Include unified version
include ../../version.mk
PKG_NAME:=luci-app-qmodem-ttl
LUCI_TITLE:=Luci qwrt modem ttl support
LUCI_PKGARCH:=all
PKG_VERSION:=2.7.1
PKG_VERSION:=$(QMODEM_VERSION)
PKG_LICENSE:=GPLv3
PKG_LINCESE_FILES:=LICENSE
PKG_MAINTAINER:=Tom <fjrcn@outlook.com>

View File

@@ -3,40 +3,20 @@
include $(TOPDIR)/rules.mk
# Include unified version
include ../../version.mk
PKG_NAME:=luci-app-qmodem
LUCI_TITLE:=LuCI support for QWRT Modem
LUCI_PKGARCH:=all
PKG_VERSION:=2.8.3
PKG_RELEASE:=2
PKG_VERSION:=$(QMODEM_VERSION)
PKG_RELEASE:=$(QMODEM_RELEASE)
PKG_LICENSE:=GPLv3
PKG_LINCESE_FILES:=LICENSE
PKG_MAINTAINER:=Tom <fjrcn@outlook.com>
LUCI_DEPENDS:=+luci-compat \
+kmod-usb2 +kmod-usb3 \
+kmod-usb-serial +kmod-usb-serial-option +kmod-usb-serial-qualcomm \
+kmod-usb-net +kmod-usb-acm \
+kmod-usb-wdm \
+kmod-usb-net-cdc-ether \
+kmod-usb-net-cdc-mbim \
+kmod-usb-net-rndis \
+kmod-usb-net-cdc-ncm +kmod-usb-net-huawei-cdc-ncm \
+PACKAGE_luci-app-qmodem_INCLUDE_generic-qmi-wwan:kmod-usb-net-qmi-wwan \
+PACKAGE_luci-app-qmodem_INCLUDE_vendor-qmi-wwan:kmod-qmi_wwan_q \
+PACKAGE_luci-app-qmodem_INCLUDE_vendor-qmi-wwan:kmod-qmi_wwan_f \
+PACKAGE_luci-app-qmodem_INCLUDE_vendor-qmi-wwan:kmod-qmi_wwan_s \
+usbutils +pciutils \
+PACKAGE_luci-app-qmodem_INCLUDE_ADD_PCI_SUPPORT:kmod-pcie_mhi \
+PACKAGE_luci-app-qmodem_INCLUDE_ADD_PCI_SUPPORT:pciutils \
+PACKAGE_luci-app-qmodem_INCLUDE_ADD_MTK_T7XX_SUPPORT:umbim \
+PACKAGE_luci-app-qmodem_INCLUDE_ADD_MTK_T7XX_SUPPORT:kmod-mtk-t7xx \
+PACKAGE_luci-app-qmodem_INCLUDE_ADD_QFIREHOSE_SUPPORT:qfirehose \
+PACKAGE_luci-app-qmodem_USE_TOM_CUSTOMIZED_QUECTEL_CM:quectel-CM-5G-M \
+PACKAGE_luci-app-qmodem_USING_QWRT_QUECTEL_CM_5G:quectel-CM-5G \
+PACKAGE_luci-app-qmodem_USING_NORMAL_QUECTEL_CM:quectel-cm \
+tom_modem +terminfo +sms-tool_q \
+jq +bc\
+coreutils +coreutils-stat \
+ndisc6
+qmodem
define Package/luci-app-qmodem/conffiles
/etc/config/qmodem

View File

@@ -29,7 +29,7 @@ def generate_github_release_notes(result):
if __name__ == "__main__":
prefix = sys.argv[1] if len(sys.argv) > 1 else 'support_list'
file_name = sys.argv[2] if len(sys.argv) > 2 else 'luci/luci-app-qmodem/root/usr/share/qmodem/modem_support.json'
file_name = sys.argv[2] if len(sys.argv) > 2 else 'application/qmodem/files/usr/share/qmodem/modem_support.json'
# 加载 JSON 数据
with open(file_name, 'r') as file:
data = json.load(file)

5
version.mk Normal file
View File

@@ -0,0 +1,5 @@
# Unified version management for modem_feeds
# This file should be included by all Makefiles in the feeds
QMODEM_VERSION:=2.8.5
QMODEM_RELEASE:=1