The modem-watcher-python program makes use of the 'libmm-glib' library through GObject Introspection to talk to ModemManager. The program will just print in stdout whenever: * ModemManager is found in the bus * ModemManager is lost in the bus * A new modem is added to ModemManager * A modem is removed from ModemManager The output will look like this: $ ./modem-watcher-python [ModemWatcher] ModemManager service is available in bus [ModemWatcher] Vodafone (Huawei) (K3772) modem managed by ModemManager [861320000017897]: /org/freedesktop/ModemManager1/Modem/0 [ModemWatcher] modem unmanaged by ModemManager: /org/freedesktop/ModemManager1/Modem/0 [ModemWatcher] ModemManager service not available in bus Note that the program requires ModemManager and libmm-glib to be installed in the system and the introspection typelibs available in the standard paths. Have fun!