logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[RTL8720CM] Chamberlain LiftMaster Maxum – OpenBeken uruchamia się tylko po dotknięciu pinu 37 UART

iff7378 04 Sie 2026 22:36 192 1
REKLAMA
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
  • #1 21950326
    iff7378
    Poziom 6  
    Posty: 12
    Pomógł: 1
    Ocena: 2
    Ostatnio pracuję nad dość ambitnym projektem, którego celem jest uzyskanie lokalnej kontroli nad komercyjnym napędem do bram garażowych firmy Chamberlain LiftMaster. Ich płytka sterująca zawiera układ Wi-Fi Realtek RTL8720CM, wykorzystywany do integracji z usługą chmurową MyQ. Rozwiązanie to było wcześniej obsługiwane w Home Assistant w obecnej postaci, dopóki firma Chamberlain nie zdecydowała, że nie podoba jej się otwarty interfejs API i skutecznie zablokowała integracje stron trzecich: https://www.home-assistant.io/blog/2023/11/06/removal-of-myq-integration/

    Większość użytkowników może skorzystać z kontrolera Ratgdo jako opcji zapasowej, która steruje napędami bram domowych za pośrednictwem protokołu Security2+. Niestety nie jest to opcja dla osób posiadających komercyjne napędy do bram z serii Maxum, chyba że zrobisz to za pomocą prostych wejść przekaźnikowych wykorzystujących zewnętrzne wejścia przyciskowe, co wydawało mi się rozwiązaniem zbyt prostym (brak informacji zwrotnej o stanie bramy itp.).

    [RTL8720CM] Chamberlain LiftMaster Maxum – OpenBeken uruchamia się tylko po dotknięciu pinu 37 UART

    Na szczęście dla mnie (i Claude’a) istnieje złącze SWD, dzięki któremu udało nam się uzyskać zrzut oprogramowania głównego mikrokontrolera, co pozwoliło nam przeprowadzić inżynierię odwrotną protokołu komunikacyjnego między układem LPC a fabrycznym oprogramowaniem układu RTL. Oba układy wykorzystują zewnętrzne pamięci EEPROM do przechowywania oprogramowania. Nie udało mi się połączyć z układem RTL przez UART, mimo moich najlepszych starań przy lutowaniu bardzo cienkich przewodów. Oznaczało to zamówienie programatora SPI (CH341) oraz bardzo małego uchwytu z pinami pogo o wymiarach 6 × 5 mm, aby bezpośrednio zrzucić zawartość pamięci EEPROM. Większość tej pracy była prosta i, szczerze mówiąc, Claude wykonał 95% prac programistycznych przy użyciu Ghidry.

    Dobre wieści:
    - Wpisanie oprogramowania OpenBeken do układu RTL było proste dzięki interfejsowi SPI i uchwytowi z stykami pogo. OpenBeken działa bez zarzutu.
    - Claude'owi udało się napisać sterownik dla OBK, który komunikuje się z mikrokontrolerem LPC, odczytuje stan drzwi i wydaje polecenia ruchu drzwi (otwarcie/zamknięcie). Nie testowałem tego jeszcze z podłączonym rzeczywistym silnikiem drzwi, a jedynie odczytywałem bity stanu.

    Zła wiadomość, której nie potrafię wyjaśnić:
    Po podłączeniu zasilania do płytki sterującej mechanizmu otwierającego drzwi układ RTL uruchamia OBK tylko wtedy, gdy dotknę przewodem pinu 37 (UART TX) tego układu. To bardzo dziwne, ponieważ przewód nie jest podłączony do niczego innego, a jedynie przyciśnięty do przelotki połączonej z tym pinem. Naprawdę nie potrafię zdiagnozować, dlaczego się nie uruchamia, ponieważ podłączenie programatora UART w praktyce oznacza podłączenie przewodu do tego pinu, a OBK wtedy się uruchamia. Zaczynam wysyłać pingi na adres IP OBK i włączam zasilanie płytki. Odpowiedzi na ping zaczynam otrzymywać dopiero wtedy, gdy przytrzymuję przewód przy styku. Jest to poważny problem, ale jakoś oryginalne oprogramowanie układowe działało, więc musi istnieć jakieś rozwiązanie.

    [RTL8720CM] Chamberlain LiftMaster Maxum – OpenBeken uruchamia się tylko po dotknięciu pinu 37 UART
    Układ Realtek (U5) z umieszczoną nad nim pamięcią EEPROM (U24). J40 to złącze SWD dla mikrokontrolera LPC.

    [RTL8720CM] Chamberlain LiftMaster Maxum – OpenBeken uruchamia się tylko po dotknięciu pinu 37 UART
    Główny mikrokontroler NXP.

    [RTL8720CM] Chamberlain LiftMaster Maxum – OpenBeken uruchamia się tylko po dotknięciu pinu 37 UART
    Przylutowywanie drobnych przewodów do układu RTL w celu uzyskania dostępu do interfejsu UART. Górny przewód to pin 36 dla UART2 RX, a dolny to pin 37 dla UART2 TX. Pin 37 to ten „magiczny” przewód, który powoduje uruchomienie układu RTL, gdy coś zostanie do niego podłączone.

    Sterownik LiftMaster w rozwidleniu projektu OBK znajduje się tutaj: https://github.com/iff7378/OpenBK7231T_App/tree/feat/liftmaster-driver

    Pozostałe zadania:
    Zapewnić niezawodne uruchamianie OBK na układzie RTL bez stosowania sztuczek z przewodami.
    Zaimplementować funkcję zatrzymania drzwi (obecnie można je tylko całkowicie otworzyć lub zamknąć, nie da się zatrzymać w połowie ruchu).
    Przeprowadzić testy z podłączonym silnikiem drzwi.
    Podłączyć do Home Assistant.
  • REKLAMA
  • #2 21951741
    iff7378
    Poziom 6  
    Posty: 12
    Pomógł: 1
    Ocena: 2
    Udało mi się zapewnić niezawodne uruchamianie! Wygląda na to, że musiałem zapisać całą zawartość pamięci EEPROM o pojemności 8 MB.

    Planuję dopracować to rozwiązanie, aby zapewnić pełną komunikację między głównym mikrokontrolerem a układem RTL8720.

    Należy dodać: komunikaty o stanie Wi-Fi oraz polecenie zatrzymania drzwi.

    Mam nadzieję, że uda mi się przetestować to dzisiaj wieczorem na prawdziwych drzwiach, a następnie zgłoszę pull request dotyczący sterownika LiftMaster do OBK.
REKLAMA