aboutsummaryrefslogtreecommitdiff
path: root/package/network/utils/uqmi
Commit message (Collapse)AuthorAge
* uqmi: set dangling-pointer as errorJean Thomas2024-04-28
| | | | | | | With "ebfe8b4 CMakeLists: set no-dangling-pointer" the compilation option is set in uqmi, and can therefore be removed from no-error. Signed-off-by: Jean Thomas <jean.thomas@wifirst.fr>
* uqmi: update to git HEADJean Thomas2024-04-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | e7207be uqmi: print radio interfaces in serving system command 6ef41d6 uqmi: create function to print radio interface string e25d042 uqmi: Add basic 5G NR support 3e782be uqmi: sync data from libqmi project 368d46c uqmi: support C reserved keywords in upstream JSON files 02e42c0 reorganize source code in common and uqmi specific parts 4591f0a .gitignore build/ directories 2b57ee1 uqmi: commands-uim: fix uninitialized use of card_application_state 7c77e77 data/code-gen: add support for indications ddbf864 qmi-struct.h: add missing includes 5320c1d move qmi_get_error_str to into utils.c 1503bc7 dev.c: add missing import strings.h bae945f commands-nas: add missing includes 9ffd0e2 commands: make `struct blob_buf status` public a4fbdcc commands-nas: fix gcc warning 8ff632a dev.c: add comment to qmi_request_wait() a043a74 CMakeLists: refactor SOURCES variable to allow later adding uqmid ebfe8b4 CMakeLists: set no-dangling-pointer c47125d CMakeLists: improve generated files 0f64b69 CMakeLists: update cmake minimum version to 3.5 As the built uqmi binary is now moved to a dedicated directory, update the Makefile accordingly. Signed-off-by: Jean Thomas <jean.thomas@wifirst.fr>
* qmi: add sourcefilter option supportChen Minqiang2024-04-17
| | | | | | This make source based IPv6 routing option available for qmi Signed-off-by: Chen Minqiang <ptpt52@gmail.com>
* treewide: update PKG_MIRROR_HASH to zstPaul Spooren2024-04-06
| | | | | | | When using zst instead of xz, the hash changes. This commit fixes the hash for packages and tools in core. Signed-off-by: Paul Spooren <mail@aparcar.org>
* treewide: use APK compatible version schemaPaul Spooren2024-03-22
| | | | | | | | | | | | | | | | | Different from OPKG, APK uses a deterministic version schema which chips the version into chunks and compares them individually. This enforces a certain schema which was previously entirely flexible. - Releases are added at the very and end prefixed with an `r` like `1.2.3-r3`. - Hashes are prefixed with a `~` like `1.2.3~abc123`. - Dates become semantic versions, like `2024.04.01` - Extra tags are possible like `_git`, `_alpha` and more. For full details see the APK test list: https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/master/test/version.data Signed-off-by: Paul Spooren <mail@aparcar.org>
* uqmi: update to git HEADDaniel Golle2024-01-16
| | | | | | | c3488b8 uqmi: cancel all requests on SYNC indication reception dfa612e uqmi: improve response detection Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uqmi: added timeouts in qmi.shUwe Niethammer2024-01-10
| | | | | | | | | | Modems which are using qmi do not reply on the 1st sync but they do on subsequent. Sometimes uqmi is hanging - even when using an early dummy access to unlock the modem. To always guarantee a proper initialisation, running or hanging uqmi processes must be stopped before. All uqmi calls have now a timeout option -t to avoid hanging. Signed-off-by: Uwe Niethammer <uwe@dr-niethammer.de>
* uqmi: update to latest HEADDavid Bauer2023-10-31
| | | | | | eea2924 uqmi: add slot number to uim-sim-status output Signed-off-by: David Bauer <mail@david-bauer.net>
* uqmi: configure PDP type and APN to modemDavid Bauer2023-10-31
| | | | | | | | | | | | | | Configure the PLMN and APN to the modem. This is required in cases, where either the SGSN or GGSN does not permit the selection of IPv4v6 pdp type. Previously, the modem always tried to establish a dual-stacked PDP context regardless of the configured PDP type in uci. As this setting can not be parameterized when creating a WDS context, configure it to the modems internal list of profiles. This way, the PDP type is taken into account when creating the WDS context. Signed-off-by: David Bauer <mail@david-bauer.net>
* uqmi: fix non-working PLMN selectionDavid Bauer2023-10-31
| | | | | | | | | | | | | | 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>
* uqmi: set RAT preference before attachDavid Bauer2023-10-31
| | | | | | | | | | Set the RAT preference before attaching. This handles cases better, where a network might be available but not with the preferred RAT. If RAT is changed to a non-available RAT after attach, QMI does not fail with missing registration but with failing to establish a PDP session. Signed-off-by: David Bauer <mail@david-bauer.net>
* uqmi: increase wait time before checking connection stateDavid Bauer2023-10-31
| | | | | | | | | | | | | Increase the wait time before polling the connection state for the first time. Depending on the prior state of the modem, the first poll might still return a connected state. The script then tries to establish a PDP session, which subsequently fails as the modem by then is in scan state. Increasing the wait-time to 3 seconds mitigates this from happening. Signed-off-by: David Bauer <mail@david-bauer.net>
* uqmi: add illegal SIM state recoveryDavid Bauer2023-10-31
| | | | | | | | | | | On some network-triggered disconnections the UIM state might end up in "illegal". This prevents the modem from attaching to any network in non-restricted service modes. Detect this state and reset the SIM card. This way, the modem can attach to networks again. Signed-off-by: David Bauer <mail@david-bauer.net>
* uqmi: don't block restart on failed registrationDavid Bauer2023-10-31
| | | | | | | | | | Failing the registration does not necessarily mean we can not bring this interface up. For example, roaming SIM cards are possibly steered by the home-operator. Don't block restart of the QMI interface in this case. Signed-off-by: David Bauer <mail@david-bauer.net>
* uqmi: update to latest HEADDavid Bauer2023-10-25
| | | | | | | | | c8c9f10 uim: fix help formatting aac0776 uqmi: add APN profile commands ffc5eea uim: support SIM card power-up/down d6c963d uim: add application state to SIM status Signed-off-by: David Bauer <mail@david-bauer.net>
* uqmi: added timeout to fix hanging qmi.shUwe Niethammer2023-10-03
| | | | | | | | | | 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>
* uqmi: do not start 464xlat for dual-stack configurationsLech Perczak2023-06-11
| | | | | | | | If dual-stack configuration is in use, and dhcpv6 option is set, do not start 464xlat sub-interface for dhcpv6 sub-interace , as the configuration already provides IPv4 connectivty, be it through single or dual APN configuration. Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
* uqmi: support split-APN IPv4 and IPv6 dual-stackLech Perczak2023-06-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add two new "v6apn" and "v6profile" properties, to support split-APN dual-stack onfiguration. This extends the existing ipv4v6 PDP type, allowing simultaneous connection to two distinct APNs, one for IPv4 and one for IPv6. The parameters override existing 'apn' and 'profile' respectively, if set, but only for IPv6 part of the connection. If unset, they default to their original values, constituting a standard IPv4v6 setup. If a different APN is set for IPv6, a corresponding profile MUST also be configured, with a different ID, than the IPv4 profile, for example, profile 2. Both APNs must match ones configured through QMI or through 'AT+CGDCONT' command. Example configuration in UCI: config interface 'wan' option proto 'qmi' option device '/dev/cdc-wdm0' option autoconnect '1' option pdptype 'ipv4v6' option apn 'internet' option v6apn 'internetipv6' option profile '1' option v6profile '2' Corresponding profile configuration: AT+CGDCONT? +CGDCONT: 1,"IP","internet","0.0.0.0",0,0,0,0 +CGDCONT: 2,"IPV6","internetipv6","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0 Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
* treewide: replace AUTORELEASE with real PKG_RELEASETianling Shen2023-05-18
| | | | | | | | | | | | | | | | | | Based on Paul Fertser <fercerpav@gmail.com>'s guidance: Change AUTORELEASE in rules.mk to: ``` AUTORELEASE = $(if $(DUMP),0,$(shell sed -i "s/\$$(AUTORELEASE)/$(call commitcount,1)/" $(CURDIR)/Makefile)) ``` then update all affected packages by: ``` for i in $(git grep -l PKG_RELEASE:=.*AUTORELEASE | sed 's^.*/\([^/]*\)/Makefile^\1^';); do make package/$i/clean done ``` Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
* uqmi: explicitly disconnect IPv6 address familyLech Perczak2023-04-02
| | | | | | | | | | Some modems (namely, Telit LE910C4) require the IPv6 connection state to be cleared explicitly, to avoid reporting "no effect" if IPv6 connection is already connected through autoconnect mechanism, or during LTE default bearer attach, which would lead to established session, but without a way to inform protocol handler of the status. Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
* uqmi: set IPv6 family explicitly in status checkLech Perczak2023-04-02
| | | | | | | | | | Some modems require CID to be set explicitly during IPv6 connection status check, others require IPv6 address family to be checked explicitly after establishing connection, in order to provide correct status. Set both fields in the request to satisfy them. Fixes: c8a88118af46 ("uqmi: set CID during 'query-data-status' operation") Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
* treewide: add support for "gc-sections" in PKG_BUILD_FLAGSAndre Heider2023-03-21
| | | | | | | | | | | | | | | This reduces open coding and allows to easily add a knob to enable it treewide, where chosen packages can still opt-out via "no-gc-sections". Note: libnl, mbedtls and opkg only used the CFLAGS part without the LDFLAGS counterpart. That doesn't help at all if the goal is to produce smaller binaries. I consider that an accident, and this fixes it. Note: there are also packages using only the LDFLAGS part. I didn't touch those, as gc might have been disabled via CFLAGS intentionally. Signed-off-by: Andre Heider <a.heider@gmail.com>
* uqmi: Ignore wrong maybe-uninitialized and dangling-pointer errorHauke Mehrtens2023-01-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GCC 12.2.0 shows this false positive error message: ```` uqmi-2022-05-04-56cb2d40/dev.c: In function 'qmi_request_wait': uqmi-2022-05-04-56cb2d40/dev.c:217:23: error: storing the address of local variable 'complete' in '*req.complete' [-Werror=dangling-pointer=] 217 | req->complete = &complete; | ~~~~~~~~~~~~~~^~~~~~~~~~~ uqmi-2022-05-04-56cb2d40/dev.c:208:14: note: 'complete' declared here 208 | bool complete = false; | ^~~~~~~~ uqmi-2022-05-04-56cb2d40/dev.c:208:14: note: 'req' declared here cc1: all warnings being treated as errors ```` and this one: ```` In file included from uqmi-2022-05-04-56cb2d40/commands.c:28: In function 'blobmsg_close_table', inlined from 'cmd_nas_get_cell_location_info_cb' at /home/haukeuqmi-2022-05-04-56cb2d40/commands-nas.c:897:4: /usr/include/libubox/blobmsg.h:256:9: error: 'c' may be used uninitialized [-Werror=maybe-uninitialized] 256 | blob_nest_end(buf, cookie); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from uqmi-2022-05-04-56cb2d40/commands.c:169: uqmi-2022-05-04-56cb2d40/commands-nas.c: In function 'cmd_nas_get_cell_location_info_cb': uqmi-2022-05-04-56cb2d40/commands-nas.c:713:15: note: 'c' was declared here 713 | void *c, *t, *cell, *freq; | ^ cc1: all warnings being treated as errors ```` Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* uqmi: update to git HEADDaniel Golle2022-05-04
| | | | | | | 56cb2d4 nas: add decoding of cell_id 9a9019a uqmi: wms - added storage to read text messages Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uqmi: fix acquiring PIN statusDaniel Golle2022-03-24
| | | | | | | | | | | | Evaluating the return value of 'json_load' didn't work in the intended way resulting in PIN status no longer being read on modems where --get-pin-status doesn't fail. Fix this by trying --get-pin-status first and checking if pin1_status field exists in JSON, and if it doesn't try again with --uim-get-sim-state. Fixes: #9501 Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uqmi: update to git HEADDaniel Golle2022-03-12
| | | | | | 44dd095 uqmi: corrected too short received SMS Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uqmi: set CID during 'query-data-status' operationLech Perczak2022-03-12
| | | | | | | | | | | | | Modems used in ZTE mobile broadband routers require to query the data session status using the same CID as one used to establish the session, otherwise they will report the session as "disconnected" despite reporting correct PDH in previous step. Without this change, IPv6 connection on these modems doesn't establish properly. In IPv4 this bug is present as well, but for some reason querying of IPv4 status works using temporary CID, this however seems noncompliant with QMI specifications, so fix it as well. Signed-off-by: Lech Perczak <lech.perczak@gmail.com>
* uqmi: update to git HEADDaniel Golle2022-02-02
| | | | | | f254fc5 uqmi: add support for get operating mode Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uqmi: update to git HEADDaniel Golle2021-11-22
| | | | | | | 20cd907 uqmi: use unmodified upstream JSON files b2c53dc command-nas: fix out-of-bounds read Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uqmi: update to git HEAD and improve proto handler scriptDaniel Golle2021-11-06
| | | | | | | | | | | | e303ba8 uqmi: update code generator 7880de8 uqmi: sync data from libqmi project d647f8d uqmi: add more diagnostics commands 6f95626 uim: add --uim-get-sim-state Use newly introduce --uim-get-sim-state command to query PIN status from modems which require using uim instead of dms command for that. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* treewide: remove BUILD_PARALLEL from CMake packagesRosen Penev2021-06-19
| | | | | | | | | | | | | It's already default. The only exception is mt76 which has Ninja disabled. Found with: git grep BUILD_PARALLEL | cut -d ':' -f 1 | sort -u > par git grep cmake.mk | cut -d ':' -f 1 > cmake comm -1 -2 par cmake Signed-off-by: Rosen Penev <rosenp@gmail.com>
* uqmi: fix network registration loopThomas Richard2021-05-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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@kontron.com> Tested-by: Florian Eckert <fe@dev.tdt.de>
* uqmi: set plmn only if necessaryMartin Schiller2020-11-24
| | | | | | | | | | | | | | | | | Setting the plmn to '0' (auto) will implicitly lead to a (delayed) network re-registration, which could further lead to some timing related issues in the qmi proto handler. On the other hand, if you switch back from manual plmn selection to auto mode you have to set it to '0', because this setting is permanently "saved" in the wwan module. Conclusion: If plmn is configured, check if it's already set euqally in the module. If so, do nothing. Otherwise set it. Signed-off-by: Martin Schiller <ms@dev.tdt.de> Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uqmi: update to git HEADDaniel Golle2020-11-22
| | | | | | | 65796a6 nas: add --get-plmn 0a19b5b uqmi: add timeout parameter Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uqmi: set device-operating-mode to onlineFilip Moc2020-11-22
| | | | | | | This is required for LTE module MR400 (in TL-MR6400 v4). Otherwise LTE module won't register to GSM network. Signed-off-by: Filip Moc <lede@moc6.cz>
* uqmi: add support for IPv4 autoconf from QMIFilip Moc2020-11-22
| | | | | | | | | | | There already was an option for autoconfiguring IPv4 from QMI but this was removed by commit 3b9b963e6e08 ("uqmi: always use DHCP for IPv4"). DHCP does not work on MR400 LTE module (in TL-MR6400 v4) so let's readd support for IPv4 autoconf from QMI but this time allow to configure this for IPv4 and IPv6 independently and keep DHCP default on IPv4. Signed-off-by: Filip Moc <lede@moc6.cz>
* uqmi: wait forever registration if timeout set to 0Thomas Richard2020-11-22
| | | | | | | | | | | Give possibility to wait forever the registration by setting timeout option to 0. No timeout can be useful if the interface starts whereas no network is available, because at the end of timeout the interface will be stopped and never restarted. Signed-off-by: Thomas Richard <thomas.richard@kontron.com>
* uqmi: fix indentation style and boundaryFlorian Eckert2019-07-03
| | | | | | Fix indentation style and boundary. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* uqmi: add mtu config option possibilityFlorian Eckert2019-07-03
| | | | | | | | There are mobile carrier who have different MTU size in their network. With this change it is now possible to configure this with the qmi proto handler. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* uqmi: bump to latest git HEADKoen Vandeputte2019-06-27
| | | | | | | 1965c7139374 uqmi: add explicit check for message type when expecting a response 01944dd7089b uqmi_add_command: fixed command argument assignment Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* uqmi: inherit firewall zone membership to virtual sub interfacesJo-Philipp Wich2019-03-05
| | | | | | | | | Fix an issue where subinterfaces were not added to the same firewall zone as their parent. Fixes: FS#2122 Signed-off-by: Jo-Philipp Wich <jo@mein.io> Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* uqmi: fix PIN_STATUS_FAILED error with MC7455 WCDMA/LTE modemDaniel Golle2019-02-20
| | | | | | | | | | | Apparently this modem replies differently to attempted --get-pin-status which makes the script fail if a pincode is set. Fix this. Manufacturer: Sierra Wireless, Incorporated Model: MC7455 Revision: SWI9X30C_02.24.05.06 r7040 CARMD-EV-FRMWR2 2017/05/19 06:23:09 Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uqmi: fix variable initilization for timeout handlingFlorian Eckert2018-10-12
| | | | | | Also add logging output for SIM initilization. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* uqmi: update PKG_RELEASE versionFlorian Eckert2018-10-11
| | | | | | update PKG_RELEASE Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* uqmi: stop proto handler if verify pin count is not 3Florian Eckert2018-10-11
| | | | | | | | Check pin count value from pin status and stop verification the pin if the value is less then 3. This should prevent the proto-handler to lock the SIM. If SIM is locked then the PUK is needed. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* uqmi: evaluate pin-status output in qmi_setup functionFlorian Eckert2018-10-11
| | | | | | | | | | | | | | | | | | | | | | Load the json output from uqmi --get-pin-status command and evaluate the "pin1_status" value. The following uqmi "pin1_status" values are evaluated: - disabled Do not verify PIN because SIM verification is disabled on this SIM - blocked Stop qmi_setup because SIM is locked and a PUK is required - not_verified SIM is not yet verified. Do a uqmi --verify-pin1 command if a SIM is specified - verified: Do not verify the PIN because this was already done before Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* uqmi: do not block proto handler if SIM is uninitializedFlorian Eckert2018-10-11
| | | | | | | | QMI proto setup-handler will wait forever if SIM does not get initialized. To fix this stop polling pin status and notify netifd. Netifd will generate then a "ifup-failed" ACTION. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* uqmi: do not block proto handler if modem is unable to registrateFlorian Eckert2018-10-11
| | | | | | | | QMI proto setup-handler will wait forever if it is unable to registrate to the mobile network. To fix this stop polling network registration status and notify netifd. Netifd will generate then a "ifup-failed" ACTION. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* uqmi: add timeout option valueFlorian Eckert2018-10-11
| | | | | | | | | | | This value will be used for now during following situations: * Ask the sim with the uqmi --get-pin-status command. * Wait for network registration with the uqmi --get-serving-system command. This two commands wait forever in a while loop. Add a timeout to stop waiting and so inform netifd. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* uqmi: redirect uqmi commands output to /dev/nullFlorian Eckert2018-10-11
| | | | | | | Move uqmi std and error output on commands without using them to /dev/null. This will remove useless outputs in the syslog. Signed-off-by: Florian Eckert <fe@dev.tdt.de>