aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorYegor Yefremov <yegorslists@googlemail.com>2024-01-23 11:11:10 +0100
committerAleksander Morgado <aleksander@aleksander.es>2024-01-25 15:10:31 +0000
commit18144e73bcf04871c10e09157d31d15754f50772 (patch)
tree63bb6a35f3c2f9a54afa11a8fa18607e8abbeb95 /README.md
parent030ec7c5bb0cde247c3d0300e121d5e8804cd905 (diff)
build: convert README to markdown
Also add SPDX license identifier and a copyright notice.
Diffstat (limited to 'README.md')
-rw-r--r--README.md57
1 files changed, 57 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..0e848691
--- /dev/null
+++ b/README.md
@@ -0,0 +1,57 @@
+<!--
+SPDX-License-Identifier: GPL-2.0-or-later
+
+Copyright (C) 2008 Tambet Ingo <tambet@gmail.com>
+-->
+
+# ModemManager
+
+ModemManager provides a unified high level API for communicating with mobile
+broadband modems, regardless of the protocol used to communicate with the
+actual device (Generic AT, vendor-specific AT, QCDM, QMI, MBIM...).
+
+## Using
+
+ModemManager is a system daemon and is not meant to be used directly from
+the command line. However, since it provides a DBus API, it is possible to use
+'dbus-send' commands or the new 'mmcli' command line interface to control it
+from the terminal. The devices are queried from udev and automatically updated
+based on hardware events, although a manual re-scan can also be requested to
+look for RS232 modems.
+
+## Implementation
+
+ModemManager is a DBus system bus activated service (meaning it's started
+automatically when a request arrives). It is written in C, using glib and gio.
+Several GInterfaces specify different features that the modems support,
+including the generic MMIfaceModem3gpp and MMIfaceModemCdma which provide basic
+operations for 3GPP (GSM, UMTS, LTE) or CDMA (CDMA1x, EV-DO) modems. If a given
+feature is not available in the modem, the specific interface will not be
+exported in DBus.
+
+## Plugins
+
+Plugins are loaded on startup, and must implement the MMPlugin interface. It
+consists of a couple of methods which tell the daemon whether the plugin
+supports a port and to create custom MMBroadbandModem implementations. It most
+likely makes sense to derive custom modem implementations from one of the
+generic classes and just add (or override) operations which are not standard.
+There are multiple fully working plugins in the plugins/ directory that can be
+used as an example for writing new plugins. Writing new plugins is highly
+encouraged! The plugin API is open for changes, so if you're writing a plugin
+and need to add or change some public method, feel free to suggest it!
+
+## License
+
+The ModemManager and mmcli binaries are both GPLv2+.
+The libmm-glib library is LGPLv2+.
+
+## Code of Conduct
+
+Please note that this project is released with a Contributor Code of Conduct.
+By participating in this project you agree to abide by its terms, which you can
+find in the following link:
+https://www.freedesktop.org/wiki/CodeOfConduct
+
+CoC issues may be raised to the project maintainers at the following address:
+modemmanager-devel-owner@lists.freedesktop.org