samedi 26 mars 2016

Utiliser votre vieux modem club internet comme routeur/point d'accés et plus si affinité.

Si vous avez un modem AH4222 à l'interface SFR inexploitable (il ne permet pas de changer son adresse ip et d'autres paramètres), voici comment rétablir sont firmware d'origine, voir le modifier.

Le routeur à par défaut l'adresse IP 192.168.1.1. Cadencé à 256 MHz, 16 MB de ram, il a une petite ROM de 4 Mio Il a heureusement un utilitaire CFE (Common Firmware Environment) qui permet de flasher le bcm6348.

Méthode simple

Si vous voulez simplement remettre le firmware d'origine, la méthode la plus simple est de télécharger le firmware que j'ai pu recompilé ici (la méthode de recompilation se trouve après). Le CFE est accessible par liaison série et également par l'interface web après avoir maintenu le bouton reset pendant 30 secondes. accédez par la suite à l'interface sur l'adresse de la box.

Méthode avancée

Vous povez utiliser la liaison série. Les paramètres de liaison sont 115200bps, 8 bits, pas de parité, 1 bit de stop. Les niveaux sont à 3.3V.

Donc si vous voulez vous amuser: achetez un convertisseur USB-Série.

Le brochage est, en numérotant les broches du haut vers le bas :
  1. Vcc (3.3V)
  2. Rx
  3. Tx
  4. GND
Pour connecter un terminal depuis linux a votre box:
#Avec putty
putty -serial /dev/ttyUSB0 -sercfg 11520
#Avec screen
screen /dev/ttyUSB0 115200

Si vous utilisez le port série de votre PC, remplacez ttyUSB0 par ttyS0.

Vous devriez être en mesure de voir les logs de boot de la box. Au début du boot un compteur vous laissera le temps d'accéder au CFE, c'est ce qui nous intéressera pour flasher le modem.
CFE version 1.0.37-0.7 for BCM96348 (32bit,SP,BE)
Build Date: Thu Mar  2 16:45:45 CST 2006 (root@hp)
Copyright (C) 2000,2001,2002,2003 Broadcom Corporation.

Initializing Arena.
Initializing Devices.
Flash device ID:22f6
AMD FLASH FAMILY
Auto-negotiation timed-out
10 MB Half-Duplex (assumed)
CPU type 0x29107: 256MHz, Bus: 128MHz, Ref: 32MHz

Total memory used by CFE:  0x80401000 - 0x805232F0 (1188592)
Initialized Data:          0x8041B390 - 0x8041CC60 (6352)
BSS Area:                  0x8041CC60 - 0x804212F0 (18064)
Local Heap:                0x804212F0 - 0x805212F0 (1048576)
Stack Area:                0x805212F0 - 0x805232F0 (8192)
Text (code) segment:       0x80401000 - 0x8041B388 (107400)
Boot area (physical):      0x00524000 - 0x00564000
Relocation Factor:         I:00000000 - D:00000000

Board IP address                : 192.168.1.1:ffffff00  
Host IP address                 : 192.168.1.100  
Gateway IP address              :   
Run from flash/host (f/h)       : f  
Default host run file name      : vmlinux  
Default host flash file name    : bcm963xx_fs_kernel  
Boot delay (0-9 seconds)        : 1  
Board Id Name                   : 96348GW  
Psi size in KB                  : 24
Number of MAC Addresses (1-32)  : 12  
Base MAC Address                : 00:16:38:de:de:de  
Ethernet PHY Type               : Internal
Memory size in MB               : 16

*** Press any key to stop auto run (1 seconds) ***
Auto run second count down: 

Voici les logs du CFE, vous pouvez y accédez si vous appuyez sur une touche (par votre terminal série) dans le temps qui vous est imparti.

Par la suite il est possible de changer le "boot delay" et l'addresse IP utilisé par le CFE.

Compilation du firmware

Avant d'essayer de tout recompiler j'ai tenté de récupérer le firmware image d'origine sur une box qui n'avait pas subi de mise à jour lors du passage à SFR.
cat /dev/mtdblock > /dev/ttySO

Du coté de mon linux j'ai utilisé dd pour récupérer l'image. Cependant cette méthode ne semble pas marcher.

Installation de la toolchain (debian 8)

Téléchargez au choix les .rpm ou .deb ici et installez les.

dpkg -i *.deb

Le tout est installé dans /opt/toolchain.

Maintenant vous pouvez récupérer les sources publiées par Club Internet (v44) dans le même répertoire (vous aurez des problèmes avec cmplzma et mksquashfs qui nécessitent libfstc++.so.5, les sources en elles mêmes nécessitent des modifications)

Sinon vous pouvez clonez le git https://github.com/z3bu/AH4222/ auquel j'ai apporté des modifications sur les binaires permettant la compression de l'image finale (cmplzma et squashfs version 2.0 compilés pour Debian 8), mais également quelquse mini patch sur le code source. Pour cmplzma j'ai utilisé le paquet officiel (sinon prenez le ici), pour squashfs j'ai du retrouver la bonne version et la recompiler. Quelqu'un a fais un dépot avec pleins d'utilitaires de ce genre : https://github.com/z3bu/firmware-mod-kit.

Placez vous dans le dossier des sources et compilez le tout ainsi :

make PROFILE=96348GWV

Désormais pour le transférer, référez vous à l'interface web du CFE. Si vous voulez le faire par le port série il vous faut :

Installer tftp-hpa, modifier/identifier le répertoire du serveur (par défaut /srv/tftp) dans le fichier /etc/conf.d/tftpd.

Copiez-y le firmware qui se situe dans

Lancer le service

systemctl start tftpd 

Maintenant il est temps de revenir au CFE par le port série, à l'aide d'un terminal entrez :

flashimage 192.168.1.41:bcm96348GWV_fs_kernel_AH4222...

J'ai eu quelques problème de conflit d'adresse ip lors du flashage, il est possible de changer l'addresse ip du routeur à l'aide du CFE, mais il faudra redémarrer la box par la suite. Ce problème de conflit rendait le chargement de l'image par tftp impossible.

Une fois flashé vous pouvez vous connecter à l'aide de telnet sur la box ! Les identifiants par défaut sont :

id: root
mdp : clubadmin

Par contre j'aurais aimé retrouver retrouver le brochage du port JTAG, si quelqu'un a des sources.

Aucun commentaire:

Enregistrer un commentaire