Software stacks: freesmartphone.org's cornucopia
Status: Reverse engineered and upstreamed in freesmartphone.org's cornucopia, kernel part not upstream.
The msmcomm modem protocol was used on various Palm Pre devices, which were smartphones running GNU/Linux.
While the modem ran AT commands, if my memory is good, it didn't report RING indication. So people wanting to add support for the palm pre in Freesmartphone.org to have a free software modem stack on GNU/Linux for the palm pre had to reverse engineer that protocol. While the source code has been lost, a recent version (is it the last version?) of the git repository was obtained by Asking Lukas Maerdian and it is now archived on the Replicant git
msmcomm is now back inside the freesmartphone.org project at github
The MBIM protocol seems to be a standard.Software stacks:
- libmbim1 + oFono
Software stacks: freesmartphone.org's cornucopia , oFono through the isimodem driver and the ISI protocol implementation
Status: Modem supported by Linux, userspace stack probably complete and in upstream projects, though not necessarily packaged by all GNU/Linux distributions.
- The Nokia N900
- The Nokia N950
- The Nokia N9
At first, that modem protocol had to be reverse engineered. At one point, this was made easier thanks to the publication of the protocol headers in a specific SDK version released by Nokia for the N900. Unfortunately they took down that SDK version. The headers were probably redistributable anyway. After some point Nokia and Intel decided to share effort in making a GNU/Linux distribution for smartphones called Meego. As part of that effort, Nokia published libraries and software implementing that modem protocol as free software.
As for the sound part, this is implemented by a pulseaudio library which has cmt_speech in its name.
How close is it close to libsamsung-ipc? Can both be merged?
Modem using the XMM7360 chip like the Fibocom L850-GL seem to use a different protocol than libsamsung-ipc.
There is some implementation (not sure if it has a license or not) on github1.
The kernel drivers seem to also use HDLC_START and HDLC_END though.