ADSL AH4021 AH4222 broadcom Classe Club-internet Box CodeGear Cpp CppBuilder Delphi driver DSL embarcadero embarqué free Freeware Gratuit linux livebox mips Modem neufbox OpenSource OpenWRT TECOM

+ Tous les mots clés

PDF Imprimer Envoyer
Note des utilisateurs: / 6
MauvaisTrès bien 
Dimanche, 14 Juin 2009 18:55

Le problème du driver ADSL des BCM963xx

Comme nous l'avons vu dans l'article d'introduction sur OpenWRT, les modems des FAI font tourner un linux embarqués.

Ces modems utilisent principalement des BCM6348 ou BCM6358 (250MHz à 300MHz).

Il me semble que les livebox mini utilisent une autre puce mais les anciennes livebox, utilisait le même type de CPU.

A noté que les versions fibre de ces modems ont des caractéristiques différentes. 

Le CFE démarre et vous pouvez y avoir accès par la console.

Le firmware du modem est décomposé en 3 parties.

  • Le bootloader : ici, c'est un CFE (un mini linux de broadcom)
  • Le kernel
  • Le système de fichier (SquashFS)

Le CFE démarre et vous pouvez y avoir accès par la concole.

Pour développer un nouveau firmware sur ces modems, il vous faut un accès console. Il faut ouvrir le modem pour y mettre un connecteur ou se branché à celui existant. La console est un port série fonctionnant avec une tension de 3,3v et on peut s'y connecter avec Putty ou HyperTerminal. Vous pouvez aussi avoir trouvé un accès au port JTAG mais il est beaucoup plus difficile de le trouver. Ici, pour le développement, seul le port console est utile.

En effet, le port JTAG permet de changer le boot loader contrairement au port console qui ne permet pas d'écraser le boot loader. Si vous comptez mettre un nouveau linux, le port JTAG ne vous servira à rien. Une fois que le boot loader à démarré, il donne la main à votre linux et il n'aura plus aucun rôle jusqu'au prochain démarrage du modem.

Le CFE peut s'arrêter si vous prenez la main sur le port console avant la fin de son démarrage et il vous donnera accès à une page web, via un des ports Ethernet, pour vous permettre de mettre un nouveau firmware. Ainsi, en cas de plantage de votre solution linux, vous pourrez restaurer votre modem ou essayer un autre firmware.

Le CFE charge le kernel de votre firmware (vmlinux). Ce kernel va ainsi lancer divers drivers comme par exemple :

  • Port série
  • Driver ethernet
  • Driver mémoire
  • Driver pour le filesystem (il décompresse le SquashFS en RAM)
  • ...

D'autres drivers peuvent être chargé par le kernel à ce moment ou être chargé à partir du filesystem comme par exemple :

  • WIFI
  • VOIP
  • DSL
  • ...

Les constructeurs fournissent assez souvent le code source de leur firmware mais les drivers broadcom sont fournis sous forme binaire. Comme un certain nombre de patchs ont été appliqués sur leur linux modifiant essentiellement le fonctionnement du kernel lié à ces drivers, on ne peut pas les réutiliser sur OpenWRT. Cela concerne le WIFI, l'Ethernet et le driver DSL.

Heureusement, des bénévoles ont déjà pu écrire un nouveau driver pour le WIFI et un nouveau driver Ethernet à été mis à disposition du public par un FAI.

Il reste donc le driver DSL qui n'a encore aucune solution.

On peut attendre une autre initiative d'un FAI ou de broadcom (on peut toujours rêver) mais cela risque de prendre du temps. Le matériel sera surement obsolète d'ici la.

L'application des patchs sur OpenWRT n'est pas viable. Ce système est régulièrement mis à jour avec la dernière version du kernel et la maintenance de ce type de patch me semble impossible. Surtout que cela implique de rendre compatible tous les autres drivers et les applications concernées. OpenWRT fonctionne sur de nombreux systèmes et une telle modification pour une seule plateforme n'arrivera pas s'ils veulent conserver un système fiable et évolutif.

Je ne vois que 2 autres solutions, l'écriture d'un nouveau driver ou l'écriture d'un wrapper.

L'écriture d'un nouveau driver est difficile du fait qu'aucune documentation constructeur n'est disponible pour le public.

Quant au wrapper, cela nécessite de modifier les fichiers binaires du driver pour qu'il fasse appel aux fonctions du wrapper et non aux fonctions du kernel. Le wrapper rend donc le binaire compatible mais la même problématique que le système de patch se pose. En effet, il faudra le mettre à jour régulièrement pour prendre en compte les modifications du kernel. De plus, cela rajoute une couche supplémentaire entre le driver et le kernel. Les performances seront amoindries.

OpenWRT
neufbox4.org
Forum modification TECOM
Fichier du groupe de modification du TECOM 

 

ADSL | bcm63xx | bcm963xx | Bootloader | brcm963xx | broadcom | CFE | Console | driver | DSL | Firmware | JTAG | kernel | linux | livebox | neufbox | OpenSource | OpenWRT | Port série | Putty | SFR box | SquashFS | TECOM | Wrapper

Mise à jour le Dimanche, 12 Juillet 2009 10:42
 
Copyright © 2020 Flyonsoft. Tous droits réservés.
Vous pouvez réutiliser les codes sources fourni sur ce site mais vous devez y mettre un lien vers la page du code ou à défaut sur la page www.flyonsoft.com.