User Tools

Site Tools


doc:appunti:hardware:freerunner_debian

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:hardware:freerunner_debian [2011/10/29 20:39] – [The FSO middleware] niccolodoc:appunti:hardware:freerunner_debian [2011/11/01 16:23] (current) – [GSM/GPRS] niccolo
Line 116: Line 116:
 **October 2011** update. The FSO project provides an abstraction middleware for smarphones, i.e. applications can ignore the details of the hardware and just ask for devices (GPS, GSM, WiFi, etc.). The framework keeps track of devices used, set power, etc. The project seems alive, but the Debian packages are lagging behind. **October 2011** update. The FSO project provides an abstraction middleware for smarphones, i.e. applications can ignore the details of the hardware and just ask for devices (GPS, GSM, WiFi, etc.). The framework keeps track of devices used, set power, etc. The project seems alive, but the Debian packages are lagging behind.
  
-The FSO stack is work in progress. From the first implementation we have **''frameworkd''** (provided by the **fso-frameworkd** package). From the second generation, called Cornucopia, we have **''fsodeviced''** (provided by the **fso-deviced** package). See [[http://wiki.freesmartphone.org/index.php/Implementations|FSO implementations]] and this interesting [[http://www.vanille-media.de/site/index.php/category/opensource/openmoko/page/2/|report from Michael Lauer]]).+The FSO stack is work in progress. From the first implementation we have **''frameworkd''** (provided by the **fso-frameworkd** package). From the second generation, called Cornucopia, we have **''fsodeviced''** (provided by the **fso-deviced** package). See [[http://wiki.freesmartphone.org/index.php/Implementations|FSO implementations]] and this interesting [[http://www.vanille-media.de/site/index.php/category/opensource/openmoko/page/2/|reports from Michael Lauer]].
  
 So frameworkd is deprecated, but still needed because some modules are still not present in Cornucopia (e.g. ''opimd''). So frameworkd is deprecated, but still needed because some modules are still not present in Cornucopia (e.g. ''opimd'').
Line 129: Line 129:
     * **fso-deviced-openmoko**     * **fso-deviced-openmoko**
         * **fso-deviced**         * **fso-deviced**
 +    * **fso-gsmd-openmoko**
 +      * **fso-gsmd**
   * **mdbus2**   * **mdbus2**
   * **fsoraw**   * **fsoraw**
Line 162: Line 164:
 </code> </code>
  
 +==== fso-gsmd ====
 +
 +The configuration file is:
 +
 +  * **''/etc/freesmartphone/conf/<platform>/fsogsmd.conf''** or
 +  * **''/etc/freesmartphone/conf/default/fsogsmd.conf''**
 +
 +Man page says: //The daemon will be started automatically by DBus, once a request is send to it//; actually the daemon is started just after ''fsodeviced'' is started.
 +
 +The ''fsogsmd'' implementation is capable of **{{.:freerunner:0710-720.zip|GSM 07.10 Multiplexing}}** using the library ''libgsm0710mux'', so installing the **fso-abyss** or the previous **fso-gsm0710muxd** packages is not required.
 ===== The Devices ===== ===== The Devices =====
  
Line 175: Line 187:
 ==== GSM/GPRS ==== ==== GSM/GPRS ====
  
-Shuld upgrade the GSM modem firmware? Look at this page about **[[http://wiki.openmoko.org/wiki/GSM/Flashing|flashing]]**.+=== Upgrading the modem firmware === 
 + 
 +I don't need to upgrade the GSM modem firmware (see **[[http://wiki.openmoko.org/wiki/GSM/Flashing|flashing]]**) because Moko11 is the latest version available. Checked with **''minicom''** (''/dev/ttySAC0'', 115200 8N1): 
 + 
 +<code> 
 +AT+CGMR 
 ++CGMR: "GSM: gsm_ac_gp_fd_pu_em_cph_ds_vc_cal35_ri_36_amd8_ts0-Moko11" 
 +</code> 
 + 
 +=== TCP/IP connection (GPRS) === 
 + 
 +The TCP/IP connection is called GSM PDP (Packet Data Protocol) and it is handled by the FSO stack, the package providing this interface is **fso-gsmd**. The ''fsogsmd'' daemon actually uses **''pppd''** to make the connection and to create the ''ppp0'' interface. 
 + 
 +''pppd'' is called with some default options (search ''ppp_options'' into the source files), which don't work with the ISP provider I know. Fortunately we can override the options in **''/etc/freesmartphone/conf/GTA02/fsogsmd.conf''** 
 + 
 +<file> 
 +# Conseder also the options ktune;proxyarp for tethering. 
 +ppp_options = debug;115200;nodetach;modem;crtscts;hide-password;noauth;noipdefault;defaultroute;replacedefaultroute;usepeerdns;noproxyarp 
 +</file> 
 + 
 +=== Missing ppp2fsogsmd.so === 
 + 
 +There was the [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=647078|bug 647078]] which caused this error in ''/var/log/fsogsmd.log'': 
 + 
 +<code> 
 +[INFO]  PdpPppMux <>: PDP Context Status now FREE_SMARTPHONE_GSM_CONTEXT_STATUS_OUTGOING 
 +[INFO]  PdpPppMux <>: PDP Context Status now FREE_SMARTPHONE_GSM_CONTEXT_STATUS_RELEASED 
 +[WARN]  PdpPppMux <>: PPP quit immediately; check options and permissions. 
 +</code> 
 + 
 +I had to make this symlink: 
 + 
 +<code> 
 +/usr/lib/cornucopia -> /usr/lib/arm-linux-gnueabi/cornucopia/ 
 +</code> 
 + 
 +=== Exploring the FSO interface === 
 + 
 +This is the service provided by the package **fso-gsmd** and the low-level driver **fso-gsmd-openmoko**, which are from FSO Cornucopia implementation. 
 + 
 +Making a TCP/IP connection uses the Packet Data Protocol interface. This is an example of DBus chat, using **''mdbus2''** in interactive mode. 
 + 
 +  - The GSM modem gets powered-on with ''RequestResource''
 +  - Register on the GSM network. 
 +  - APN, login and password are entered. 
 +  - Check PDP status and start the connection. 
 + 
 +<code> 
 +mdbus2 -s -i 
 +MDBUS2> org.freesmartphone.ousaged /org/freesmartphone/Usage org.freesmartphone.Usage.RequestResource GSM 
 +MDBUS2> org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.Network.Register 
 +MDBUS2> org.freesmartphone.ogsmd  /org/freesmartphone/GSM/Device org.freesmartphone.GSM.PDP.SetCredentials internet.wind wind wind 
 +MDBUS2> org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.PDP.GetContextStatus 
 +("released",{}) 
 +MDBUS2> org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.PDP.ActivateContext 
 +MDBUS2> org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.PDP.GetContextStatus 
 +("active",{}) 
 +MDBUS2> org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device org.freesmartphone.GSM.PDP.DeactivateContext 
 +MDBUS2> org.freesmartphone.ogsmd /org/freesmartphone/GSM/Device  org.freesmartphone.GSM.Network.Unregister 
 +</code> 
 + 
 +FIXME: exiting ''mdbus2'' (with Ctrl-D), the GSM device is released (and the power turned off), but ''pppd'' is not terminated, it remains running and consumes the log file.
  
-FIXME Check the new **fso-abyss** package which superseed fso-gsm0710muxd, chek what are the proper packages to install:+=== Other notes ===
  
-  * [[http://packages.debian.org/sid/fso-gsmd|fso-gsmd]] +FIXME The following is old stuff, superceeded by FSO Cornucopia implementation.
-  * [[http://packages.debian.org/sid/fso-abyss|fso-abyss]] +
-  * [[http://packages.debian.org/sid/fso-gsm0710muxd|fso-gsm0710muxd]]+
  
 FSO provides a nice multiplexing of GSM/GPRS. Different aplications can talk to the GSM modem concurrently and place GSM calls while running a GPRS internet connection (bandwidth will be the bottleneck!). The GSM multiplexing is handled by the **fso-gsm0710muxd** package. FSO provides a nice multiplexing of GSM/GPRS. Different aplications can talk to the GSM modem concurrently and place GSM calls while running a GPRS internet connection (bandwidth will be the bottleneck!). The GSM multiplexing is handled by the **fso-gsm0710muxd** package.
Line 417: Line 488:
 ==== WiFi broken in openmoko-panel-plugin ==== ==== WiFi broken in openmoko-panel-plugin ====
  
-The **fso-deviced-openmoko** should be patched because the sysfs path to control the WiFi power changed in kernel 2.6.34. See **[[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=647003|Debian bug #647003]]**.+The **fso-deviced-openmoko** before 0.9.5+git20110805-2 has a bug (the WiFi power sysfs path changed in kernel 2.6.34), see **[[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=647003|Debian bug #647003]]**.
  
 Also **''openmoko-panel-plugin''** must be patched to use the new FSO DBus interface. I will release that patched version soon. Also **''openmoko-panel-plugin''** must be patched to use the new FSO DBus interface. I will release that patched version soon.
Line 570: Line 641:
  
 This is the DBus interface provided by FSO Cornucopia implementation (**''fso-deviced''**, version 0.9.5+git20110805-1). The interface provided by ''fso-deviced'' is not complete, so also the old ''fso-frameworkd'' is installed. This is the DBus interface provided by FSO Cornucopia implementation (**''fso-deviced''**, version 0.9.5+git20110805-1). The interface provided by ''fso-deviced'' is not complete, so also the old ''fso-frameworkd'' is installed.
 +
 +Here you can find current **[[http://git.freesmartphone.org/?p=specs.git;a=blob_plain;f=html/index.html;hb=HEAD|FSO specification]]**.
 ==== Idle notification: timeouts and signals ==== ==== Idle notification: timeouts and signals ====
  
Line 595: Line 668:
 Idle status is one of the following: **''busy''**, **''idle''**, **''idle_dim''**, **''idle_prelock''**, **''lock''** and **''suspend''**. To prevent the device entering a state, set its timeout to **''-1''** (see the note below). If a state is disabled, the subsequent states are never reached. Idle status is one of the following: **''busy''**, **''idle''**, **''idle_dim''**, **''idle_prelock''**, **''lock''** and **''suspend''**. To prevent the device entering a state, set its timeout to **''-1''** (see the note below). If a state is disabled, the subsequent states are never reached.
  
-**NOTE**: to set a timeout of **''-1''** you cannot use the command line because **''-1''** is interpreted as an option. Use this trick:+**NOTE**: to set a timeout of **''-1''** you cannot use the command line because **''-1''** is interpreted as an option. We can use the interactive mode of ''mdbus2'' (terminate with Ctrl-D): 
 + 
 +<code> 
 +mdbus2 -s -i 
 +MDBUS2> org.freesmartphone.odeviced /org/freesmartphone/Device/IdleNotifier/0 org.freesmartphone.Device.IdleNotifier.SetTimeout idle -1 
 +</code> 
 + 
 +If you want to use it into a script, just make this:
  
 <code bash> <code bash>
 +#!/bin/sh
 BUS='org.freesmartphone.odeviced' BUS='org.freesmartphone.odeviced'
 IDLE_SERVICE='/org/freesmartphone/Device/IdleNotifier/0' IDLE_SERVICE='/org/freesmartphone/Device/IdleNotifier/0'
doc/appunti/hardware/freerunner_debian.1319913571.txt.gz · Last modified: 2011/10/29 20:39 by niccolo