1

(25 odpowiedzi, napisanych Oprogramowanie / Software)

pablo.see napisał/a:

MIR3G pociągnie HA czy jest za mało RAM?

HA to jeszcze jak cię mogę, ale najgorszy jest ten zigbee2mqtt - nie wiem co ich podkusiło pisać to w tym szatańskim języku przeglądarkowym... (to pytanie retoryczne - chodzi o prędkość dewelopmentu która w dzisiejszych czasach ma większe znaczenie niż użycie zasobów).

marek napisał/a:

Tak, dokładnie. Trzeba tylko ręcznie skompilować ser2net w wersji 4 (albo spróbować ze snapshota).

Dzięki, będę na dniach robił podobny eksperyment. A jak skonfigurowałeś Wireguarda?

2

(25 odpowiedzi, napisanych Oprogramowanie / Software)

marek napisał/a:

Zaopatrzyłem się w "SONOFF Zigbee 3.0 USB Dongle Plus", czyli CC2652. Istotnie lepszy zasięg od CC2531. W nowym openwrt jest ser2net w wersji 4.3.5, który naprawia problemy z DTR/RTS. Dzięki temu można połączyć z zigbee2mqtt pracującym zdalnie.
U mnie działa to bardzo sprawnie z zigbee2mqtt w chmurze i wireguard. Nawet przy częstym rozłączaniu internetu zigbee2mqtt zawsze grzecznie przywraca połączenie.

Marku, opowiesz coś więcej o tym rozwiązaniu? Też myślałem nad tym aby w cloudzie trzymać zigbee2mqtt, mosquito i HA, a do MIR3G mieć podłączony tylko "gateway" na USB. Jak to skomunikowałeś ze sobą? smile

EDIT: Czy w tym stylu? https://www.zigbee2mqtt.io/advanced/rem … apter.html

Pytanie jak testować. Bo takie testowanie "o, nie działa mi internet, pewnie router się przekręcił" to mnie nie interesuje.
Jeśli to ma mieć realne wyniki, to trzeba by to oskryptować i stworzyć powtarzalne testy z których wyniki można porównać.

Poddałem się, jest strasznie namotane w tym skrypcie. Zamiast go analizować, jednak go użyłem big_smile

Za to udało mi się go postawić w łatwy, czysty i przyjemny sposób - załączam Dockerfile, może się komuś przyda:

FROM ubuntu:16.04

ARG USER=padavan
ARG HOME=/home/${USER}

RUN set -eu; \
    apt-get update; \
    apt-get install -y --no-install-recommends \
        netcat \
        wget \
        tree \
        sudo \
        less \
        vim; \
    useradd -m -G sudo ${USER}; \
    echo '%sudo ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers

USER ${USER}
WORKDIR ${HOME}

RUN set -eu; \
    wget -O start.sh http://prometheus.freize.net/script/start-100.sh; \
    chmod +x start.sh; \
    echo -e '2\n2\n7\nQ\n' | ./start.sh

CMD ["./start.sh"]

Przy jego pomocy udało się cofnąć firmware do tego:

Dioda mrugała na czerwono, po podłączeniu pena i wciśnięciu resetu załapało i mogłem podziwiać chińskie krzaczki na http://192.168.31.1

Mając już ten tool uruchomiony, postanowiłem też przetestować opcję odgadywania hasła SSH bez tej całej parady z aplikacjami i kontami Xiaomi - po omacku po krzakach ustawiłem hasło na 1234567890 - i ku mojemu zdziwieniu, to również zadziałało smile

Tak wygląda tablica partycji na tym sofcie:

root@XiaoQiang:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 07f80000 00020000 "ALL"
mtd1: 00080000 00020000 "Bootloader"
mtd2: 00040000 00020000 "Config"
mtd3: 00040000 00020000 "Bdata"
mtd4: 00040000 00020000 "Factory"
mtd5: 00040000 00020000 "crash"
mtd6: 00040000 00020000 "crash_syslog"
mtd7: 00040000 00020000 "reserved0"
mtd8: 00400000 00020000 "kernel0"
mtd9: 00400000 00020000 "kernel1"
mtd10: 02000000 00020000 "rootfs0"
mtd11: 02000000 00020000 "rootfs1"
mtd12: 03580000 00020000 "overlay"
mtd13: 012a6000 0001f000 "ubi_rootfs"
mtd14: 030ec000 0001f000 "data"

Postanowiłem ją "uwiecznić" na wypadek gdyby coś poszło nie tak dziś lub w przyszłości:

for i in $(seq 0 14); do cat /dev/mtdblock$i > /extdisks/sda1/backup/mtdblock$i.bin; done

Zassałem `kernel1` i `rootfs0` od Cezarego: https://dl.eko.one.pl/openwrt-19.07/tar … ps/mt7621/ i dalej tak jak na wiki OpenWRT: https://openwrt.org/toh/xiaomi/mir3g#in … sh_for_r3g (dla bezpieczeństwa skopiowałem biny do `/tmp` aby nie flashować z pena).

root@XiaoQiang:~# mtd write /tmp/kernel1.bin kernel1
Unlocking kernel1 ...

Writing from /tmp/kernel1.bin to kernel1 ...     
root@XiaoQiang:~# mtd write /tmp/rootfs0.bin rootfs0
Unlocking rootfs0 ...

Writing from /tmp/rootfs0.bin to rootfs0 ...     
root@XiaoQiang:~# nvram set flag_try_sys1_failed=1
root@XiaoQiang:~# nvram commit
root@XiaoQiang:~# reboot

No i stała się światłość:

BusyBox v1.30.1 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------------------------------
 |                                                                           |
 | OpenWrt 19.07-SNAPSHOT, r11081-6a89098935                                 |
 |                                                                           |
 | Build time: 2020-05-23 13:42 CEST                                         |
 | Cezary Jackiewicz (obsy), http://eko.one.pl                               |
 |                                                                           |
 -----------------------------------------------------------------------------
 | Machine: Xiaomi Mi Router 3G                                              |
 | Uptime: 0d, 00:03:12                                                      |
 | Load: 0.14 0.15 0.07                                                      |
 | Flash: total: 98.0MB, free: 93.2MB, used: 0%                              |
 | Memory: total: 247.8MB, free: 220.5MB, used: 11%                          |
 | Leases: 1                                                                 |
 | lan: static, 192.168.1.1                                                  |
 | wan: dhcp, ?                                                              |
 | wan6: dhcpv6, ?                                                           |
 -----------------------------------------------------------------------------

BTW. Jeszcze zostawię informację dla tych, którzy jednak są za Padavanem - analizując ten skrypt trafiłem na adres repo i okazuje się, że jednak ktoś to utrzymuje: https://gitlab.com/dm38/padavan-ng/-/commits/master
Ostatni commit z dzisiaj - więc rozważam jednak drugą szansę dla niego, skoro mam już całe środowisko postawione do obracania firmware w tym routerze.
Podobno ten Padavan ma być bardziej wydajny i stabilny z powodu zastosowania zamkniętych sterowników - ten stan jest utrzymany na rok 2020? A może polecicie jakiś zestaw narzędzi aby to samemu zweryfikować i przetestować? iperf3?

Ten magiczny skrypt jest niczym innym jak ogromnym zbiorem magicznych komend (swoją drogą, niezbyt rozumiem ludzi piszących takie potwory w Bashu). Nie lubię odpalać obcych skryptów na moim systemie, dla zasady.
W najgorszej opcji odpalę sobie albo Dockera z Ubuntu albo VMkę przez KVM. Tak czy inaczej, wolałbym wiedzieć co się dzieje pod spodem...

Dzięki!

Pen przygotowany i podłączony, ale niestety nie mogę wprowadzić routera w stan w którym by się nim zainteresował.

1. Podłączenie zasilania z wciśniętym resetem - brak reakcji.

2. Walka z flagami bootloadera - brak reakcji.

/home/root # nvram set flag_try_sys2_failed=1
/home/root # nvram commit
/home/root # reboot

Próbowałem też dla `sys1` oraz dla obu - brak reakcji.

Za każdym razem router startuje tak samo.
Najpierw lampka świeci się stale na pomarańczowo, a po tym przechodzi na stałą niebieską. Jeśli podłączony jest też WAN, to na biało. Jeśli podłączony jest USB, to na różowo. I to wszystko, żadnych trybów mrugania w jakimkolwiek kolorze - zawsze kolor ciągły.

BTW. Jak sprawdzić czy flagi ustawiane przez `nvram` się zapisały?
Znalazłem taki sposób z internetów i jeśli jest słuszny, to flagi się nie przestawiają (wykonane przed rebootem).

/home/root # strings /dev/mtd1 | grep -i _try_
flag_try_sys1_failed=0
flag_try_sys2_failed=0

Odpalony z wciśniętym resetem - UI bez zmian, więc rozumiem że bootloader nie był ruszany.

Znalazłem taką instrukcję jak wgrać stock FW: https://www.youtube.com/watch?v=XP1CApz3FBc

Wygląda na to, że jeśli mamy oryginalny bootloader i dostęp po SSH, to wystarczy jedną flagę przestawić, FW na penie z FAT32 i zaciągnie.
Niestety, ale nie mogę nic pobrać ze strony producenta:

Burag napisał/a:

3. Chciałem pobrać oryginalny firmware ze strony Xiaomi: https://bigota.miwifi.com/xiaoqiang/rom … 25.122.bin
Niestety, rzuca `AccessDenied` na każdy plik jaki uda mi się znaleźć url.

Poratuje ktoś mirrorem?

Ten skrypt Prometheus to też jakaś masakra, zajrzałem do środka zanim to sobie odpaliłem u siebie - próbuje jakieś paczki instalować, zakłada że OS hosta to coś Debiano-podobnego... Nie ma gdzieś dokumentacji dostępnej co to robi pod spodem? Czy jednak muszę stawiać VMke specjalnie pod to? hmm

Zaraz sprawdzę czy jest ten "Breed" - rozumiem, że podłączyć zasilanie z resetem wciśniętym i jeśli odpali się inne UI niż Padavana, to jest zmieniony bootloader również?

Cześć,

Od dawien dawna tu zaglądam, ale dopiero dziś mam okazję coś napisać.
Mam już trochę doświadczenia ze zmianą firmware w routerach - kilka instalacji OpenWRT za mną, jeden router znajomego ożywiony przez serial. Nie jestem całkowicie świeży smile

Ale ja nie o tym. Po przeprowadzce na nowe mam łącze po światłowodzie 300/60 Mbps więc postanowiłem kupić na szybko jakiś porządny router i nie za zylion. Znalazłem używkę Xiaomi R3G i bez większego wahania w dobrej cenie go łyknąłem (tak, jest to słynna wersja v1).

Niestety, ktoś już przy nim grzebał i router ma wgrany soft Padavan. Trochę o tym poczytałem i prawie natychmiast zapadła decyzja na zmianę na OpenWRT - raz, że nie wiadomo co i kto tam pomajstrował, a dwa - ten Padavan to wygląda jak jakieś druciarstwo. Już nie rozwijany, jakaś grupka ludzi siedzi na ruskim forum i coś tam sobie kleją - nie, to zdecydowanie nie dla mnie, wolę jakieś distro z 'głównego nurtu'.

I w tym miejscu trochę utknąłem.

1. Z oczywistych względów, nie mam kopii zapasowej oryginalnego softu z tego routera.

2. Uruchomiłem SSH, trochę w nim pobuszowałem - nie zgadza się rozkład partycji MTD porównując do tego co powinno być wg. wiki OpenWRT: https://openwrt.org/toh/xiaomi/mir3g#flash_layout

/home/root # cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00080000 00020000 "Bootloader"
mtd1: 00080000 00020000 "BootEnv"
mtd2: 00040000 00020000 "Factory"
mtd3: 00040000 00020000 "crash"
mtd4: 00040000 00020000 "crash_syslog"
mtd5: 00040000 00020000 "reserved0"
mtd6: 00400000 00020000 "kernel0"
mtd7: 00140000 00020000 "Kernel"
mtd8: 012c0000 00020000 "RootFS"
mtd9: 00100000 00020000 "Config"
mtd10: 00400000 00020000 "Storage"
mtd11: 06080000 00020000 "RWFS"
mtd12: 01400000 00020000 "Firmware_Stub"

Czyli rozumiem że zflashowanie OpenWRT przez `mtd write` nie zadziała?

3. Chciałem pobrać oryginalny firmware ze strony Xiaomi: https://bigota.miwifi.com/xiaoqiang/rom … 25.122.bin
Niestety, rzuca `AccessDenied` na każdy plik jaki uda mi się znaleźć url.

Trochę się pogubiłem i nie za bardzo wiem co teraz. Co powinienem zrobić aby to wszystko teraz wyprostować?
Celem jest wyczyszczenie wszystkiego i wgranie czystego OpenWRT jak bozia przykazała. Możliwie bez robienia po drodze soft-bricka i dolutowywania pinów do seriala smile