Sierra Wireless AirPrime EM919X support
Aleksander Morgado
aleksander at aleksander.es
Mon Aug 9 21:26:21 UTC 2021
Hey Thomas!
> I'm trying to use ModemManager with a Sierra Wireless AirPrime EM919X,
> based on a Snapdragon X55 5G Modem, without success.
>
> The EM919X is connected to an i.MX6QDL through a MHI bus on top of a
> PCIe gen2 bus.
>
> I'm using the kernel 5.13.6, modemmanager 1.32.4, libqmi 1.30.0 and
> libmbim 1.26.0.
Wow, that's a MM version from the future! It's 1.16.8 according to
your logs though ;)
>
> Aug 9 15:32:54 target daemon.info dbus-daemon[435]: [system]
> Activating service name='org.freedesktop.ModemManager1' requested by
> ':1.1' (uid=0 pid=507 comm="/usr/sbin/NetworkManager ") (using
> servicehelper)
> Aug 9 15:32:54 target daemon.info ModemManager[531]: <info>
> ModemManager (version 1.16.8) starting in system bus...
> Aug 9 15:32:55 target daemon.info dbus-daemon[435]: [system]
> Successfully activated service 'org.freedesktop.ModemManager1'
> Aug 9 15:32:55 target daemon.info NetworkManager[507]: <info>
> [1628523175.0109] modem-manager: ModemManager not available
> Aug 9 15:32:55 target daemon.info NetworkManager[507]: <info>
> [1628523175.1141] modem-manager: ModemManager now available
> Aug 9 15:32:56 target daemon.warn ModemManager[531]: <warn>
> [wwan0p1QCDM/qcdm] failed to open serial device
> Aug 9 15:32:56 target daemon.warn ModemManager[531]: <warn> [plugin-
> manager] task 0,wwan0p1QCDM: error when checking support with plugin
> 'generic': (wwan/wwan0p1QCDM) Failed to open QCDM port: Failed to open
> QCDM port: -2
Humm, that should not happen, right @Loic Poulain ? It's true that
it's not a serial device, and I recall some patch avoiding to run
config_fd() on non-serial devices, so it may be related.
> Aug 9 15:32:56 target daemon.debug ModemManager[531]:
> [/dev/wwan0p3QMI] Opening device with flags 'version-info, proxy'...
> Aug 9 15:32:56 target daemon.debug ModemManager[531]:
> [/dev/wwan0p3QMI] created endpoint
> Aug 9 15:32:56 target daemon.debug ModemManager[531]: cannot connect
> to proxy: Could not connect: Connection refused
> Aug 9 15:32:56 target daemon.debug ModemManager[531]: spawning new
> qmi-proxy (try 1)...
> Aug 9 15:32:56 target daemon.debug ModemManager[531]: opening
> device...
> Aug 9 15:32:56 target daemon.debug ModemManager[531]: cannot connect
> to proxy: Could not connect: Connection refused
There is something very wrong in this setup I think; MM tries to spawn
a new qmi-proxy as there is none, but that fails. It shouldn't fail! I
would assume the proxy could be failing to open the wwan0p3QMI port in
the same way as the QCDM one, but wouldn't know.
> Aug 9 15:32:56 target daemon.debug ModemManager[531]: spawning new
> mbim-proxy (try 1)...
> Aug 9 15:32:56 target daemon.debug ModemManager[531]:
> [/dev/wwan0p2MBIM] Couldn't find descriptors file, possibly not using
> cdc_mbim
> Aug 9 15:32:56 target daemon.debug ModemManager[531]:
> [/dev/wwan0p2MBIM] Fallback to default max control message size: 4096
Wait, and this modem exposes both QMI and MBIM ports? I think this is
new, first time I've seen this I think. If I'm not mistaken this is a
decision that the manufacturer takes, right? I think the generic
plugin will try to create a QMI based modem if it finds any QMI
capable port, and otherwise fallback to create a MBIM based modem if
it finds any MBIM capable port. Anyway, we didn't reach that point
yet, just a heads up.
> Aug 9 15:32:56 target daemon.debug ModemManager[531]:
> [/dev/wwan0p3QMI] Checking version info (45 retries)...
> Aug 9 15:32:57 target daemon.info ModemManager[531]: <info> [base-
> manager] couldn't check support for device
> '/sys/devices/platform/soc/2100000.bus/2184200.usb/ci_hdrc.1/usb1/1-
> 1/1-1.1': not supported by any plugin
> Aug 9 15:32:57 target daemon.info ModemManager[531]: <info> [base-
> manager] couldn't check support for device
> '/sys/devices/platform/soc/2100000.bus/2188000.ethernet': not supported
> by any plugin
> Aug 9 15:32:57 target daemon.debug ModemManager[531]: transaction 0x2
> aborted, but message is not abortable
> <...>
> Aug 9 15:33:25 target daemon.debug ModemManager[531]: transaction 0x1e
> aborted, but message is not abortable
> Aug 9 15:33:26 target daemon.debug ModemManager[531]: proxy
> configuration failed: closed
> Aug 9 15:33:26 target daemon.debug ModemManager[531]:
> [/dev/wwan0p2MBIM] channel destroyed
> Aug 9 15:33:26 target daemon.debug ModemManager[531]: transaction 0x1f
> aborted, but message is not abortable
> <...>
> Aug 9 15:33:41 target daemon.debug ModemManager[531]: transaction 0x2e
> aborted, but message is not abortable
> Aug 9 15:33:41 target daemon.info ModemManager[531]: <info> [device
> /sys/devices/platform/soc/1ffc000.pcie/pci0000:00/0000:00:00.0/0000:01:
> 00.0] creating modem with plugin 'generic' and '3' ports
> Aug 9 15:33:41 target daemon.warn ModemManager[531]: <warn>
> [plugin/generic] could not grab port wwan0p3QMI: Cannot add port
> 'wwan/wwan0p3QMI', unhandled port type
> Aug 9 15:33:41 target daemon.warn ModemManager[531]: <warn>
> [plugin/generic] could not grab port wwan0p2MBIM: Cannot add port
> 'wwan/wwan0p2MBIM', unhandled port type
Neither the QMI nor the MBIM probing were successful.
> Aug 9 15:33:41 target daemon.warn ModemManager[531]: <warn> [base-
> manager] couldn't create modem for device
> '/sys/devices/platform/soc/1ffc000.pcie/pci0000:00/0000:00:00.0/0000:01
> :00.0': Failed to find primary AT port
>
> Moreover, devices are well enumerated and its registers are accessed by
> the driver:
>
> ls /sys/bus/mhi/devices
> mhi0 mhi0_DIAG mhi0_IPCR mhi0_IP_HW0 mhi0_MBIM
> mhi0_QMI
>
> cat /sys/kernel/debug/mhi/mhi0/regdump
> Host PM state: M0 Device state: M0 EE: MISSION MODE
> Device EE: MISSION MODE state: M0
> MHI_REGLEN: 0x100
> MHI_VER: 0x1000000
> MHI_CFG: 0x2040080
> MHI_CTRL: 0x200
> MHI_STATUS: 0x201
> MHI_WAKE_DB: 0x0
> BHI_EXECENV: 0x2
> BHI_STATUS: 0x0
> BHI_ERRCODE: 0x0
> BHI_ERRDBG1: 0x0
> BHI_ERRDBG2: 0x0
> BHI_ERRDBG3: 0x0
>
> Do you have any idea where the issue might come from?
>
Several things to test:
* I'm going to tag a 1.18-rc1 release (v1.17.900) in a few minutes,
based off git master, please try with that one.
* Try with qmicli directly on the QMI port, and see what happens.
This is; stop ModemManager, make sure there are no qmi-proxy processes
running, and then run as root e.g. "qmicli -d /dev/wwan0p3QMI
--dms-get-capabilities --verbose". Does that work?
* Try with mbimcli directly in the MBIM port and see what happens.
This is; stop ModemManager, make sure there are no mbim-proxy
processes running, and then run as root e.g. "mbimcli -d
/dev/wwan0p2MBIM --query-device-caps --verbose". Does that work?
* If the previous checks run successfully, you should try to launch
the mbim-proxy and qmi-proxy manually, both, with verbose logs and
--no-exit, and then run ModemManager --debug, that way we can see
verbose logs of all involved processes to see what could be the issue.
See https://modemmanager.org/docs/modemmanager/debugging/#qmi-proxy-or-mbim-proxy-debug-logs
At some point we should update the Sierra plugin to add support for
these modules there, instead of relying on the generic plugin, as we
have done for SDX55 based modules from Quectel, Cinterion/Thales,
Foxconn and Fibocom.
--
Aleksander
https://aleksander.es
More information about the ModemManager-devel
mailing list