Benutzerdefinierte Firmware bringt der USB-Relaisplatine neue Tricks bei
HeimHeim > Nachricht > Benutzerdefinierte Firmware bringt der USB-Relaisplatine neue Tricks bei

Benutzerdefinierte Firmware bringt der USB-Relaisplatine neue Tricks bei

Dec 14, 2023

Wenn Sie nach einer schnellen und einfachen Möglichkeit suchen, einige Geräte von Ihrem Computer aus zu steuern, könnte eine günstige USB-Relaisplatine die ideale Lösung sein. Dabei handelt es sich um relativ einfache Geräte, die aus kaum mehr als einem Mikrocontroller und einer Handvoll Relais bestehen. Das heißt aber nicht, dass es keinen Raum für Verbesserungen gibt, und wie [Michał Słomkowski] kürzlich gezeigt hat, ermöglicht das Flashen dieser Boards mit einer benutzerdefinierten Firmware dem Benutzer, ihre Standardfunktionalität zu ändern.

In seinem Fall wollte [Michał] eine Steckdosenleiste bauen, die den Strom aller daran angeschlossenen Geräte unterbricht, sobald sein Computer in den Ruhezustand wechselt. Leider konnte er nicht einfach prüfen, ob an der Leitung 5 V anliegen, da die USB-Anschlüsse auf seinem Motherboard ständig mit Strom versorgt waren. Aber mit einigen Änderungen an der Firmware der Relaisplatine sollte er seiner Meinung nach in der Lage sein, zu erkennen, ob USB-Aktivität vorliegt, indem er auf das Start-of-Frame-Paket achtet, das jede Millisekunde ausgeht, wenn der Bus aktiv ist.

Nun behauptet [Michał] nicht, der Erste zu sein, der eine benutzerdefinierte Firmware für eines dieser Boards entwickelt hat, sondern nennt vielmehr ein bestehendes Open-Source-Firmware-Projekt als Inspiration für seine Arbeit. Er hat jedoch eine völlig neue GPLv3-Firmware für diese ATtiny45-Geräte erstellt, die unter anderem die neueste Version von V-USB enthält. Tatsächlich verfügt V-USB standardmäßig über eine Paketerkennung am Anfang des Frames, was die Implementierung seines Aktivitätserkennungscodes erheblich vereinfacht.

Nachdem die neue Firmware auf den Chip der Relaisplatine geflasht war, steckte [Michał] sie in ein Gehäuse und verkabelte die Ausgänge. Aber es fehlte noch ein Puzzleteil. Es scheint, dass Linux die Start-of-Frame-Pakete nicht wirklich sendet, es sei denn, es kommuniziert aktiv mit einem USB-Gerät im Rahmen der sogenannten „selektiven Suspend“-Energiesparfunktion. Glücklicherweise gibt es Unterstützung für die Deaktivierung dieser Funktion für bestimmte Geräte basierend auf ihrem Paar aus Anbieter/Produkt-ID, sodass nach ein wenig udev-Fummelei alles wie erwartet funktionierte.

Wir bei Hackaday lieben benutzerdefinierte Firmware-Projekte. Sie halten nicht nur proprietäre Software von unseren Geräten fern, sondern erschließen oft auch neue und erweiterte Funktionen, die sonst hinter künstlichen Paywalls verborgen wären.