luci-app-qmodem: perf: auto add option_driver
This commit is contained in:
parent
558918bec8
commit
68cf55631f
@ -6,7 +6,6 @@ USE_PROCD=1
|
||||
. /lib/functions.sh
|
||||
|
||||
start_service() {
|
||||
|
||||
config_load qmodem
|
||||
config_foreach _mk_rundir modem-device
|
||||
config_get block_auto_probe main block_auto_probe 0
|
||||
@ -16,7 +15,10 @@ start_service() {
|
||||
config_get try_preset_pcie main try_preset_pcie 1
|
||||
#once enabled, skip all check or scan
|
||||
[ "$block_auto_probe" -eq 1 ] && return
|
||||
|
||||
|
||||
#auto add option driver for usb device
|
||||
config_foreach _usb_option_driver modem-device
|
||||
|
||||
#enabled by default
|
||||
if [ "$try_preset_pcie" -eq 1 ];then
|
||||
_try_vendor_preset_pcie
|
||||
@ -131,3 +133,22 @@ _try_device()
|
||||
/usr/share/qmodem/modem_scan.sh disable "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
_usb_option_driver()
|
||||
{
|
||||
[ "$(config_get "$1" data_interface)" = "usb" ] && [ "$(config_get "$1" option_driver)" = "1" ] || return
|
||||
|
||||
local path=$(config_get "$1" path)
|
||||
local slot_vid=$(cat "${path}/idVendor" 2>/dev/null)
|
||||
local slot_pid=$(cat "${path}/idProduct" 2>/dev/null)
|
||||
|
||||
if [ -n "$slot_vid" ] && [ -n "$slot_pid" ]; then
|
||||
if echo "$slot_vid $slot_pid" > /sys/bus/usb-serial/drivers/option1/new_id 2>/dev/null; then
|
||||
logger -t modem_init "Set option driver for $1 (VID:$slot_vid PID:$slot_pid)"
|
||||
else
|
||||
logger -t modem_init "Failed to set option driver for $1 (VID:$slot_vid PID:$slot_pid)"
|
||||
fi
|
||||
else
|
||||
logger -t modem_init "Unable to get VID/PID for device $1"
|
||||
fi
|
||||
}
|
@ -11,24 +11,29 @@ stop_service() {
|
||||
procd_set_param timeout 30
|
||||
config_load qmodem
|
||||
config_foreach _soft_reboot modem-device
|
||||
|
||||
}
|
||||
|
||||
_soft_reboot() {
|
||||
config_get soft_reboot $1 soft_reboot
|
||||
if [ "$soft_reboot" == "1" ]; then
|
||||
config_get at_port $1 at_port
|
||||
[ "$soft_reboot" != "1" ] && return 0
|
||||
|
||||
config_get at_port $1 at_port
|
||||
[ -z "$at_port" ] && return 0
|
||||
|
||||
for i in $(seq 1 3); do
|
||||
response=$(tom_modem -d "$at_port" -o a -c "AT+CFUN=1,1")
|
||||
retries=3
|
||||
while ! echo "$response" | grep -qi "ok" && [ $retries -gt 0 ]; do
|
||||
sleep 1
|
||||
response=$(tom_modem -d "$at_port" -o a -c "AT+CFUN=1,1")
|
||||
retries=$((retries - 1))
|
||||
done
|
||||
max_retries=15
|
||||
while [ -e "$at_port" ] && [ $max_retries -gt 0 ]; do
|
||||
sleep 1
|
||||
max_retries=$((max_retries - 1))
|
||||
done
|
||||
fi
|
||||
echo "$response" | grep -qi "ok" && break
|
||||
sleep 1
|
||||
done
|
||||
|
||||
for i in $(seq 1 15); do
|
||||
[ ! -e "$at_port" ] && {
|
||||
echo "Device disconnected after $i seconds"
|
||||
return 0
|
||||
}
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo "Device did not disconnect within timeout period"
|
||||
return 0
|
||||
}
|
@ -36,6 +36,10 @@
|
||||
"3466:3301": {
|
||||
"name": "mt5700m-cn",
|
||||
"option_driver": 1
|
||||
},
|
||||
"2c7c:8101": {
|
||||
"name": "rg801",
|
||||
"option_driver": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -492,6 +492,7 @@ EOF
|
||||
for at_port in $at_ports; do
|
||||
uci add_list qmodem.$section_name.ports="/dev/$at_port"
|
||||
done
|
||||
[ "$option_driver" == "1" ] && uci set qmodem.$section_name.option_driver="1"
|
||||
uci commit qmodem
|
||||
mkdir -p /var/run/qmodem/${section_name}_dir
|
||||
lock -u /tmp/lock/modem_add_$slot
|
||||
|
Loading…
x
Reference in New Issue
Block a user