aboutsummaryrefslogtreecommitdiff
path: root/net/modemmanager/files
Commit message (Collapse)AuthorAge
* Merge pull request #23590 from TDT-AG/pr/20240305-modemmanagerFlorian Eckert2024-03-12
|\ | | | | modemmanager: reconnect interface if the modemmanager detects a disconnect
| * modemmanager: reconnect interface if the modemmanager detects a disconnectFlorian Eckert2024-03-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are situation for mobile routers, that the modemmanager can not stay connected to the mobile network. There can have various reasons. In order for the system to reconnect automatically, the netifd must be informed that it must re-establish the connection. The modem manager already does have a script callback handling which is already used by the modemmanager in openwrt. Currently the modem is marked as not unavailable when a disconnected event is detected. The behavior was changed with this commit, so that a reconnect of the interface is now triggerd via the netifd if the modem disconnects. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* | modemmanager: report events for virtual netdevicesDaniele Palmas2024-03-06
|/ | | | | | | | | | Virtual netdevices created for multiplexing should not be skipped when reporting events, otherwise it is not possible to setup the data connection. Add these exceptions in mm_report_event function. Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
* modemmanager: start a 3gpp network regsistrationFlorian Eckert2024-03-05
| | | | | | | | | | | | If a 'plmn' is set in the configuration, a registration attempt should be established before the simple-connect command. If the plmn is set during the simple-connect, a network change may occur during the connection setup. To prevent this, the registration is started before the simple-connect with a separate mmcli command. So that we can be sure that the modem is already registered in the correct network before the simple-connect command. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: move cleanup and enable to the topFlorian Eckert2024-03-05
| | | | | | | | | Before a new connection attempt is made, the previous connection must be cleaned up before further connection attempts are made. This is now done by moving the cleanup and enable sequence to the beginning of the conection setup. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: moving the openwrt related files to subdirectoriesFlorian Eckert2024-03-05
| | | | | | | | Moving the openwrt related files to subdirectories as they are installed on the system. This change makes it immediately apparent during development where the file is to be installed in the running system. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: suppress mm_log debug messages by defaultFlorian Eckert2024-01-19
| | | | | | | | | The log is filled with 'debug' messages. This is not necessary and is only normaly needed during development. To suppress this message, check whether the level is 'debug' and if so, suppress it. If this message is required again, the message can be generated by commenting out this line. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: replace modem available check on start with the new monitore ↵Florian Eckert2024-01-19
| | | | | | | | | | | | | | | | | | | service Before this change, the status of the sysfs paths from the kernel events was cached with a cache file. This is necessary to mark configured modems as available for the netifd. Using the new monitor service via the mmcli command 'mmcli -M' simplifies the whole process. There is no need to start sub shells in the background anymore that monitors whether the modem has already been added to the ModemManager. For this purpose, a new service was added that reacts on add and remove events for modems in the ModemManager and, if necessary, marks the logical netifd interface as available. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: move shell include to the beginning of the fileFlorian Eckert2024-01-19
| | | | | | | It is usual that the includes are listed at the beginning of the script. So let's do it that way too. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: move generally applicable functions to modemmanager.commonFlorian Eckert2024-01-19
| | | | | | | | These moved functions are general functions. This is a preparatory commit so that these moved functions can also be used in other ModemManager scripts. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: set allowedmode to 'any' if nothing is configuredFlorian Eckert2024-01-19
| | | | | | | | | | | The modem saves the permitted technology configuration in the modem itself. If the technology configuration is deleted in the uci, this is not passed on to the modem. This means that the previously saved technology configuration is remains in the modem and is therefore still active. By setting the technology to 'any', if no option is set, all technologies are allowed again. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: add possibilty for setting initial EPS bearerFlorian Eckert2023-12-04
| | | | | | | | | | | | | | | | | If no GSM but only 4G is available and a special APN must be used, it is necessary to set an inital EPS bearer beforehand. If this is not set, then modem cannot log in and register in the mobile network. The new option 'init_epsbearer' could be set to the following options. * none: No init EPS bearer is used and the old one is deleted (default) * default: Use init EPS bearer with the following config options 'iptype', 'allowedauth', 'password', 'user' and 'apn' as for the connection bearer. * custom: Other parameters are used that do not match those of the default connection bearer. These have an 'init_' prefix and are named in the same way as the default connection bearer config options. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: check modem state before establishing a connectionFlorian Eckert2023-12-04
| | | | | | | | | With this change the following modem 'state' are checked before a connection attempt setup. * failed: Stop connection attempt because of sim-missing * locked: Stop connection attempt if no pincode is set Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: move iface cleanup to wrapper scriptOliver Sedlbauer2023-10-30
| | | | | | | | | | If the ModemManager process crashes, the interfaces are not cleaned up properly because the stop_service method is not called. With this change, the interfaces are cleaned up both when stopping the service and during a crash. Therefore it is no longer necessary to perform a cleanup at the beginning. Signed-off-by: Oliver Sedlbauer <osedlbauer@tdt.de>
* modemmanager: improve cleanup of ifacesOliver Sedlbauer2023-10-30
| | | | | | | | | | Change workflow to cleanup interfaces using the sysfscache. The sysfscache stores the processed sysfs-paths. Using this instead of mmcli -L, the interfaces can be properly cleaned up even if, for example, ModemManager crashes and mmcli is no longer usable. Signed-off-by: Oliver Sedlbauer <osedlbauer@tdt.de>
* modemmanager: check status of report-kernel-eventOliver Sedlbauer2023-10-25
| | | | | | | | | | | At mm_report_modem_wait a wait status is set. When attempting to report an event (via hotplug or during startup) and the DBus is not yet available, the status in the sysfs cache is set to 'processed' incorrectly, even if mmcli fails. This is fixed by aborting the operation and logging an error when the kernel report fails. Signed-off-by: Oliver Sedlbauer <osedlbauer@tdt.de>
* modemmanager: remove sysfscache after dbus readyOliver Sedlbauer2023-10-25
| | | | | | | | | | | | | | The mm_report_events_from_cache method is called during the startup and informs the ModemManager of kernel events. Additionally, hotplug scripts inform the ModemManager of kernel events. Processed events are stored in the sysfs cache. It is possible for a hotplug script to write to the sysfs cache while the mm_report_events_from_cache method is still waiting for the ModemManager to be available on the bus during startup. This could lead to a misbehavior where modems are not recognized. To ensure a clean state on startup, the sysfs cache is cleared after the ModemManager is available, ensuring reliable processing of kernel events. Signed-off-by: Oliver Sedlbauer <osedlbauer@tdt.de>
* Merge pull request #21993 from osedl/pr/20230901-modemmanager-hardcoded-protoFlorian Eckert2023-09-27
|\ | | | | modemmanager: Remove hardcoded proto check
| * modemmanager: Remove hardcoded proto checkOliver Sedlbauer2023-09-01
| | | | | | | | | | | | | | | | | | Modified the code to correctly determine modem availability based on the sysfs path provided in the 'device' option, instead of relying on the 'proto' value. This ensures proper configuration for custom-made protos that do not match the "modemmanager" identifier. Signed-off-by: Oliver Sedlbauer <osedlbauer@tdt.de>
* | modemmanager: Fix Permission Denied errorOliver Sedlbauer2023-09-01
|/ | | | | | | | | | | | | | | | | | | | The proto_send_update function is sending a notification to netifd during the teardown section. However, netifd filters link update notifications executed during teardown, as indicated here: https://git.openwrt.org/?p=project/netifd.git;a=blob;f=proto-shell.c#l515 This was leading to a Permission Denied error due to its behavior, making proto_send_update ineffective during teardown. To address the issue, the proto_send_update function has been removed from the teardown section. This prevents the Permission Denied error while ensuring proper operation during teardown. Additionally, in the 10-report-down helper script, a check has been implemented to determine if the interface is already down. This check is crucial to avoid triggering a Permission Denied error, especially in cases where netifd is already aware of a controlled ifdown operation. Signed-off-by: Oliver Sedlbauer <osedlbauer@tdt.de>
* modemmanager: add setting for allowed and preferred modeFlorian Eckert2023-08-09
| | | | Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: remove unneeded teardown error reportingFlorian Eckert2023-08-09
| | | | | | | Teardown error reporting is not needed, bacause it overrides init error reporting. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: fix white spacesFlorian Eckert2023-08-09
| | | | Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: improve 'simple connection' option handlingFlorian Eckert2023-07-24
| | | | | | | | The line to generate the argument list for 'simple connect' is quite long and is not maintainable. To improve the handling a function 'append_param' was added for appending the 'simple connect' options. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: Adding support for 'allow_roaming' optionFrancisco Jose Alvarez2023-07-24
| | | | | | | Signed-off-by: Francisco Jose Alvarez <francisco.alvarez@galgus.net> * Update commit head * Rebase patch to the latest changes Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanger: add missing proto_init_update in teardownFlorian Eckert2023-07-24
| | | | | | | Inform netifd with missing 'proto_update', that the interface is not up anymore. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: do not set proto_notify_error on teardownFlorian Eckert2023-07-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If on teardown the 'proto_notify_error' is set to 'MM_TEARDOWN_IN_PROGRESS', then an error which is set on 'setup' is not visible in the ubus network.interface.<iface> status output. { "up": false, "pending": false, "available": true, "autostart": false, "dynamic": false, "proto": "modemmanager", "data": { }, "errors": [ { "subsystem": "dualsim", "code": "MM_TEARDOWN_IN_PROGRESS" } ] } It alway shows the code 'MM_TEARDWON_IN_PROGRESS'! By removing the line 'proto_notify_error "${interface}" MM_TEARDOWN_IN_PROGRESS' in teardown, the last error is show in the proto stack from setup. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: support setting plmnMladen Milinkovic2023-07-21
| | | | Signed-off-by: Mladen Milinkovic <maxrd2@smoothware.net>
* modemmanager: if an alias name is used do not check sysfs pathFlorian Eckert2023-06-15
| | | | | | | | | If an alias name is used for the modem, then a check if the device exists in sysfs does not work. To fix this remove the check if the sysfs device exists. The protocoll handler already checks if the modem is responsible for this device on the next line. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: do not cache virtual device eventsFlorian Eckert2023-06-15
| | | | | | | | | | | On small systems with many virtual devices, the modem manager sometimes could not start because it took too long until all devices for the modem were recognised. This is because all system events that are stored in the file events.cache have to be processed. To speed up the processing, all devices under /sys/devices/virtual are now filtered out so that they do not have to be processed. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: fix unquoted strings when launching pppdAleksander Morgado2022-11-11
| | | | Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
* modemmanager: fix mm_log() invocations in 25-modemmanager* filesArkadiusz Drabczyk2022-07-24
| | | | | | | | Definition of mm_log() was changed in 45a56a889943b437f78fa2bfca3d5d8ac555c77e but 25-modemmanager* weren't changed. Signed-off-by: Arkadiusz Drabczyk <arkadiusz@drabczyk.org>
* modemmanager: explicitly disconnect even if no bearers foundAleksander Morgado2022-07-05
| | | | | | | | | | | | | | | | | A network restart where netifd is cleanly restarted involves bringing the network interfaces down. The 'modemmanager' protocol handler will run a mmcli --simple-disconnect in this case, but only if there are bearer objects found. If the network restart happened *during* the connection attempt procedure, while the modem is e.g. being registered in the network, no bearer objects exist yet, and so, we would skip doing anything during the interface teardown operation. This would lead to the original connection attempt succeeding, so leaving the modem in ModemManager in connected state, while the associated interface in netifd is reported down. Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
* modemmanager: report network initiated disconnections to netifdAleksander Morgado2022-05-14
| | | | | | | | | | | | | | The new connection dispatcher scripts support integrated in ModemManager 1.18.8 allows us to provide a openwrt-specific dispatcher script used to report netifd that the underlying network connection is down. See also https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/775 Fixes https://github.com/openwrt/openwrt/issues/8368 Fixes https://github.com/openwrt/packages/issues/14096 Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
* modemmanager: remove 2s timeout before reporting cached eventsAleksander Morgado2022-01-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When ModemManager is started on boot we may end up with hotplug events reported directly to the daemon, plus some others already cached in the cache file before the daemon was started. If the cached events correspond to the same device that is still notifying ports directly, we may end up with a modem object created before the cached events have been emitted, so the modem may not handle all control/data ports it should. E.g.: - modem detected - hotplug event for wwan0 port, cached as MM not running - hotplug event for cdc-wdm0 port, cached as MM not running - hotplug event for ttyUSB0, cached as MM not running - MM starts - hotplug event for ttyUSB1, directly processed as MM is running - hotplug event for ttyUSB2, directly processed as MM is running - modem object created with ttyUSB1 and ttyUSB2 - 2s after MM starts, cached events for wwan0, cdc-wdm0 and ttyUSB0 happen, but are ignored because the modem object has already been created MM expects that ports of the same device are reported with less than 1500ms in between ports. In other words, if ports are reported more than 1500ms after the last reported port, they may get ignored. If we remove the 2s timeout, the report of the cached events will happen as soon as MM starts, which makes it much more likely to happen in the timeslot that MM expects for ports of the same device reported. The logic is still not perfect, and we may also need to increase that 1500ms timeout inside MM, but removing the 2s timeout right away here makes sense. This 2s timeout was introduced along with the new wrapper launcher for the daemon, it didn't exist before. Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
* modemmanager: refactoring hotplug debug loggingFlorian Eckert2021-12-14
| | | | | | | | | | | | | The output of the hotplug is very chatty and floods the log with messages that are not necessary in functioning operation. So that the log can be filtered. A log level was added to each message as the first opiton on mm_log function call. In addition, the facility of the hotplug script has been set to daemon, which in my view fits better than user. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* ModemManager: add service optionsFlorian Eckert2021-12-14
| | | | Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* ModemManager: refactoring procd init scriptFlorian Eckert2021-12-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The way the init script is written now, we get a bad output when calling the ubus service backend. ubus call service list "{'verbose':true,'name':'modemmanager'}" >{ > "modemmanager": { > "instances": { > "instance1": { > "running": true, > "pid": 20511, > "command": [ > "sh", > "-c", > ". >/usr/share/ModemManager/modemmanager.common; \t >mkdir -m 0755 -p /var/run/modemmanager; \t >mm_cleanup_interfaces; \t >( mm_report_events_from_cache ) >/dev/null 2>&1 & \t >/usr/sbin/ModemManager" > ], > "term_timeout": 5, > "respawn": { > "threshold": 3600, > "timeout": 5, > "retry": 5 > }, > "pidfile":"/var/run/modemmanager/modemmanager.pid" > } > } > } >}" I also get the output in the log that the PID file cannot be created. > daemon.err procd: Failed to remove pidfile: :No such file or directory The changes in this commit fixes this issues, by moving startup into a wrapper script. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* modemmanager: fix physdev sysfs path detection in PCIe modemsAleksander Morgado2021-11-12
| | | | | | | | The PCIe physdev path lookup relies on the 'vendor' and 'device' attribute files, instead of the 'idVendor' and 'idProduct' ones, which are USB specific. Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
* modemmanager: add support for wwan subsystem in hotplugAleksander Morgado2021-10-19
| | | | | | | | | WWAN devices may now be exposed in the new 'wwan' subsystem in the kernel (since 5.13), initially applicable to devices exposed in PCIe (no USB), but at some point may also apply to USB devices that until now were exposed via other subsystems (e.g. usbmisc, tty). Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
* Merge pull request #13009 from valexi7/masterRosen Penev2020-12-09
|\ | | | | modemmanager: Added options
| * modemmanager: added new proto optionsValtteri Holopainen2020-08-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added signal refresh rate option modemmanager: update readme.md Added description for added proto options. Added compile option to compile --with-at-command-via-dbus for allowing AT commands to modem without --debug flag Changes to be committed: modified: net/modemmanager/Config.in modified: net/modemmanager/Makefile modified: net/modemmanager/files/modemmanager.init modified: net/modemmanager/files/modemmanager.proto modified: README.md Signed-off-by: Valtteri Holopainen <valtsu@gmail.com>
* | modemmanager: include all init commands in the procd instanceAleksander Morgado2020-11-02
| | | | | | | | | | | | | | | | | | | | | | | | | | If procd relaunches the ModemManager daemon after e.g. a crash, we also want it to notify all cached hotplug events, or otherwise we would end up leaving the daemon running without the full initial processing done. This change modifies the init script to include all the required init commands as part of the procd instance command, so that procd launches all of them on every respawn. Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
* | modemmanager: increase initial timeout for event reportingAleksander Morgado2020-10-30
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the ModemManager daemon is started by the init script, we're explicitly calling mm_report_events_from_cache() so that all the hotplug events that happened before that moment are properly notified to the newly launched daemon. This initial reporting of events does a wait for the ModemManager process to be available in DBus, and if the daemon isn't registered in the bus in a given time, the process is considered failed: Sun Sep 6 16:20:02 2020 ModemManager: hotplug: checking if ModemManager is available... Sun Sep 6 16:20:02 2020 ModemManager: hotplug: ModemManager not yet available Sun Sep 6 16:20:03 2020 [2180]: <info> ModemManager (version 1.14.6) starting in system bus... Sun Sep 6 16:20:03 2020 ModemManager: hotplug: checking if ModemManager is available... Sun Sep 6 16:20:04 2020 ModemManager: hotplug: ModemManager not yet available Sun Sep 6 16:20:05 2020 ModemManager: hotplug: checking if ModemManager is available... Sun Sep 6 16:20:05 2020 ModemManager: hotplug: ModemManager not yet available Sun Sep 6 16:20:06 2020 ModemManager: hotplug: checking if ModemManager is available... Sun Sep 6 16:20:06 2020 ModemManager: hotplug: ModemManager not yet available Sun Sep 6 16:20:07 2020 ModemManager: hotplug: checking if ModemManager is available... Sun Sep 6 16:20:07 2020 ModemManager: hotplug: ModemManager not yet available Sun Sep 6 16:20:08 2020 ModemManager: hotplug: checking if ModemManager is available... Sun Sep 6 16:20:08 2020 ModemManager: hotplug: ModemManager not yet available Sun Sep 6 16:20:09 2020 ModemManager: hotplug: checking if ModemManager is available... Sun Sep 6 16:20:09 2020 ModemManager: hotplug: ModemManager not yet available Sun Sep 6 16:20:10 2020 ModemManager: hotplug: checking if ModemManager is available... Sun Sep 6 16:20:10 2020 ModemManager: hotplug: ModemManager not yet available Sun Sep 6 16:20:11 2020 ModemManager: hotplug: checking if ModemManager is available... Sun Sep 6 16:20:11 2020 ModemManager: hotplug: ModemManager not yet available Sun Sep 6 16:20:12 2020 ModemManager: hotplug: checking if ModemManager is available... Sun Sep 6 16:20:12 2020 ModemManager: hotplug: ModemManager not yet available Sun Sep 6 16:20:12 2020 ModemManager: hotplug: error: couldn't report initial kernel events: ModemManager not running Update the default wait time for this initial event notification from 10s to 60s, because there are cases where the daemon is slower to boot, e.g. during the first boot after a sysupgrade. Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
* modemmanager: add error message notifications to proto handlerNicholas Smith2020-07-10
| | | | Signed-off-by: Nicholas Smith <nicholas.smith@telcoantennas.com.au>
* Merge pull request #12086 from aleksander0m/aleksander/mm-authRosen Penev2020-06-28
|\ | | | | Authentication protocol setup in ModemManager
| * modemmanager: allow specifying list of authentication protocolsAleksander Morgado2020-05-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ModemManager allows specifying which are the authentication protocols to be used during the user/password context authentication with the peer. This protocol update allows users to provide a new 'allowedauth' option in the interface configuration, which is then used in two different places: * It is sent to ModemManager in the --simple-connect call so that modems with a network interface can perform the authentication using their own vendor-specific protocol. * If the connection is done using PPP, this list of protocols is used to configure the pppd call. If the new 'allowedauth' option is not given, all auth protocols are implicitly allowed. Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
* | modemmanager: set interface MTU based on bearer settingsAleksander Morgado2020-05-25
|/ | | | | | | | Using the same method used by other protocol handlers like uqmi. Fixes https://github.com/openwrt/packages/issues/11383 Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
* modemmanager: install common utils in /usr/share/ModemManagerAleksander Morgado2019-11-27
| | | | | | | | | The modemmanager.common file includes several utility functions that are used in several places like the protocol handler and in hotplug scripts. These utilities should not be installed in /etc as they're not configuration. Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
* modemmanager: don't flag the 'device' option as 'device' typeAleksander Morgado2019-11-27
| | | | | | | | | Unlike other modem protocol handlers like the ones implemented by uqmi or umbim, in the modemmanager protocol handler the 'device' option does not specify a device node in /dev. Therefore, we shouldn't flag the option as 'device' type (dt_type_device). Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>