[PATCH v2] uqmi: fix network registration loop
Baptiste Jonglez
baptiste at bitsofnetworks.org
Tue May 11 10:59:13 PDT 2021
On 10-05-21, Florian Eckert wrote:
>
>
> On 2021-05-08 12:33, Baptiste Jonglez wrote:
> > Applied, thanks.
> >
> > Does this need to be backported to 21.02 or even 19.07?
>
> yes that would not be bad at least for openwrt-21.02
> On openwrt-19.07 there are additional commits needed.
Ok, then I won't touch 19.07, unless uqmi support is really broken.
I've backported this patch to 21.02.
> Thanks for take care
>
> >
> > Baptiste
> >
> > On 20-04-21, thomas.richard at kontron.com wrote:
> > > From: Thomas Richard <thomas.richard at kontron.com>
> > >
> > > 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 <thomas.richard at kontron.com>
> > > ---
> > > 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
> >
> > _______________________________________________
> > openwrt-devel mailing list
> > openwrt-devel at lists.openwrt.org
> > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.openwrt.org/pipermail/openwrt-devel/attachments/20210511/7d75eae7/attachment.sig>
More information about the openwrt-devel
mailing list