mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 15:32:33 +00:00
91eca7b04f
The MikroTik R11e-LTE6 modem goes into flight mode (CFUN=4) at startup and the radio is off (*RADIOPOWER: 0): AT+RESET OK OK *SIMDETEC:2,NOS *SIMDETEC:1,SIM *ICCID: 8936500119010596302 *EUICC: 1 +MSTK: 11, D025....74F3 *ADMINDATA: 0, 2, 0 +CPIN: READY *EUICC: 1 *ECCLIST: 5, 0, 112, 0, 000, 0, 08, 0, 118, 0, 911 +CREG: 0 $CREG: 0 +CESQ: 99,99,255,255,255,255 *CESQ: 99,99,255,255,255,255,0 +CGREG: 0 +CEREG: 0 +CESQ: 99,99,255,255,255,255 *CESQ: 99,99,255,255,255,255,0 *RADIOPOWER: 0 +MMSG: 0, 0 +MMSG: 0, 0 +MMSG: 1, 0 +MPBK: 1 While the chat script is able to establish the PPP connection, it's closed instantly by the modem: LCP terminated by peer. local2.info chat[7000]: send (ATD*99***1#^M) local2.info chat[7000]: expect (CONNECT) local2.info chat[7000]: ^M local2.info chat[7000]: ATD*99***1#^M^M local2.info chat[7000]: CONNECT local2.info chat[7000]: -- got it local2.info chat[7000]: send ( ^M) daemon.info pppd[6997]: Serial connection established. kern.info kernel: [ 453.659146] 3g-mikrotik: renamed from ppp0 daemon.info pppd[6997]: Renamed interface ppp0 to 3g-mikrotik daemon.info pppd[6997]: Using interface 3g-mikrotik daemon.notice pppd[6997]: Connect: 3g-mikrotik <--> /dev/ttyACM0 daemon.info pppd[6997]: LCP terminated by peer daemon.notice pppd[6997]: Connection terminated. daemon.notice pppd[6997]: Modem hangup daemon.info pppd[6997]: Exit. daemon.notice netifd: Interface 'mikrotik' is now down Sending "AT+CFUN=1" to modem deactivates the flight mode and solves the issue: daemon.notice netifd: Interface 'mikrotik' is setting up now daemon.notice netifd: mikrotik (7051): sending -> AT+CFUN=1 daemon.notice pppd[7137]: pppd 2.4.9 started by root, uid 0 local2.info chat[7140]: abort on (BUSY) local2.info chat[7140]: abort on (NO CARRIER) local2.info chat[7140]: abort on (ERROR) local2.info chat[7140]: report (CONNECT) local2.info chat[7140]: timeout set to 10 seconds local2.info chat[7140]: send (AT&F^M) local2.info chat[7140]: expect (OK) local2.info chat[7140]: ^M local2.info chat[7140]: +CESQ: 99,99,255,255,255,255^M local2.info chat[7140]: ^M local2.info chat[7140]: *CESQ: 99,99,255,255,255,255,0^M local2.info chat[7140]: AT&F^MAT&F^M^M local2.info chat[7140]: OK local2.info chat[7140]: -- got it ... local2.info chat[7140]: send (ATD*99***1#^M) local2.info chat[7140]: expect (CONNECT) local2.info chat[7140]: ^M local2.info chat[7140]: ATD*99***1#^M^M local2.info chat[7140]: CONNECT local2.info chat[7140]: -- got it local2.info chat[7140]: send ( ^M) daemon.info pppd[7137]: Serial connection established. kern.info kernel: [ 463.094254] 3g-mikrotik: renamed from ppp0 daemon.info pppd[7137]: Renamed interface ppp0 to 3g-mikrotik daemon.info pppd[7137]: Using interface 3g-mikrotik daemon.notice pppd[7137]: Connect: 3g-mikrotik <--> /dev/ttyACM0 daemon.warn pppd[7137]: Could not determine remote IP address: defaulting to 10.64.64.64 daemon.notice pppd[7137]: local IP address 100.112.63.62 daemon.notice pppd[7137]: remote IP address 10.64.64.64 daemon.notice pppd[7137]: primary DNS address 185.29.83.64 daemon.notice pppd[7137]: secondary DNS address 185.62.131.64 daemon.notice netifd: Network device '3g-mikrotik' link is up daemon.notice netifd: Interface 'mikrotik' is now up To send this AT command to the modem the "runcommand.gcom" script dependency is moved from comgt-ncm to comgt. As the comgt-ncm package depends on comgt already, this change is a NOOP from that point of view. But from the modem's point it is a low hanging fruit as the modem is usable with installing comgt and kmod-usb-ncm packages. Signed-off-by: Szabolcs Hubai <szab.hu@gmail.com>
119 lines
2.6 KiB
Bash
119 lines
2.6 KiB
Bash
#!/bin/sh
|
|
|
|
[ -n "$INCLUDE_ONLY" ] || {
|
|
NOT_INCLUDED=1
|
|
INCLUDE_ONLY=1
|
|
|
|
. ../netifd-proto.sh
|
|
. ./ppp.sh
|
|
init_proto "$@"
|
|
}
|
|
|
|
proto_3g_init_config() {
|
|
no_device=1
|
|
available=1
|
|
ppp_generic_init_config
|
|
proto_config_add_string "device:device"
|
|
proto_config_add_string "apn"
|
|
proto_config_add_string "service"
|
|
proto_config_add_string "pincode"
|
|
proto_config_add_string "delay"
|
|
proto_config_add_string "dialnumber"
|
|
}
|
|
|
|
proto_3g_setup() {
|
|
local interface="$1"
|
|
local chat
|
|
|
|
json_get_var device device
|
|
json_get_var apn apn
|
|
json_get_var service service
|
|
json_get_var pincode pincode
|
|
json_get_var dialnumber dialnumber
|
|
json_get_var delay delay
|
|
|
|
[ -n "$dat_device" ] && device=$dat_device
|
|
|
|
device="$(readlink -f $device)"
|
|
[ -e "$device" ] || {
|
|
proto_set_available "$interface" 0
|
|
return 1
|
|
}
|
|
|
|
[ -n "$delay" ] && sleep "$delay"
|
|
|
|
case "$service" in
|
|
cdma|evdo)
|
|
chat="/etc/chatscripts/evdo.chat"
|
|
;;
|
|
*)
|
|
chat="/etc/chatscripts/3g.chat"
|
|
cardinfo=$(gcom -d "$device" -s /etc/gcom/getcardinfo.gcom)
|
|
if echo "$cardinfo" | grep -q Novatel; then
|
|
case "$service" in
|
|
umts_only) CODE=2;;
|
|
gprs_only) CODE=1;;
|
|
*) CODE=0;;
|
|
esac
|
|
export MODE="AT\$NWRAT=${CODE},2"
|
|
elif echo "$cardinfo" | grep -q Option; then
|
|
case "$service" in
|
|
umts_only) CODE=1;;
|
|
gprs_only) CODE=0;;
|
|
*) CODE=3;;
|
|
esac
|
|
export MODE="AT_OPSYS=${CODE}"
|
|
elif echo "$cardinfo" | grep -q "Sierra Wireless"; then
|
|
SIERRA=1
|
|
elif echo "$cardinfo" | grep -qi huawei; then
|
|
case "$service" in
|
|
umts_only) CODE="14,2";;
|
|
gprs_only) CODE="13,1";;
|
|
*) CODE="2,2";;
|
|
esac
|
|
export MODE="AT^SYSCFG=${CODE},3FFFFFFF,2,4"
|
|
elif echo "$cardinfo" | grep -q "MikroTik"; then
|
|
COMMAND="AT+CFUN=1" gcom -d "$device" -s /etc/gcom/runcommand.gcom || return 1
|
|
fi
|
|
|
|
if [ -n "$pincode" ]; then
|
|
PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || {
|
|
proto_notify_error "$interface" PIN_FAILED
|
|
proto_block_restart "$interface"
|
|
return 1
|
|
}
|
|
fi
|
|
[ -n "$MODE" ] && gcom -d "$device" -s /etc/gcom/setmode.gcom
|
|
|
|
# wait for carrier to avoid firmware stability bugs
|
|
[ -n "$SIERRA" ] && {
|
|
gcom -d "$device" -s /etc/gcom/getcarrier.gcom || return 1
|
|
}
|
|
|
|
if [ -z "$dialnumber" ]; then
|
|
dialnumber="*99***1#"
|
|
fi
|
|
|
|
;;
|
|
esac
|
|
|
|
connect="${apn:+USE_APN=$apn }DIALNUMBER=$dialnumber /usr/sbin/chat -t5 -v -E -f $chat"
|
|
ppp_generic_setup "$interface" \
|
|
noaccomp \
|
|
nopcomp \
|
|
novj \
|
|
nobsdcomp \
|
|
noauth \
|
|
set EXTENDPREFIX=1 \
|
|
lock \
|
|
crtscts \
|
|
115200 "$device"
|
|
return 0
|
|
}
|
|
|
|
proto_3g_teardown() {
|
|
proto_kill_command "$interface"
|
|
}
|
|
|
|
[ -z "$NOT_INCLUDED" ] || add_protocol 3g
|