Anyone with a newer Qualcomm based device with MBIM?
Bjørn Mork
bjorn at mork.no
Fri Jan 4 02:02:35 PST 2013
Judging on the open discussion on
https://developer.qualcomm.com/forum/qdevnet-forums/3g4g-connectivity-gobi/12654
it looks like that Qualcomm's MBIM firmware exposes an "EXT_QMUX" Device
Service Stream. Which makes a lot of sense instead of re-implementing
new APIs for vendor specific functions not covered by the MBIM
management protocol (e.g. positioning).
The exact details do not seem to be documented in any freely available
source yet, but that's no problem. The device will tell us the important
parts, and we can guess the rest.
Unfortunately I do not have access to any such device myself. Although
the MBIM device I've gotis Qualcomm based, I don't think the MBIM
firmware implementation necessarily comes from Qualcomm. It only
exposes an AT command based Device Service Stream. Is there anyone here
with something recent wanting to explore QMI in MBIM?
The procedure will be something like this:
- get Linux 3.8(-rcX) to have the cdc_mbim driver
- open an MBIM control session on /dev/cdc-wdmX
- get the list of services from the device using
MBIM_CID_DEVICE_SERVICES
- for all vendor specific Device Service Stream UUIDs:
* open a MBIM DSS session
* create the corresponding VLAN (256 + DSS session ID):
vconfig add wwan0 256
ip link set dev wwan0 up
ip link set dev wwan0.256 up
* tunnel the VLAN interface to a character pseudo device using socat:
socat INTERFACE:wwan0.256,type=2 PTY:,echo=0,link=/tmp/maybeqmux
* try using qmicli against that pseudo device
qmicli -v -d /tmp/maybeqmux --dms-noop --device-open-version-info
If I'm guessing right, then this will result in an successful QMI
version ouput for one of the DSS UUIDs.
I've left out the details on how to send and receive MBIM control
commands above, because there are no available userspace tools yet. The
full details are in the USB-IF spec if anyone is interested in creating
a "libmbim" and/or some basic CLI utilities. The job is far easier than
doing libqmi since the set of commands is very limited.
Bjørn
More information about the libqmi-devel
mailing list