EciAdsl, histoire d'un driver pas comme les autres


Ecrit par FlashCode
12 novembre 2004

> Version imprimable


I. Introduction


Au tout début

Tout commence en juin 1999. J'achète une revue informatique qui fait la promotion de Linux et fournit un CD avec une distribution Kheops Slackware.
J'avais à de nombreuses reprises entendu parler des logiciels libres et de Linux, mais jamais je n'avais franchi le pas et installé ce système.
Avec ce CD prêt à installer je me lance. Je programmais jusque là sous MS-Dos, n'ayant jamais apprécié Windows, pour diverses raisons : son manque de stabilité, son interface opaque, sa lourdeur générale, et enfin son prix.
Sous Linux je me sens tout de suite à l'aise, et je décide dès lors de l'utiliser en parallèle de MS-Dos, que je garde pour continuer à développer ou utiliser les programmes que j'ai faits et qui ne tournent pas sous Linux.

Pendant presque deux ans, je développe des jeux et diverses applications sous Linux, afin de mieux connaître le système dans son ensemble.
A cette époque je possède une connexion internet avec un modem RTC 56k, et je ne me connecte que quelques jours par semaine, principalement pour relever mes e-mails.


La découverte de l'ADSL

En mars 2001, alors que je faisais mes courses dans un supermarché non loin de chez moi, j'aperçois un stand Wanadoo faisant une démonstration d'Internet "Haut débit". Je ne savais pas très bien ce qu'était exactement le haut débit ni comment ça fonctionnait.
Après une rapide démonstration, je me laisse tenter et je remplis une demande pour recevoir sous deux mois un modem avec abonnement chez Wanadoo, le seul fournisseur à couvrir ma région à cette époque.
Le modem proposé est un Eci HiFocus Ethernet.

Deux mois plus tard, comme convenu, l'agence France Telecom m'appelle et me demande si j'ai bien un port USB sur mon PC. Légèrement surpris, je réponds que oui et ils me donnent rendez-vous à l'agence quelques jours plus tard pour retirer mon modem.

Là je découvre que j'ai droit à un modem Eci HiFocus USB et non pas un Ethernet comme précisé deux mois plus tôt. Je découvrirai par la suite que cette version USB vient de sortir et que je suis parmi les premiers utilisateurs à en bénéficier.
Je remplis tous les papiers et m'empresse de retourner chez moi pour essayer tout ça et surfer à grande vitesse !




II. Naissance du projet EciAdsl


Le terrible constat

Arrivé chez moi avec ce modem Eci HiFocus flambant neuf, je parcours le CD de pilotes fourni avec le modem et je constate qu'il n'y a pas de driver Linux.
Je me dis alors que ce modem doit être supporté par le noyau Linux. J'examine alors toutes les options du noyau à la recherche d'un driver pour ce modem.
Après un tour complet du noyau, je me dis que ce type de modem doit être supporté par un driver externe au noyau.
Qu'à cela ne tienne ! Je reboote mon vieux Windows, qui commençait à prendre la poussière, et je pars sur internet à la recherche du fameux driver.

Et là, ma déception grandit... après de longues heures de recherche, par différents moteurs de recherche, sur des sites Linux, etc... pas la moindre trace de driver pour ce modem !


Le début du driver EciAdsl

Après quelques jours sous Windows (pour pouvoir profiter de la connexion illimitée et rapide), je trouve l'adresse e-mail de Benoît PAPILLAULT, qui développe un driver Linux / BSD pour le modem Alcatel Speedtouch USB.
Je décide de le contacter, en espérant que son driver puisse fonctionner avec mon modem Eci. Réponse malheureusement négative, nos modems ne sont pas compatibles entre eux.

Je continue malgré tout ma recherche pendant quelques semaines, avant de me rendre à l'évidence : le constructeur ne fournit aucun driver pour Linux, il n'y en a pas de disponible dans le noyau ni sur aucun site Internet, et personne ne semble travailler sur un tel driver.....
Il me reste donc trois solutions :
- retourner sous Windows et faire une croix sur Linux
- attendre que quelqu'un développe le driver
- développer moi-même le driver.

Après quelques jours de réflexion, la première solution étant écartée d'office, je décide de me lancer moi-même dans l'écriture du driver.

Je commence donc à réfléchir aux compétences que j'ai acquises sous Linux et celles qui me manquent pour arriver à mon objectif.
J'établis ce constat :
- je connais bien la programmation système pour avoir développé des utilitaires divers pendant plusieurs années, sous MS-Dos et Linux,
- je ne connais rien à la technologie de l'ADSL, mais je dois pouvoir trouver des documents sur Internet,
- je ne connais rien à l'USB, mais c'est abondamment documenté sur Internet,
- et surtout je n'ai aucune documentation sur le modem, je ne connais pas du tout le fonctionnement de la puce qui est dedans.

Je me dis alors que mes connaissances techniques ne sont pas suffisantes pour développer seul ce driver et que j'aurai besoin d'aide.
Commençant à bien connaître la communauté Linux et l'esprit d'entr'aide entre utilisateurs, je me dis que je ne dois pas être le seul à avoir ce modem et à vouloir l'utiliser sous Linux, et que forcément des gens seraient prêts à m'aider dans ce travail (avec trois années de recul, je confirme que j'avais entièrement raison !).


Constitution de l'équipe

Je recontacte Benoît PAPILLAULT en juin 2001 pour lui demander s'il peut m'aider dans l'écriture de ce driver.
Avec sa réponse positive je me lance et je commence à écrire une page Linux sur mon site (http://flashcode.free.fr) où j'explique simplement que je commence le développement.

Spontanément, et à ma grande surprise, de nombreuses personnes me contactent, la plupart pour m'encourager dans ce travail, et certains pour m'aider dans le développement lui-même.
Parmi eux, Jean-Sébastien VALETTE qui n'a pas encore le modem, mais souhaite le prendre compte-tenu du début mon projet. Il me propose donc son aide dans le développement.

Je décide donc de commencer le driver avec Jean-Sébastien et de faire appel à Benoît si besoin, qui travaille parallèlement sur son driver Alcatel Speedtouch.

Fin juin 2001, nous ouvrons le projet sur Sourceforge.


Début du développement

Au début des développements, je décide de me documenter sur l'USB, la technologie ADSL, et l'écriture de drivers sous Linux.

En parallèle, j'écris à Eci Telecom pour savoir s'ils projettent de distribuer un driver Linux pour leur matériel.
Ils me répondent que c'est en projet chez eux, mais la réponse est assez vague et surtout ils ne me donnent aucune date quant à la sortie de cet hypothétique driver.
Je leur écris donc à nouveau pour leur demander de la documentation sur le modem, qui m'aiderait grandement pour démarrer l'écriture du driver. Et là ils me disent de me tourner vers Globespan, le constructeur du chipset du modem (note: Globespan a aujourd'hui été racheté par Conexant).
Seulement, Globespan répond rarement aux mails, ou bien m'envoie vers d'autres personnes et au final je n'obtiens aucune documentation...

Qu'à cela ne tienne, Jean-Sébastien et moi-même sommes plus que déterminés à faire ce driver pour pouvoir retourner sous Linux, et nous commençons à étudier le chipset sans aucune documentation.

A ce moment, Benoît me donne des tuyaux et m'explique comment il a développé son driver pour l'Alcatel Speedtouch.
Il a capturé ("sniffé") toutes les données échangées sous Windows entre le driver et le modem, ce qui lui donne des fichiers de "logs".
Ensuite il faut analyser ces logs pour comprendre un minimum le fonctionnement et reproduire ces envois de données sous Linux.




III. Première version du driver EciAdsl


Initialisation du modem

Aussi simple que cela puisse paraître, allumer le modem n'est pas si évident. Nous devons comprendre un minimum comment fonctionne le chipset Globespan.
Avec l'aide d'utilisateurs du modem qui l'ont démonté, et avec des recherches sur Internet, on découvre que le chipset est un Globespan GS7070.

Nous commençons alors deux tâches en parralèle :
- d'une part nous "sniffons" la connexion USB sous Windows pour obtenir des fichiers logs des données échangées,
- d'autre part nous cherchons un moyen sous Linux d'envoyer les données au modem.

Nous avons utilisé le sniffeur USB "Snoopy" (écrit par Roland BOSA et Heiko RABE), modifié par Benoît et Jean-Sébastien pour fonctionner avec notre modem.
Nous arrivons à extraire le "firmware" des fichiers logs obtenus (c'est le programme envoyé par le driver au modem pour l'initialiser).

Nous aboutissons rapidement au premier résultat visible : fin juin 2001, nous réussissons à allumer les deux LEDs du modem: la rouge (alimentation) est fixe et la verte (synchronisation) clignote, ce qui signifie que le modem n'est pas synchronisé avec la ligne ADSL.
Le firmware est donc envoyé avec succès au modem !
Nous avons utilisé un petit programme qui permet d'envoyer des données à notre puce Globespan ("ezusb" loader).

Deux mois après, en août 2001, Jean-Sébastien arrive à synchroniser le modem, la LED verte devient donc fixe et tous les espoirs sont permis quant à la connexion.
Nous avons pour cela extrait et constiué un fichier binaire (que nous nommerons par la suite "fichier .bin de synchronisation") qui est envoyé au modem par un programme écrit par Jean-Sébastien.
Par la suite, nous construirons plusieurs fichiers .bin différents que nous distribuerons avec le driver.
(A ce jour - octobre 2004 - nous ne savons toujours pas ce qu'il y a exactement dans ces fichiers .bin de synchronisation).

Néanmoins, nous nous doutons que la connexion reste l'étape la plus difficile et cela demandera sûrement du temps pour comprendre tous les mécanismes...

De plus, Laurent Wandrebeck (aka "low") et "wwp" rejoignent l'équipe de développement.


Salon "Networld Interop'"

En parallèle du développement, je me dis que toute documentation sur le modem serait la bienvenue.
Je découvre par hasard qu'un salon nommé "Networld Interop'" va avoir lieu à Paris au mois de septembre 2001 avec un stand tenu par ..... Eci Telecom !
Il me vient alors l'idée d'organiser une pétition en ligne et de la remettre sur le salon à Eci Telecom pour leur montrer notre détermination à obtenir la documentation et pouvoir continuer dans les meilleures conditions le développement de notre driver.
Le 10 septembre 2001 je mets la pétition en ligne et j'invite tous les gens intéressés par le projet à la signer.
Le salon se tient le 18 septembre, soit 8 jours après seulement et la pétition compte déjà 1370 signatures !

Le jour J j'ai rendez-vous avec Marc-Aurèle DARCHE, membre de l'AFUL (Association Francophone des Utilisateurs de Linux et des Logiciels Libres), et deux (futurs) utilisateurs du driver me soutenant : Vincent Planchenault et Philip J.

Je remets comme convenu la pétition à Eci Telecom, forte de ses 1370 signatures. Thierry Berton (directeur commercial Eci Telecom) nous assure qu'il fera son maximum pour que nous obtenions la fameuse documentation.

Nous repartons avec son adresse e-mail, et confiant dans la suite de nos échanges avec Eci Telecom.

Malheureusement une fois de plus, ces échanges par e-mails se solderont par un échec : toujours pas de documentation.

Je décide de laisser la pétition en ligne, au cas où nous en aurions à nouveau besoin, et nous continuons le développement sans documentation.


Objectif connexion

Là les choses se compliquent sérieusement...
Pendant quelques mois, nous pataugeons et stagnons...
L'absence de documentation et de connaissances sur le fonctionnement du modem nous fait cruellement défaut...
Il faut noter qu'à ce moment là il y a un fort engouement pour ce projet, et beaucoup de gens nous soutiennent et nous encouragent pour que l'on arrive à une version permettant de se connecter. Ceci ne fait qu'appuyer notre détermination à aller au bout pour pouvoir enfin se connecter à Internet sous Linux.


La délivrance

Début décembre 2001, alors que tout stagnait depuis plusieurs mois, un événement pour le moins inattendu va bouleverser le développement : Benoît PAPILLAULT a déménagé et a obtenu un modem Eci HiFocus USB, à sa demande et malgré l'avertissement de France Telecom indiquant qu'il ne fonctionnait pas sous Linux.
Il se retrouve donc subitement dans l'obligation d'utiliser le modem Eci, qui ne fonctionne pas encore sous Linux.

Il rejoint évidemment à plein temps l'équipe de développement et se lance dans l'étude de la connexion avec le modem Eci sous Linux.
En quelques jours, il réussit à débloquer la situation et à se connecter brièvement à Internet.

Le 7 décembre 2001, toute l'équipe annonce fièrement la toute première version 0.1 du driver permettant de se connecter à Internet !

Notre objectif est ATTEINT !

J'ai naïvement pensé à ce moment que le driver était terminé et que je pouvais passer à autre chose maintenant que ma connexion Internet fonctionnait parfaitement sous Linux.

En fait le développement du driver ne faisait que commencer.....




IV. Développement du driver


L'enchaînement des premières versions

Les premières versions ont suscité un réel engouement de la part de nombreux utilisateurs.
Ceci a deux conséquences :
- nous devons stabiliser la première version qui était plus qu'"alpha"
- nous devons assurer un support pour l'installation du driver, qui n'est pas encore très évidente, aucun outil de configuration n'ayant été développé à ce stade.

En décembre 2001, nous enchaînons trois versions, jusqu'à la version 0.3, mise à disposition la veille de Noël.

Le support devient une part prépondérante du projet et est désormais assuré via une liste de diffusion, IRC, et mail.

Antoine REVERSAT (aka "crevetor") rejoint l'équipe de développement.

En février 2002, nous mettons à disposition la version 0.4 du driver, puis Antoine créé un forum EciAdsl, qui remporte tout de suite un franc succès auprès des utilisateurs.


Les évolutions majeures

En avril 2002, je développe avec Antoine un outil de configuration graphique du driver. Cet outil permet de configurer entièrement le driver et le rend ainsi accessible aux débutants Linux.

Dans les mois qui suivent, de nombreux utilisateurs étrangers (hors de France) nous contactent. Ils possèdent des modems vendus sous d'autres marques, mais possédant le même chipset Globespan que nous (le GS7070).
Dès lors avec l'aide de quelques contributeurs étrangers ("flynux" et "oliver the red"), nous modifions le driver pour supporter ces modems ainsi que les protocoles d'encapsulation qui sont utilisés dans ces pays.
Le driver est désormais utilisé dans de nombreux pays et de plus en plus de modems sont supportés.

En mai 2002, la version 0.5 est mise à disposition, mais ne permet pas encore de choisir d'autres modems que le Eci HiFocus.

Début septembre 2002, je mets en place un site tout neuf pour le driver : http://eciadsl.flashtux.org

La version 0.6 constituera le cadeau de Noël puisque sortie le 25 décembre 2002, soit un peu plus d'un an après la toute première version stable. Elle apporte un nombre impressionnant de nouveautés, parmi lesquelles :
- support de 28 modems
- plusieurs encapsulations PPP
- outil graphique de configuration graphique et texte
- FAQ dans le driver et en ligne


Les versions suivantes

En mars 2003 sort la version 0.7 qui corrige quelques bugs laissés dans la version 0.6.

En août 2003, la version 0.8 voit le jour, il ne s'agit encore une fois que de corrections de bugs.

En décembre 2003, Benoît met à disposition une version du driver qui fonctionne sous BSD.

En avril 2004 nous mettons à disposition la version 0.9 du driver, qui fonctionne indifféremment avec les noyaux 2.4 et 2.6 de Linux.


Les nouveaux chipsets Globespan

En novembre 2003, "kolja" (développeur italien) rejoint l'équipe de développement et a pour objectif d'adapter notre driver pour son modem, un Nortek 2021, qui possède un chipset Globespan GS7470.
Il met à disposition en février 2004 une version modifiée du driver pour son modem.
Cette nouvelle version est rapidement utilisée et supporte ensuite d'autres modems compatibles : les BT100 et 105, Siemens Santis 10, Askey ALE130, etc...

A ce jour - octobre 2004 - ce driver doit être incorporé dans la version standard.




V. Conclusion


Le futur du driver

Plusieurs points sont à noter pour le futur du driver EciAdsl :
- nous attendons toujours la documentation de la part de Globespan (maintenant Conexant) ou d'Eci Telecom, et de plus nous ne trouvons pas de documentation ADSL gratuite sur internet,
- nous souhaitons intégrer le driver dans un maximum de distributions Linux / BSD, ce qui n'est pas simple avec les problèmes de licence sur le firmware et les fichiers binaires de synchronisation
- nous souhaitons améliorer le processus de synchronisation pour nous débarasser des fichiers .bin de synchro
- nous devons fusionner la version supportant les nouveaux chipsets Globespan (paquet "Nortek") avec la version standard.


Remerciements

L'équipe de développement du driver EciAdsl à ce jour :
- Sébastien HELLEU ("FlashCode")
- Jean-Sébastien VALETTE
- Benoît PAPILLAULT
- Kolja
- Laurent WANDREBECK ("low")
- Antoine REVERSAT ("crevetor")

Je tiens à remercier tous les développeurs, les testeurs, les gens qui nous ont fait remonter rapidement les problèmes, les contributeurs étrangers qui nous ont permis d'adapter le driver pour leur pays, et tous les utilisateurs du driver :)


Ecrit par FlashCode <flashcode AT flashtux DOT org>
© Copyleft 12/11/2004.