Démontage et guide de modification du firmware D-Link DWR-M921 (RTL8197F)
Le D-Link DWR-M921 repose sur le chipset Realtek RTL8197F avec 128 Mo de DDR2 à 400 MHz et 8 Mo de flash SPI NOR Winbond W25Q64. Le processeur MIPS 24Kc (00019385) tourne à 999 MHz sous Linux 3.10.90, compilé avec gcc 4.4.7 issu du MSDK de Realtek.
L'interface UART intégrée permet de capturer le journal de démarrage, révélant la disposition des partitions MTD :
- 0x00000-0x30000 : "boot+cfg+linux"
- 0x30000-0x80000 : "rootfs"
- 0x80000-0xb0000 : "boot+cfg+linux2" (désactivé)
- 0xb0000-0x100000 : "rootfs2" (désactivé)
Bootbank actif=1. Le noyau se charge depuis 0x80a00000, avec rootfs monté en squashfs sur /dev/mtdblock1.
Analyse de l'initialisation des sous-systèmes
Le journal de démarrage détaille l'initialisation séquentielle :
- Mémoire et cache : 114 Mo libres sur 128 Mo, SLUB avec HWalign=32.
- Contrôleurs USB : EHCI (bus 1), OHCI (bus 2), DWC OTG (bus 3) avec correctifs PHY pour oscillateur 40 MHz.
- Réseau : WLAN Realtek (RFE TYPE=0, 512 descripteurs RX/TX), FastPath v1.03, VLAN 802.1Q.
- Systèmes de fichiers : squashfs 4.0, exFAT 1.2.9, NTFS en lecture/écriture.
- Pilotes : PPP, L2TP, GobiNet/Serial pour modems, nf_conntrack.
Registres PHY USB spécifiques :
port 0 reg e0=e2, e1=31, e2=33, e3=8d, e4=c9, e5=19, e6=c1, e7=91
port 0 reg f0=fc, f1=8c, f2=0, f3=11, f4=9b, f5=4, f6=0
Les ports Ethernet eth0-eth4 sont mappés sur des VLAN avec accélération FastPath.
Structure du firmware et obstacles
Le firmware utilise une configuration à double banque, mais la banque 2 est verrouillée. Absence de code open-source D-Link et support OpenWRT limité pour RTL8197F rendent les builds personnalisés complexes. Les tentatives avec l'ancien SDK Realtek (rtl819x sur SourceForge) échouent.
Spécifications clés du journal de démarrage :
- Ligne de commande noyau :
console=ttyS0,38400 root=/dev/mtdblock1 - DRAM : 128 Mo DDR2@400 MHz
- Flash : w25q64@29 MHz (max_speed_hz=29000000 Hz)
- CPU : 660,68 BogoMIPS
Voies d'attaque pour modifications
- Dump UART/JTAG : Récupérer l'image complète pour ingénierie inverse.
- Patch Squashfs : Décompresser rootfs, injecter AdGuardHome ou paquets personnalisés.
- Crochets bootloader : Modifier U-Boot ou chargeur propriétaire pour root alternatif.
- Exploits SDK : Utiliser MSDK Realtek pour images compatibles.
- Récupération TFTP : Charger images modifiées par réseau si activé.
Le RTL8197F dispose de PCIe (bien que la liaison échoue), USB OTG et GPIO pour hacks bas niveau.
Points clés
- Chipset RTL8197F : MIPS 24Kc@999 MHz, 128 Mo RAM, support OpenWRT limité.
- Partitions MTD : Seules boot+cfg+linux (0x300 Ko) et rootfs (0x500 Ko) actives.
- Correctifs PHY USB : Indispensables pour EHCI/OHCI/DWC OTG stables.
- WLAN Realtek : RFE=0, 512 descripteurs, Adaptivity 9.3.4.
- Version noyau : 3.10.90 (2021), pilotes obsolètes (gcc 4.4.7).
— Editorial Team
Aucun commentaire pour le moment.