Ich habe ein USB-HID-Gerät, das in zwei verschiedenen Modi arbeiten kann. Die Auswahl der Modi basiert auf der Reihenfolge der an sie gesendeten USB-Enumerations-/Initialisierungspakete.Wie kann ich verhindern, dass Linux ein USB-HID-Gerät initialisiert
Ich benutze ein Raspberry Pi 3 mit Raspbian, aber ich sehe auch das gleiche Problem, wenn ich meinen Code für meine Desktop-Ubuntu-Distribution kompilieren.
Das Problem, das ich habe, ist, dass Linux das USB-Gerät als ein HID-Gerät erkennt und dann die Folge von Befehlen sendet, die es für das Starten des Geräts als notwendig erachtet, und das Gerät ordnungsgemäß in "Modus 1" startet.
Allerdings muss ich das Gerät in "Mode 2" starten und dazu muss ich eine etwas andere Anzahl von Enumeration/Initialisierung Befehle senden.
Ich bin neu zu Linux aber sehr erfahren mit LibUSB und LibUSBDotNet unter Windows und kann das Verhalten, das ich unter Windows wünsche.
Windows hat ein ähnliches Verhalten wie Linux, da es aufzählt, das Gerät als USB-HID-Gerät erkennt und es dann so initialisiert, wie es für richtig erachtet wird, wenn das Gerät in "Mode 1" geht. Um zu verhindern, dass Windows dies tut, kann ich einen LibUSB-Filtertreiber für das Gerät erstellen, der dann den Standardtreiber ersetzt, so dass Windows nun die anfängliche Aufzählung durchführt, erkennt, dass die VID und PID des Geräts vom LibUSB-Filtertreiber verwaltet werden als der Windows-HID-Treiber) und dann die Enumeration/Initialisierung stoppen - dies erlaubt meinem Code, die Initialisierung in "Mode 2" zu übernehmen und abzuschließen.
Wie kann ich Linux davon abhalten, dieses Gerät vollständig zu nummerieren/zu initialisieren (wie ich mit Windows). Vielleicht muss ich etwas mit udev-Regeln oder so machen, aber ich hätte keine Ahnung, was ich für Linux neu bin.
Jede Hilfe sehr geschätzt
benutzen, ist von Kernel lösen und Ihre eigene Magie zu tun zu spät für einen Wechsel zu Mode 2? – dryman