[Tutoriel] Autopsie du matériel Lidl

au démarrage (mise sous tension) il faudrait appuyer rapidement sur « esc »
et en effet on rentre sur le boot du realteck
pas de bol j’ai du louper quelques chose

[UPDATE] 2021/03/07
Hello,

Je comptai faire ça ce week-end mais j’ai pas pu attendre !

Le but de ce projet est d’utiliser la gateway Lidl/Tuya en tant que coordinateur zigbee distant avec le plugin « zigbee » sur un même réseau local ou de façon distante, tout en aillant la main sur l’inclusion/exclusion des modules via le plugin.

Pour commencer il vous faut :

NE PAS BRANCHER le TTL EN 5V :boom:
Et ne pas brancher l’alimentation de la passerelle l’adaptateur TTL est suffisante !

Pour accéder au terminal via le port serie il faut utiliser minicom, je le fait depuis ma Ubuntu (c’est aussi possible avec un raspberry)

sudo apt install minicom -y

Avant tout il faut voir sur quel port série vous êtes
Chez moi se sera ttyUSB0

Configurer minicom :
dans votre terminal taper # minicom -s

Capture d’écran de 2021-02-03 13-40-46

configurer le port série :

à par le Port série, mettre les même valeur que sur le screen ci-dessous
Capture d’écran de 2021-02-03 13-41-25

Enregistrer votre configuration et faite sortir
Capture d’écran de 2021-02-03 13-57-31

Vous vous retrouverez ici, si tout c’est bien passé
Capture d’écran de 2021-02-03 13-59-48


Il nous faut trouver le mot de passe root, et pour cela nous devons extraire les clés KEK et AUSKEY

Donc en restant appuyé sur ESC tout en branchant la gateway, on se retrouve dans le bootloader RealTek

Capture d’écran de 2021-02-02 22-05-36

Ces commandes lit la valeur dans la mémoire flash de la RAM, elle nous permet de récupérer une première clé chiffrée appellé KEK

    FLR 80000000 401802 16 
    DW 80000000 4

Capture d’écran de 2021-02-02 22-09-41

Notez la ligne de sortie, c’est votre KEK.

Nous devons également récupérer la clé chiffrée appellé AUSKEY
taper les commandes suivantes:

   FLR 80000000 402002 32 
   DW 80000000 8

Capture d’écran de 2021-02-02 22-10-50

Notez les deux lignes de sortie. C’est votre AUSKEY crypté.

récupérer maintenant le scrypt python qui nous permettra de récupérer le mot de passe root

ici
source: https://paulbanks.org/projects/lidl-zigbee/root.html

hha@hha-XPS-13-9360:~/lidl$ wget https://paulbanks.org/download/files/lidl-zigbee/lidl_auskey_decode.py
hha@hha-XPS-13-9360:~/lidl$ ls
lidl_auskey_decode.py
hha@hha-XPS-13-9360:~/lidl$ sudo chmod +x lidl_auskey_decode.py

lancer le script python

Attention le script fonctionne uniquement avec python3
vérifier les version de python que vous avez

hha@hha-XPS-13-9360:~$ update-alternatives --list python
/usr/bin/python2.7
/usr/bin/python3.6

Vous pouvez aussi définir la version à utiliser par défaut

hha@hha-XPS-13-9360:~$ update-alternatives --config python
Il existe 2 choix pour l'alternative python (qui fournit /usr/bin/python).

  Sélection   Chemin              Priorité  État
------------------------------------------------------------
* 0            /usr/bin/python3.6   2         mode automatique
  1            /usr/bin/python2.7   1         mode manuel
  2            /usr/bin/python3.6   2         mode manuel

Appuyez sur <Entrée> pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :

suivez les indications comme sur le screen

Root password: b’mGZDdzkfz’

vous avez maintenant votre mot de passe —> mGZDdzkfz
pensez à ne pas copier le reste


redémarrer la gateway LIDL
loguez vous en root avec le mot de passe décrypté

ssh root@192.168.x.x -p 2333
tuya-linux login: root
Password: 
Tuya Linux version 1.0
Jan  1 00:00:16 login[120]: root login on 'console'
#

Si vous avez ce message

ssh: connect to host 192.168.10.168 port 2333: Connection refused

Vous devez vous connecter à votre passerelle LIDL via le port série et supprimer le fichier /tuya/ssh/cnt
reprenez les étapes prétendante pour accéder à la passerelle via votre câble UART.

rm /tuya/ssh/cnt

Une vu des processe qui tourne

Mem: 12508K used, 15384K free, 0K shrd, 624K buff, 5576K cached
CPU:   1% usr   0% sys   0% nic  97% idle   0% io   0% irq   0% sirq
Load average: 1.41 1.21 0.62 1/46 437
  PID  PPID USER     STAT   VSZ %MEM %CPU COMMAND
  418   120 root     R     1292   5%   2% top 
  234   215 root     S     5084  18%   0% ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cf
  236   235 root     S     5084  18%   0% ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cf
  237   235 root     S     5084  18%   0% ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cf
  249   235 root     S     5084  18%   0% ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cf
  265   235 root     S     5084  18%   0% ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cf
  264   235 root     S     5084  18%   0% ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cf
  235   234 root     S     5084  18%   0% ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cf
  238   235 root     S     5084  18%   0% ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cf
  259   235 root     S     5084  18%   0% ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cf
  266   235 root     S     5084  18%   0% ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cf
  248   234 root     S     5008  18%   0% ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cf
  251   250 root     S     5008  18%   0% ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cf
  250   248 root     S     5008  18%   0% ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cf
  120     1 root     S     1300   5%   0% -sh 
    1     0 root     S     1292   5%   0% init      
  219   215 root     S     1292   5%   0% /bin/sh ./log_detect.sh /tmp/tuya.log 
  230   215 root     S     1292   5%   0% /bin/sh ./process_monitor.sh /tuya /tu
  109     1 root     S     1292   5%   0% /bin/sh /tuya/ssh_monitor.sh 
  147     1 root     S     1288   5%   0% udhcpc -i eth1 -s /tuya/udhcpc.script uya/def.cfg 
  266 root      5084 S    ./tyZ3Gw /tuya/tuya_user1 /tuya/def.cfg

y a pas mal de chose à découvrir

du coup on va :

  1. Installez un port série et programmer la passerelle TCP/IP.
  2. Désactiver les applications Tuya
  3. Configurez la passerelle TCP/IP pour qu’elle démarre au boot

à télécharger le fichier serialgateway.bin (PAS DEPUIS LA PASSERELLE)
Passerelle série compilée pour MIPS (LX) 47 ko (code source)

wget https://paulbanks.org/download/files/lidl-zigbee/serialgateway.bin
ls serialgateway.bin 
serialgateway.bin

On transférer le fichier serialgateway.bin vers la passerelle, en mettant votre adresse IP avec cette commande

cat serialgateway.bin | ssh -p2333 root@192.168.x.x "cat >/tuya/serialgateway"

on déplace le script de démarrage de tuya

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

On remplace le script de démarrage de tuya par serialgateway

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

on reboot et c’est terminé
on a maintenant une coodinateur zigbee type EZSP
accessible via le port 8888 socket://adresse_ip:8888

Voyons voir ce qu’on peut faire dans le plugin zigbee !

Bon ba pour l’intégration c’est pas compliqué !

le daemon tourne toujours et c’est good dans les log !

[2021-02-03 00:25:50][INFO] : Start zigbeed
[2021-02-03 00:25:50][INFO] : Log level : debug
[2021-02-03 00:25:50][INFO] : PID file : /tmp/jeedom/zigbee/deamon_2.pid
[2021-02-03 00:25:50][INFO] : Device : socket://192.168.10.56:8888
[2021-02-03 00:25:50][INFO] : Apikey : X6LlSgVw6ShTNQvWrsGfqekxUSw7FNU6
[2021-02-03 00:25:50][INFO] : Callback : http://127.0.0.1:80/plugins/zigbee/core/php/jeeZigbee.php
[2021-02-03 00:25:50][INFO] : Cycle : 0.3
[2021-02-03 00:25:50][INFO] : Controller : ezsp
[2021-02-03 00:25:50][INFO] : Channel : 20
[2021-02-03 00:25:50][INFO] : Data folder : /var/www/html/plugins/zigbee/data/2
[2021-02-03 00:25:53][INFO] : Find device : socket://192.168.10.56:8888
[2021-02-03 00:25:54][INFO] : LOADER------Import de la configuration specifics.danfoss
[2021-02-03 00:25:54][INFO] : LOADER------Import de la configuration specifics.danfoss.details
[2021-02-03 00:25:54][INFO] : LOADER------Import de la configuration specifics.develco
[2021-02-03 00:25:54][INFO] : LOADER------Import de la configuration specifics.develco.details
[2021-02-03 00:25:54][DEBUG] : Writing PID 4586 to /tmp/jeedom/zigbee/deamon_2.pid
[2021-02-03 00:25:54][DEBUG] : Init request module v2.21.0
[2021-02-03 00:25:54][DEBUG] : Starting new HTTP connection (1): 127.0.0.1:80
[2021-02-03 00:25:54][DEBUG] : http://127.0.0.1:80 "GET /plugins/zigbee/core/php/jeeZigbee.php?apikey=X6LlSgVw6ShTNQvWrsGfqekxUSw7FNU6 HTTP/1.1" 200 0
[2021-02-03 00:25:54][DEBUG] : Using selector: EpollSelector
[2021-02-03 00:25:54][DEBUG] : [start_zigbee] Init zigbee network with config : {'database_path': '/var/www/html/plugins/zigbee/data/2/network_ezsp.db', 'device': {'path': 'socket://192.168.10.56:8888', 'baudrate': 115200}, 'network': {'channel': 20}, 'ezsp': {'CONFIG_APS_UNICAST_MESSAGE_COUNT': 12, 'CONFIG_SOURCE_ROUTE_TABLE_SIZE': 16, 'CONFIG_ADDRESS_TABLE_SIZE': 8}}

j’ai intégrer un module (prise Lidl) rapidement et sans problème, c’est super réactif


2021/03/08

  • Upgrade firmware et désactivation de la rétention ssh

Ce que fait le script :

  • Il désactive la rétention coté ssh
  • Télécharge et installe le dernier serialgateway
  • Télécharge et installe le firmware EZSP 3.7.8.0

Le risque de brique est faible voir nul,
Mais vous serez le seul responsable, si vous décidez de sauter le pas !

L’installe se fait toute seul
Taper cette commande directement sur votre terminal et suivez les étapes comme sur la capture d’écran !

Il faudra spécifier la version de votre EZSP, si elle a pas été mise à jours il faudra mettre « V7 » dans l’ étape du script. pour info c’est pas visible sur le screenshot !

avant de commencer il faut stoper le daemon du plugin zigbee si votre box Lidl est lié à jeedom

Capture d’écran de 2021-03-08 13-29-32

 wget -q https://dl.dropbox.com/s/605klwppawygh54/upgrade-lidl-beta_0.1.sh && chmod +x upgrade-lidl-beta_0.1.sh && ./upgrade-lidl-beta_0.1.sh

Faite moi un retour si la mise à jour a fonctionné chez vous et si vous aviez déjà connecter la box avec l’application Lidl auparavant.

Un grand merci a Paul Banks et Lasse Bjerre !

Have fun

18 « J'aime »

OUAH BRAVO tu m’as pris de court,
mon problème étant sous windows je sais pas comme décrypter ma clef
impressionnant
Merci d’avoir fais le travail
:wink:

Super intéressant, super post !

Devrait être mis en tuto !!

Bonjour,

Très jolie travail :wink: cela permet d’avoir une passerelle pas chère !

Cordialement

1 « J'aime »

Bonjour,
comme maintenant la prise et le hub sont mis à nu, je vous propose de continuer avec le ruban led


le ruban est composé de LED rvb, led en blanc chaud et LED en balnc froid, espacé de 55mm, donc très éloigné, sécable.

se ruban a toute ses led en parallèle, on ne peut donc pas attribuer une couleur par led comme avec des ws2812, dommage.
on voit clairement que les commandes de ces dernière sont parallèles => une tension une couleur
le vcc est commun donc la commande se fait par un pilotage de la masse
l’alimentation secteur se fait par un bloc alim déporté 12v 2a discontinue
ouvrons la boite

Tiens donc!!! étonnant on reste dans les Microcontrolleur tuya, ici le ZS3l

avec 5 sortie pwm
simple et efficace
la commande ce fait par des mosfet du type bst82, solide


et une regulation d’alimentation simple

on a donc un routeur zigbee 3.0 avec 5 sortie pilotable en pwm.

J’ai déjà moins d’inquiétude que la prise pour la mise sous tension, le circuit est propre,

On remarque la présence d’une empreinte pour un bouton poussoir, à voir plus tard…

Les annotation sur le transfo m’enquiquinent un peu, notamment « led driver »=> non c’est juste un transfo,
Mais surtout « tc » et « ta », ça doit chauffer sec le machin

passons à l’inclusion dans le plugin, je vais laisser la boite ouverte pour essayer ce bouton ( je l’ai déjà associer au coordinateur tuya donc pour voir si c’est un reset)
bouton strappé, rien ne se passe, je referme la boite
pour des-associé du pont lidl, il faut sur un marche/arrêt 3 fois
inclusion impeccable


on sélectionne le bon produit
on sauvegarde
et on test
Mince le truc m’insulte de tout les côtés
les commandes ne doivent pas être les bonnes

remarque=> les LED chauffent beaucoup

les insultes me rappel ce commentaire

on remplace les 3 par des 1 et…
pour le niveau de luminosité et le on/off nickel,
mais pas pour les couleurs

on va chercher la réponse dans les log


[2021-02-03 09:12:37][DEBUG] : {"device_joined":"84:2e:14:ff:fe:13:eb:5e"}
[2021-02-03 09:12:38][DEBUG] : {"device_initialized":"84:2e:14:ff:fe:13:eb:5e"}
[2021-02-03 09:12:40][DEBUG] : {"devices":{"84:2e:14:ff:fe:13:eb:5e":{"1":[[{"value":"3","cluster_name":"Basic"},{"value":"80","cluster_name":"Basic"},{"value":"0","cluster_name":"Basic"},{"value":"1","cluster_name":"Basic"}]]}}}
[2021-02-03 09:12:41][DEBUG] : {"devices":{"84:2e:14:ff:fe:13:eb:5e":{"1":{"0":{"7":{"value":"PowerSource.Mains_single_phase","cluster_name":"Basic"}},"6":[{"value":"Bool.true","cluster_name":"On\/Off"}]}}}}
[2021-02-03 09:12:41][DEBUG] : {"devices":{"84:2e:14:ff:fe:13:eb:5e":{"1":{"768":{"61440":{"value":"0","cluster_name":"Color Control"}}}}}}
[2021-02-03 09:12:41][DEBUG] : {"devices":{"84:2e:14:ff:fe:13:eb:5e":{"1":{"6":{"16386":{"value":"0","cluster_name":"On\/Off"}},"768":{"61443":{"value":"<Array type=AnonymousLVList, value=[]>","cluster_name":"Color Control"},"3328":{"value":"[0, 0, 0, 0, 200, 0]","cluster_name":"Color Control"}}}}}}
[2021-02-03 09:12:42][DEBUG] : {"devices":{"84:2e:14:ff:fe:13:eb:5e":{"1":{"8":[{"value":"255","cluster_name":"Level control"}],"768":{"7":{"value":"255","cluster_name":"Color Control"}}}}}}
[2021-02-03 09:12:42][DEBUG] : {"devices":{"84:2e:14:ff:fe:13:eb:5e":{"1":[{"6":{"value":"","cluster_name":"Basic"}}]}}}
[2021-02-03 09:13:08][DEBUG] : http://127.0.0.1:8484/device/all?with_attributes=2 type : GET
[2021-02-03 09:13:08][DEBUG] : {"with_attributes":2}
[2021-02-03 09:13:08][DEBUG] : http://127.0.0.1:8484/group/all type : GET
[2021-02-03 09:13:08][DEBUG] : null
[2021-02-03 09:13:16][DEBUG] : {"devices":{"84:2e:14:ff:fe:13:eb:5e":{"1":[{"1":{"value":"80","cluster_name":"Basic"}}]}}}
[2021-02-03 09:13:16][DEBUG] : Search attribut for 84:2e:14:ff:fe:13:eb:5e logicalId : 1::0::1 => 80

bon je sèche dans l’immédiat

2 « J'aime »

@krosand sais-tu comment sortir du problème?

1 « J'aime »

Chez moi la couleur marche bien, quand je mets du vert dans les logues j’ai ça :

support@systadev:~ $ tail -f /var/www/html/log/zigbeed_1 |grep 77:fb
[2021-02-03 09:39:01][DEBUG] : Send to jeedom : {'devices': {'58:8e:81:ff:fe:d2:77:fb': {'1': {'768': {'color': {'value': '**#51ffe2**', 'cluster_name': 'Color Control'}}}}}

ampoule livarno lux model hg06492a


après ouverture de la lentille de fersnell on peut voir un bout de fils (certainement l’antenne) un connecteur 4 points 4led blanc chaud et 4 LED blanc froid, puis un ci le bp1338, qui a l’air dêtre un double bp1360 un driver led
http://www.bpsemi.com.cn/uploads/file/20161221105437_742.pdf

1 « J'aime »

mince j’ai la même chose??? mais pas de résultat!!!

il y a de la colle partout je n’arrive pas à l’ouvrir

[2021-02-03 10:48:44][DEBUG] : {"devices":{"84:2e:14:ff:fe:13:eb:5e":{"1":{"768":{"color":{"value":"#ff0f00","cluster_name":"Color Control"},"7":{"value":"153","cluster_name":"Color Control"}}}}}}
[2021-02-03 10:48:44][DEBUG] : Search attribut for 84:2e:14:ff:fe:13:eb:5e logicalId : 1::768::color => #ff0f00
[2021-02-03 10:48:44][DEBUG] : Search attribut for 84:2e:14:ff:fe:13:eb:5e logicalId : 1::768::7 => 153
1 « J'aime »

Il me semble que j’ai eu le même problème que toi, je sais plus ce que j’ai fait pour que ça marche :frowning:
d’ailleurs comment on fait pour dissocier le ruban led du coordinateur ? je vais tester de mon coté

tu as quoi comme clé zigbee ?

la conbee 2 on coupe et rallume l’allime 3 fois ou on desassocie du noeud

1 « J'aime »

Bon j’y comprend rien
j’ai aussi suprimé l’équipement, puis refais une inclusion
changé les 3 en 1 dans la commande
rien ne marchais
j’ai donc éteind et rallumé le ruban
et là toute les commandes fonctionnent donc…

ça marche
mais que pour les couleurs
je ne pilote plus les led blanches…
si tu sais @krosand je prends :wink:

ampoule livarno lux model hg06492a


après ouverture de la lentille de fersnell on peut voir un bout de fils (certainement l’antenne) un connecteur 4 points 4led blanc chaud et 4 LED blanc froid, puis un ci le bp1338, qui a l’air dêtre un double bp1360 un driver led
http://www.bpsemi.com.cn/uploads/file/20161221105437_742.pdf

ouf c’est pas coulé dans la résine
mais impossible à extraire
il faut lui casser le cul

ça y est on peut extraire l’alimentation
et…
BOF idem à la prise, partie alim baclé
pont de diode condo
comme dit Chirac, ça m’en touche une sans faire vibrer l’autre
Puis le transceiver zigbee

avec le fils en guise d’antenne
donc en 2.4 ghz, la longueur de l’antenne doit être de 3.2cm
Verdicte, bon je voulais les enfoncer, mais c’est bon.

on est donc sur un

ZSLC5
Youpi du TUYA

on va quand même le rhabiller pour le brancher

1 « J'aime »

En gros, même conclusion que pour la prise
partie alimentation … low cost
donc grosse consommation inutile

1 « J'aime »

Le blanc marche aussi chez moi

[2021-02-03 11:11:31][DEBUG] : [DeviceHandler.prepare] Json arg : {'ieee': '58:8e:81:ff:fe:d2:77:fb', 'cmd': [{'endpoint': 1, 'cluster': 'light_color', 'command': 'move_to_color', 'await': 1, 'args': ['21151', '21563', '0']}], 'allowQueue': False}

j’ai défini des valeur RGB: 255 255 255

le output resort ça:
args': ['21151', '21563', '0']

super, j’ai également besoin de déporter du zigbee donc c’est une super solution.
Par contre j’ai un probléme de compréhension sur les 1ere étapes. Avec quel matériel tu te connecte sur la passerelle pour communiquer?
il faut souder comme sur le 1er post

merci a toi

1 « J'aime »

effectivement il faut souder des broche, c’est clair que pour les débutant il faut que ce soit plus précis!
je ferai des photos dès que possible ^^