[FSO] add QCT msm7* modem support (On behave of lukas.gorris at googlemail.com)

Adrian-Ken Rueegsegger ken at gmx.ch
Fri Nov 21 21:27:26 CET 2008

[This mail was sent on behave of Lukas Gorris
(lukas.gorris at googlemail.com) since his mails are bounced by the ML
("not registered" eventhough his address is registered]


I would like to begin adding support for the radios of the qualcomm
msm7* chipsets in openmoko FSO. One aspect of the motiviation is the
vast availability of handsets with this chipset. All of the newer HTC
devices sport them. They are very powerful and common devices. I would
like to name a few examples and give you a quick insight of the htc
msm families.

'older' devices:

msm7200 devices (for gsm networks): (htc-msm branch)
kaiser (aka HTC TyTn II; buildable machine type in OE), polaris (aka
HTC Touch Cruise; also in OE), nike, neon, sedna, wings, ...

msm7500 devices (for cdma networks): (htc-vogue branch)
vogue (aka HTC Touch), titan (Sprint Mogul), ...

the 2 signifies gsm and the 5 cdma radio. then there are some devices
with the chip labled 7x01 where the 1 doesn't signify anything of
interest. What announces a larger difference in the hardware is the A.
these chipsets are newer, faster and are used in the latest line of
htc devices like:

msm7201A devices: (go check htc-msm-2.6.25 branch)
raphael/raph100 (HTC Touch Pro), diamond, blackstone (HTC Touch HD),
dream (aka T-Mobile G1, trout), venus (Sony Ericson Xperia X1)
(just look at all the shiny buzzwords)

msm7501A devices: (support will be added to htc-msm-2.6.25 soon)
raph800, (Sprint Touch Pro), ...

It is possible to boot the linux kernel on all of these devices. The
htc msm linux code is available in the linuxtogo git repositories:
(check the different branches at the bottom there, device reference is
in the list above.)
For more info on device naming and specs visit wiki.xda-developers.com
(that's also the place where we document the hardware research for the
kernel ports) also pdadb.net is a good source (also for non htc

The status of driver situation and overall devices functionality in
linux is advanced for some devices like the vogue and the very similar
titan. see http://cs-alb-pc3.massey.ac.nz/vogue even the cam works
now. There are other machines that lack some things. Like on the
kaiser we suffer from mad SD card controller problems. Some info about
the kaiser (and similar 7200 devices) port can be found at
The newer machines only have basic support as of now but that is
changing rapidly.

Although there are some differences, the way the modem is accessed, is
the very same on all of the devices. Sorry but again a bit of hardware
explanation is needed here. The qct msm7* chipsets consist of two

arm9 one that has baseband and all the other radio stuff, but also
things like DSP, cameras and power management, some 'private' gpios,
etc (basically unlike the neos it is not only a radio processor here).
The firmware (AMSS) on it is based on a microkernel.
arm11 is the system processor which runs the main operating system and
is in command of the rest of the hardware.

The way the two communicate, which is really the important part now,
is a shared memory area where the data is carried in circular buffers
from arm11 to arm9 and vice versa. In the linux userspace, these are
interfaced using simple serial device nodes. (just like ttyS0 etc on
the mokos). All of the AT commands go through /dev/smd0 . Then there
is /dev/smd1 for gprs data and /dev/smd7 for the GPS NMEA data, etc

This is really consistent, also across the non-A/A and 2/5 chipsets.
Of course the AT commands change between 75xxx and 72xxx because cdma
uses extra commands for texting, initializing data sessions and the
like. Then there's HTC/msm specific AT commands like signal quality
and stuff. but not many. most things are standard. I have (made) no
list of them. Only got the AT debug logs from winows mobile which can
be used to obtain all of the needed AT communication. Also there is
the source code to the android phone library reversed and rewritten
for the vogue. I will go document this a bit but if somebody knows
command tables for the htc/msm specific radios, that would be nice. I
think to dial only, the calypso fso code could probably work OOTB on
the msm72xxx devices.



More information about the devel mailing list