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
|
. /lib/functions.sh
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
|
|
||||||
config_load qmodem
|
config_load qmodem
|
||||||
config_foreach _mk_rundir modem-device
|
config_foreach _mk_rundir modem-device
|
||||||
config_get block_auto_probe main block_auto_probe 0
|
config_get block_auto_probe main block_auto_probe 0
|
||||||
@ -17,6 +16,9 @@ start_service() {
|
|||||||
#once enabled, skip all check or scan
|
#once enabled, skip all check or scan
|
||||||
[ "$block_auto_probe" -eq 1 ] && return
|
[ "$block_auto_probe" -eq 1 ] && return
|
||||||
|
|
||||||
|
#auto add option driver for usb device
|
||||||
|
config_foreach _usb_option_driver modem-device
|
||||||
|
|
||||||
#enabled by default
|
#enabled by default
|
||||||
if [ "$try_preset_pcie" -eq 1 ];then
|
if [ "$try_preset_pcie" -eq 1 ];then
|
||||||
_try_vendor_preset_pcie
|
_try_vendor_preset_pcie
|
||||||
@ -131,3 +133,22 @@ _try_device()
|
|||||||
/usr/share/qmodem/modem_scan.sh disable "$1"
|
/usr/share/qmodem/modem_scan.sh disable "$1"
|
||||||
fi
|
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
|
procd_set_param timeout 30
|
||||||
config_load qmodem
|
config_load qmodem
|
||||||
config_foreach _soft_reboot modem-device
|
config_foreach _soft_reboot modem-device
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_soft_reboot() {
|
_soft_reboot() {
|
||||||
config_get soft_reboot $1 soft_reboot
|
config_get soft_reboot $1 soft_reboot
|
||||||
if [ "$soft_reboot" == "1" ]; then
|
[ "$soft_reboot" != "1" ] && return 0
|
||||||
config_get at_port $1 at_port
|
|
||||||
|
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")
|
response=$(tom_modem -d "$at_port" -o a -c "AT+CFUN=1,1")
|
||||||
retries=3
|
echo "$response" | grep -qi "ok" && break
|
||||||
while ! echo "$response" | grep -qi "ok" && [ $retries -gt 0 ]; do
|
sleep 1
|
||||||
sleep 1
|
done
|
||||||
response=$(tom_modem -d "$at_port" -o a -c "AT+CFUN=1,1")
|
|
||||||
retries=$((retries - 1))
|
for i in $(seq 1 15); do
|
||||||
done
|
[ ! -e "$at_port" ] && {
|
||||||
max_retries=15
|
echo "Device disconnected after $i seconds"
|
||||||
while [ -e "$at_port" ] && [ $max_retries -gt 0 ]; do
|
return 0
|
||||||
sleep 1
|
}
|
||||||
max_retries=$((max_retries - 1))
|
sleep 1
|
||||||
done
|
done
|
||||||
fi
|
|
||||||
|
echo "Device did not disconnect within timeout period"
|
||||||
|
return 0
|
||||||
}
|
}
|
@ -36,6 +36,10 @@
|
|||||||
"3466:3301": {
|
"3466:3301": {
|
||||||
"name": "mt5700m-cn",
|
"name": "mt5700m-cn",
|
||||||
"option_driver": 1
|
"option_driver": 1
|
||||||
|
},
|
||||||
|
"2c7c:8101": {
|
||||||
|
"name": "rg801",
|
||||||
|
"option_driver": 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -492,6 +492,7 @@ EOF
|
|||||||
for at_port in $at_ports; do
|
for at_port in $at_ports; do
|
||||||
uci add_list qmodem.$section_name.ports="/dev/$at_port"
|
uci add_list qmodem.$section_name.ports="/dev/$at_port"
|
||||||
done
|
done
|
||||||
|
[ "$option_driver" == "1" ] && uci set qmodem.$section_name.option_driver="1"
|
||||||
uci commit qmodem
|
uci commit qmodem
|
||||||
mkdir -p /var/run/qmodem/${section_name}_dir
|
mkdir -p /var/run/qmodem/${section_name}_dir
|
||||||
lock -u /tmp/lock/modem_add_$slot
|
lock -u /tmp/lock/modem_add_$slot
|
||||||
|
Loading…
x
Reference in New Issue
Block a user