26

Odp: D-Link M30/CP (IDU dla Plusa)

Sprawdź smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

27

Odp: D-Link M30/CP (IDU dla Plusa)

Nie ustawia. Trzeba osobno dla switcha i każdego portu. Działa coś takiego:
https://github.com/kszaq/openwrt/commit … 8166.patch

28

Odp: D-Link M30/CP (IDU dla Plusa)

Potestuj. I tak będę kompilował za dwa tygodnie, może coś jeszcze znajdziesz innego.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

29

Odp: D-Link M30/CP (IDU dla Plusa)

Wersja z ostatniego postu działa jak należy, z obrazem z ImageBuildera. Więcej dłubać nie planuję, bo jednak działa już jako mój główny router i domownicy nie będą zadowoleni z ciągłych przerw w dostępie do sieci. Kusi, aby złożyć u-boot mod, ale to "kiedyś", jak mi nie będzie szkoda stracić gwarancji i ewentualnie uceglić router.

30

Odp: D-Link M30/CP (IDU dla Plusa)

Ok, wrzucę to.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

31

Odp: D-Link M30/CP (IDU dla Plusa)

Cezary napisał/a:

No właśnie musisz to odpowiednio złożyć.

Nie możesz używać imagebuildera? Rozkompiluj na dts'a, zmień, skompiluj, włóż w odpowiedni katalog i zrób obraz.

Odpowiadając jeszcze na tego posta: niestety ImageBuilder nie ma możliwości podmiany DTB w przypadku tego routera. W folderze build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic jest już gotowy obraz FIT, który nie jest składany na nowo przy odpalaniu make image. Składanie na nowo dzieje się tylko dla niektórych targetów, np xiaomi_mi-router-ax3000t-ubootmod.

Wcześniej pisałem o podmianie jednego bajtu i przeliczeniu sumy kontrolnej - taka procedura przejdzie tylko w przypadku, gdy nie zmienia się rozmiar DTB. Jeśli chcemy zmodyfikować coś więcej, obraz trzeba rozłożyć i złożyć ponownie: teoretycznie rozłożyć możemy przy pomocy dumpimage, a złożyć przy pomocy pliku its dostępnego w imagebuilder. Niestety, dumpimage nie potrafi wyłuskać z FIT obrazu kernela - sypie błędem przelicznia sumy kontrolnej. Wykorzystałem więc binwalk do określenia offsetu kernela w obrazie, następnie wyłuskanie przy pomocy dd i złożenie z nowym DTB przy pomocy mkimage i przepisu its. Suma kontrolna obrazu kernela w nowym FIT zgadza się ze starym, operacja się udała, pacjent nadal żyje. smile

32

Odp: D-Link M30/CP (IDU dla Plusa)

Próbowałem dzisiaj zastosować podejście z routerów Xiaomi w OpenWRT, to znaczy rozszerzyć partycję ubi na ubi1. Polegało to na uruchomieniu najpierw initramfs ze zmodyfikowanym DTB, sformatowaniu wolumentu, wrzuceniu "pełnego" systemu i zadziałało...

root@OpenWrt:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 4.5M      4.5M         0 100% /rom
tmpfs                   242.9M    372.0K    242.5M   0% /tmp
/dev/ubi0_2              76.8M     44.0K     72.8M   0% /overlay
overlayfs:/overlay       76.8M     44.0K     72.8M   0% /
tmpfs                   512.0K         0    512.0K   0% /dev

...ale tylko pierwsze uruchomienie. Po resecie system nie wstaje, uruchamia się recovery. Podejrzewam, że fabryczny u-boot sprawdza obecność ubi0 i ubi1; w momencie gdy wstanie OpenWRT wykorzystujące oba zakresy jako jeden, traci się nagłówek na ubi1, u-boot głupieje i każe przywracać system.

Cóż, pozostaje stworzyć ubootmod, lub stworzyć sobie miejsce na dane na ubi1 i użyć go w razie potrzeby na większe pliki.

33 (edytowany przez kszaq 2025-05-20 10:08:31)

Odp: D-Link M30/CP (IDU dla Plusa)

Podsumowanie: po podłączeniu UART potwierdziłem, że u-boot opiera szuka wolumenu UBI o odpowiedniej sygnaturze (rozmiarze) na starcie i nawet wpisanie odpowiednich wartości w mtdparts nie pomaga - brak odnalezienia wolumenu ubi0, a następnie ubi1 o wielkości 50MB powoduje wejście w recovery.

Moje zmiany dla M30:

34

Odp: D-Link M30/CP (IDU dla Plusa)

Dwie wieści w sprawie tego modelu:

  • udało się rozszerzyć partycję z danymi na ubi1, co daje około 70MB miejsca na /overlay

  • firmware dla M30/CP jest na FTP D-Link, ale OEM Recovery go nie łyka, a niestety nie opracowano jeszcze sposobu na odszyfrowanie - skrypty ze źródeł "GPL" producenta ani m32-firmware-util tego nie potrafią

O rozszerzaniu partycji napisałem również na forum OpenWRT.

Kompilując z: https://github.com/openwrt/openwrt/comp … experiment proces instalacji wygląda następująco:

  1. Instalacja OpenWRT przez OEM recovery - system wstanie do initramfs

  2. Transfer obrazu sysupgrade przez SCP

  3. Sysupgrade

  4. Profit. smile

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 24.10-SNAPSHOT, r28664-cb21ad2848
 -----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@OpenWrt:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 4.5M      4.5M         0 100% /rom
tmpfs                   242.9M    352.0K    242.6M   0% /tmp
/dev/ubi0_2              76.8M     44.0K     72.8M   0% /overlay
overlayfs:/overlay       76.8M     44.0K     72.8M   0% /
tmpfs                   512.0K         0    512.0K   0% /dev
root@OpenWrt:~# ubinfo -a
UBI version:                    1
Count of UBI devices:           1
UBI control device major/minor: 10:127
Present UBI devices:            ubi0

ubi0
Volumes count:                           3
Logical eraseblock size:                 126976 bytes, 124.0 KiB
Total amount of logical eraseblocks:     800 (101580800 bytes, 96.8 MiB)
Amount of available logical eraseblocks: 0 (0 bytes)
Maximum count of volumes                 128
Count of bad physical eraseblocks:       0
Count of reserved physical eraseblocks:  19
Current maximum erase counter value:     4
Minimum input/output unit size:          2048 bytes
Character device major/minor:            249:0
Present volumes:                         0, 1, 2

Volume ID:   0 (on ubi0)
Type:        dynamic
Alignment:   1
Size:        33 LEBs (4190208 bytes, 3.9 MiB)
State:       OK
Name:        kernel
Character device major/minor: 249:1
-----------------------------------
Volume ID:   1 (on ubi0)
Type:        dynamic
Alignment:   1
Size:        38 LEBs (4825088 bytes, 4.6 MiB)
State:       OK
Name:        rootfs
Character device major/minor: 249:2
-----------------------------------
Volume ID:   2 (on ubi0)
Type:        dynamic
Alignment:   1
Size:        704 LEBs (89391104 bytes, 85.2 MiB)
State:       OK
Name:        rootfs_data
Character device major/minor: 249:3

35

Odp: D-Link M30/CP (IDU dla Plusa)

Przerobiłem rozszerzenie partycji systemowej na "U-Boot Mod" i wydaje mi się, że jeśli nie chcemy nadpisywać fabrycznych danych identyfikacyjnych, to jest partycji Factory i Odm, nie ma sensu kompilować i nadpisywać całego bootloadera.

Pull requesty zostały wysłane do maina OpenWrt, tutaj gdyby ktoś był zainteresowany zastosowaniem ich dla 24.10:
https://github.com/openwrt/openwrt/comp … experiment

36

Odp: D-Link M30/CP (IDU dla Plusa)

Jeśli ktoś jest nadal zainteresowany - chociaż patrząc na wzrost ceny nie jest to obecnie ciekawa opcja - tutaj najnowsza wersja patchy dla 24.10, upraszczająca kod dodający wersję "u-boot mod":
https://github.com/openwrt/openwrt/comp … ment-ver-2

37

Odp: D-Link M30/CP (IDU dla Plusa)

@Cezary, czy mogę prosić Cię o włączenie ostatniej wersji zmian z poprzedniego posta do Twoich buildów? smile

38

Odp: D-Link M30/CP (IDU dla Plusa)

Wieczorem zaktualizuję.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

39

Odp: D-Link M30/CP (IDU dla Plusa)

Dziękuję Cezary, nowy build poszedł od strzała na świeżym egzemplarzu M30. smile

Mój patch dotyczący obrazu recovery jest już w gałęzi rozwojowej i 24.10, dlatego zaktualizowałem Wiki OpenWRT w temacie uproszczonego wgrywania, bez konieczności sprawdzania która partycja jak aktywna.

Pozostałe patche:
OpenWRT partition layout (czeka na akceptację w gałęzi rozwojowej): https://github.com/kszaq/openwrt/commit … e910b42aaf
Wsparcie dla wersji CP: https://github.com/kszaq/openwrt/commit … d70d7097bc

40

Odp: D-Link M30/CP (IDU dla Plusa)

Jeszcze raz dziękuję - mogę potwierdzić, że Twoje najnowsze buildy zadziałały u mnie zarówno na M30-CP (jako sysupgrade z mojej wersji "frankenstein"), jak i na świeżym egzemplarzu M30, prosto z pudełka. Na obu instalowałem wersję z rozszerzoną partycją na dane.

Gdyby ktoś instalował Twoją wersję, należy tylko pamiętać, że po wgraniu obrazu recovery router startuje do initramfs (failsafe), co w Twoich buildach objawia się czerwoną diodą. Zmyliło mnie to na początku, bo w oficjalnej wersji nie ma tej modyfikacji i failsafe wstaje do białej diody statusu.

41

Odp: D-Link M30/CP (IDU dla Plusa)

@Cezary, chciałbym poprosić Cię o dodanie wsparcia dla "uboot mod" oraz wersji CP do Twoich kompilacji 25.12. Patche tutaj:
https://github.com/openwrt/openwrt/comp … 0-cp.patch

Niestety mój PR dla uboot mod utknął i wisi sobie od maja 2025, za mało użytkowników, żeby przetestować... sad

42

Odp: D-Link M30/CP (IDU dla Plusa)

Już to pisałeś. Tak, mam już dodane w źródłach, będzie wraz z następną kompilacją.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

43

Odp: D-Link M30/CP (IDU dla Plusa)

Dziękuję i przepraszam za repost, przyzwyczaiłeś, że odpisujesz na wszystko i dlatego usunąłem wersję po edycji i wrzuciłem jeszcze raz "na czysto".

Teraz już nie zapomnę, że na Tobie można ZAWSZE polegać. smile

44

Odp: D-Link M30/CP (IDU dla Plusa)

Cezary, jeszcze raz dziękuję za dodanie patchy do Twojego builda. Aktualizacja z 24.10 z zachowaniem konfiguracji weszła bez problemu.