Hi everyone, I have been working on the Quectel EG25-G modem in the Pine64 PinePhone. This modem is connected over USB with the host CPU and communicates using AT commands and QMI. ModemManager works fine on the PinePhone when the phone is awake, however, ModemManager's probing approach when resuming is rather slow if we have an incoming call. Most of the time, the modem rings several times already before ModemManager starts to notice this when waking up from sleep (this is not the case when the device is awake when a call is received). Therefore, I already digged into ModemManager and tried to improve this, as discussed in [1].
Thanks to the logs of ModemManager, I could identify several places where we lose some time during the resume sequence of a suspend/resume cycle: 1. ModemManager waits a fixed amount of time to make sure that all ports of a modem show up using udev, losing ~1.5s 2. The EG25-G modem contains ~20 carrier configs which are read one-by- one by ModemManager during the initialization phase which takes ~1.5s 3. Order of service initialization: the voice interface for handling calls is initialized at the very end, while location, time, etc. are initialized first. ~500ms 4. Many other small things, each saving several 100ms. In total, it takes ~6.5s from waking up until the incoming call is announced on DBus. The resume sequence can probably be optimized in other places as well, but my knowledge of the ModemManager code is rather limited. Because of this, I would like to have some input from everyone on this mailing list about this problem. All suggestions are welcome! Kind regards, Dylan Van Assche [1] https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/194 _______________________________________________ ModemManager-devel mailing list ModemManager-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/modemmanager-devel