Temat: D-Link M30/CP (IDU dla Plusa)
Kupiłem w niezłej cenie (jeszcze kilka sztuk zostało) router D-Link M30 w wersji dla Plusa - ma logo na obudowie i nazwę modelu M30CP. Oczywiście pierwszym krokiem było wgranie OpenWRT, ale... nie poszło. Okazuje się, że router ma specjalną wersję firmware z dodaną obsługą ODU, w związku z tym nie łyka softu dla modelu standardowego, a tym samym nie łyka obrazu recovery z OpenWRT.
Pobranie firmware ze strony producenta, szybka analiza i wygląda na to, że jedyną różnicą jest jedna cyfra w numerze modelu w nagłówku: zamiast DLK6E6110001 mamy DLK6E6110004. Reszta się pokrywa.
Można zmienić numer w skrypcie do kompilacji i zbudować obraz od zera albo po prostu podmienić nagłówek w obrazie i przeliczyć jego sumę kontrolną (na podstawie https://github.com/openwrt/openwrt/blob … ommands.mk). Przy założeniu, że pobrany obraz ma nazwę recovery.bin:
# Zmiana LOCALE, by uniknąć problemów z printf
LANG=C
# Podmiana naglowka
printf 4 | dd of=recovery.bin bs=1 seek=11 conv=notrunc
# Obliczenie sumy kontrolnej
dd if=recovery.bin bs=78 count=1 | od -v -w2 -tu2 -An --endian little | awk '{s+=65535-$1;}END{s%=65535;printf "%c%c",s%256,s/256;}' | dd of=recovery.bin bs=1 seek=78 conv=notruncW Wiki OpenWRT jest mowa o tym, że aby przywrócić firmware fabryczny, należy mieć obraz działający przed wgraniem OWRT, dlatego zanim uwolnimy sprzęt, warto na wszelki wypadek wgrać 2x firmware, który potem gdzieś się zachomikuje.
Przydatne linki:
OpenWRT Wiki: https://openwrt.org/toh/d-link/aquila_pro_ai_m30_a1
oryginalny firmware: https://public@ftp.dlink.net.pl/dwp/dwp … 240402.zip
obraz Cezarego, którego użyłem do flashowania: https://dl.eko.one.pl/luci/openwrt-24.1 … covery.bin
Zalety: w wersji CP niedrogi, może się podobać, 512 MB RAM, 4xLAN.
Wady: ze względu na układ partycji niewiele miejsca na pakiety, z obrazem z linku powyżej mamy 30.8 MB wolnego na czystym systemie.
Edit 11.05.2025:
Wersja CP przechowuje adres MAC z innym offsetem niż standardowa. Aby poprawić MAC dla WiFi, należy edytować plik /etc/hotplug.d/ieee80211/11_fix_wifi_mac i w odpowiednim miejscu wpisać:
dlink,aquila-pro-ai-m30-a1)
addr=$(mtd_get_mac_binary "Odm" 0x87)
[ "$PHYNBR" = "0" ] && macaddr_add $addr 2 > /sys${DEVPATH}/macaddress
[ "$PHYNBR" = "1" ] && macaddr_add $addr 3 > /sys${DEVPATH}/macaddress
;;Jeśli chcemy mieć poprawny adres MAC również dla Ethernetu, należy zmodyfikować DTB, ustalając wartość
/soc/spi@1100a000/spi_nand@0/partitions/partition@6980000/nvmem-layout/macaddr@81 regna
87 6Można zrobić to na gotowym obrazie: pobieramy sysupgrade (koniecznie dla tej samej wersji, którą już mamy na routerze) i wykonujemy następujące polecenia (na komputerze):
tar xvf luci-24.10-snapshot-r28627-0b392b925f-mediatek-filogic-dlink_aquila-pro-ai-m30-a1-squashfs-sysupgrade.bin
perl -pi -e 's/mac-base\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x08\x00\x00\x00\x3D\x00\x00\x00\x81/mac-base\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x08\x00\x00\x00\x
3D\x00\x00\x00\x87/' sysupgrade-dlink_aquila-pro-ai-m30-a1/kernel
mkimage -F sysupgrade-dlink_aquila-pro-ai-m30-a1/kernelNastępnie, plik sysupgrade-dlink_aquila-pro-ai-m30-a1/kernel transferujemy przez SCP do /tmp routera i wykonujemy polecenie:
ubiupdatevol /dev/ubi0_0 /tmp/kernelPo restarcie routera powinniśmy mieć prawidłowy MAC dla interfejsów WAN (internet) i LAN (eth0).