Porting/Cellular Modem

[edit] Thoughts on how to handle the Cellular Modem in Fremantle-port/Neo900

The Cellular Modem architecture on the N900 consists of a daemon, the Cellular Services Daemon that talks to the cellular modem via ISI packets, a daemon, the System Synchronization Controller Daemon that handles cellular modem state, a daemon, the Phonet AT modem daemon that emulates AT commands on top of phonet and configuration utilities to configure phonet interfaces.

[edit] CSD DBus Interfaces

The Cellular Services Daemon exposes the following dbus interfaces

Interface Handles
com.nokia.csd.Call Phone calls
com.nokia.csd.Call.Instance A specific instance of a phone call
com.nokia.csd.Call.Conference Conference calls
com.nokia.csd.GPRS Cellular data transfer
com.nokia.csd.GPRS.Context A specific cellular data context
Phone.Net Network related things including:-
  • signal strength
  • change of cell/operator
  • change between 2g/3g
  • network time info change
Phone.Sim SIM related things including:-
  • IMSI
  • SIM status
Phone.Sim.Security SIM security related things including :-
  • IMEI
  • simlock
Phone.Sim.Phonebook SIM phonebook
com.nokia.csd.SMS.Outgoing Outgoing SMS messages
com.nokia.csd.SMS.SIM SMS messages stored on the SIM
Phone.SMS SMS messages including Cell Broadcast SMS messages
com.nokia.csd.SS Supplementary Services such as call divert call barring and call waiting
com.nokia.csd.SS.USSD USSD codes
com.nokia.phone.SSC cellular modem state and status

[edit] Proposal

The proposal I have for porting the Cellular stack to new hardware (anything with a different cellular modem to the N900) is as follows:-

  1. Reverse engineer the dbus interfaces (as listed above) exposed by the Cellular Services Daemon and System Synchronization Controller Daemon.
  2. For each interface/signal/method call, implement a compatible interface/signal/method call on top of oFono or fsogsmd (or another cellular stack)
  3. For cases where implementing the interface is not fesable or is too hard, identify the consumers of that interface and clone/modify/replace those consumers to do things differently
  4. If this is done properly, all the upper-level components that talk to the cellular stack (including telepathy-ring and the dialer and messaging apps) will continue to function as-is.

Not sure yet what to do about phonet-at and phonet-utils (not even sure where they get used, probably something to do with Nokia Suite I suspect)