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

Attachment: signature.asc
Description: PGP signature

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to