Applied, thanks. Does this need to be backported to 21.02 or even 19.07?
Baptiste On 20-04-21, [email protected] wrote: > From: Thomas Richard <[email protected]> > > With some debug in qmi.sh using following patch, some errors are visible > in the registration step > @@ -29,6 +29,7 @@ proto_qmi_init_config() { > } > > proto_qmi_setup() { > + set -x > local interface="$1" > local dataformat connstat plmn_mode mcc mnc > local device apn auth username password pincode delay modes pdptype > @@ -224,6 +225,8 @@ proto_qmi_setup() { > fi > done > > + registration=$(uqmi -s -d "$device" --get-serving-system) > + > [ -n "$modes" ] && uqmi -s -d "$device" --set-network-modes "$modes" > > /dev/null 2>&1 > > echo "Starting network $interface" > > During the boot of the system, modem could not start automatically its > network registration. > netifd: wan (9235): + echo 'Waiting for network registration' > netifd: wan (9235): Waiting for network registration > netifd: wan (9235): + local 'registration_timeout=0' > netifd: wan (9235): + uqmi -s -d /dev/cdc-wdm1 --get-serving-system > netifd: wan (9235): + grep '"searching"' > netifd: wan (9235): + uqmi -s -d /dev/cdc-wdm1 --get-serving-system > netifd: wan (9235): + > registration='{"registration":"not_registered","plmn_mcc":208,"plmn_mnc":20,"plmn_description":"","roaming":true}' > netifd: wan (9235): + '[' -n ] > netifd: wan (9235): + echo 'Starting network wan' > > As the while loop checks only "searching" pattern, uqmi.sh script quits > searching loop and continues whereas the modem is not registered > > Other issue, after X seconds modem stops searching. > netifd: wan (9213): + uqmi -s -d /dev/cdc-wdm0 --get-serving-system > netifd: wan (9213): + grep '"searching"' > netifd: wan (9213): + '[' -e /dev/cdc-wdm0 ] > netifd: wan (9213): + '[' 3 -lt 0 -o 0 '=' 0 ] > netifd: wan (9213): + let registration_timeout++ > netifd: wan (9213): + sleep 1 > netifd: wan (9213): + uqmi -s -d /dev/cdc-wdm0 --get-serving-system > netifd: wan (9213): + grep '"searching"' > netifd: wan (9213): + uqmi -s -d /dev/cdc-wdm0 --get-serving-system > netifd: wan (9213): + registration='{"registration":"not_registered"}' > netifd: wan (9213): + '[' -n ] > netifd: wan (9213): + echo 'Starting network wan' > netifd: wan (9213): Starting network wan > > If registration_timeout is not expired, registration can be restarted > > Signed-off-by: Thomas Richard <[email protected]> > --- > package/network/utils/uqmi/Makefile | 2 +- > .../utils/uqmi/files/lib/netifd/proto/qmi.sh | 35 > ++++++++++++++++------ > 2 files changed, 27 insertions(+), 10 deletions(-) > > diff --git a/package/network/utils/uqmi/Makefile > b/package/network/utils/uqmi/Makefile > index 68958a3729..da54ba0f46 100644 > --- a/package/network/utils/uqmi/Makefile > +++ b/package/network/utils/uqmi/Makefile > @@ -1,7 +1,7 @@ > include $(TOPDIR)/rules.mk > > PKG_NAME:=uqmi > -PKG_RELEASE:=2 > +PKG_RELEASE:=3 > > PKG_SOURCE_PROTO:=git > PKG_SOURCE_URL=$(PROJECT_GIT)/project/uqmi.git > diff --git a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh > b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh > index a6c785eb56..c0134f44dd 100755 > --- a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh > +++ b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh > @@ -209,19 +209,36 @@ proto_qmi_setup() { > > uqmi -s -d "$device" --sync > /dev/null 2>&1 > > + uqmi -s -d "$device" --network-register > /dev/null 2>&1 > + > echo "Waiting for network registration" > + sleep 1 > local registration_timeout=0 > - while uqmi -s -d "$device" --get-serving-system | grep '"searching"' > > /dev/null; do > - [ -e "$device" ] || return 1 > - if [ "$registration_timeout" -lt "$timeout" -o "$timeout" = "0" > ]; then > - let registration_timeout++ > - sleep 1; > + local registration_state="" > + while true; do > + registration_state=$(uqmi -s -d "$device" --get-serving-system > 2>/dev/null | jsonfilter -e "@.registration" 2>/dev/null) > + > + [ "$registration_state" = "registered" ] && break > + > + if [ "$registration_state" = "searching" ] || [ > "$registration_state" = "not_registered" ]; then > + if [ "$registration_timeout" -lt "$timeout" ] || [ > "$timeout" = "0" ]; then > + [ "$registration_state" = "searching" ] || { > + echo "Device stopped network > registration. Restart network registration" > + uqmi -s -d "$device" --network-register > > /dev/null 2>&1 > + } > + let registration_timeout++ > + sleep 1 > + continue > + fi > + echo "Network registration failed, registration timeout > reached" > else > - echo "Network registration failed" > - proto_notify_error "$interface" > NETWORK_REGISTRATION_FAILED > - proto_block_restart "$interface" > - return 1 > + # registration_state is 'registration_denied' or > 'unknown' or '' > + echo "Network registration failed (reason: > '$registration_state')" > fi > + > + proto_notify_error "$interface" NETWORK_REGISTRATION_FAILED > + proto_block_restart "$interface" > + return 1 > done > > [ -n "$modes" ] && uqmi -s -d "$device" --set-network-modes "$modes" > > /dev/null 2>&1
signature.asc
Description: PGP signature
_______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
