uqmi: added timeout to fix hanging qmi.sh
authorUwe Niethammer <uwe@dr-niethammer.de>
Sun, 1 Oct 2023 10:26:51 +0000 (12:26 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Tue, 3 Oct 2023 16:50:01 +0000 (18:50 +0200)
Modems which are using qmi do not reply on the 1st sync but they do
on subsequent. So qmi.sh is hanging on the first call. Since 2020 uqmi
supports a timeout parameter. Unfortunately qmi.sh didn't make use of
this parameter. So qmi.sh is now invoking an early dummy access to
unlock the modem

Signed-off-by: Uwe Niethammer <uwe@dr-niethammer.de>
package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh

index 6c5104bccd834738abd1cc0ec1e71388e496d0cd..eab7f1ea13d45d33b7cd284c6f82865faf66be77 100755 (executable)
@@ -83,6 +83,8 @@ proto_qmi_setup() {
 
        echo "Waiting for SIM initialization"
        local uninitialized_timeout=0
+       # timeout 3s for first call to avoid hanging uqmi
+       uqmi -d "$device" --get-pin-status -t 3000 > /dev/null 2>&1
        while uqmi -s -d "$device" --get-pin-status | grep '"UIM uninitialized"' > /dev/null; do
                [ -e "$device" ] || return 1
                if [ "$uninitialized_timeout" -lt "$timeout" -o "$timeout" = "0" ]; then