Firmware - Ein Blick hinter die Kulissen

Diskutiere Firmware - Ein Blick hinter die Kulissen im Gardena Forum im Bereich Mähroboter; Hi, ich möchte mich etwas intensiver mit der Firmware meines Sileno city (250m²) auseinandersetzen Soweit ich es sehe, lädt die installierte...
  • Firmware - Ein Blick hinter die Kulissen Beitrag #1
2

250m²

Dabei seit
16.07.2023
Beiträge
59
Likes
23
Hi,

ich möchte mich etwas intensiver mit der Firmware meines Sileno city (250m²) auseinandersetzen

Soweit ich es sehe, lädt die installierte Windows App "GARDENARoboticMowerUpgrade.exe" die Firmware aus einer "Microsoft Azure Blob Cloud" übergangsweise in einen temporären Download Ordner auf den heimischen PC herunter :

C:\ProgramData\Husqvarna Group AB\GARDENA Robotic Mower Upgrade\updates

Dieser temporäre "updates" Ordner verschwindet nach einem durchgeführten Update wieder.

Diese Daten liegen aber (seit Neuestem ?) auch woanders.
Nämlich : "C:\Users\%user%\AppData\Local\ConsumerProgramming\"


Über das Java Applet "C:\Users\%user%\AppData\Local\p15g-client\p15g-client.exe" habe ich auch hier schon ein wenig finden können,
aber das scheint nicht mehr zum Einsatz zu kommen ?



In "C:\Users\%user%\AppData\Local\ConsumerProgramming\"

befinden sich dann 3 Unterordner :

-"Consumer Programming.Wpf.e_Url_*lange Zahl*" (enthält die Datei "AppCenter.config" die die *lange Zahl* (einen key) auflistet

-"Firmware" (hier liegt die Datei index.json die eine Menge einzelner Dateien auflistet und ein 10 megabyte Archiv,
welches python Skripte, json Dateien und sämtliche binären Daten enhtält, wie : HMI (Human Machine Interface Platine), Main, Sub, Com (communications board), BLE (Bluetooth Low Energy), Sub-App, Displayeinheit etc.

Zu den einzelnen Firmwaredateien findet man in dem Archiv auch sehr ausführliche PDF Dateien (über 300(!) Seiten pro PDF), aber dazu (hoffentlich) später mehr.
Erik Hårsmar wird hier unter anderem erwähnt, Manager R&D Husqvarna Robotics.

Hier seien auch schon einmal am Rande Schlagwörter wie "DayCutLimit" oder "MaxGardenArea" value=250 erwähnt. ;)

-"Settings" (enthält 2 json Dateien, MowerSettings.json und Settings.json)
->die MowerSettings.json enthält die Seriennummer, device Variant und Board Typ.
->die Settings.json führt zu h**ps://consumerbundlestorage.azurewebsites.net), endet beim Aufruf mit "Missing or invalid client secret") :p

Sogar die Binärdaten enthalten Klartext und verschlüsselt sieht das Ganze erstmal nicht aus. Dazu später (hoffentlich) auch mehr.


Erstmal würde ich das alles gerne sammeln und später etwas mehr strukturieren, sofern hier denn überhaupt Interesse besteht, tiefer einzutauchen. :)
Soweit erstmal, vielleicht ist das alles auch gar nicht gewünscht hier oder wurde zuvor schon einmal losgetreten ?

Ein interessantes Projekte habe ich auch schon gefunden :
h**ps://github.com/ice987987/ioBroker.husqvarna-automower



p.s.
Mal so nebenbei, was wird eigentlich alles zu Husqvarna (in die azure Cloud) übertragen, außer IP Adresse, Modellnummer, Laufzeit etc. etc. etc. ?
Weiß das zufällig jemand ? :)
 
Zuletzt bearbeitet:
  • Firmware - Ein Blick hinter die Kulissen Beitrag #3
2

250m²

Dabei seit
16.07.2023
Beiträge
59
Likes
23
Mal etwas weg von der Firmware, habe ich mir erstmal die Hardware zusammengesucht:
(bei der Position von Colision und Loopsensor bin ich mir noch unsicher, habe meinen Sileno aber noch nicht zerlegt und nur wiedersprüchliche Angaben gefunden)

exploded.jpg

Abgesehen davon das es softwareseitig Zertifikate/Verschlüsselung gibt und hardwareseitig einiges mit Kleber vergossen ist
und das man hier einen alten Sileno (250m²) vor sich hat, bleibt vielleicht ja doch noch ein wenig Raum zum Experimentieren. ;)

Es gibt mit der Software "Autocheck 3" im Aftersales Bereich von Husqvarna ein Tool, das die Hauptplatine zurücksetzen bzw. Software frisch bespielen kann, inkl. PIN zurücksetzen.

Man benötigt aber auf jeden Fall erstmal einen Husqvarna Zugang mit Logindaten dazu.
Einige "Ersatzteilplatformen" werben damit, kauft man dort eine "neue" Hauptpaltine.


Und wie ich sehe gibt/gab es hier im Forum schon 2 weitere Ansätze :


Und jemand ist sogar sehr ins Detail gegangen :


Mal schauen...
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #4
R

RoboBAR

Dabei seit
20.04.2020
Beiträge
1.354
Likes
384
Abgesehen davon das es softwareseitig Zertifikate/Verschlüsselung gibt und hardwareseitig einiges mit Kleber vergossen ist
und das man hier einen alten Sileno (250m²) vor sich hat, bleibt vielleicht ja doch noch ein wenig Raum zum Experimentieren.
Hi, experimentieren macht sicher Spass, frage mich aber schon worauf deine Story hinauslaufen soll?

Ich müsste dann keine Anleitung hier im Forum vorfinden, wie und wo es tools gibt um am PIN (Sicherheitsmerkmal) rum zu experimentieren... Danke fürs Verständnis.
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #5
2

250m²

Dabei seit
16.07.2023
Beiträge
59
Likes
23
Hey :)
mein Plan ist ganz sicher nicht hier einen Weg aufzuzeigen, wie man den PIN Code umgehen kann. Dann hätte ich vielleicht morgen schon keinen Sileno mehr.

Ich möchte alles erst einmal etwas besser verstehen. Viel zu "modden" gibt es hier anscheined eh nicht. Obwohl ich LEDs am Sileno witzig finde. Und dein Avatar Bild finde ich ebenfalls stark ! Ist das ein fertiger Klebefoliensatz oder lackiert ? Gibt es dazu größere Bilder ?

Ich möchte nur etwas über meine (eventuellen) Entdeckungen schreiben und teile mein Wissen sehr gerne.

Ein Sileno mäht den Rasen. Das soll mir reichen. Ich bin eher auf eastereggs oder Überbleibsel aus, denn da ist doch eine Menge in der Firmware die es zu erkunden gilt. :)
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #6
C

crazyfx

Dabei seit
20.05.2021
Beiträge
16
Likes
3
Der verlinkte ioBroker adapter ist gar nicht mal so interessant, der holt nur Daten von der offiziellen Husqvarna API ab.
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #8
2

250m²

Dabei seit
16.07.2023
Beiträge
59
Likes
23
Ich werfe einfach immer mal wieder Bruchstücke ein.

Da die markantesten Unterschiede in den verschiedenen Firmwares ja nur marginale (Zahlen)Werte, wie z.B. "maximale Mähfläche" und "Mähzeit" zu sein scheinen, wäre es interessant zu wissen, ob "der ganze Rest" aus den anderen Modellen trotzdem (komplett) enthalten ist.

Ich bin gerade über das ISM Band 868MHz (Industrial Scientific Medical) in der binär Datei der Kommunikations-Platine "36.2_Com-App-T2B.bin" gestolpert. Der Sileno City (250m²) hat ja bekanntlich nur Bluetooth.

Dazu vielleicht einmal das PDF, "ISM und Bluetooth in einer Antenne"
h**ps://ignion.io/files/AN_NN02-224_ISM+BT.pdf


Hier schreibt jemand, das die gesamte API im Winter 2021 neugeschrieben wurde. (?) und das mittlerweile viel weniger nutzbare Daten von Gardena Mähern "gesendet" werden, als je zuvor :
h**ps://domoticz.com/forum/viewtopic.php?t=23538

Und man benötigt spätestens für die keys wieder einen Husqvarna Entwickler Zugang:
h**ps://developer.husqvarnagroup.cloud/

Der Link aus der Diskussion führt zu "Custom component to support Gardena Smart System devices.":
h**ps://github.com/py-smart-gardena/hass-gardena-smart-system

Auch iunteressant. Aber ich schweife etwas zu weit ab, denn ich möchte mich ja erstmal nur grob auf den Firmware Inhalt fokussieren. :)

Es kommt "Lemonbeat Smart Device Language" und MQTT Protokoll (Message Queuing Telemetry Transport) zum Einsatz.
Das wurde hier im Forum aber schon diskutiert. Ich versuche vielleicht auch erstmal nur den Inhalt zu verstehen und später z.B. Unterschiede aufzuzeigen und besorge mir dazu am besten die Firmware von einem smarten Sileno.
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #9
2

250m²

Dabei seit
16.07.2023
Beiträge
59
Likes
23
Mal eine grobe Ansammlung von "clear text", verstreut in der Firmware. Alles sehr strukturiert aufgebaut und mit unendlich vielen Kommentarten übersäht.

So gewinnt man auch einen Eindruck davon, wie bei Husqvarna entwickelt wird.

Das TIF-Framework / die TIF-App und Python sind hier Hauptbestandteil der Entwicklung.

In einer Menge azure cloud links finden sich, unter anderem, die Dokumentation der TIF-API.

Ein paar Hinweise auf interne Ordner, Tools und Mitarbeiter Clouds, aber auch GSM, GNSS und Simkarte, sind Schlagwörter in der Firmware des einfachen Sileno City (250m²), der eigentlich nur mit Bluetooth daherkommt.

Google gibt weitere Auskünfte zu Begriffen wie :
Jenkins, Selenium II, Robotframework, XPATH, Jira und "Ingenjörsfirman Anders Rundgren" (Anders Rundgren Engineering Company)


internal dev 404.jpg
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #10
2

250m²

Dabei seit
16.07.2023
Beiträge
59
Likes
23
Zur Kompression kommt zum Einsatz :

tinfl_decompress (zlib)

miniz.c




Und mal ein erster Vergleich mit der Firmware eines "Sileno Smart" :

Zusätzlich existiert im AppData Ordner noch der Unterordner "TIF App\TifDefinitions" :

C:\Users\NUTZERNAME\AppData\LocalLow\TIF App\TifDefinitions
(enthält nummerierte Dateien, die sämtliche Kommandos, Fehler und Funktionen auflisten)

Darunter:
-Husqvarna ID
-DbgInfo / Logfiles
-Hard/Softwareinfo
-Blade Motor Speed
-Reifen Richtung / Geschwindigkeit
-Paketmanager, PIN etc. etc.


Zusätzlich gibt es in der Firmware den Ordner "32.7_small-scr-hmi2_35.9",
der bei der Bluetooth Variante nicht vorhanden ist.


p.s.
Mal einer der Kommentare aus den Python Dateien : ;)
# We found a language group to use. Replace last character in filename to the group number.
# This is really ugly since it requires the filenames to end with the language group. I'm sorry :/
# A better way would be to integrate the language group in the SwPkg index.json and have variants
# in the SwPkg for each nodeType. For now we live with this abomination.
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #11
X

x23

Dabei seit
01.05.2020
Beiträge
1.120
Likes
355
Hi,

also klar was geklautes dem Dieb verfügbar machen wollen wir nicht aber worauf das ganze hier hinausläuft ist doch klar, erst mal das dämliche Limit knacken :D


Gruß X23
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #13
2

250m²

Dabei seit
16.07.2023
Beiträge
59
Likes
23
Erst einmal Danke an Husqvarna, das hier so sauber und schön dokumentiert wird !

Ich sehe auch das Limit als ersten Ansatz.

Für das Beispiel "maxGardenArea" einmal Auszüge aus der Firmware :


1.)
Die Datei "configBundle.py" (root Folder) enthält "Read, Set Verify" für die maximum Werte.


░░░░░░░░░░░░░
░configBundle.py ░
░░░░░░░░░░░░░

# Read limitation parameters from ModelCfgJson
dayCutLimitValues = getValuesFromFamilyAndName(modelCfgJson, 31, 'SystemSettings','DayCutLimit')
dayCutLimit = getValueFromParam(dayCutLimitValues,'minutesPerDay')

maxGardenAreaValues
= getValuesFromFamilyAndName(modelCfgJson, 31, 'SystemSettings','MaxGardenArea')
maxGardenArea = getValueFromParam(maxGardenAreaValues,'squareMeters')

==> hier holt sich die Datei "configBundle.py" die Werte dazu aus der JSON-Datei im Ordner "ModelCfg"

Es gibt nur eine einzige Datei im Ordner "ModelCfg" und diese enthält bei meinem Sileno City (250m²) unter anderem diesen Eintrag :
{
"family": "SystemSettings",
"name": "MaxGardenArea",
"values": [
{
"param": "squareMeters",
"value": "250"
}
]
},


Es wird dann in "configBundly.py" mit dem Befehl SET eingestellt und danach mit verify überprüft.


# set maximum cutting area.

setMaxGardenAreaCommand = settings.device.Send("SystemSettings.SetMaxGardenArea( squareMeters :" + maxGardenArea + ")", 1000, False)
tifTestRunner.AreEqual(ResponseResult.Ok, setMaxGardenAreaCommand.ResponseResult, "Set maximum garden area")

# Verify that maximum cutting area has been updated.
MaxAreaData = settings.device.Send("SystemSettings.GetMaxGardenArea()", 1000, False)


In der Datei "31.9_Main-App-P0_35.13.pdf" findet man dazu :
SystemSettings.GetMaxGardenArea
Output parameters
uint16 squareMeters
Protocol details
Command family 2
Command id 0x1E


Im Ordner "SwPkg\45.50_Sub-App_42.15\45.50_Sub-App_42.15\framework" befinden sich weitere Dateien, wie z.B.
"filesystem.py"
.

.NET Core crypto library, SHA256,CRC-Check, md5hash etc. prüfen hier Dateigröße und gleichen diese mit dem Dateisystem auf dem Mähers ab.

Ich sammle noch und für so ein Experiment hätte ich natürlich am liebsten einen extra Sileno City (250m²) oder eine funktionierende AutoCheck Software. ;D
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #14
2

250m²

Dabei seit
16.07.2023
Beiträge
59
Likes
23
In den Dateien 32.7_HMI-App-P0G_41.4.bin und 32.19_HMI-App-P0G_35.11.bin (smart) und 32.7_small-scr-hmi2_35.9.bin (smart) bin ich heute über folgende Einträge gestolpert.

"Enabling Leaf Mulcher rotates disk in CW direction" (cw = clockwise)
und
"CorridorCut Enable Leaf Mulcher"
und
"Leaf mulching mode enabled: Remember to clean the cutting system from leaves once a week for best result"


Also eine "vergessene" Laubsammler / Rasen/Blattsammler Funktion ?

Das wäre dann ja eigentlich soetwas ?! ^.^ (ohne Motor, ohne Firmware)

1690293813014.png



Ich habe zu "Leaf mulching mode" nur einen Eintrag zu Honda Rasenmähern und einen von der Michigan State Univerity gefunden.
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #15
X

x23

Dabei seit
01.05.2020
Beiträge
1.120
Likes
355
Hi,

ich kann mir nicht vorstellen das es ausreichen wird einfach nur ein value händisch anzupassen und zu flashen, vermutlich muss das Bundle signiert werden damit die Software das akzeptiert.

Also entweder müssen wir signieren können oder den Prüfprozess austricksen.
Es wäre interessant mehr über den Flashvorgang an sich herauszufinden.

Geiler Mondpreis für den Laubsammler von Gardena, der liegt eigentlich bei 100-150€

Ich bin unfreiwillig zu meinem 500er gekommen, Gardena hatte mir damals beim Austausch einfach einen 500er geschickt statt einem 250er.


Gruß X23
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #16
2

250m²

Dabei seit
16.07.2023
Beiträge
59
Likes
23
Der Preis ist krass, ich nutze nen Rechen aka. Laubharke. ='D

Aber schon irgendwie eine lustige Vorstellung, wie der City "Blätterberge" zusammenschiebt.
Alle ans Ende des Leitkabels, zu einem perfekten Kreis angeordnet. ;D

Signieren, Prüfsummen, encrpytion und Spaß mit zlib. Ich möchte ja gerne erst einmal die gepackten Dateien entpacken und schauen ob die noch mehr preisgeben.


Diese Windows Tools werden auch in der Firmware erwähnt :

srec_cat.exe
(create hex files from binarys, das erklärt die HEX Dateien in der Firmware)

Und cURL :
curl.exe (Client for URLs = transfer files in a network)
curl-ca-bundle.crt aka. ca-bundle.crt
(CA [certificate authority])
(to communicate with protocols that use TLS, like https etc.)

CreateTifDefinitionFile.exe
(ich finde einfach nichts zu Husqvarnas "Tif"...Framework...Apps...Definitionen)
 
Zuletzt bearbeitet:
  • Firmware - Ein Blick hinter die Kulissen Beitrag #17
2

250m²

Dabei seit
16.07.2023
Beiträge
59
Likes
23
Da sich die BladeDisc im Mulching-Mode auch einfach nur drehen würde, zerhäckselt der Sileno die Blätter und sammelt diese dann nicht. :smilie:s4:

Schade, trotzdem würde ich den Modus gerne mal aktivieren. :oops:
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #18
X

x23

Dabei seit
01.05.2020
Beiträge
1.120
Likes
355
Was soll das für ein Modus sein? Saugen wird er nie (Messerergonomie) und den Teller dreht er sonst ja auch nur nach links oder nach rechts 🤷🏻‍♂️
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #19
2

250m²

Dabei seit
16.07.2023
Beiträge
59
Likes
23
Das ist hier die Frage. Es sind halt einige Überbleibsel dazu in der Firmware.
Nur Gott allein weiß was Husqvarna/Gardena mit dem "Leaf mulching mode enabled:" vorhatte.

Trockene Blätter schreddern täte er ja sowieso schon, wenn er drüber fährt. Hmmmm. :unsure:
 
  • Firmware - Ein Blick hinter die Kulissen Beitrag #20
X

x23

Dabei seit
01.05.2020
Beiträge
1.120
Likes
355
Ich bin so bescheuert das mehr als drei Blätter von mir sofort abgeräumt werden 😂
 
Thema:

Firmware - Ein Blick hinter die Kulissen

Firmware - Ein Blick hinter die Kulissen - Ähnliche Themen

Landroid über eine Mosquitto-Mqtt-Bridge steuern am Besipiel von openHAB: Es kommt ja immer mal wieder die Frage auf den Landroid in diverse SmartHome-Softwaren zu integrieren. Native Lösungen für einige, wie ioBroker...
[valetudo/dustbuilder] ssh-Probleme mit Gen 1 Xiaomi Mi SDJQR02RR aka Mi Robot Vacuum rockrobo.vacuum.v1 (pre 2020): Auf Grundlage des Valetudo Roborock OTA Installation Guides habe ich den Gen1 geflashed. Der Zugriff aufs Webinterface funktioniert soweit. Gemäß...
wr210e Plattform Informationen: Für Interessierte soll es in diesem Thread nach und nach Informationen zum Linux-System auf dem Worx Vision geben.
Win-mirobo: Eigene Sprachpakete installieren: Win-mirobo: Eigene Sprachpakete installieren Wofür braucht man das Tool? - Um eigene Sprachpakete in den Roboter zu laden oder eine...
Mi Vacuum Robot FAQ zum Xiaomi Mi Vacuum Robot (bitte vor Thread-Eröffnung lesen!): Xiaomi Mi Robot Vacuum Frequently Asked Questions (FAQ) Häufig treten im Verlauf der Nutzung, im Prozess der Entscheidungsfindung oder direkt...
Oben