Hi,

I'm working on a patch to detect M2M eUICC profile switches on Quectel modems. Upon testing with Quectel EG25, which uses QMI, I noticed that when MM reinitializes a modem (either due to hot-swap or MM restarting), some of the QMI CIDs don't appear to be released. After ~10 times, the modem detection fails due to QMI protocol error "ClientIdsExhausted". The modem needs to be reset to recover from this.

In filtered logs it looks like this (when MM is started two times in succession, no modem reset between):
---
root@teijo-laptop:/home/teijo/ModemManager/src# ./ModemManager --debug --test-plugin-dir=/home/teijo/ModemManager/plugins/.libs 2>&1 | grep "client with ID" ModemManager[25925]: [/dev/cdc-wdm1] Registered 'wda' (version 1.16) client with ID '1'
ModemManager[25925]: [/dev/cdc-wdm1] Unregistered 'wda' client with ID '1'
ModemManager[25925]: [/dev/cdc-wdm1] Registered 'dms' (version 1.0) client with ID '2' ModemManager[25925]: [/dev/cdc-wdm1] Registered 'nas' (version 1.25) client with ID '4' ModemManager[25925]: [/dev/cdc-wdm1] Registered 'wms' (version 1.10) client with ID '2' ModemManager[25925]: [/dev/cdc-wdm1] Registered 'uim' (version 1.46) client with ID '3' ModemManager[25925]: [/dev/cdc-wdm1] Registered 'loc' (version 2.0) client with ID '1' ModemManager[25925]: [/dev/cdc-wdm1] Registered 'pdc' (version 1.0) client with ID '1'
ModemManager[25925]: [/dev/cdc-wdm1] Unregistered 'pdc' client with ID '1'
ModemManager[25925]: [/dev/cdc-wdm1] Unregistered 'loc' client with ID '1'
ModemManager[25925]: [/dev/cdc-wdm1] Unregistered 'uim' client with ID '3'
ModemManager[25925]: [/dev/cdc-wdm1] Unregistered 'wms' client with ID '2'
ModemManager[25925]: [/dev/cdc-wdm1] Unregistered 'nas' client with ID '4'
ModemManager[25925]: [/dev/cdc-wdm1] Unregistered 'dms' client with ID '2'
root@teijo-laptop:/home/teijo/ModemManager/src# ./ModemManager --debug --test-plugin-dir=/home/teijo/ModemManager/plugins/.libs 2>&1 | grep "client with ID" ModemManager[25985]: [/dev/cdc-wdm1] Registered 'wda' (version 1.16) client with ID '1'
ModemManager[25985]: [/dev/cdc-wdm1] Unregistered 'wda' client with ID '1'
ModemManager[25985]: [/dev/cdc-wdm1] Registered 'dms' (version 1.0) client with ID '3' ModemManager[25985]: [/dev/cdc-wdm1] Registered 'nas' (version 1.25) client with ID '5' ModemManager[25985]: [/dev/cdc-wdm1] Registered 'wms' (version 1.10) client with ID '3' ModemManager[25985]: [/dev/cdc-wdm1] Registered 'uim' (version 1.46) client with ID '4' ModemManager[25985]: [/dev/cdc-wdm1] Registered 'loc' (version 2.0) client with ID '1' ModemManager[25985]: [/dev/cdc-wdm1] Registered 'pdc' (version 1.0) client with ID '1'
ModemManager[25985]: [/dev/cdc-wdm1] Unregistered 'pdc' client with ID '1'
ModemManager[25985]: [/dev/cdc-wdm1] Unregistered 'loc' client with ID '1'
ModemManager[25985]: [/dev/cdc-wdm1] Unregistered 'uim' client with ID '4'
ModemManager[25985]: [/dev/cdc-wdm1] Unregistered 'wms' client with ID '3'
ModemManager[25985]: [/dev/cdc-wdm1] Unregistered 'nas' client with ID '5'
ModemManager[25985]: [/dev/cdc-wdm1] Unregistered 'dms' client with ID '3'
---

My hypothesis here is that it's a race condition when closing down MM. It can be seen that it's the last four of the unregistered services that leak. Furthermore, looks like the "Release CID" commands are just sent without waiting for response, then the device is closed (at least the Release CID responses are not shown in the logs except for 'wda' which is release much earlier) - possibly the release commands are lost?

Or would this rather be a libqmi issue?

BR,

- Teijo
_______________________________________________
ModemManager-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/modemmanager-devel

Reply via email to