Zigbee – modifikace Lidl (Silvercrest) SmartHome Gateway

Lidl se s vervou pustil do nabízení zařízení, které mezi sebou komunikují přes Zigbee protokol a jeho nabídka se hodně rozšiřuje o různé typy zařízení – od zásuvek, světel, zahradních vodních počítačů a to včetně jejich SmartHome Gateway. Tato brána komunikuje s mobilní aplikací přes cloud a to není vždy žádoucí.

Naštěstí lze tuto gateway lehce modifikovat, aby se z ní stal jen obyčejný zigbee koordinátor, na který se lze přes LAN síť připojit.

Každopádně, veškeré rizika nesete jen a pouze vy! Pokud vám není něco jasné, raději se do toho ani nepouštějte 🙂

Pro tuto změnu bude potřeba zpřístupnit seriový port na vlastní PCB desce, přes který se dostaneme do konzole systému, na kterém tato brána běží – je to klasicky embedded linux, takže by to neměl být problém.

Na desce najdeme konektor označen jako J1, to je kombinovaný seriový port s zigbee diagnostickým portem. Seznam jednotlivých pinů je zde:

  • Pin 1 = Vcc (3.3V) (bottom pin in picture)
  • Pin 2 = Ground
  • Pin 3 = U2 Serial TX
  • Pin 4 = U2 Serial RX
  • Pin 5 = ZigBee module ARM Debug SWDIO
  • Pin 6 = ZigBee module ARM Debug SWCLK

Varování – pro připojení musíte použít 3.3V TTL logiku. V žádném případě nepřipojujte zařízení napřímo k seriovému portu počítače, ten má 5V logiku a můžete takto zařízení zcela zničit! Seriový převodník 5V na 3.3V seženete např. zde.

Pokud jste se připojili na konzoli a zapnuli napájení jednotky, mělo by vidět její bootovaní.

Nyní přejdeme na získání root hesla, abychom se do jendotky mohli přihlásit a provést v ní změny. Každá jednotka má vlastní heslo! Proto zde budeme potřebovat vstoupit do zavaděče a získat dva klíče : key-encryption-key (KEK) a encrypted AUSKEY. Z nich si následně rootovské heslo vytáhneme.

Po zapnutí jednotky stiskneme ihned klávesu ESC v konzoli a následně stiskneme ENTER po kterém by se měl zpřístupnit čistý prompt.

Zde postupně zadáme tyto příkazy prozískání KEK klíče:

R 80000000 401802 16
DW 80000000 4

a tyto příkazy pro získání encrypted AUSKEY klíče:

FLR 80000000 402002 32
DW 80000000 8

Pokud máme oba klíče, můžeme spustit dekodování ve výsledku dostaneme vlastní heslo. Pro dekodování použijeme tento Python skript, který spustíme, zadáme postupně KEK a AUSKEY klíče. Celkem 3 řádky, začínající 80000000: ….

Nyní lze jednotku opět restartovat a přihlásit se již získaným heslem.

Poslední fází je zpřístupnění vzdáleného přístupu (SSH) do jednotky a změna hlavní aplikace, která zprostředkovává připojení do Lidl (Tuya) cloudu.

Vzdálený přístup na SSH provedeme takto:

if [ ! -f /tuya/ssh_monitor.original.sh ]; then cp /tuya/ssh_monitor.sh /tuya/ssh_monitor.original.sh; fi
echo "#!/bin/sh" >/tuya/ssh_monitor.sh

Změna hlavní aplikace (tuya) nahradíme touto aplikaci, která převádí seriový port na TCP/IP.

Nahrajeme tuto aplikaci do jednotky : cat serialgateway.bin | ssh -p22 root@10.100.2.81 „cat >/tuya/serialgateway“

Nyní již jen změníme startovací skripty:

if [ ! -f /tuya/tuya_start.original.sh ]; then cp /tuya/tuya_start.sh /tuya/tuya_start.original.sh; fi

cat >/tuya/tuya_start.sh <<EOF
#!/bin/sh
/tuya/serialgateway &
EOF
chmod 755 /tuya/serialgateway

Tímto máme dokončeno, jednotka je modifikována a lze ji přidat do Home Assistantu přes modul Zigbee Home Automation, kde vybereme typ radia EZSP a zadáme IP adresu jednotky socket://10.100.2.81:8888.

Původní článek a velké poděkování Paul Banks DOT je zde.

Přímý odkaz na tento článek: https://www.elvisek.cz/2021/08/zigbee-modifikace-lidl-silvercrest-zb-gateway/

22 komentářů

Přeskočit k formuláři pro komentář

    • Vojtěch Honzík on 11.01.2022 at 15:08
    • Reakce

    Dobrý den,
    dostal jsem se zatím do poloviny návodu, jen dvě poznámky v souvislosti s doporučeným převodníkem z USB do TTL. Nadařilo se mi zprovoznit konzoli dokud jsem neodpojil pin k 3V3 a navzájem neprohodil RX a TX. Parametry sériového portu nejsou uvedené, použil jsme (Windows) 38400 baud, 8N1 (8-bit, No Parity, 1 stop bit), no flow control. A i tak to chce rychlou ruku, jednou rukou zastrkávat USB nabíječku do zásuvky, druhou mačkat Esc, zadařilo se mi až na několikátý pokus.
    Děkuji moc za návod, tohle byly drobnosti, snad pomůžou někomu dalšímu.Zbytek už bude snad s root heslem a zprovozněnou komunikací snadné, uvidím večer.

    • Vojtěch Honzík on 12.01.2022 at 10:43
    • Reakce

    Druhá půlka postřehů – po získání root hesla je možné se přihlásit přes ssh, ovšem na port 2333, standardní port 22 funguje až po úpravě skriptů a restartu krabičky. Přidání Xiaomi Miija teploměru zazlobilo, ale to může mít podle rozumů na netu na svědomí slabá baterie nebo ne úplně dodržovaný standard. Zařízení se identifikovalo jako cosi jiného (lumi.sens, nicméně v popisných vlastnostech je i Quirk: zhaquirks.xiaomi.mija.sensor_ht.Weather), ale poskytuje všechny atributy a funguje jak má, tohle už je ovšem záležitost integrace, nikoli brány. Na druhé síti přes mqtt takové problémy neregistruji.
    Ještě jednou děkuji za návod, díky němu můžu provozovat dva oddělené zigbee meshe (dvě vzdálené lokality, dvě různé integrace, jedna síť, jedno HA RPi).

  1. Zdravím a moc díky za feedback,
    jsem rád že to pomohlo i někomu jinému než mě 🙂

    Rozhodně za ty peníze, je tahle krabička z lídlu fakt super počin 🙂

    • LukasZL on 02.02.2022 at 13:54
    • Reakce

    Dobrý den, bude prosím vhodný tento https://www.hwpro.cz/oc/index.php?route=product/product&product_id=876 převodník?
    Děkuji

      • ElvisEK on 02.02.2022 at 14:30
        Author

      zdravím, ano, mělo by to fungovat.

    • Tomáš Burian on 16.09.2022 at 16:51
    • Reakce

    Zdravím, předně děkuji za postup.
    Snažím se provést tento postup, abych se zbavil Tuya a nějak jsem se zasekl. Podařilo se mi získat heslo pro root přes první část postupu. Nyní ale bojuji s tím jak provést nahrání. Jestli jsem pochopil tak to mám provést přes Terminál (dělám pomocí Windows) avšak při použití příkazu:

    „cat serialgateway.bin | ssh -p2333 root@192.168.2.204 „cat >/tuya/serialgateway“ “

    se mi jen zobrazí hláška: „ssh: connect to host 192.168.2.204 port 2333: Connection refused“

    Pomocí PUTTY nejsem schopen se připojit – tam se mi připojení ani nevytvoří – ihned REFUSED

    Jak jste se spojili a nahráli potřebný soubor?
    Trochu mi uniká jak se můžu připojit na SSH když ani nezadávám to získané heslo .

    Jediné kde se mi podařilo provést přihlášení bylo přes Serial.

    Pokud byste měl odpověď která by byla trochu více „po lopatě“ bylo by to super…

    Děkuji za Váš čas a s pozdravem

    1. Zdravím,
      to že vás to odpojuje (REFUSED), tak je tím, že je potřeba změnit vlastní SSH serveru na bráně. Ten původní ssh server, běžící na portu 2333, je upravený a přihlášení na něj jsou limitované.

      Změňte jej (viz Vzdálený přístup na SSH) a pak se přihlašujte na klasický 22 port. Tohle by mělo zabrat.

      Dejte pak vědět výsledek.

    • c-bob on 29.09.2022 at 20:31
    • Reakce

    Pro kopírování souboru pod windows je klíčovým slovem WSL – putty, winscp – všemu se bránil. Pokud není linux zrovna silnou stránkou lze pomocí sudo apt get mc doinstalovat souborový manažer pak už lze použít „obezličku“ cat serialgateway.bin | ssh -p22 root@10.100.2.81 „cat >/tuya/serialgateway“ kde se binární soubor zkopíruje prostřednictvím terminálu (moc pěkné, to jsem ještě neznal). Horší pro mne bylo získání hesla, protože crypto knihovna je „obsolote“ a python není zrovna múj šálek čaje, naštěsti pip ji doručil a nakonec i připojil. Díky za návod

    • Vlad on 28.10.2022 at 17:29
    • Reakce

    Díky za tip. Vše šlo poměrně dobře – jako na drátku. Nyní se ale nemůžu připojit k HA. Když jsem oskenoval porty, tak ten 8888 není otevřený (pouze telnet 22) Nenapadá Vás, kde mám chybku?
    Adresář tuya vypadá takto:
    NcpUpgrade.ota serialgateway tuya_user1
    app_upgrade.sh serialgateway“ tuya_user2
    config ssh_monitor.original.sh tuyadropbear
    def.cfg ssh_monitor.sh tuyamtd
    dump.txt start.conf udhcpc.script
    json_parser.sh start_record.sh zigbeeNetInfo.txt
    log_dir start_record_file zigbeeNetInfo_bak.txt
    log_index_file tuya_net_start.sh zigbee_net_valid_flag
    pro_mon_save_file tuya_start.original.sh
    rcdDb tuya_start.sh

      • Vlad on 28.10.2022 at 18:21

      Zobrazil jsem soubory dost nepřehledně, tak ještě jednou a lépe:
      Apr 21 2020 NcpUpgrade.ota
      Apr 21 2020 app_upgrade.sh
      Jan 1 00:00 config
      Oct 17 2022 def.cfg
      Oct 17 2022 dump.txt
      Oct 17 2022 json_parser.sh
      Oct 26 2022 log_dir
      Oct 26 2022 log_index_file
      Jan 1 00:01 pro_mon_save_file
      Jan 1 00:00 rcdDb
      Oct 28 2022 serialgateway
      Oct 28 2022 serialgateway“
      Oct 28 2022 ssh_monitor.original.sh
      Oct 28 2022 ssh_monitor.sh
      Oct 17 2022 start.conf
      Oct 17 2022 start_record.sh
      Oct 28 2022 start_record_file
      Oct 17 2022 tuya_net_start.sh
      Oct 28 2022 tuya_start.original.sh
      Jan 1 1970 tuya_start.sh
      Apr 21 2020 tuya_user1
      Oct 17 2022 tuya_user2
      Oct 17 2022 tuyadropbear
      Oct 17 2022 tuyamtd
      Oct 17 2022 udhcpc.script
      Oct 25 2022 zigbeeNetInfo.txt
      Oct 26 2022 zigbeeNetInfo_bak.txt
      Oct 26 2022 zigbee_net_valid_flag

      • Vlad on 28.10.2022 at 21:01

      Tak už jsem na to přišel. Samozřejmě s pomocí google search! 😀
      ssh konzola s Powershell ve windows mrší soubory při provádění Cat „pipe“ na konzolu klienta. Ten naloudovaný soubor měl jiný kontrolní součet než originál. Něco si tam nepatřičného nacpe. Pak se to samozřejmě nespustí. Ale přes win cmd nebo linux to funguje správně.

    • bendy on 14.11.2022 at 15:15
    • Reakce

    Jednotka SGWZ 1 A1 je v ramci black friday ted za 399 !

    • Pavel on 21.11.2022 at 21:00
    • Reakce

    Dobrý den,
    umel by mi to prosim nekdo za uplatu zprovoznit? Obavam se ze toto je nad me sily.
    Pavel

    • Pavel on 24.11.2022 at 18:51
    • Reakce

    Díky za postup, funguje to. Bránu jsem zaintegroval do HA. Našel jsem chybku v příkazu pro nahrátí souboru do brány, tak jak byl uveden mi to hlásilo chybu, správně mají být obě uvozovky nahoře : cat serialgateway.bin | ssh -p22 root@10.100.2.81 „cat >/tuya/serialgateway“ alespoň takto mi to fungovalo a samozřejmě IP adresu si změňte podle té, která se vám zobrazuje v terminálu.

    Každopádně díky. Pavel

      • ElvisEK on 24.11.2022 at 19:35
        Author

      jj, tu IP adresu je potřeba změnit podle potřeby

    • V on 24.11.2022 at 19:30
    • Reakce

    Hele, takže jestli to chápu správně než to všechno koupim a pustim se do toho 😀 Pokud mám na RPi nainstalovanýho HA, provedu tuhle modifikaci, tak na tom RPi se mi potom bude hlásit jako zařízení? A pomocí HA se mi zpřístupní i ostatní zigbee zařízení, připojený k bráně? Mám o tom celým smart home systému trochu vágní představu, ale tohle se mi všechno líbí kvůli tomu, že je to lokálně…

      • ElvisEK on 24.11.2022 at 19:34
        Author

      jo, přesně tak 🙂

    • radek on 30.11.2022 at 6:32
    • Reakce

    Uměl by mi tu prosím někdo poradit jakým způsobem spustím python script lidl_auskey_decode.py (používám putty pod win)? Myslel jsem že když zadám
    wget https://paulbanks.org/download/files/lidl-zigbee/lidl_auskey_decode.py
    tak se mi rovnou stáhne do té gateway, ale píše mi, že příkaz wget to nezná (a doinstalovat mi nejde – apt-get…).

    Díky za radu.

    1. jj, to dekodovaní musis udelat u sebe, v te bráně na to není prostor 🙂

    • radek on 30.11.2022 at 7:32
    • Reakce

    Už jsem se dostal přes spuštění python scriptu, když chci ale vygenerovat root heslo, tak mi to po zadání obou částí napíše:

    D:\>python3 lidl_auskey_decode.py
    Enter KEK hex string line> 5A5AA5A5 E9F9FABF 3EBFCD34 F099D98B
    Encoded aus-key as hex string line 1> EDBFC322 2A58E249 33203EEB 56F3E694
    Encoded aus-key as hex string line 2> 909F6F16 5FDF34C6 F4CA428E FF718A59
    Traceback (most recent call last):
    File „D:\lidl_auskey_decode.py“, line 65, in
    print(„Auskey:“, auskey.decode(„ascii“))
    UnicodeDecodeError: ‚ascii‘ codec can’t decode byte 0x8b in position 2: ordinal not in range(128)

    Mám tušení že je nějaký problém s kódováním (dělám to přes CMD ve win). Mohl by to prosím někdo zkusit jestli mu moje KEK a AUS kody pujdou k vygenerovani hesla?
    Díky!

    1. pokud nemáš nějakou malou virtualku s linuxem, tak mě to pošli, pokusím se to vytáhnout

    • J.J. on 04.12.2022 at 12:00
    • Reakce

    zdravim,
    měl bych zájem o již modifikovanou bránu. Koupil bych od vás již takto upravenou bránu. děkuji za nabidku. Nemám na to vybavení ani znalosti a kvůli jedné bráně asi pořizovat nebudu.

Napsat komentář

Váš email nebude zvežejněn.