Seminar Intensivseminar – fwupd Entwicklung und Geräteintegration

Dieses Seminar behandelt Zusammengefasster Entwicklungspfad von API und Buildumgebung über Pluginarchitektur, Parser, Geräteerkennung und eigenes Updateprotokoll bis zu Emulation, Hardwaretests, CI und Upstreamwartung. Die fachlichen Grundlagen werden mit nachvollziehbaren Arbeitsabläufen, Demonstrationen und praktischen Übungen verbunden.

Inhaltsübersicht

  • Zielgruppe und Voraussetzungen
  • Lernziele
  • Didaktische Einordnung
  • Seminarinhalte mit schrittweisen Arbeitsabläufen
  • Praxisarbeiten
  • Arbeitsumgebung

Zielgruppe und Voraussetzungen

Zielgruppe: Linux- und Embedded-Entwicklung, Firmwareentwicklung, Geräteintegration, technische Architektur und Maintainer von Hardwareunterstützung.

Voraussetzungen: Gute Linux- und C-Kenntnisse, sichere Arbeit mit Buildsystem, Git und Debugger; Grundkenntnisse von Gerätebussen und Firmwareformaten.

Lernziele

  • Architektur von fwupd und LVFS fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
  • D-Bus und libfwupd für Clientanwendungen fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
  • Geräteerkennung, Instance IDs und Quirks fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
  • Recovery, Rollback und sichere Wiederholung fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
  • Einbindung eines neuen Updateprotokolls in LVFS fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
  • Upstreambeitrag, Review und Wartung fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.

Didaktische Einordnung

Fünf Tage sind erforderlich, um aus einer Spezifikation ein testbares Plugin mit Clientintegration und CI-Nachweisen zu entwickeln; der Umfang nutzt die zulässige Höchstdauer vollständig aus. Pro Seminartag sind ungefähr sechs Unterrichtsstunden mit zusätzlichen Pausen vorgesehen. Die Dauer entspricht dem ausgewählten TYPO3-Seminartemplate.

Seminarinhalte

1. Architektur von fwupd und LVFS

Das Zusammenspiel aus fwupd-Daemon, Clientwerkzeugen, Plugins, Metadaten, Remotes und Firmwarepaketen wird als durchgängige Verarbeitungskette eingeordnet.

  1. Die Aufgaben von Daemon, Kommandozeilenwerkzeugen, Clientbibliothek und grafischen Frontends voneinander abgrenzen.
  2. Den Weg von Geräteerkennung und GUID-Erzeugung bis zur Zuordnung eines Firmware-Releases nachvollziehen.
  3. Die Rollen lokaler Metadaten, konfigurierter Remotes und des Linux Vendor Firmware Service unterscheiden.
  4. Den Updateablauf von der Metadatenaktualisierung über die Installation bis zur Erfolgskontrolle skizzieren.
  5. Verantwortlichkeiten zwischen Gerätehersteller, Distribution, Betrieb und Anwenderbetrieb dokumentieren.

2. D-Bus und libfwupd für Clientanwendungen

Anwendungen greifen über die öffentliche D-Bus-Schnittstelle oder libfwupd auf Geräte, Releases, Anforderungen und Statusänderungen zu.

  1. Dienstname, Objektpfad, Schnittstellen und Berechtigungsgrenzen der D-Bus-Kommunikation bestimmen.
  2. Clientverbindung herstellen und Geräte-, Remote- sowie Releaseobjekte strukturiert auslesen.
  3. Asynchrone Status-, Fortschritts- und Geräteänderungssignale in das Anwendungsmodell übernehmen.
  4. Installationsanforderungen, Benutzerhinweise und Fehlerdomänen vollständig behandeln.
  5. Abbruch, Wiederanlauf und Versionskompatibilität mit automatisierten Integrationstests absichern.

3. Integration in grafische Softwareverwaltung

Grafische Frontends müssen Updatefähigkeit, Risiken, Benutzeranforderungen und Fortschritt korrekt aus der fwupd-Schnittstelle ableiten.

  1. Geräte- und Releaseinformationen in verständliche, aber technisch korrekte Anzeigen überführen.
  2. Nicht aktualisierbare Geräte und behebbare Device Problems klar von fehlender Unterstützung unterscheiden.
  3. Dringlichkeit, Neustartbedarf, Stromanforderungen und mögliche Unterbrechungen vor der Bestätigung anzeigen.
  4. Fortschritts- und Request-Signale ohne blockierende Benutzeroberfläche verarbeiten.
  5. Erfolg, ausstehende Aktivierung und Fehlschlag mit geeigneten Folgeschritten darstellen.

4. Entwicklungs- und Buildumgebung

Eine reproduzierbare Entwicklungsumgebung bildet Abhängigkeiten, Buildoptionen, Tests und Debugkonfiguration nachvollziehbar ab.

  1. Quellstand, Compiler, Buildsystem und erforderliche Bibliotheken versioniert festlegen.
  2. Buildoptionen auf die benötigten Plugins und Testfunktionen begrenzen.
  3. Separates Build- und Installationspräfix für Entwicklung und Systemversion verwenden.
  4. Debugsymbole, ausführliche Protokollierung und Testdaten aktivieren.
  5. Build, Basistests und Start des Daemons als reproduzierbaren Prüfablauf dokumentieren.

5. Pluginarchitektur und Lebenszyklus

Ein fwupd-Plugin verbindet Geräteerkennung, Firmwareformat, Updateprotokoll und Zustandsübergänge mit dem Daemon.

  1. Pluginregistrierung, Abhängigkeiten und unterstützte Geräteklassen im Quellbaum lokalisieren.
  2. Coldplug-, Hotplug-, Setup-, Prepare-, Write-, Attach- und Reload-Phasen voneinander abgrenzen.
  3. Geräteobjekte, Firmwareobjekte und Kontextdaten mit klaren Verantwortlichkeiten modellieren.
  4. Unterstützte Updateprotokolle, Flags, Anforderungen und Fehlerzustände deklarieren.
  5. Pluginverhalten bei Start, Replug, Neustart und fehlender Hardware als Zustandsdiagramm dokumentieren.

6. Geräteerkennung, Instance IDs und Quirks

Zuverlässige Geräteerkennung vermeidet falsche Zuordnungen und hält Modellvarianten außerhalb des Quellcodes beherrschbar.

  1. Geeignete Gerätequelle wie USB, HID, PCI, I2C, MTD oder Redfish bestimmen.
  2. Stabile Instance IDs aus tatsächlich verfügbaren Hardwaremerkmalen zusammensetzen.
  3. GUIDs ableiten und gegen bekannte Gerätevarianten sowie Bootloaderzustände prüfen.
  4. Modell- und revisionsspezifische Eigenschaften als Quirks statt als verstreute Sonderfälle pflegen.
  5. Positive, negative und mehrdeutige Erkennung mit Testdaten absichern.

7. Firmwareformate, Parser und Prüfsummen

Firmwareparser behandeln Eingabedaten als nicht vertrauenswürdig und validieren Struktur, Grenzen, Versionen sowie Prüfsummen.

  1. Container-, Header-, Payload- und Signaturbereiche des Firmwareformats beschreiben.
  2. Längen, Offsets, Ganzzahlbereiche und Verschachtelungen vor jedem Zugriff validieren.
  3. Version, Gerätekennung und Kompatibilitätsmerkmale in ein Firmwareobjekt überführen.
  4. Prüfsummen und kryptografische Signaturen an der richtigen Verarbeitungsebene prüfen.
  5. Fehlerhafte, abgeschnittene und manipulierte Beispieldateien in negative Tests aufnehmen.

8. Entwurf eines eigenen Firmware-Updateprotokolls

Ein herstellerspezifisches Protokoll wird so spezifiziert, dass fwupd, LVFS-Metadaten und Gerätefirmware dieselben Zustände und Sicherheitsannahmen verwenden.

  1. Bedrohungsmodell, Vertrauensanker, Anti-Rollback-Regeln und Zielgerätebindung festlegen.
  2. Paketformat, Versionsformat, Kommandos, Antworten und Fehlercodes formal beschreiben.
  3. Atomare Aktivierung oder duale Bänke sowie Verhalten bei Stromverlust definieren.
  4. Benutzeranforderungen wie Kabel, Stromversorgung, Replug und Neustart explizit modellieren.
  5. Referenzimplementierung, Testvektoren und Interoperabilitätskriterien bereitstellen.

9. Updateprotokoll und Transaktionsmodell

Das Updateprotokoll wird als Transaktion mit Vorbereitung, Transfer, Verifikation, Aktivierung und Wiederanlauf modelliert.

  1. Transport, Paketgröße, Sequenzierung, Zeitlimits und Antwortcodes des Geräts erfassen.
  2. Übergang in Bootloader- oder Updatezustand mit eindeutiger Gerätewiedererkennung planen.
  3. Payload in validierten Blöcken übertragen und Fortschritt aus bestätigten Bytes ableiten.
  4. Geräteseitige Verifikation, Aktivierung und Rückkehr in den Laufzeitmodus durchführen.
  5. Abbruchpunkte, Wiederholbarkeit und Recovery-Verhalten für jede Phase festlegen.

10. Bedrohungsmodell für Firmwareaktualisierungen

Firmwareversorgung wird als Lieferkette betrachtet, in der Manipulation, Fehlzuordnung, Rollback und Betriebsunterbrechung beherrscht werden müssen.

  1. Schutzobjekte wie Firmwarepayload, Metadaten, Signaturschlüssel, Geräteidentität und Freigabestatus bestimmen.
  2. Angriffsflächen von Erstellung, Upload, Verteilung, Installation und Rückmeldung erfassen.
  3. Kontrollen für Signaturprüfung, Versionsgrenzen, Rollen, Vier-Augen-Freigabe und Protokollierung zuordnen.
  4. Fehlerszenarien einschließlich falscher GUID, fehlerhafter Metadaten und unterbrochener Aktualisierung bewerten.
  5. Restrisiken, Notfallmaßnahmen und Verantwortlichkeiten in einem Firmware-Sicherheitskonzept festhalten.

11. Recovery, Rollback und sichere Wiederholung

Wiederherstellung wird vor dem Update geplant und berücksichtigt, dass nicht jedes Gerät ein Firmware-Rollback unterstützt.

  1. Recovery-Fähigkeiten, Mindestversion, erlaubte Downgrades und herstellerspezifische Notfallwege vorab prüfen.
  2. Stromversorgung, alternative Eingabegeräte, Wiederherstellungsmedium und Zugriff auf Schlüssel sicherstellen.
  3. Nach einem Fehlschlag zunächst Gerätezustand und Historie sichern, bevor weitere Schreibversuche erfolgen.
  4. Nur dokumentierte Wiederholungs-, Aktivierungs- oder Recovery-Schritte in festgelegter Reihenfolge anwenden.
  5. Nach erfolgreicher Wiederherstellung Firmwarestand, Funktion, Sicherheitsattribute und erneute Freigabe kontrollieren.

12. Geräteemulation und reproduzierbare Updateaufzeichnungen

Emulation ersetzt nicht die Hardwareprüfung, ermöglicht aber reproduzierbare Regressionstests und Fehleranalysen.

  1. Emulationsfunktion in einer isolierten Testkonfiguration aktivieren.
  2. Zielgerät eindeutig markieren und einen vollständigen Updateablauf aufzeichnen.
  3. Aufzeichnung mit Geräteereignissen, Antworten und Zustandswechseln speichern.
  4. Emuliertes Gerät ohne physische Hardware laden und erwartete Abläufe wiederholen.
  5. Aufzeichnung versionieren und als Regressionstest in den Entwicklungsprozess aufnehmen.

13. Unit-, Integrations- und Hardwaretests

Teststufen werden getrennt aufgebaut, damit Parserfehler, Zustandsfehler und Hardwareprobleme gezielt erkannt werden.

  1. Parser- und Hilfsfunktionen mit kleinen Unit-Tests und klaren Grenzfällen prüfen.
  2. Pluginzustände mit Emulation oder Mock-Geräten als Integrationstest ausführen.
  3. Upgrade, Downgrade, Reinstall, Unterbrechung und Recovery auf Referenzhardware testen.
  4. Ausgaben, Historie, Geräteflags und Firmwarestand nach jedem Testfall verifizieren.
  5. Testmatrix nach Modell, Revision, Firmwareausgangsstand und Betriebssystem pflegen.

14. Continuous Integration, Fuzzing und statische Analyse

Automatisierte Qualitätsprüfungen verhindern, dass Parser- oder Zustandsfehler erst auf Endgeräten sichtbar werden.

  1. Builds für relevante Compiler, Optionen und Architekturen automatisieren.
  2. Unit- und Emulationstests mit deterministischen Testdaten in jeder Änderung ausführen.
  3. Firmwareparser mit Fuzzing und einem Korpus gültiger sowie fehlerhafter Dateien prüfen.
  4. Statische Analyse, Sanitizer und Abhängigkeitsprüfungen in getrennten Jobs betreiben.
  5. Fehlschläge als freigabeblockierend behandeln und reproduzierbare Artefakte sichern.

15. Einbindung eines neuen Updateprotokolls in LVFS

Ein neues Protokoll muss durch Geräteplugin, Metadatenkennzeichnung, Testnachweise und Herstellerdokumentation konsistent unterstützt werden.

  1. Protokollbezeichner, unterstütztes Plugin und Mindestversion von fwupd bestimmen.
  2. Metadaten so ergänzen, dass Protokoll und Versionsformat eindeutig ausgewählt werden.
  3. Beispielpakete und Referenzgeräte für automatische sowie manuelle Prüfungen bereitstellen.
  4. Fehlende Clientunterstützung durch geeignete Mindestversionsbedingungen ausschließen.
  5. Interoperabilität von Embargotest bis stabiler Verteilung mit mehreren Systemständen nachweisen.

16. Upstreambeitrag, Review und Wartung

Ein wartbares Plugin benötigt neben funktionierendem Code auch Tests, Dokumentation, Metadaten und einen langfristigen Pflegeprozess.

  1. Änderungen in kleine, nachvollziehbare Commits mit klarer Problemstellung zerlegen.
  2. Coding-Konventionen, Lizenzvorgaben und bestehende Abstraktionen des Projekts einhalten.
  3. Tests, Quirks, Gerätebeispiele und technische Dokumentation gemeinsam mit dem Code liefern.
  4. Reviewhinweise reproduzierbar bearbeiten und Hardwareergebnisse nachvollziehbar belegen.
  5. Verantwortung für Regressionen, neue Gerätevarianten und Sicherheitsmeldungen organisatorisch festlegen.

Praxisarbeiten

  1. Praxisfall „Architektur von fwupd und LVFS“ bearbeiten und als Ergebnis verantwortlichkeiten zwischen Gerätehersteller, Distribution, Betrieb und Anwenderbetrieb dokumentieren.
  2. Praxisfall „Integration in grafische Softwareverwaltung“ bearbeiten und als Ergebnis erfolg, ausstehende Aktivierung und Fehlschlag mit geeigneten Folgeschritten darstellen.
  3. Praxisfall „Pluginarchitektur und Lebenszyklus“ bearbeiten und als Ergebnis pluginverhalten bei Start, Replug, Neustart und fehlender Hardware als Zustandsdiagramm dokumentieren.
  4. Praxisfall „Firmwareformate, Parser und Prüfsummen“ bearbeiten und als Ergebnis fehlerhafte, abgeschnittene und manipulierte Beispieldateien in negative Tests aufnehmen.
  5. Praxisfall „Bedrohungsmodell für Firmwareaktualisierungen“ bearbeiten und als Ergebnis restrisiken, Notfallmaßnahmen und Verantwortlichkeiten in einem Firmware-Sicherheitskonzept festhalten.
  6. Praxisfall „Geräteemulation und reproduzierbare Updateaufzeichnungen“ bearbeiten und als Ergebnis aufzeichnung versionieren und als Regressionstest in den Entwicklungsprozess aufnehmen.
  7. Praxisfall „Continuous Integration, Fuzzing und statische Analyse“ bearbeiten und als Ergebnis fehlschläge als freigabeblockierend behandeln und reproduzierbare Artefakte sichern.
  8. Praxisfall „Upstreambeitrag, Review und Wartung“ bearbeiten und als Ergebnis verantwortung für Regressionen, neue Gerätevarianten und Sicherheitsmeldungen organisatorisch festlegen.

Arbeitsumgebung

Entwicklungsrechner mit isoliertem fwupd-Build, Testdaten und nach Möglichkeit geeigneter Referenzhardware. Alle Übungen werden mit dokumentiertem Ausgangszustand, eindeutigen Prüfkriterien und einer abschließenden technischen Kontrolle durchgeführt.

Fachbereichsleitung und Trainerteam

Seminardetails

   
Dauer: 5 Tage ca. 6 h/Tag, Beginn 1. Tag: 10:00 Uhr, weitere Tage 09:00 Uhr
Preis: Öffentlich oder Live Stream: € 2.995 zzgl. MwSt.
Inhaus: € 8.500 zzgl. MwSt.
Teilnehmeranzahl: min. 2 - max. 8
Teilnehmer: Linux- und Embedded-Entwicklung, Firmwareentwicklung, Geräteintegration, technische Architektur und Maintainer von Hardwareunterstützung.
Voraussetzungen: Gute Linux- und C-Kenntnisse, sichere Arbeit mit Buildsystem, Git und Debugger; Grundkenntnisse von Gerätebussen und Firmwareformaten.
Standorte: Stream Live, Inhaus/Firmenseminar, Berlin, Bremen, Darmstadt, Dresden, Erfurt, Essen, Flensburg, Frankfurt, Freiburg, Friedrichshafen, Hamburg, Hamm, Hannover, Jena, Kassel, Köln, Konstanz, Leipzig, Luxemburg, Magdeburg, Mainz, München, Münster, Nürnberg, Paderborn, Potsdam, Regensburg, Rostock, Stuttgart, Trier, Ulm, Wuppertal, Würzburg
Methoden: Vortrag, Demonstrationen, praktische Übungen am System, strukturierte Schritt-für-Schritt-Arbeitsaufträge
Seminararten: Öffentlich, Webinar, Inhaus, Workshop - Alle Seminare mit Trainer vor Ort, Webinar nur wenn ausdrücklich gewünscht
Durchführungsgarantie: ja, ab 2 Teilnehmern
Sprache: Deutsch - bei Firmenseminaren ist auch Englisch möglich
Seminarunterlage: Dokumentation auf Datenträger oder als Download
Teilnahmezertifikat: ja, selbstverständlich
Verpflegung: Kalt- / Warmgetränke, Mittagessen (wahlweise vegetarisch)
Support: 3 Anrufe im Seminarpreis enthalten
Barrierefreier Zugang: an den meisten Standorten verfügbar
  Weitere Informationen unter + 49 (221) 74740055

Seminartermine

Die Ergebnissliste kann durch Anklicken der Überschrift neu sortiert werden.

Seminar Startdatum Enddatum Ort Dauer
Flensburg 5 Tage
Konstanz 5 Tage
Freiburg 5 Tage
Potsdam 5 Tage
Hamburg 5 Tage
Leipzig 5 Tage
Hamm 5 Tage
Rostock 5 Tage
Stuttgart 5 Tage
Dresden 5 Tage
Luxemburg 5 Tage
Hannover 5 Tage
Jena 5 Tage
Trier 5 Tage
Madgeburg 5 Tage
Regensburg 5 Tage
Kassel 5 Tage
Ulm 5 Tage
München 5 Tage
Friedrichshafen 5 Tage
Köln 5 Tage
Wuppertal 5 Tage
Münster 5 Tage
Nürnberg 5 Tage
Erfurt 5 Tage
Bremen 5 Tage
Berlin 5 Tage
Mainz 5 Tage
Essen 5 Tage
Darmstadt 5 Tage
Frankfurt 5 Tage
Paderborn 5 Tage
Konstanz 5 Tage
Freiburg 5 Tage
Potsdam 5 Tage
Flensburg 5 Tage
Leipzig 5 Tage
Hamm 5 Tage
Rostock 5 Tage
Hamburg 5 Tage
Nach oben
Seminare als Stream SRI zertifiziert
© 2026 www.seminar-experts.de All rights reserved. | Kontakt | Impressum | Nach oben