Supported devices

Aleksander Morgado aleksander at aleksander.es
Mon Jan 13 12:58:30 PST 2014


>>> As well i wanted to ask about cdc-wdm,  qmi_wwan device drivers since i
>>> do
>>> not find much information about it. On one blog i can read: " This
>>> protocol
>>> is easily accessible in recent enough Linux kernels (>= 3.4), through the
>>> cdc-wdm and qmi_wwan drivers. Once these drivers are in place and the
>>> modem
>>> gets plugged in, the kernel will expose a new /dev/cdc-wdm device which
>>> can
>>> talk QMI, along with a wwan interface associated to each QMI port."
>>>
>>> But if i plug in my Samsung Galaxy S4 i just can see /dev/ttyACM0. Is
>>> there
>>> a way to install/adapt those device drivers for the Galaxy Android Phone
>>> or
>>> is this currently not supported? I'm assuming that the latest Snapdragon
>>> processors are using QMI is well.
>>>
>>
>> Android, even if using kernel 3.4, doesn't use the upstream qmi_wwan
>> driver to handle the QMI protocol internally. The QMI-based Android
>> RIL layer will end up using Google's own version of the original
>> Qualcomm GobiNet driver, which may actually even use shared memory for
>> the QMI protocol instead of a character device in /dev.
>>
> In my Nexus 4 (LG E960) I do see character devices
> /dev/{qmi0,qmi1,qmi2,smd_cxm_qmi} which *may* be usable, though I
> have not tried to do anything with them since libqmi requires glib and
> there wasn't one readily available in the android toolchain/libs.
>
> I have since found [1] and think it could work.
>
> Of course, this approach requires cross-compiling and using 'adb shell'
> to run the cli program, since you won't be able to see the modem directly
> from your PC.
>
> [1] http://qinchuan.me/article.php?id=62
>

Those character devices are the ones exported by Google's QMI kernel driver.

When using libqmi, all the CTL service management is done in
userspace; with Google's kernel drivers all the CTL service management
is done in the kernel itself. Currently libqmi will only work with
character devices exported by the qmi_wwan kernel driver; so even if
you compile glib and libqmi within Android, it won't work. In order to
use libqmi in Android, we would need to change how the client
allocation is managed in libqmi, to use the ioctls that the kernel
driver expects instead of us doing the whole CTL management in
userspace. Bit messy, but doable.

-- 
Aleksander


More information about the libqmi-devel mailing list