View source for GPRS FSO

From Openmoko

Jump to: navigation, search

You do not have permission to edit this page, for the following reasons:

  • The action you have requested is limited to users in the group: Administrators.
  • You must confirm your email address before editing pages. Please set and validate your email address through your user preferences.

You can view and copy the source of this page:

Template used on this page:

Return to GPRS FSO.

Personal tools
Key pages on:

(Other distributions)

This page documents the GSM networking solutions (commonly known as GPRS) using the FreeSmartphone.Org framework (FSO).

There are other ways to enable wireless communications on the smartphone, including Bluetooth and WLAN.

Current state

Since milestone 2 the system dbus has been extended with methods that enables connectivity using GPRS. The functionality is available under org.freesmartphone.ogsmd at /org/freesmartphone/GSM/Device.

The implementation should not interfere with other phone functionality, such as placing calls. In other words: you can use GPRS while talking on the phone without hanging up.

Currently, there's no GUI available but it's fairly easy to use the methods available using any dbus tool.

The methods available:

[METHOD]    org.freesmartphone.GSM.PDP.ActivateContext( s:apn, s:user, s:password )
[METHOD]    org.freesmartphone.GSM.PDP.DeactivateContext()
[METHOD]    org.freesmartphone.GSM.PDP.GetCurrentGprsClass()
[METHOD]    org.freesmartphone.GSM.PDP.ListAvailableGprsClasses()
[METHOD]    org.freesmartphone.GSM.PDP.SetCurrentGprsClass( s:class_ )
[SIGNAL]    org.freesmartphone.GSM.PDP.ContextStatus( i:index, s:status, a{sv}:properties )

Use mdbus -s -l to monitor the emitted signals. Signals will look roughly like this:

ActivateContext( s:apn, s:user, s:password )
[SIGNAL]    org.freesmartphone.GSM.PDP.ContextStatus 
 from :1.3 /org/freesmartphone/GSM/Device
 (dbus.Int32(1), dbus.String(u'outgoing'), 
  dbus.Dictionary({}, signature=dbus.Signature('sv')))
Once the connection is established (takes 3-4 seconds for me) a new signal is emitted
[SIGNAL]    org.freesmartphone.GSM.PDP.ContextStatus    
 from :1.3 /org/freesmartphone/GSM/Device
 (dbus.Int32(1), dbus.String(u'active'), 
  dbus.Dictionary({}, signature=dbus.Signature('sv')))
[SIGNAL]    org.freesmartphone.GSM.PDP.ContextStatus    
 from :1.3 /org/freesmartphone/GSM/Device
 (dbus.Int32(1), dbus.String(u'release'), 
  dbus.Dictionary({}, signature=dbus.Signature('sv')))

Using scripts

While we wait for the preferences part of FSO to be completed (and a GUI), we can use two shell scripts. You need to know three things to successfully connect via GPRS (your carrier should provide this information to you):

  • the APN to use,
  • the username, and
  • the password.

If your APN has no username or password, you must still provide a string to satisfy the framework's input requirements. Entering bogus data, such as the "x" above, will suffice.

To connect, put the following in a file and make it executable (chmod +x


To disconnect, use the following method instead (chmod +x


The on script, using the ActivateContext method, will:

  • setup a ppp interface (normally ppp0) (and assign IP address)
  • setup (replace) the default route
  • setup DNS

with settings received from the ISP.

For a list of known APN:s, see the main GPRS page.


  • When a something like org.freedesktop.DBus.Error.UnknownMethod appears make sure that:
    • frameworkd is started of course
    • That the method did not hide in an other place than expected follow the white Rabbit
  • Online script runs without error but pppd did not start
    • use logread to debug....
    • Maybe the kernelmodule ppp-generic is not loaded, try modprobe. ( you can do echo ppp-generic > /etc/modutils.d/ppp-generic to load the module at boot time )
    • Maybe you have to do a mknod /dev/ppp c 108 0
  • No MUX Channels available
    • Means that the frameworkd has no free channel available to connect to the GSM Modem.
    • Restart the frameworkd and the phone Application (aka ophoned or zhone). Works fine for me.
  • MISC Troubleshooting
    • Switch the frameworkd loglevel to DEBUG (/etc/frameworkd.conf)
    • use the source!

Using a GUI


See also