Projekt: wie funktionieren OTA Updates mit der CCU2?

Begonnen von betateilchen, 30 Januar 2014, 14:36:03

Vorheriges Thema - Nächstes Thema

betateilchen

Hier im Thread geht es aber ursprünglich um das Übertragungsverfahren der Updates, nicht um deren Inhalt 8)
Ich bin der Meinung, wir sollten hier nicht zwei Themen vermischen, sonst wird es genauso unübersichlich wie der Thread zu Deiner Lib, aus dem ich mich deshalb längst ausgeklinkt habe.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

trilu


Samsi

Zitat von: betateilchen am 12 Februar 2014, 10:53:22
Das simpelste Update war bisher beim Regensensor - da war am Gerät selbst überhaupt nichts zu tun.
Wie, muss man den nicht in den FUP modus bringen? Das heist ich kann einfach den Regensensor meines Nachbarn kaputt-flashen, wenn ich dem seine Seriennummer (mitgesnifft) habe? Das Firmware update Tool verlangt ja nicht mal den AES key.

Grüße
FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM

Robbi24

Pech.  In der neuen CCU2 sw 2.7.16 tauchen nur drei Geräte für OTA auf. Der Heizkörper-Thermostat , der Regensensor und ein Funk Lan Gateway.

betateilchen

Zitat von: Robbi24 am 12 Februar 2014, 12:05:24
Pech.  In der neuen CCU2 sw 2.7.16 tauchen nur drei Geräte für OTA auf. Der Heizkörper-Thermostat , der Regensensor und ein Funk Lan Gateway.

Das ist kein Pech. Es gibt vermutlich aktuell nicht mehr Geräte, für die ein Update zur Verfügung steht.

Zitat von: Samsi am 12 Februar 2014, 12:02:08Wie, muss man den nicht in den FUP modus bringen?

Nein, muss man nicht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

jab

Hi,

so für die AES Gedanken habe ich einen neuen Thread eröffnet: http://forum.fhem.de/index.php/topic,20121.0.html

Back to Topic:
- Wir können die CCU konfigurieren und das Update mitsniffen
- Wie die Firmware gelesen wird wissen wir
- Wir haben USB + Funkdump

Offen:
- Wie setzt man den USB Stick in den 100k Mode. Das bekommt man sicher aus dem USB Dump.
- Bekommt man HMLAN in den 100k Mode? Bisher unbekannt. Kann man ggf im rfd Binary nachgucken.
- Wie startet das Update? Müssen wir im USB und/oder Funk dump nachgucken
- Wie bekommt die Zentrale CCU2 die Geräte in den Bootloader? Oder geht nur der manuelle Weg?


Gruß,
Jan


mgernoth

Der USB-Stick wird mit G64 in den 100k-Mode geschaltet und mit G0A wieder zurück.
Senden und Empfangen geht genauso wie im 10k-Mode.

Im 100k-Mode funktioniert eine bidirektionale Kommunikation mit einem CUL im 100k-Mode.
Mal sehen ob ich am Wochenende dazu komme, das Firmwareupdate per USB-Stick und CUL zu implementieren. Ich fange mit dem USB-Stick an und versuche es erstmal ausserhalb von fhem.

Gruß
  Michael

jab

Moin Michael,

das klingt super. Ich habe mit hmland auch schon etwas experimentiert. Du bist da aber vermutlich viel schneller. Die Frage ist ob wir Firmwareupdate per FHEM aktuell überhaupt vernünftig supporten können. Oder kannst du von dem USB Dump auf das Lan Protokoll schließen?

Falls du noch irgendwelche Funktionen o.ä. aus den Binaries brauchst kann ich dir gerne noch Dinge raussuchen.


Gruß,
Jan

mgernoth

Hi Jan,

Zitat von: jab am 15 Februar 2014, 12:24:05
das klingt super. Ich habe mit hmland auch schon etwas experimentiert. Du bist da aber vermutlich viel schneller. Die Frage ist ob wir Firmwareupdate per FHEM aktuell überhaupt vernünftig supporten können. Oder kannst du von dem USB Dump auf das Lan Protokoll schließen?

Wenn es so ist wie bei allen anderen Kommandos, dann funktioniert es genau gleich. Die Daten nach dem Kommando werden nur HEX übertragen, nicht Binär wie beim USB-Stick. Reagiert denn ein HMLAN auf "G64" (dann sollte er keine normalen HM-Messages mehr empfangen)? Evtl. muss man dem auch noch eine neuere Firmware verpassen davor.

Habe gerade keinen HMLAN mehr hier, den kann ich mir aber am Montag wieder mitnehmen.

Zitat
Falls du noch irgendwelche Funktionen o.ä. aus den Binaries brauchst kann ich dir gerne noch Dinge raussuchen.

Ich muss mal schauen, ob ich noch ein passendes IDA irgendwo habe...

Aber fürs FW-Update brauche ich glaube ich nichts. Der USB-Dump enthält alles was man braucht.

Gruß
  Michael

mgernoth

So, jetzt kann man mit dem HM-CFG-USB die RTs auch unter Linux updaten.

Hier ein erfolgreicher Flash mit einem Missing-Ack dazwischen:


deepthought [~/hmcfgusb]> ./flash-ota hm_cc_rt_dn_update_V1_2_007_131202.eq3 KEQ0577793
HomeMatic OTA flasher version 0.093-git

Reading firmware from hm_cc_rt_dn_update_V1_2_007_131202.eq3...
Firmware with 234 blocks successfully read.

HM-CFG-USB opened

Entering 10k-mode
Waiting for device with serial KEQ0577793
Device with serial KEQ0577793 (hmid: 21b982) entered firmware-update-mode
Adding HMID
Initiating remote switch to 100k
Entering 100k-mode
Has the device switched?
Initiating firmware upload!
Flashing 234 blocks: 0084/0234 /

Invalid status: 0008

Flashing 234 blocks: 0234/0234 /
Entering 10k-mode
Waiting for device to reboot
Device rebooted


Gruß
  Michael

jab

#70
Abend Michael,

das klingt ja schon sehr gut. Leider klappt das ganz bei mir nicht:

sudo ./flash-ota ~/Downloads/hm-cc-rt-dn_update.eq3 KEQ0734117
HomeMatic OTA flasher version 0.093-git

Reading firmware from /home/jan/Downloads/hm-cc-rt-dn_update.eq3...
Firmware with 234 blocks successfully read.

HM-CFG-USB opened

Entering 10k-mode
Waiting for device with serial KEQ0734117
Device with serial KEQ0734117 (hmid: 2325b7) entered firmware-update-mode
Adding HMID
Initiating remote switch to 100k
Entering 100k-mode
Has the device switched?


Invalid status: 0008



Invalid status: 0008



Invalid status: 0008



Invalid status: 0008

Entering 10k-mode
Initiating remote switch to 100k
Entering 100k-mode
Has the device switched?


Invalid status: 0008



Invalid status: 0008



Invalid status: 0008



Invalid status: 0008

Entering 10k-mode
Initiating remote switch to 100k
Entering 100k-mode
Has the device switched?


Invalid status: 0008



Invalid status: 0008



Invalid status: 0008



Invalid status: 0008

Das geht endlos so weiter. Habe es am Raspberry Pi mit Rasbian und an meinem Thinkpad mit Ubuntu probiert. Beides mal gleiches Bild.

Allerdings hat es mit dem Windowstool und meinem HM-USB-CFG2 auch nicht funktioniert. Das Windowstool hat den angeblich geupdatet, aber so sicher bin ich mir da nicht. FHEM sagt Firmware "0.967".

EDIT: Ich habe mal das File "hmusbif.03c7.enc" geflashed. Leider ohne dass sich bisher was verändert hat.


Gruß,
Jan

mgernoth

#71
Morgen Jan,

Zitat von: jab am 16 Februar 2014, 03:37:06
das klingt ja schon sehr gut. Leider klappt das ganz bei mir nicht:

sudo ./flash-ota ~/Downloads/hm-cc-rt-dn_update.eq3 KEQ0734117
HomeMatic OTA flasher version 0.093-git

Reading firmware from /home/jan/Downloads/hm-cc-rt-dn_update.eq3...
Firmware with 234 blocks successfully read.

HM-CFG-USB opened

Entering 10k-mode
Waiting for device with serial KEQ0734117
Device with serial KEQ0734117 (hmid: 2325b7) entered firmware-update-mode
Adding HMID
Initiating remote switch to 100k
Entering 100k-mode
Has the device switched?
Invalid status: 0008
Invalid status: 0008
Invalid status: 0008
Invalid status: 0008
Entering 10k-mode
Initiating remote switch to 100k
...


Das geht endlos so weiter. Habe es am Raspberry Pi mit Rasbian und an meinem Thinkpad mit Ubuntu probiert. Beides mal gleiches Bild.


Hmm, das bedeutet also, dass sich der HM-CC-RT-DN bei Dir nicht mehr meldet, wenn er getriggered wurde, in den 100k-Modus zu wechseln. Das kann jetzt am USB-Stick, am HM-CC-RT-DN oder an meinem grauenhaften Code von gestern Nacht liegen.

Der Status 0008 heisst "Missing ACK".

Zitat
Allerdings hat es mit dem Windowstool und meinem HM-USB-CFG2 auch nicht funktioniert. Das Windowstool hat den angeblich geupdatet, aber so sicher bin ich mir da nicht. FHEM sagt Firmware "0.967".

Wie hat sich der Fehler beim Windowstool geäußert? Hat es nicht angefangen zu flashen?
Firmware Version 0.967 ist richtig (0x3c7).

Zitat
EDIT: Ich habe mal das File "hmusbif.03c7.enc" geflashed. Leider ohne dass sich bisher was verändert hat.

War zu erwarten, die lief schon ;-)

EDIT: Die Batterien im HM-CC-RT-DN sind ok? Konnte das gerade mit sehr niedriger Betriebsspannung reproduzieren..

Gruß
  Michael

mgernoth

Zitat von: mgernoth am 16 Februar 2014, 09:15:43
Hmm, das bedeutet also, dass sich der HM-CC-RT-DN bei Dir nicht mehr meldet, wenn er getriggered wurde, in den 100k-Modus zu wechseln. Das kann jetzt am USB-Stick, am HM-CC-RT-DN oder an meinem grauenhaften Code von gestern Nacht liegen.

Und natürlich lags an meinem Code ;-)

Ich hatte das immer nur mit einem frisch geflashten USB-Stick getestet, der nach dem flashen kein Fhem gesehen hat und deswegen die hmId 000000 hatte. Wenn man in den ausgehenden Paketen die hmId des Sticks setzt (und nicht 000000), dann sollte es jetzt auch bei Dir gehen.

Gruß
  Michael

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

jab

#74
Moin Michael,

sehr cool. Ich habe es getestet und es geht. Erster Versuch vom Raspberry PI war ein Fehlschlag:

sudo ./flash-ota ~/hm-cc-rt-dn_update.eq3 KEQ0734117
HomeMatic OTA flasher version 0.093-git

Reading firmware from /home/pi/hm-cc-rt-dn_update.eq3...
Firmware with 234 blocks successfully read.

HM-CFG-USB opened

HM-CFG-USB firmware version: 967
Entering 10k-mode
Waiting for device with serial KEQ0734117
Device with serial KEQ0734117 (hmid: 2325b7) entered firmware-update-mode
Adding HMID
usb-transfer took more than 100ms (2856ms), this may lead to timing problems!
Initiating remote switch to 100k
Entering 100k-mode
Has the device switched?
Yes!
Flashing 234 blocks: 0023/0234 |
Invalid status: 0408
Flashing 234 blocks: 0023/0234 /
Invalid status: 0408
Flashing 234 blocks: 0023/0234 -
Invalid status: 0408

Too many errors, giving up!


Danach zeigte der Gerät CRC also vermutlich einen CRC Fehler in seiner Firmware.

Ich habe es dann noch mal von meinem Notebook aus probiert und da lief es erfolgreich durch:

sudo ./flash-ota ~/Downloads/hm-cc-rt-dn_update.eq3 KEQ0734117
HomeMatic OTA flasher version 0.093-git

Reading firmware from /home/jan/Downloads/hm-cc-rt-dn_update.eq3...
Firmware with 234 blocks successfully read.

HM-CFG-USB opened

HM-CFG-USB firmware version: 967
Entering 10k-mode
Waiting for device with serial KEQ0734117
Device with serial KEQ0734117 (hmid: 2325b7) entered firmware-update-mode
Adding HMID
Initiating remote switch to 100k
Entering 100k-mode
Has the device switched?
Yes!
Flashing 234 blocks: 0161/0234 -
Invalid status: 0008
Flashing 234 blocks: 0234/0234 /
Entering 10k-mode
Waiting for device to reboot
Device rebooted


EDIT: Das Problem hatte ich bei einem RT auch mit meinem Notebook:

sudo ./flash-ota ~/Downloads/hm-cc-rt-dn_update.eq3 KEQ0654122
HomeMatic OTA flasher version 0.093-git

Reading firmware from /home/jan/Downloads/hm-cc-rt-dn_update.eq3...
Firmware with 234 blocks successfully read.

HM-CFG-USB opened

HM-CFG-USB firmware version: 967
Entering 10k-mode
Waiting for device with serial KEQ0654122
Device with serial KEQ0654122 (hmid: 2356a0) entered firmware-update-mode
Adding HMID
Initiating remote switch to 100k
Entering 100k-mode
Has the device switched?
Yes!
Flashing 234 blocks: 0173/0234 -
Invalid status: 0408
Flashing 234 blocks: 0173/0234 \
Invalid status: 0408
Flashing 234 blocks: 0173/0234 |
Invalid status: 0408

Too many errors, giving up!

Kann man die Anzahl der retries erhöhen? Oder eine Pause zwischen den retries einbauen?


Gruß,
Jan