Odp: D-Link M30/CP (IDU dla Plusa)
Sprawdź ![]()
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Sprzęt / Hardware → D-Link M30/CP (IDU dla Plusa)
Strony Poprzednia 1 2
Zaloguj się lub zarejestruj by napisać odpowiedź
Sprawdź ![]()
Nie ustawia. Trzeba osobno dla switcha i każdego portu. Działa coś takiego:
https://github.com/kszaq/openwrt/commit … 8166.patch
Potestuj. I tak będę kompilował za dwa tygodnie, może coś jeszcze znajdziesz innego.
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.
Ok, wrzucę to.
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. ![]()
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.
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:
https://github.com/kszaq/openwrt/commit … 28886c7e4c - w obrazie recovery wrzucenie kernela z initramfs - dzięki temu wstanie on nawet, jeśli obecnie aktywna jest druga partycja OEM i zmieni na pierwszą przy pierwszym sysupgrade. Dodatkowy etap przy instalacji, ale mniej problemów.
https://github.com/kszaq/openwrt/commit … ec353a9ea5 - dodanie wsparcia dla modelu M30/CP
https://github.com/kszaq/openwrt/commit … addc5146d4 - włączenie możliwości zapisu na ubi1
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:
Instalacja OpenWRT przez OEM recovery - system wstanie do initramfs
Transfer obrazu sysupgrade przez SCP
Sysupgrade
Profit. ![]()
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| 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:3Przerobił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
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
@Cezary, czy mogę prosić Cię o włączenie ostatniej wersji zmian z poprzedniego posta do Twoich buildów? ![]()
Wieczorem zaktualizuję.
Dziękuję Cezary, nowy build poszedł od strzała na świeżym egzemplarzu M30. ![]()
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
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.
@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ć... ![]()
Już to pisałeś. Tak, mam już dodane w źródłach, będzie wraz z następną kompilacją.
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ć. ![]()
Cezary, jeszcze raz dziękuję za dodanie patchy do Twojego builda. Aktualizacja z 24.10 z zachowaniem konfiguracji weszła bez problemu.
Strony Poprzednia 1 2
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Sprzęt / Hardware → D-Link M30/CP (IDU dla Plusa)
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc