binden Sie das Gerät von usbhid und binden Sie es an Ihren eigenen Treiber

2633
Anton Rak

OS: Debian 8

Problem: Ich schreibe ein USB-Treibermodul für meinen Mikrocontroller, benutzerdefinierte USB-HIDs, aber wenn ich es an einen Laptop anschließe, bindet es an den USB-Treiber, wenn ich rmmod usbhidauch eine Maus trenne und es nicht sehr schön ist, kann ich es lösen

sudo sh -c 'echo -n "1-3:1.0" > /sys/bus/usb/drivers/usbhid/unbind'

Es ist jedoch nicht interessant, es jedes Mal zu tun, wenn ich mein Gerät einstecke. Selbst nachdem ich ein Skript geschrieben habe, habe ich festgestellt, dass es keinen Spaß macht, es immer wieder auszuführen. Ist es möglich, mein Gerät automatisch vom USB-Treiber zu trennen?

1
Fügen Sie Ihr Skript einer benutzerdefinierten udev-Regel hinzu. Dann führt udev Ihr Skript auf jedem Plug aus. Ipor Sircer vor 7 Jahren 1
@IporSircer, danke! ich werde es versuchen Anton Rak vor 7 Jahren 0

2 Antworten auf die Frage

0
Anton Rak

Es war nicht leicht, die wirklich coole Lösung zu finden, aber ich habe es geschafft. Die Lösung beschäftigt sich nicht mit udev. Um den Kern zu verstecken, müssen wir sagen, dass er unser Gerät nicht berühren sollte. Es ist möglich, dies auf zwei Arten zu tun, abhängig davon, ob es entweder als Modul kompiliert ist oder nicht. Schau dir das an:

https://unix.stackexchange.com/questions/55495/prevent-usbhid-fromclaiming-usb-device

https://askubuntu.com/questions/605251/dkms-installed-kernel-module-but-not-working-after-reboot/606359#606359

PS "GRUB_CMDLINE_LINUX_DEFAULT enthält Befehlszeilenargumente für den Linux-Kernel. Sie können beliebig viele einfügen, sofern sie durch ein Leerzeichen getrennt sind ."

Hoffentlich spart es jemandem Zeit, da ich viel Zeit darauf verwendet habe, diese, meiner Meinung nach, hervorragende Lösung zu finden.

Viele Grüße anon

0
Kyle H

Sie könnten den Treiber auf die schwarze Liste setzen, damit er beim Booten nicht geladen und an das Gerät gebunden wird. Wenn andere Module davon abhängig sind, können sie nicht geladen werden.

https://askubuntu.com/questions/110341/how-to-blacklist-kernel-module

Ja, aber es ist ein standardmäßig versteckter Treiber, der meine Mäuse kontrolliert, und es ist überhaupt keine gute Idee, einen versteckten Treiber zu unterdrücken Anton Rak vor 7 Jahren 0
Genau. Udev ist der Weg zu gehen. Nur zum Testen und Schreiben eines USB-Treibermoduls können Sie auf diese Weise eine Lernkurve vermeiden, wenn Sie udev nicht kennen. Kyle H vor 7 Jahren 0
Vielen Dank für die Antwort) Ich habe bereits eine Grundkenntnis von udev) und generell habe ich diese Kurven gemacht, seit ich Linux: D installiert habe Anton Rak vor 7 Jahren 0
Ich habe es schon gelöst. Wenn Sie interessiert sind, überprüfen Sie die Lösung unten. Anton Rak vor 7 Jahren 0