RaspberryMatic – Firmware Upgrade Probleme - Analyse

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

nicx
Beiträge: 307
Registriert: 18.05.2013, 22:31
Hat sich bedankt: 4 Mal

Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse

Beitrag von nicx » 08.07.2021, 11:43

Danke, habe es eben nochmals gemessen: Die Dauer bis zum Eingabe-Popup der WebUI liegt ca. bei 16min, also es liegen ca. 2min zwischen "fertig entpackt" und WebUI Reaktion.

Ich versuche die anderen Tests auch noch bei Gelegenheit durchzuführen... am hilfreichsten wäre es hier wenn ich genaue Anweisungen bekomme bzgl. der Anpassungen der ci-Datei. Ich bin nicht sehr firm im scripting, versuche es aber trotzdem mal ;)

EDIT: Oh mist, habe meinen (diesen) Ursprungsbeitrag editiert statt zu antworten... sorry :)
Zuletzt geändert von nicx am 08.07.2021, 13:44, insgesamt 2-mal geändert.

Benutzeravatar
jmaus
Beiträge: 9840
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse

Beitrag von jmaus » 08.07.2021, 12:02

nicx hat geschrieben:
08.07.2021, 11:43
Ich versuche am Ball zu bleiben ;) Kann ich einfach weiterhin die selbe Version zum Testen "upgraden"? Oder muss ich jetzt explizit erst ein Downgrade machen?
Klar, kannst die selbe version verwenden und muss das Update ja nicht nochmal anwenden lassen. Einfach dann immer das finale Requester nochmal canceln, dann /usr/local/tmp aufräumen und wieder von vorne beginnen.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Baxxy
Beiträge: 10746
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 599 Mal
Danksagung erhalten: 2199 Mal

Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse

Beitrag von Baxxy » 08.07.2021, 17:57

nicx hat geschrieben:
08.07.2021, 11:43
Die Dauer bis zum Eingabe-Popup der WebUI liegt ca. bei 16min, also es liegen ca. 2min zwischen "fertig entpackt" und WebUI Reaktion.
Ich habe mal einen Pi3B+ mit schneller SD-Karte "gebencht".
Knapp 5 Minuten von Beginn des Uploads bis zum "Installieren-PopUp".
Dabei entfielen ~4 Minuten für hochladen und entpacken und ~1 Minute für den sha256 Check.
nicx hat geschrieben:
08.07.2021, 11:43
bzgl. der Anpassungen der ci-Datei
du könntest jeweils folgende 2 Zeilen an den relevanten Stellen einfügen...

Code: Alles auswählen

set systemTime [clock seconds]
exec echo [clock format $systemTime -format %H:%M:%S] - Step_1: Upload beendet >> /usr/local/tmp/fw_upgrade_debug.log
Beispiel:

Code: Alles auswählen

# check for .zip
    if {$file_invalid != 0} {
      set file_invalid [catch {exec file -b $filename | grep -q "Zip archive data"} result]
      if {$file_invalid == 0} {
        # the file seems to be a zip archive containing data
        set file_invalid [catch {exec /usr/bin/unzip -q -o -d $TMPDIR $filename 2>/dev/null} result]
        file delete -force -- $filename
		set systemTime [clock seconds]
		exec echo [clock format $systemTime -format %H:%M:%S] - Step_1: Upload beendet >> /usr/local/tmp/fw_upgrade_debug.log
		
      }
    } 
In der erzeugten Debug-Datei steht dann dein Log.
Beispiel:

Code: Alles auswählen

17:40:46 - Step_1: Upload beendet
17:41:51 - Step_2: sha256 Check beendet
17:41:51 - final check A: beendet
17:41:51 - final check B: beendet
Grüße
Baxxy

Benutzeravatar
jmaus
Beiträge: 9840
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse

Beitrag von jmaus » 10.07.2021, 23:32

Danke für deine ersten Tests dazu Baxxy. Habe das ganze nun mal nachgebaut und bei mir kommen folgende Zeiten auf einem RaspberryPi1/512MB heraus:

Code: Alles auswählen

Sat Jul 10 23:02:32 CEST 2021
23:07:25 - Step_1: Upload beendet
23:17:06 - Step_2: Unarchive beendet
23:17:06 - Step_3: Image Check beendet
23:20:42 - Step_4: Checksum Check beendet
23:20:42 - Step_5: DONE
23:20:42 - Step_6: FERTSCH
D.h. vom Start des Uploads bis zum Ende dauert es geradeeinmal 5 minuten, dann aber rund 10 Minuten bis dar zip archiv ausgepackt wurde und dann weitere 3 Minuten bis das sha256 checksum durch war. Damit kommt man hier auf rund 18-20 Minuten welches natürlich das Webserver Timeout von momentan max 10 Minuten in der aktuellen Version sprengt. Ich habe daher gerade mal das Webserver Timeout auf max 30 Minuten gestellt (im nächsten Snapshot mit dabei) um wirklich auf der sicheren Seite zu sein. Nun gilt es zu beobachten/testen ob es damit besser klappt und ob es da auch hoffentlich keine anderen negativen Effekte damit nun gibt.

Ein weiterer Schritt wäre das Firmware-Update ggf. so umzustellen das hier nur ein Upload notwendig und nur ein Auspacken der EULA Files zwingend notwendig ist, dann aber das unarchive und sha256 prüfen nur im Recovery System beim eigentlichen anwenden des Firmware Updates angewendet wird, denn da sollte es nicht zu diesem Deadlock bzw. dem stehenbleiben des Updateprozesses kommen.

Für den Moment könnte man aber prinzipiell mal schauen ob mit dem erhöhten timeout das Problem nun wirklich bereits im Griff ist.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Baxxy
Beiträge: 10746
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 599 Mal
Danksagung erhalten: 2199 Mal

Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse

Beitrag von Baxxy » 11.07.2021, 00:23

jmaus hat geschrieben:
10.07.2021, 23:32
Damit kommt man hier auf rund 18-20 Minuten
Klingt ja gar nicht so übel für das alte Teil. Trotzdem bleibe ich lieber beim Pi4B mit SSD. :wink:
Kannst du deine "Debug- cp_maintenance.cgi" mal anhängen? Dann könnte ich bei Gelegenheit noch paar Tests machen. Vor allem mit CCU3 Umsteige-System was nicht werksresettet wurde. Meine cp_maintenance.cgi hat gestern "aus Versehen" der aktuelle Nightly überschrieben. :shock:

Grüße
Baxxy

Benutzeravatar
jmaus
Beiträge: 9840
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse

Beitrag von jmaus » 12.07.2021, 21:18

Baxxy hat geschrieben:
11.07.2021, 00:23
jmaus hat geschrieben:
10.07.2021, 23:32
Damit kommt man hier auf rund 18-20 Minuten
Klingt ja gar nicht so übel für das alte Teil. Trotzdem bleibe ich lieber beim Pi4B mit SSD. :wink:
Kannst du deine "Debug- cp_maintenance.cgi" mal anhängen? Dann könnte ich bei Gelegenheit noch paar Tests machen.
Hier mal das diff das auch DebugInfos zur /www/config/fileupload.ccc hinzufügt um da noch die Ausgabe des Start des Uploads zu erhalten:

Code: Alles auswählen

--- www/config/cp_maintenance.cgi.orig	2021-07-12 21:08:28.496028984 +0200
+++ www/config/cp_maintenance.cgi	2021-07-12 21:12:58.201664154 +0200
@@ -937,6 +937,9 @@
     # check if the uploaded file is a valid firmware update file
     #
 
+set systemTime [clock seconds]
+exec echo [clock format $systemTime -format %H:%M:%S] - Step_1: Upload beendet >> /tmp/fw_upgrade_debug.log
+
     set file_invalid 1
 
     # check for .tar.gz or .tar
@@ -959,6 +962,10 @@
       }
     }
 
+
+set systemTime [clock seconds]
+exec echo [clock format $systemTime -format %H:%M:%S] - Step_2: Unarchive beendet >> /tmp/fw_upgrade_debug.log
+
     # check for .img
     if {$file_invalid != 0} {
       set file_invalid [catch {exec file -b $filename | egrep -q "DOS/MBR boot sector.*"} result]
@@ -993,6 +1000,10 @@
       }
     }
 
+
+set systemTime [clock seconds]
+exec echo [clock format $systemTime -format %H:%M:%S] - Step_3: Image Check beendet >> /tmp/fw_upgrade_debug.log
+
     ######
     # check if there are checksum files in TMPDIR and if so check the checksum first
     if {$file_invalid == 0} {
@@ -1028,13 +1039,20 @@
       }
     }
 
+set systemTime [clock seconds]
+exec echo [clock format $systemTime -format %H:%M:%S] - Step_4: Checksum Check beendet >> /tmp/fw_upgrade_debug.log
+
     #
     # test if the above checks were successfull or not
     #
     if {$file_invalid == 0} {
+set systemTime [clock seconds]
+exec echo [clock format $systemTime -format %H:%M:%S] - Step_5: DONE >> /tmp/fw_upgrade_debug.log
       catch { exec ln -sf $TMPDIR /usr/local/.firmwareUpdate }
       set action "acceptEula"
     } else {
+set systemTime [clock seconds]
+exec echo [clock format $systemTime -format %H:%M:%S] - Step_5: ERROR >> /tmp/fw_upgrade_debug.log
       file delete -force -- $filename
       file delete -force -- $filename-dir
       set action "firmware_update_invalid"
@@ -1049,6 +1067,8 @@
     }
   }
 
+set systemTime [clock seconds]
+exec echo [clock format $systemTime -format %H:%M:%S] - Step_6: FERTSCH >> /tmp/fw_upgrade_debug.log
   cgi_javascript {
     puts "var url = \"$env(SCRIPT_NAME)?sid=$sid\";"
     puts "var dlgPopup = parent.top.dlgPopup;"
--- www/config/fileupload.ccc.orig	2021-07-05 17:18:16.854189967 +0200
+++ www/config/fileupload.ccc	2021-07-12 21:14:12.855211616 +0200
@@ -1,6 +1,8 @@
 #!/bin/sh
 # shellcheck shell=dash disable=SC2169,SC2034,SC2154
 
+echo "$(date)" >/tmp/fw_upgrade_debug.log
+
 echo -ne "Content-Type: text/html; charset=iso-8859-1\r\n\r\n"
 
 # fake read boundary+disposition, etc.
Wäre schön du könntest da noch einige tests mit machen. Ich denke nämlich drüber nach da ggf. noch substantielle Verbesserungen hinzuzufügen damit das FirmwareUpdate wirklich wesentlich zuverlässiger funktioniert in zukünftigen versionen.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
Baxxy
Beiträge: 10746
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 599 Mal
Danksagung erhalten: 2199 Mal

Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse

Beitrag von Baxxy » 12.07.2021, 22:13

jmaus hat geschrieben:
12.07.2021, 21:18
Hier mal das diff
Ich bekomme die cp.maintenance.cgi nicht gepatcht trotz frisch installierter 3.59.6.20210703
Kannst du nochmal zeigen wie es geht?
Momentan mache ich so...

Code: Alles auswählen

root@homematic-raspi:/www/config# patch -N -p3 -i /tmp/jmaus.patch
Es wird gemeckert...

Code: Alles auswählen

Hunk 1 FAILED 937/937.
Die fileupload.ccc läuft aber durch.

Ich und Linux... :?

Grüße
Baxxy

Benutzeravatar
Baxxy
Beiträge: 10746
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 599 Mal
Danksagung erhalten: 2199 Mal

Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse

Beitrag von Baxxy » 12.07.2021, 22:50

So, händisch gepatched. Hoffentlich habe ich die richtigen Zeilen erwischt. :wink:
Test1: .ova (ausser Konkurrenz 8) )

Code: Alles auswählen

Mon Jul 12 22:43:37 CEST 2021
22:43:46 - Step_1: Upload beendet
22:44:01 - Step_2: Unarchive beendet
22:44:01 - Step_3: Image Check beendet
22:44:09 - Step_4: Checksum Check beendet
22:44:09 - Step_5: DONE
22:44:09 - Step_6: FERTSCH
Effektiv: 32s von Upload-Beginn bis EULA

Test3: Pi4B-2GB mit USB3-->SSD (ausser Konkurrenz 8) )

Code: Alles auswählen

Mon Jul 12 22:53:11 CEST 2021
22:53:20 - Step_1: Upload beendet
22:53:55 - Step_2: Unarchive beendet
22:53:55 - Step_3: Image Check beendet
22:54:21 - Step_4: Checksum Check beendet
22:54:21 - Step_5: DONE
22:54:21 - Step_6: FERTSCH
Effektiv: 70s von Upload-Beginn bis EULA

Test2: Pi3B mit 16GB SanDisk Ultra Class 10 A1

Code: Alles auswählen

Mon Jul 12 22:34:41 CEST 2021
22:35:43 - Step_1: Upload beendet
22:39:20 - Step_2: Unarchive beendet
22:39:20 - Step_3: Image Check beendet
22:40:25 - Step_4: Checksum Check beendet
22:40:25 - Step_5: DONE
22:40:25 - Step_6: FERTSCH
Zeit von Upload-Beginn bis EULA (alte Methode): 5min 44s
Zeit von Upload-Beginn bis EULA (neue Methode): ~1min
Komlette Upgradezeit (alte Methode): ~12min
Komlette Upgradezeit (neue Methode): ~11,5min
"Zentrale-Downtime" (alte Methode): ~6min
"Zentrale-Downtime" (neue Methode): ~10,5min

Test4: Pi3B mit Sony 8GB Class 4

Code: Alles auswählen

Mon Jul 12 23:09:36 CEST 2021
23:11:39 - Step_1: Upload beendet
23:16:56 - Step_2: Unarchive beendet
23:16:56 - Step_3: Image Check beendet
23:18:08 - Step_4: Checksum Check beendet
23:18:08 - Step_5: DONE
23:18:08 - Step_6: FERTSCH
Zeit von Upload-Beginn bis EULA (alte Methode): 8min 32s
Zeit von Upload-Beginn bis EULA (neue Methode): ~1min
Komlette Upgradezeit (alte Methode): ~14,5min
Komlette Upgradezeit (neue Methode): ~14min
"Zentrale-Downtime" (alte Methode): ~6min
"Zentrale-Downtime" (neue Methode): ~13min

Test5: CCU3 (Pi3B mit orig. Class 4 Industrial SD-Card)
(Umsteige-System von CCU3 3.59.6 auf RM 3.59.6.20210703; ohne Werksreset!)
Abbruch wegen Timeout und nicht genügend Zeit.
Dem Zeitstempel nach wäre das System nach ca. 150min bereit zum Reboot gewesen.
Grob geschätzt könnte man noch 60min für den Flashvorgang dazurechen.

Test6: CCU3 (Pi3B mit orig. Class 4 Industrial SD-Card)
(Umsteige-System von CCU3 3.59.6 auf RM 3.59.6.20210703; mit Werksreset!)

Code: Alles auswählen

Wed Jul 14 18:42:01 CEST 2021
18:49:21 - Step_1: Upload beendet
19:09:01 - Step_2: Unarchive beendet
19:09:01 - Step_3: Image Check beendet
19:10:42 - Step_4: Checksum Check beendet
19:10:42 - Step_5: DONE
19:10:43 - Step_6: FERTSCH
Zeit von Upload-Beginn bis EULA (alte Methode): 28min 42s
Zeit von Upload-Beginn bis EULA (neue Methode): ~2min
Komlette Upgradezeit (alte Methode): 41,5min
Komlette Upgradezeit (neue Methode):
"Zentrale-Downtime" (alte Methode): ~13min
"Zentrale-Downtime" (neue Methode):

...weitere folgen (dann die lahmen Sachen)

Grüße
Baxxy
Zuletzt geändert von Baxxy am 14.07.2021, 20:46, insgesamt 13-mal geändert.

Benutzeravatar
GEVJan
Beiträge: 101
Registriert: 28.04.2021, 18:40
System: CCU und Access Point
Wohnort: Köln
Hat sich bedankt: 30 Mal
Danksagung erhalten: 16 Mal

Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse

Beitrag von GEVJan » 13.07.2021, 12:15

jmaus hat geschrieben:
08.07.2021, 10:13
Baxxy hat geschrieben:
08.07.2021, 09:14
Die Timeouts zu erhöhen und die Checksummen-Prüfung zu entfernen mag zwar funktionieren, ist aber meiner Meinung nach nur eine umschiffung des eigentlichen Problems.
Nun, prinzipiell gebe ich dir da natürlich recht. Trotzdem tritt das Problem eben in letzter Zeit wohl sehr häufig auf und man bekommt somit nicht alle Nutzer dahingehend motiviert die SD Karte gegen eine neuere zu tauschen. Ich denke daher es wäre ja ein versuch wert die Firmware-Update Routinen noch ein bisschen dahingehend zu optimieren das diese problemloser durchlaufen kann wie das auch beim rmupdate-addon der Fall ist. Dort funktioniert es im Grunde ja auch nur weil dort im grunde nur ein Download erfolgt und der Webbrowser eben durch gewisse methoden dazu genötigt wird immer mal wieder beim webserver nachzufragen, wodurch das ganze eben nicht in diesen Timeout rennt.

Zusätzlich zu dem Debugging der Firmware-Update Routine und dem temporären entfernen der sha256 prüfung könnten betroffene auch wirklich nochmal schauen ob schon ein anpassen der folgenden Timeout Werte in der /etc/lighttpd/lighttpd.conf Datei zum erfolg führt:

Code: Alles auswählen

server.max-read-idle = 600
server.max-write-idle = 600
Diese könnte man einfach mal auf 6000 zum testen setzen und dann nach einem lighttpd neustart schauen was passiert.
Hi,
Ich bin leider DER Linux-Laie und kann die Datei nicht bearbeiten.
Wie kann ich die Datei anpassen und danach lighttpd neustarten? Vieleicht für Dummies formuliert?! :oops: :wink:
CCU3 mit Raspberrymatic -> Eingebunden: HUE-Bridge, Tasmota-Sonoffs, Alexa, Open Weather Map, Tasker, LG-TV

Benutzeravatar
jmaus
Beiträge: 9840
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse

Beitrag von jmaus » 13.07.2021, 13:47

GEVJan hat geschrieben:
13.07.2021, 12:15

Ich bin leider DER Linux-Laie und kann die Datei nicht bearbeiten.
Wie kann ich die Datei anpassen und danach lighttpd neustarten? Vieleicht für Dummies formuliert?! :oops: :wink:
Naja, sagen wir es mal so: Die Informationen die ich hier (vor allem mit Baxxy geteilt habe) sind nichts für die Augen von Linux-Laien. Wir sind ja gerade dabei diesbzgl. Verbesserungen umzusetzen, sodass der Firmware-Update Prozess in Zukunft hoffentlich etwas stabiler/reproduzierbarer funktioniert. Und solange solltest du dich (bis zum nächsten Release) noch etwas gedulden, würde ich sagen.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Antworten

Zurück zu „RaspberryMatic“