RaspberryMatic – Firmware Upgrade Probleme - Analyse
Moderatoren: jmaus, Co-Administratoren
Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse
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
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.
- jmaus
- Beiträge: 9844
- 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
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 /
- Baxxy
- Beiträge: 10778
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 604 Mal
- Danksagung erhalten: 2205 Mal
Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse
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.
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
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
}
}
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
Baxxy
- jmaus
- Beiträge: 9844
- 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
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:
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.
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
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 /
- Baxxy
- Beiträge: 10778
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 604 Mal
- Danksagung erhalten: 2205 Mal
Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse
Klingt ja gar nicht so übel für das alte Teil. Trotzdem bleibe ich lieber beim Pi4B mit SSD.
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.
Grüße
Baxxy
- jmaus
- Beiträge: 9844
- 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
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.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal /
- Baxxy
- Beiträge: 10778
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 604 Mal
- Danksagung erhalten: 2205 Mal
Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse
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
Code: Alles auswählen
Hunk 1 FAILED 937/937.
Ich und Linux...
Grüße
Baxxy
- Baxxy
- Beiträge: 10778
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 604 Mal
- Danksagung erhalten: 2205 Mal
Re: RaspberryMatic – Firmware Upgrade Probleme - Analyse
So, händisch gepatched. Hoffentlich habe ich die richtigen Zeilen erwischt.
Test1: .ova (ausser Konkurrenz )
Effektiv: 32s von Upload-Beginn bis EULA
Test3: Pi4B-2GB mit USB3-->SSD (ausser Konkurrenz )
Effektiv: 70s von Upload-Beginn bis EULA
Test2: Pi3B mit 16GB SanDisk Ultra Class 10 A1
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
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!)
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
Test1: .ova (ausser Konkurrenz )
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
Test3: Pi4B-2GB mit USB3-->SSD (ausser Konkurrenz )
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
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 (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 (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 (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.
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen
- 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
Hi,jmaus hat geschrieben: ↑08.07.2021, 10:13Nun, 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.Baxxy hat geschrieben: ↑08.07.2021, 09:14Die 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.
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:
Diese könnte man einfach mal auf 6000 zum testen setzen und dann nach einem lighttpd neustart schauen was passiert.Code: Alles auswählen
server.max-read-idle = 600 server.max-write-idle = 600
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?!
CCU3 mit Raspberrymatic -> Eingebunden: HUE-Bridge, Tasmota-Sonoffs, Alexa, Open Weather Map, Tasker, LG-TV
- jmaus
- Beiträge: 9844
- 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
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 /