Bug 1024 - Recamping Bug - Autonofix

De openmoko-fr.

Vous trouverez ici un état des lieux du bug #1024, connu aussi comme Recamping Bug.

Sommaire

Description du problème

Il faut savoir que n'importe quel téléphone GSM fait varier la puissance de son émetteur/récepteur en fonction des besoins. En veille ou lorsqu'il est relié à une borne, la consommation et minime. Il passe par contre à pleine puissance pendant les appels, et, ce qui nous intéresse : lors de la tentative de connexion à une borne.

Pour vérifier si le Freerunner se reconnecte de façon fréquente à une borne il existe un script python :

#!/usr/bin/python

import dbus
import dbus.glib
import gobject
import datetime
   
def onNetworkStatus(status ):
        print '[%s] Signal : cid=%s, lac=%s' %  (datetime.datetime.now(),status['cid'],status['lac'] ) 

bus = dbus.SystemBus();

bus.add_signal_receiver( onNetworkStatus,
                         "Status",
                         "org.freesmartphone.GSM.Network",
                         "org.freesmartphone.ogsmd",
                         "/org/freesmartphone/GSM/Device" )

gobject.threads_init()
dbus.glib.init_threads()
main_loop = gobject.MainLoop()
main_loop.run()

Si le script renvoie fréquement le même message, le bug est présent :

[2009-09-09 12:36:09.189663] Signal : cid=3BB3, lac=0D48
[2009-09-09 12:36:15.088936] Signal : cid=3BB3, lac=0D48
[2009-09-09 12:38:10.442808] Signal : cid=3BB3, lac=0D48
[2009-09-09 12:38:13.020126] Signal : cid=3BB3, lac=0D48
[2009-09-09 12:40:25.772918] Signal : cid=3BB3, lac=0D48
[2009-09-09 12:40:28.620096] Signal : cid=3BB3, lac=0D48
[2009-09-09 12:41:17.557676] Signal : cid=3BB3, lac=0D48
[2009-09-09 12:41:20.404582] Signal : cid=3BB3, lac=0D48

Nous voyons clairement que le Neo se connecte régulièremen à la même cellule, ce qui n'est pas normal. Dans certains cas cependant, nous pouvons obtenir des connexions sur d'atres cellules comme ceci :

[2009-10-18 07:51:27.107655] Signal : cid=4E91, lac=006A
[2009-10-18 07:52:45.145288] Signal : cid=4E7B, lac=006A
[2009-10-18 07:53:18.218122] Signal : cid=4E91, lac=006A


Ce résultat est normal. Il signifie que nous sommes en limite de 2 cellules et que le Neo bascule de l'une à l'autre en fonction de la puissance du signal reçu.

Les constats sont qu'un Freerunner buggé a une autonomie de 24h en moyenne.

La communauté étant très active, et avide de faire évoluer son téléphone, tout le monde s'est penché sur des solutions, tout d'abord logicielles, puis matérielles.

Solutions

La configuration de la mise en veille du téléphone a été grandement optimisée. (partie à développer)


Batterie de plus grande capacité

  • Explications

Le problème du condensateur n'ayant pas été découvert tout de suite, une solution consistait à remplacer la batterie par une compatible. Cette idée était bonne, mais ne donnait pas entière satisfaction :

  • Mise en oeuvre

Facile, il suffit de trouver une batterie compatible ( Batterie Nokia Compatible )

  • Tests

Une batterie de 2300mAh a été utilisée, pour gagner 12h d'autonomie (34h au total)

  • Conclusions
    • Aucune batterie compatible ne permet au FR de 'lire' le niveau d'énergie restant. Et certaines distributions les considèrent même comme vide !
    • Malgré des batteries deux fois plus puissantes, l'autonomie était à peine moitié plus longue.
  • Liens

Changement d'un condensateur

  • Explications

Un défaut de conception existe dans le module GSM du Freerunner GTA02 (toutes versions). Ce défaut concerne un tampon électrique sous-dimensionnée du module GSM. Concrètement un condensateur est de trop faible capacité pour jouer le rôle qu'il devrait.

Ce condensateur se situe au niveau du système qui se connecte au réseau GSM, et qui permet de considérer le téléphone comme connecté ou non. Dans le cas du bug, le téléphone arrive à se connecter au réseau, mais le téléphone considère la connexion comme insuffisamment stable, et va sans cesse essayer de se reconnecter. En vain, vous l'aurez compris.

Le module GSM d'un Freerunner buggé tourne donc à pleine puissance, tout le temps, sans jamais entrer en veille, et comme il représente un point non négligeable de la consommation électrique, épuise la batterie prématurément !

  • Mise en oeuvre

Depuis la découverte du bug, plusieurs modifications possibles ont été exposées :

  • Placer un condensateur CMS de 10µF en parallèle de celui existant dans le module GSM.
  • Remplacer le condensateur CMS de 10µF (microFarad) par un condensateur de 22µF.
  • Placer un condensateur classique de 10µF en parallèle mais à l'extérieur du module GSM


Dans tous les cas, il faudra également procéder à des aménagements logiciels :

Distributions basées sur FSO (SHR, Debian, OM2009...)

Editez le fichier /etc/frameworkd.conf de sorte qu'il contienne :

TI_CALYPSO_DEEP_SLEEP = always

Ensuite redémarrez le service frameworkd ou rebootez le téléphone.

/etc/init.d/frameworkd restart

Distribitions basées sur QT Qtopia, QTExtended, QTMoko...)

Editez le fichier /opt/qtmoko/etc/default/Trolltech/Modem.conf pour qu'il contienne :

[DeepSleep]
Active=always

Puis redémarrez le Neo.


La première méthode est la plus simple à mettre en place, un condensateur CMS mesure 0.5 mm x 0.8mm (!). Il suffit de connecter le condensateur sur la borne (+) du condensateur C1009 et l'autre côté sur une masse.

(descriptif détaillé à écrire)

La seconde méthode, plus complexe, mais plus propre, consiste à remplacer le condensateur C1009. Demandant un peu plus d'expérience dans la soudure CMS, elle n'est pas impossible pour autant, car la place à cet endroit reste relativement grande.

(descriptif détaillé à écrire)

La troisième méthode expliquée sur une liste de diffusion se révèle en fait mauvaise car met en défaut l'étanchéité de l'isolation du module GSM. Pour info, elle consiste à souder deux fils isolés sur le condensateur, les faire sortir du module par des aspérité, et souder un condensateur céramique classique à l'extérieur, où la place manque moins.


  • Tests

Les tests sont tous positifs ! L'autonomie passe donc de 24h à 72h voire 140h pour certains.


  • Liens

Conclusions

La modification matérielle est relativement simple à mettre en place, pour peu que l'on ait un minimum de savoir faire, et du matériel adapté. Il s'avère qu'à peu près partout en France des utilisateurs ont fait la modif, et se proposent pour la faire sur les machines des utilisateurs moins habiles du fer à souder.

Il faudra aussi envisager de cumuler les correctifs : condensateur + batterie pour encore améliorer l'autonomie.

Liens

Outils personnels