D-Link DWR-M921: Firmware-Analyse und Modding-Anleitung (RTL8197F)
Der D-Link DWR-M921 basiert auf dem Realtek RTL8197F-Chipset mit 128 MB DDR2 bei 400 MHz und 8 MB SPI NOR-Flash vom Typ Winbond W25Q64. Der MIPS 24Kc-Prozessor (00019385) taktet unter Linux 3.10.90 mit 999 MHz und wurde mit gcc 4.4.7 aus dem Realtek MSDK kompiliert.
Die integrierte UART-Schnittstelle ermöglicht das Abfangen des Bootlogs, der das MTD-Partitionslayout offenlegt:
- 0x00000-0x30000: "boot+cfg+linux"
- 0x30000-0x80000: "rootfs"
- 0x80000-0xb0000: "boot+cfg+linux2" (deaktiviert)
- 0xb0000-0x100000: "rootfs2" (deaktiviert)
Aktiver Bootbank=1. Der Kernel wird von 0x80a00000 geladen, rootfs wird als Squashfs auf /dev/mtdblock1 gemountet.
Analyse der Subsystem-Initialisierung
Der Bootlog durchläuft die Initialisierung schrittweise:
- Speicher und Cache: 114 MB frei von 128 MB, SLUB mit HWalign=32.
- USB-Controller: EHCI (Bus 1), OHCI (Bus 2), DWC OTG (Bus 3) mit PHY-Patches für 40 MHz Oszillator.
- Netzwerk: Realtek WLAN (RFE TYPE=0, 512 RX/TX-Deskriptoren), FastPath v1.03, VLAN 802.1Q.
- Dateisysteme: Squashfs 4.0, exFAT 1.2.9, NTFS Lese-/Schreibzugriff.
- Treiber: PPP, L2TP, GobiNet/Serial für Modems, nf_conntrack.
Spezifische USB-PHY-Register:
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
Ethernet-Ports eth0-eth4 sind VLANs mit FastPath-Beschleunigung zugeordnet.
Firmware-Layout und Hürden
Die Firmware nutzt ein Dual-Bank-Setup, Bank 2 ist jedoch gesperrt. Fehlender Open-Source-Code von D-Link und lückenhafte OpenWRT-Unterstützung für RTL8197F erschweren Custom-Builds. Versuche mit veraltetem Realtek SDK (rtl819x auf SourceForge) scheitern.
Wichtige Bootlog-Specs:
- Kernel-Commandline:
console=ttyS0,38400 root=/dev/mtdblock1 - DRAM: 128MB DDR2@400MHz
- Flash: w25q64@29MHz (max_speed_hz=29000000Hz)
- CPU: 660.68 BogoMIPS
Modding-Ansätze
- UART/JTAG-Dump: Vollständiges Image für Reverse Engineering sichern.
- Squashfs-Patching: Rootfs entpacken, AdGuardHome oder Custom-Pakete einbinden.
- Bootloader-Hooks: U-Boot oder proprietären Loader für alternativen Root anpassen.
- SDK-Exploits: Realtek MSDK für kompatible Images nutzen.
- TFTP-Wiederherstellung: Modifizierte Images über Netzwerk laden, falls aktiviert.
Der RTL8197F bietet PCIe (Link-Up fehlschlägt), USB OTG und GPIO für Low-Level-Hacks.
Wichtige Erkenntnisse
- RTL8197F-Chipset: MIPS 24Kc@999MHz, 128MB RAM, begrenzte OpenWRT-Unterstützung.
- MTD-Partitionen: Nur boot+cfg+linux (0x300KB) und rootfs (0x500KB) aktiv.
- USB-PHY-Patches: Essentiell für stabile EHCI/OHCI/DWC OTG.
- Realtek WLAN: RFE=0, 512 Deskriptoren, Adaptivity 9.3.4.
- Kernel-Version: 3.10.90 (2021), veraltete Treiber (gcc 4.4.7).
— Editorial Team
Noch keine Kommentare.