uqmi: fix non-working PLMN selection
authorDavid Bauer <mail@david-bauer.net>
Mon, 9 Oct 2023 21:08:01 +0000 (23:08 +0200)
committerDavid Bauer <mail@david-bauer.net>
Tue, 31 Oct 2023 20:12:15 +0000 (21:12 +0100)
The PLMN selection was reset when calling network-register, thus
rendering the sepcific selection of a carrier unapplied.

Set the PLMN selection after executing network-register. This seems to
cause the modem to re-select the carrier eventually.

That being said, qmi does allow the parameterization of the
network-register to include dpecific PLMN settings, however this is
currently not implemented in uqmi.

Signed-off-by: David Bauer <mail@david-bauer.net>
package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh

index 96555f537cdade4390ffb3de70deea3caacc357a..7b93a03ee50f6361aeacb7c2b2c6bec3d3c5ecdb 100755 (executable)
@@ -216,15 +216,6 @@ proto_qmi_setup() {
                fi
        fi
 
-       if [ -n "$mcc" -a -n "$mnc" ]; then
-               uqmi -s -d "$device" --set-plmn --mcc "$mcc" --mnc "$mnc" > /dev/null 2>&1 || {
-                       echo "Unable to set PLMN"
-                       proto_notify_error "$interface" PLMN_FAILED
-                       proto_block_restart "$interface"
-                       return 1
-               }
-       fi
-
        # Cleanup current state if any
        uqmi -s -d "$device" --stop-network 0xffffffff --autoconnect > /dev/null 2>&1
        uqmi -s -d "$device" --set-ip-family ipv6 --stop-network 0xffffffff --autoconnect > /dev/null 2>&1
@@ -252,6 +243,16 @@ proto_qmi_setup() {
 
        uqmi -s -d "$device" --network-register > /dev/null 2>&1
 
+       # PLMN selection must happen after the call to network-register
+       if [ -n "$mcc" -a -n "$mnc" ]; then
+               uqmi -s -d "$device" --set-plmn --mcc "$mcc" --mnc "$mnc" > /dev/null 2>&1 || {
+                       echo "Unable to set PLMN"
+                       proto_notify_error "$interface" PLMN_FAILED
+                       proto_block_restart "$interface"
+                       return 1
+               }
+       fi
+
        [ -n "$modes" ] && {
                uqmi -s -d "$device" --set-network-modes "$modes" > /dev/null 2>&1
                sleep 3