Voici un tutoriel pour remplacer l'ONT externe de chez SFR par un Huawei MA5671A
Pré-requisMatérielPour pouvoir bypasser l'ONT externe de chez SFR nous allons avoir besoin d'un peu de matériel :
- Un Huawei MA5671A
- Un adaptateur SFP vers série. En ce qui me concerne j'ai commandé celui là via ebay
- Un fer à souder et du fil d'étain
- Des câbles avec pin (par exemple de ce type sur Amazon) pour connecter notre adaptateur SFP-Série à notre notre adaptateur USB-TLL
- Un adaptateur USB vers série (par exemple de ce type sur Amazon)
- Un ordinateur avec un port USB, et sur lequel on peut installer Python3
- Un switch ethernet avec un port SFP(+) pour brancher le Huawei MA5671A
LogicielNous allons avoir besoin d'un ordinateur sur lequel il va falloir installer python3, mais aussi pip. Le mieux à mon sens est un PC sous Linux.
Il faut ensuite installer pyserial avec la commande :
sudo pip install pyserial
InformationsNous allons avoir besoin de diverses informations ou données pour pouvoir bypasser l'ONT, obtenues en se connectant en telnet à l'ONT SFR :
- Le numéro de série ou S/N de notre ONT SFR de base
- Le SLID ou PLOAM de notre ONT SFR de base, en version hexadécimale, donc sous la forme ABCDEFGHIJKLMNOP0000
- La version active software de l'ONT (active software)
- La version passive software de l'ONT (passive software)
- La version hardware de l'ONT (Label Serial Number dans l'interface telnet de l'ONT SFR)
Rooter le Huawei MA5671APour rooter le Huawei MA5671A on va devoir changer son firmware.
BranchementsLe plus simple est de modifier l'adaptateur SFP-Série en retirer toutes les broches sauf celles qui nous intéressent, à savoir les 2, 7, 10, 15 ou 16. Pour cela à l'aide d'un tournevis fin ou d'une pince fine il faut retirer les broches pour obtenir un résultat tel que la photo ci dessous :

On vient ensuite souder ou brancher des câbles sur les broches (entre la broche 15 ou 16 nous n'avons besoin que d'une seule).
On branche ensuite ces câbles sur notre adaptateur USB-TTL avec la correspondance suivant :
- Broche 15 ou 15 vers 3,3v
- Broche 2 vers TX
- Broche 7 vers RX
- Broche 10 vers GND (ground) mais à ne pas brancher tout de suite coté adaptateur USB-TTL car on va s'en servir comme interrupteur pour démarrer ou éteindre le Huawei MA5671A en branchant ou débranchant ce câble
Détecter le port de connexion de l'adaptateur USB - TTLOn va avoir besoin de trouver le port de connexion de l'adapteur USB-TTL.
Sous LinuxAvant de brancher l'adaptateur USB-TTL, lancer la commande :
ls /dev/tty*
Ensuite il faut brancher l'adaptateur USB-TTL, puis de nouveau lancer la même commande ls /dev/tty* et noter le périphérique supplémentaire qui est apparu.
Sous WindowsBrancher l'adaptateur USB-TTL et noter le port COM qui apparaît dans le Gestionnaire de Périphérique.
Créer le script pour flasherOn va créer un fichier Python (par exemple “script.py”), contenant ce script :
import sys
import time
import serial.tools
try:
ser = serial.Serial("COM8", 115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)
print('[+] Use serial port device:', ser.name)
print('[+] Waiting for trigger characters...')
while True:
try:
recv = ser.readline().decode()
except Exception as x:
print("Decode errore", x)
continue
if recv.startswith('U-Boot'):
print('[+] Received! transfer enable command...')
print('[+] Transfer command sequence 1')
t_end = time.time() + 3
while time.time() < t_end:
ser.write(chr(3).encode())
time.sleep(1)
print('[+] Transfer command sequence 2')
ser.write('setenv bootdelay 3\n'.encode())
time.sleep(1)
print('[+] Transfer command sequence 3')
ser.write('setenv asc0 0\n'.encode())
time.sleep(1)
print('[+] Transfer command sequence 4')
ser.write(
'gpio set 3;gpio input 2;gpio input 105;gpio input 106;gpio input 107;gpio input 108"\n'.encode())
time.sleep(1)
print('[+] Transfer command sequence 5')
ser.write('saveenv\n'.encode())
time.sleep(3)
print('[+] Transfer command sequence 6')
ser.write('reset\n'.encode())
print('[+] Enable command transfer complete! rebooting...')
break
else:
print(recv)
except Exception as e:
try:
print('[!] Error:', e)
sys.exit(1)
finally:
e = None
del e
except (KeyboardInterrupt, SystemExit):
ser.close()
sys.exit(1)
Dans ce script il faut remplacer “COM8” par le port COM récupéré sous Windows ou “/dev/tty****” sous Linux puis enregistrer le fichier.
Lancer le scriptOn va lancer le script avec l'adaptateur USB-TTL branché, mais le câble GND débranché, par exemple sous Linux avec sudo python script.py.
Puis on branche enfin le câble GND et le script doit alors s'exécuter.
Un fois qu'il a terminé, on peut débrancher le câble GND pour éteindre le Huawei MA5671A et quitter le script.
Se connecter en série sur le Huawei MA5671AOn va se connecter au Huawei MA5671A via le port série. Pour cela on se connecter sous Windows via Putty par exemple en mettant le port COM récupéré précédemment et la vitesse 115200 puis connecter, ou sous Linux via le programme “screen” avec la commande
sudo screen /dev/tty*** 115200
Puis on connecte le câble GND et on doit voir apparaître en clair le démarrage du Huawei MA5671A puis pouvoir accéder à la console.
Il faut alors lancer la commande :
sed -i "s|/opt/lantiq/bin/minishell|/bin/ash|g" /etc/passwd
Backup des partitionshttps://hack-gpon.github.io/ont-huawei-ma5671a/#backup-of-all-partitionFlasher le firmwareOn peut alors tout débrancher et brancher le Huawei MA5671A dans le switch en SFP et attendre un peu qu'il démarre.
On doit mettre une IPv4 fixe à notre PC dans le subnet 192.168.1.0/24 autre que 192.168.1.10 (qui sera celle du Huawei MA5671A).
Puis on se connecte en SSH sur ce dernier sur l'IP 192.168.1.10 via Putty par exemple sous Windows ou sous Linux avec
ssh root@192.168.1.10 -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss
Le mot de passer à entrer est : admin123.
Il faut ensuite télécharger sur notre PC l'image Carlito MTD2 :
https://ma5671a.s3.nl-ams.scw.cloud/mtd2.bin et CarlitoMTD5 :
https://ma5671a.s3.nl-ams.scw.cloud/mtd5.bin.
Flash de l'image 1Il faut ensuite transférer le fichier MTD5 sur le Huawei MA5671A en entrant depuis une console de notre PC (et non depuis le SSH du Huawei) :
scp mtd5.bin root@192.168.1.10:/tmp/mtd5.bin -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss
Depuis le SSH du Huawei on va flasher “l'image 1” du Huaweai MA5671A avec :
mtd -e image1 write /tmp/mtd5.bin image1
Puis on va basculer sur l'image 1 avec :
fw_setenv committed_image 1
puis
fw_setenv image1_is_valid 1
Puis on redémarre avec
reboot
La session SSH se termine et après que le Huawei MA5671A ait redémarré on se reconnecte en ssh :
ssh root@192.168.1.10 -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss
Flash de l'image 0Puis on va transférer le fichier MTD2 sur le Huawei MA5671A en entrant depuis une console de notre PC (et non depuis le SSH du Huawei) :
scp mtd2.bin root@192.168.1.10:/tmp/mtd2.bin -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss
Depuis le SSH du Huawei on va flasher “l'image 0” du Huawai MA5671A avec :
mtd -e image0 write /tmp/mtd2.bin image0
Puis on va basculer sur l'image 0 avec :
fw_setenv committed_image 0
puis
fw_setenv image0_is_valid 1
Puis on redémarre avec
reboot
La session SSH se termine et après que le Huawei MA5671A ait redémarré on se reconnecte en ssh :
ssh root@192.168.1.10 -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss
Ca y est : vous avez installé le firmware Carlito sur votre Huawei MA5671A !
Configurer le Huawei MA5671A pour SFRMaintenant que l'on a flashé notre Huawei MA5671A, il faut le configurer pour qu'il fonctionne sur les OLT de chez SFR.
Configurer le SLID ou PLOAMOn va convertir notre SLID en hexadécimal qui passera donc de la forme ABCDEFGHIJKLMNOP0000 vers 0xAB 0xCD 0xEF 0xGH 0xIJ 0xKL 0xMN 0xOP 0x00 0x00
Pour configurer le SLID ou PLOAM, depuis la session SSH sur le Huawei MA5671A, il faut rentrer la commande :
fw_setenv nPassword '0xAB 0xCD 0xEF 0xGH 0xIJ 0xKL 0xMN 0xOP 0x00 0x00'
Configurer le numéro de sériePour configurer le numéro de série ou S/N, depuis la session SSH sur le Huawei MA5671A, il faut rentrer la commande :
fw_setenv ont_serial PTINxxxxxxxx
en remplaçant PTINxxxxxxxx par le S/N de notre ONT
Configurer la version de softwarePour configurer les versions softwares, depuis la session SSH sur le Huawei MA5671A, il faut rentrer la commande :
fw_setenv image0_version 3FEXXXXXXXXXXX
en remplaçant 3FEXXXXXXXXXXX par le “active software” de notre ONT SFR puis
fw_setenv image1_version 3FEXXXXXXXXXXX
en remplaçant 3FEXXXXXXXXXXX par le “passive software” de notre ONT SFR.
Configurer le “target”Pour configurer le “target”, depuis la session SSH sur le Huawei MA5671A, il faut rentrer la commande :
fw_setenv target oem-generic
Modifier le fichier "/etc/init.d/sys.sh"On va modifier ce fichier avec
vim /etc/init.d/sys.sh
Puis on cherche la section commençant par oem-generic et on la modifie de façon à ce qu'elle soit telle que ceci :
oem-generic)
uci set sys.target.name=oem-generic
uci set sys.features.mib_customized=1
uci set sys.features.igmp_fast_leave=1
uci set sys.features.dying_gasp_enabled=0
uci set sys.features.suppress_power_level=0
uci set sys.features.eeprom_sync_option='1'
uci set sys.mib.vendor_id='PTIN'
uci set sys.mib.ont_version='0000000000000'
uci set sys.mib.equipment_id='PTINXXXXXXXX\0\0\0\0'
;;
en remplaçant le contenu de “ont_version” par la version hardware de l'ONT de base SFR et le début de “equipment_id” par le numéro de série de notre ONT en veillant à bien laisser les \0\0\0\0 à la fin pour éviter que le Huawei MA5671A ne se soft brick.
Modifier "etc/init.d/omcid.sh"On va modifier ce fichier avec
vim etc/init.d/omcid.sh
On cherche la ligne commençant par echo "256 de façon à ce qu'elle soit celle-ci :
echo "256 0 ${vendor_id} ${ont_version} 00000000 0 0 0 0 0 #0" >> ${mibtgt}
Calibrer le laser du Huawei MA5671ALorsque l'on a flashé le firmware, on a potentiellement dé-calibré son laser. Pour le recalibrer il faut entrer la commande suivante pour supprimer le fichier en question :
rm /etc/optics/.goi_recovered
Enfin on redémarre le Huawei MA5671A avec :
reboot
La connexion ssh est perdue, attendre qu'il redémarre et se reconnecter en ssh.
Brancher le Huawei MA5671A au réseau FTTH SFROn touche au but.
On peut maintenant connecter notre jarretière optique branchée sur le PTO sur le réseau SFR à notre Huawei MA5671A.
En faisant
otop
puis
s
et en descendant avec la fleche du bas sur le clavier, on peut voir :
RSSI 1490 power qui doit avoir une valeur proche de -20dBm
tx power qui doit avoir une valeur proche de 2 dBm
Si c'est bien le cas, alors le laser est bien calibré. On peut sortir de cette interface avec la touche “Q”
En faisant
gtop
puis
a
on doit voir le PLOAM state monter progressivement jusqu'à 5 qui correspond à l'état O5 : félicitation, votre ONT est bypassé et vous pouvez configurer votre routeur perso comme sur l'ONT de base de chez SFR !
Sources https://hack-gpon.github.io/ont-huawei-ma5671a-root/ https://lafibre.info/remplacer-livebox/guide-de-connexion-fibre-directement-sur-un-routeur-voire-meme-en-2gbps/msg832904/#msg832904