Commit Graph

89 Commits

Author SHA1 Message Date
fe0fee7be4 polkit: annotate actions with an owner
this allows running modemmanager as non-root user
2024-06-03 18:06:40 +00:00
Dennis Gilmore
8061bcd9c0 fcc-unlock: add link for new T99W175 5G modem variant
Create link from existing unlock script for the modem in the Lenovo x13s.
IDs are documented at https://cateee.net/lkddb/web-lkddb/MHI_BUS.html

Signed-off-by: Dennis Gilmore <dennis@ausil.us>
2023-09-29 10:51:52 +00:00
Ujjwal Pande
e3a1206c57 api: new carrier lock support
Adding support for carrier lock for MBIM modems using google simlock
mechanism.
2023-06-08 20:16:12 +00:00
Aleksander Morgado
1c4da332ee build: new option to build plugins within the daemon binary
Instead of creating libmm-plugin* and libmm-shared* libraries that are
dlopen()-ed on runtime, allow incorporating all plugins into the
daemon binary itself.

This makes the startup of the daemon much faster and also avoids
issues with builds that require linker namespace isolation.

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/674
2023-01-03 13:56:25 +00:00
Aleksander Morgado
e14b904cbd build: move plugins directory to src/plugins
We are going to allow including the plugin sources built within the
ModemManager daemon binary; moving the sources within the daemon
sources directory makes it easier.
2023-01-03 13:56:25 +00:00
Christian Taedcke
02baf28323 fcc-unlock: switch bash shell scripts to use sh
This enables the usage with busybox and fixes yocto dependency
issues.

This is related to #483 and the previous commit
91ed72aa29.
2022-11-11 10:31:36 +01:00
Aleksander Morgado
f419f56628 build: drop autotools 2022-11-07 14:26:02 +00:00
Aleksander Morgado
ead9f1809f fcc-unlock: add FCC unlock support for Quectel EM05-G
Using the FCC unlock prepared and tested by:
 Leah Oswald <mail@leahoswald.de>,

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/640
2022-10-10 12:09:28 +00:00
Dylan Van Assche
ba96ccc615 build: make tests optional
Add a meson option -Dtests and --without-tests automake option
to disable the compilation of all available testcases.
This is useful for compiling projects with Flatpak such as
GNOME Control Center which disables all possible integrations since they
only need the DBus part of ModemManager.

Contributes to https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/1392
2022-07-25 11:01:51 +02:00
Thilo-Alexander Ginkel
ac06052b97 fcc-unlock: add support for new Lenovo T99W175 SDX55 FCC unlock method
Tested w/ Lenovo firmware T99W175.F0.1.0.0.9.DT.003.055 (old unlock method) and
T99W175.F0.1.0.0.9.DT.003.079 (new unlock method)
2022-05-30 23:29:36 +02:00
Aleksander Morgado
7960b365d5 data: add example connection dispatcher
Just a minimal example that prints the events in syslog
2022-04-05 08:14:53 +00:00
Aleksander Morgado
99232154b3 build: rename directory where fcc unlocks are kept 2022-04-05 08:14:53 +00:00
Simon Deziel
8ce4555a79 systemd: don't run ModemManager in containers
This assumes the needed modem hardware is typically not available
inside containers. If however, the local admin configures the container
to get access to the hardware in question, ModemManager can be
instructed to run in that specific container by doing:

`sudo systemctl edit ModemManager.service`

Then entering the following text in the editor:

  [Unit]
  # Remove condition of "not container"
  ConditionVirtualization=

Upon saving/exiting, ModemManager can then be started with:

`sudo systemctl start ModemManager.service`

Signed-off-by: Simon Deziel <simon@sdeziel.info>
2022-03-14 10:30:45 -04:00
Sven Schwermer
b64ffeee9c fcc-unlock: Make scripts POSIX shell compatible
This allows us to not rely on bash which may not be available on
constrained systems, e.g. Yocto-built embedded systems. The scripts now
pass shellcheck.

Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
2022-02-25 21:51:36 +01:00
Aleksander Morgado
a7e579cd7b meson,data: generate test service file
The test service file is used in the test-plugin-generic unit tests,
which require the ModemManager daemon to be launched in a private test
DBus session.
2022-02-16 00:11:35 +01:00
Bruce A. Johnson
91ed72aa29 core: switch bash shell scripts to use /bin/sh for use w/Busybox.
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/483
2022-01-05 10:26:16 +01:00
Xeonacid
922bc2df5f build,meson: Remove incorrect args for i18n.merge_file
`i18n.merge_file` has been ignoring positional arguments for a time and explicitly rejects with error since meson 0.60.0.
2021-12-23 09:14:02 +08:00
Aleksander Morgado
e7a6bb7504 data,fcc-unlock: add example unlock scripts
Added scripts for Foxconn SDX55, Quectel EM120, and several old Sierra
Wireless manufactured devices:
 * Installed but not used by default, the user needs to setup manual
   links from ${pkgdatadir}/fcc-unlock.available.d, to
   ${pkgsysconfdir}/fcc-unlock.d in order to enable them.
 * Installed with rights only for the owner, so that the dispatcher in
   ModemManager can validate them.
 * They rely on $PATH to find the qmicli/mbimcli tools.

In addition to these scripts, per-vid:pid links are created in the
same ${pkgdatadir}/fcc-unlock.available.d directory, specifying which
are the specific devices that require the FCC unlock operation.

This patch also creates the ${pkgsysconfdir}/fcc-unlock.d and
${pkglibdir}/fcc-unlock.d directories where ModemManager looks for the
enabled tools.

Note that the meson setup doesn't support creating/deleting links
officially yet, so we use a workaround using meson.add_install_script
that is not perfect (i.e. doesn't handle the symlink removal during
uninstall). See https://github.com/mesonbuild/meson/issues/1602
2021-11-18 11:20:41 +01:00
Iñigo Martínez
77d1c24361 build: Port to meson
meson is a build system focused on speed an ease of use, which
helps speeding up the software development. This patch adds meson
support along autotools.
2021-09-07 10:55:43 +00:00
Arnaud Ferraris
d5c16382c5 service: add QIPCRTR address family
With the recently added support for modems using QRTR, ModemManager
needs to have access to the corresponding address family so it can
interact with the modem.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
2021-05-21 14:50:07 +02:00
Undef
a381622304 service: Fix Mobile Data on EG25
This allows mobile data to work on the EG25 (and probably other modems).
2021-05-20 11:07:37 +00:00
Michal Mazur
dfc04cbc2e iface-modem-3gpp: define new API to disable facility locks 2021-04-30 18:40:29 +00:00
Aleksander Morgado
10aa516f07 iface-modem-3gpp-profile-manager: new interface for profile management
This interface will provide support for the profile management
operations in different modem types.

This initial commit introduces support for the interface and provides
handlers for the methods that may be called in the interface.
2021-04-29 10:13:22 +00:00
Aleksander Morgado
a74c1c9bd8 data,icon: resize to fit the contents 2021-04-14 13:03:12 +02:00
Aleksander Morgado
09619e8cc4 data: added valgrind suppressions file imported from NM 2019-12-02 13:40:32 +01:00
Aleksander Morgado
55c3f7d3f6 systemd: always start MM after polkit service if enabling policy
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/113
2019-10-11 08:40:37 +00:00
Aleksander Morgado
8a652179de policy: USSD policy requires user authentication in strict mode 2019-09-25 13:08:32 +02:00
Aleksander Morgado
958c243489 polkit,conf: trivial comment update regarding Signal.Setup() 2019-09-25 13:08:32 +02:00
Aleksander Morgado
110f6fd021 polkit,conf: add missing firmware management methods 2019-09-25 13:08:32 +02:00
Aleksander Morgado
2e5af74db8 polkit,conf: add missing OMA methods 2019-09-25 13:08:32 +02:00
Aleksander Morgado
7a7b3aa5cb polkit,time: protect GetNetworkTime() with a new 'Time' policy rule 2019-09-25 13:08:32 +02:00
Aleksander Morgado
be2500b02a polkit,conf: add missing supplementary voice service methods 2019-09-25 12:24:35 +02:00
Aleksander Morgado
01acd9a0d9 polkit,conf: add missing InjectAssistanceData 2019-09-25 12:24:13 +02:00
Aleksander Morgado
9e24d1c12f polkit,conf: add missing SetInitialEpsBearerSettings 2019-09-25 12:23:59 +02:00
Aleksander Morgado
614c7fbc7e polkit,conf: add missing SetEpsUeModeOperation 2019-09-25 12:23:44 +02:00
Aleksander Morgado
f2182a73bf polkit,conf: add missing SetCurrentCapabilities 2019-09-25 12:21:48 +02:00
Aleksander Morgado
3696a009c5 polkit,conf: add missing SetPowerState 2019-09-25 12:21:32 +02:00
Aleksander Morgado
d3e75eec97 policy,conf: use SetCurrentBands instead of SetBands 2019-09-25 12:21:12 +02:00
Mohammed Sadiq
e21e7ddfae policy: Use SetCurrentModes instead of SetAllowedModes
There is no DBus API for SetAllowedModes, but only for SetCurrentModes.
2019-09-24 19:10:31 +05:30
Bob Ham
e34699cc9e policy: Call method name should be SendDtmf rather than SendTone
The method on MMBaseCall is send_tone but the D-Bus method call is
SendDtmf.  Without this patch, calls return
org.freedesktop.DBus.Error.AccessDenied.
2018-12-07 16:47:43 +00:00
Lubomir Rintel
cf3f3ffcd0 service: set User=root so that gio doesn't have to look into /etc/passwd
GVfs' libgvfsdbus.so GIo module, when automatically loaded, attempts to
discover if there's a session D-Bus instance to use. It tries real hard
to get the socket name it would use -- in absence of XDG_RUNTIME_DIR it
decides to make it up with user's home directory. When HOME is unset
too, it just tries to figure it out by looking into /etc/passwd. Which
upsets SELinux that would better not see us looking into it.

We trigger the load of the GIo modules, by using the GFile API to access
the the ports in /dev. They're utterly uesless to us, but there doesn't
seem to be a way to disable their load. Oh well.

For now, let's just ensure HOME is set and the problematic path in glib
is not taken.
2018-06-13 10:32:51 +00:00
Aleksander Morgado
984625165e i18n: deprecate intltool and use only gettext 0.19.8
Instead of mixing both intltool and gettext, which not always work
correctly together, this patch obsoletes intltool and uses only
gettext, which includes support for translating XML files with ITS
rules.

See migration steps for GNOME projects here:
  https://wiki.gnome.org/MigratingFromIntltoolToGettext

The gettext ITS rules for polkit policy files are imported from the
upstream polkit repository. We don't use the polkit-installed rule
files yet because there is no tagged release that contains those files
yet, so we cannot build-depend on any specific polkit version.
  https://bugs.freedesktop.org/show_bug.cgi?id=96940
2017-09-07 13:04:34 +02:00
Aleksander Morgado
d639359320 polkit: add missing Location interface method rules
https://bugs.freedesktop.org/show_bug.cgi?id=102182
2017-08-12 19:39:10 +02:00
Aleksander Morgado
0e854644db systemd: drop After=syslog.target rule
syslog implementations are using socket activation nowadays, so an
explicit ordering is not necessary anymore. Plus, syslog.target was
already dropped from systemd in v198.

Reported-by: Michael Biebl <biebl@debian.org>
2017-06-18 10:01:11 +02:00
Lubomir Rintel
ccea14ac47 systemd: tighten the service security a bit
What's left enabled:

* Access to /dev -- obviously
* CAP_SYS_ADMIN -- this is needed by TIOCSSERIAL only. Too bad this also
  allows TIOCSTI, which allows for code injection unless something else
  (SELinux) disallows access to ttys with shells.
  Maybe kernel should use CAP_SYS_TTY_CONFIG for this.
* socket(AF_NETLINK) -- udev & kernel device changes
* socket(AF_UNIX) -- D-Bus
2016-10-24 13:15:15 +02:00
Aleksander Morgado
c4a584416a core: allow disabling auto-scan and notifying ports one by one via API
This commit enables a new core ModemManager daemon option, so that automatic
detection of available modems is totally disabled: '--no-auto-scan'. Note that
this option also replaces the previously used '--test-no-auto-scan' option,
which was only used during tests.

Along with the new ModemManager option, a new ReportKernelEvent() method in
the API is defined, which allows notifying the daemon of which interfaces it
should be accessing, as well as the main details of each interface. The only
mandatory parameters in the new method are 'action' (add/remove), 'name' (the
name of the interface) and 'subsystem' (the subsystem of the interface).

The mmcli tool has support for using the new api method via several new options:

 * The '--report-kernel-event' option allows specifying device ports one by
   one, and is a direct mapping of the ReportKernelEvent() method:
     $ sudo mmcli --report-kernel-event="action=add,name=wwan0,subsystem=net"
     $ sudo mmcli --report-kernel-event="action=add,name=cdc-wdm0,subsystem=usbmisc"

 * The '--report-kernel-event-auto-scan' option uses udev monitoring to notify
   events automatically to the daemon. This allows to operate in a way
   equivalent to the default daemon operation (with implicit auto-scan).

Worth noting that the ReportKernelEvent() method is only usable when
'--no-auto-scan' is explicitly used in the daemon. An error will be reported if
the method is tried while standard udev monitoring is enabled (implicit if
auto scan isn't explicitly disabled in the daemon).

If mmcli is going to be used only to report 'real time' events, an optional
'--initial-kernel-events=[PATH]' may be given in the ModemManager call to
automatically process a set of port kernel events one by one on boot. The file
may e.g. contain:
  action=add,name=wwan0,subsystem=net
  action=add,name=cdc-wdm0,subsystem=usbmisc
2016-09-29 15:43:05 +02:00
Aleksander Morgado
d5bc19f7db policy: fix minor typo 2015-08-02 10:39:48 +02:00
Aleksander Morgado
69585b1374 polkit: added Voice policy rule 2015-08-02 10:39:48 +02:00
David Herrmann
99da30059f policy: don't prevent us from receiving signals
By using:
    <deny send_destination="org.freedesktop.ModemManager1"/>

..we prevent anyone on the system from sending us signals, even if we
subscribed to them. This is clearly not what this line intended. More
importantly, we silently break mm-auth-provider-polkit, as we never
receiver 'changed' signals via PolkitAuthority. Right now, this is not
required by the implementation of PolkitAuthority, but ModemManager
should not place restrictions on the implementation of external
libraries.

So make sure we only prevent Method-Calls to be sent to us. Any other
message that we didn't expect is automatically discarded by gdbus,
anyway.

Without this change, debugging dbus policies constantly shows messages
that Polkit couldn't send the 'changed' signal to ModemManager. This is
suppressed in non-debugging mode. But it would make debugging a lot
easier, if we'd avoid force-dropping those events and not clutter the
debug-log.
2015-07-15 15:04:43 +02:00
Aleksander Morgado
c8572c8098 polkit: fix Location.Setup() authorization rules 2014-07-11 18:56:37 +02:00