Seite 1 von 9

HM-Sec-SCo - alternative Firmware mit AskSinPP

Verfasst: 29.05.2022, 21:31
von jp112sdl
Nachdem aufgrund einer >>>fehlerhaften Funkmodulfirmware<<< zu Tage kam, dass der HM-Sec-SCo neben dem >>>alten Endlos-Sende-Bug<<< auch einen >>>Fehler im Telegramm-Zähler<<< hat und wohl spätestens jetzt niemand mehr auf das Einlösen der eQ-3 Zusage hofft, habe ich mich der Sache in der letzten Woche mal angenommen.

Mit der AskSinPP Arduino Bibliothek gibt es ja seit langem eine sehr gute Grundlage, um Homematic Geräte selbst zu coden und auf eigene oder aber auch bestehende eQ-3 Hardware zu flashen (z.B. RWE/Innogy/Livisi Geräte).

Das Problem: Für den im HM-Sec-SCo verbauten µC-Typ "EFM32G200F64" gibt gab es keine Arduino IDE Unterstützung.
Zudem fehlte mir auch jegliche Erfahrung in der Programmierung eines EFM32, sowohl was die Hard- als auch die Software betrifft.
Um so mehr waren Hartnäckigkeit und Wille vorhanden, mich in das Thema einzuarbeiten. Und das hieß: Google, Google und noch mal Google...

Für den Upload des Kompilats wird hardwareseitig lediglich ein ST-Link V2 benötigt. Den bekommt man für ca. 5,- EUR beim Chinamann.
Als Software-Tool wird OpenOCD verwendet https://openocd.org
Mac-Nutzer können es z.B. im Terminal schnell mittels brew install openocd installieren.

Also zunächst einmal die Verbindung zwischen EFM32 und OpenOCD herstellen.
Die Pins am HM-Sec-SCo PRG1 waren schnell ermittelt
Bild
und 4 Strippen (GND, 3.3V, SWCLK, SWDIO) zum ST-Link V2 dran getüdelt.

Schon beim Starten von OpenOCD war ersichtlich, dass keinerlei Kommunikation mit dem EFM32 möglich war und es lag auf der Hand, dass der Hersteller solche Schnittstellen sperrt, um ein Auslesen der vorhandenen Firmware zu verhindern.

Eine gesperrte SWD Schnittstelle zu entsperren erfolgt mittels OpenOCD und Telnet.
  • OpenOCD starten (openocd -f interface/stlink-dap.cfg -f target/efm32.cfg)
  • Mit OpenOCD via Telnet auf Port 4444 verbinden (telnet localhost 4444)
  • Code: Alles auswählen

    efm32.dap apreg 0 0x4 0xcfacc118
    efm32.dap apreg 0 0x0 1
    efm32.dap apreg 0 0x8
    sleep 1000
    efm32.dap apreg 0 0x0 2
    reset_config none
    reset init
  • Die SWD Schnittstelle lässt sich nun verwenden; der Flash Speicher ist gelöscht
Dann kann es jetzt losgehen, Code zu schreiben und diesen auf den EFM32 zu laden.
Bildschirmfoto 2022-05-30 um 18.55.49.png
Der Upload des Kompilats erfolgt mithilfe von OpenOCD

Code: Alles auswählen

openocd -f interface/stlink-dap.cfg -f target/efm32.cfg -c "program /path/to/.elf verify reset exit"
Der [noch unfertige, aber funktionierende] Sketch für den HM-Sec-SCo befindet sich im Github unter https://github.com/jp112sdl/HM-Sec-SCo-EFM32
Die alternative Firmware kann auf den HM-Sec-SCo, HmIP-SWDO und HmIP-SWDO-I geflasht werden.

Einige Ziele auf dem Weg zu einer EFM32-kompatiblen HM-Sec-SCo Firmware habe ich bereits erreicht (siehe Checkliste im Github-Repo), jedoch klemmt es noch hier und da.

Momentan baue ich am letzten Puzzleteil, dem Energiespar-/Sleep-Modus.

Ich werde diesen Beitrag nach und nach weiter vervollständigen.

Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]

Verfasst: 30.05.2022, 08:13
von papa
Das ist ja absolut der Hammer !!!!!!!!!
Damit sollten sich ja auch eine ganze Reihe von HmIP-Geräten auf HM umflashen lassen.
Sehr cool ......

Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]

Verfasst: 30.05.2022, 09:34
von jp112sdl
papa hat geschrieben:
30.05.2022, 08:13
Damit sollten sich ja auch eine ganze Reihe von HmIP-Geräten auf HM umflashen lassen.
Jup, dank stan23s Recherche in einigen ELV Journalen konnten wir bisher folgende Gerätschaften mit EFM32 Chip finden:

Code: Alles auswählen

HmIP-WRC2		: EFM32G200F64
HmIP-SWDO		: EFM32G200F64   ???
HmIP-WRCR		: EFM32G210F128
HmIP-SRD		: EFM32G210F128
HmIP-SCTH230	        : EFM32G210F128
HmIP-RCB1		: EFM32G210F128
HmIP-FCI6		: EFM32G210F128
HmIP-WRCD		: EFM32G210F128
HmIP-SWDO-I		: EFM32G210F128
ELV-SH-WSC		: EFM32G210F128
ELV-SH-WUA		: EFM32G210F128
HmIP-SFD		: EFM32G210F128
HmIP-MIO16-PCB	        : EFM32G840F128
HmIP-K-DRSI1	        : EFM32G840F128
HmIP-K-DRDI3	        : EFM32G840F128
HmIP-MOD-OC8	        : EFM32G840F128
Das tolle ist ja, dass die HmIP Geräte inzwischen wesentlich preiswerter als die HM Geräte sind :mrgreen:

Den EFM32G840F128 habe ich schon angefangen zu integrieren... ist aber Fleißarbeit, die ganzen Pins in die variants.h einzuarbeiten

Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]

Verfasst: 30.05.2022, 09:38
von papa
Wir müssen dann mal sehen, wie wir das alles zusammen bringen. So dass es auch noch halbweg übersichtlich bleibt

Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]

Verfasst: 30.05.2022, 10:14
von der-pw
jp112sdl hat geschrieben:
30.05.2022, 09:34
Das tolle ist ja, dass die HmIP Geräte inzwischen wesentlich preiswerter als die HM Geräte sind
Nicht nur das, bspw. der HM-LC-Sw2PBU-FM, ist nur schwer zu bekommen, inzwischen.

Die Idee ist jedefalls :wink: großartig!

Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]

Verfasst: 30.05.2022, 11:02
von jp112sdl
der-pw hat geschrieben:
30.05.2022, 10:14
Nicht nur das, bspw. der HM-LC-Sw2PBU-FM, ist nur schwer zu bekommen, inzwischen.
Gibt es von HmIP überhaupt einen 2-Kanal Aktor (für Markenschalter)?

Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]

Verfasst: 30.05.2022, 11:20
von der-pw
Ich hätte ganz naiv gedacht, ja.
Scheint es aber auch nicht zu geben, beim kurzen überblicken.
Vermutlich sind die Relais doch zu klein, für Standardanwendungen.

Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]

Verfasst: 30.05.2022, 18:15
von Horbi
Das ist echt Hardcore!

Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]

Verfasst: 30.05.2022, 22:23
von jp112sdl
Horbi hat geschrieben:
30.05.2022, 18:15
Das ist echt Hardcore!
Eher ungewohnt. Der EFM32 bringt schon gute Features mit.
12bit Differential-ADC, digitale GPIO mit "glitch filter" fürs Debouncing, nur 0,6µA im höchsten Energiesparmodus.

Re: HM-Sec-SCo - alternative Firmware mit AskSinPP [WIP]

Verfasst: 30.05.2022, 22:25
von jp112sdl
Hat jemand das passende Equipment, um mal von einem originalen Gerät die Stromaufnahme zu messen?
Mit nem Multimeter ist man eher aufgeschmissen, sinnvolle Werte zu erfassen, weil der IR-Abtastung alle 500ms erfolgt.