Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Eigene udev rule schreiben

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

Antworten
goeba
Member
Member
Beiträge: 242
Registriert: 23. Nov 2015, 13:48

Eigene udev rule schreiben

Beitrag von goeba » 5. Feb 2018, 19:51

Hallo,

wir haben einige interaktive Boards der Firma Epson. Ein älteres Modell wird einfach als Maus erkannt, man kann gleich damit arbeiten.

Neuere Modelle aber nicht. Nun kann ich mir nicht so recht vorstellen, dass sich da intern so arg viel geändert hat. Ich würde also gerne eine udev-rule schreiben, die dem System mitteilt, dass es sich bei dem angeschlossenen Gerät um eine Maus handelt.
Wenn ich Glück habe, geht es dann schon.

Gerät und Vendor-id bekomme ich mit "lsusb" heraus.
Dann muss ich eine eigene udev-rule dafür schreiben, etwa 99-epson.rule , und ich weiß auch, wo ich sie hinspeichern muss.

Aber was genau ich in die Datei schreiben muss, ist mir unklar, insbesondere, weil es für so triviale Geräte wie Mäuse keine Beispiele auf den Seiten gibt, die man als erste Treffer bei Google hat (etwa diese hier: http://www.reactivated.net/writing_udev_rules.html ).

Falls jemand sowas schon mal gemacht hat, wäre ich für Hinweise dankbar!

Gruß, Andreas

Werbung:
marce
Advanced Hacker
Advanced Hacker
Beiträge: 1022
Registriert: 19. Jun 2008, 13:16
Wohnort: Dettenhausen
Kontaktdaten:

Re: Eigene udev rule schreiben

Beitrag von marce » 6. Feb 2018, 08:41

unter https://wiki.ubuntuusers.de/udev/ findest Du ein Beispiel für eine Tastatur (und noch ein paar mehr) - ehrlich gesagt klingt das, was Du vorhast aber weniger nach einem UDEV-"Problem" sondern eher danach, daß für das Ding einfach kein passender Treiber installiert ist.

goeba
Member
Member
Beiträge: 242
Registriert: 23. Nov 2015, 13:48

Re: Eigene udev rule schreiben

Beitrag von goeba » 6. Feb 2018, 10:29

Hallo,
vermutlich hast Du recht. Ich habe das im Detail, glaube ich, noch nicht so ganz verstanden, was so eine udev rule genau macht, ich dachte zunächst, das sei so etwas wie ein Treiber. Es scheint aber mehr so ein Triggersystem zu sein, wo zusätzliche Aktionen beim Einstecken eines usb device ausgelöst werden und wo man auch Berechtigungen (etwa wer ein bestimmtes Gerät benutzen darf) festlegen kann.

Ich hätte daher folgende Idee:
- bei dem älteren Board, das funktioniert, feststellen, welcher Treiber geladen wird
- bei dem neueren Board dafür sorgen (erzwingen), dass auch dieser Treiber geladen wird
- probieren, ob es geht

Für Tipps, wie ich das konkret bewerkstelligen kann, wäre ich dankbar. Ich kann mir halt nicht vorstellen, dass Epson ohne Not bei einem neuen Board komplett von den Standards für human interface devices abweicht. Die weitaus meisten Boards funktionieren einfach ohne Treiber (z.B. alle Smartboards und die Promethean Boards). Daher habe ich die Hoffnung, dass der Kernel das Gerät lediglich nicht kennt und man ihm sozusagen mitteilen muss, welchen Treiber er zu laden hat.

Gruß, Andreas

spoensche
Moderator
Moderator
Beiträge: 7338
Registriert: 30. Okt 2004, 23:53
Wohnort: Siegen

Re: Eigene udev rule schreiben

Beitrag von spoensche » 7. Feb 2018, 22:22

goeba hat geschrieben:
6. Feb 2018, 10:29
Ich habe das im Detail, glaube ich, noch nicht so ganz verstanden, was so eine udev rule genau macht, ich dachte zunächst, das sei so etwas wie ein Treiber.
Nah dran..........
goeba hat geschrieben: Es scheint aber mehr so ein Triggersystem zu sein, wo zusätzliche Aktionen beim Einstecken eines usb device ausgelöst werden und wo man auch Berechtigungen (etwa wer ein bestimmtes Gerät benutzen darf) festlegen kann.
.....Du hast es doch verstanden. :)

Der Udev erzeugt die Gerätedateien unter /dev, sobald vom Kernel eine Meldung kommt, dass es ein neues Gerät gibt + zusätzliche Infos. Der Udev macht dann das was du oben geschrieben hast.
goeba hat geschrieben: Ich hätte daher folgende Idee:
- bei dem älteren Board, das funktioniert, feststellen, welcher Treiber geladen wird
- bei dem neueren Board dafür sorgen (erzwingen), dass auch dieser Treiber geladen wird
- probieren, ob es geht

Für Tipps, wie ich das konkret bewerkstelligen kann, wäre ich dankbar. Ich kann mir halt nicht vorstellen, dass Epson ohne Not bei einem neuen Board komplett von den Standards für human interface devices abweicht. Die weitaus meisten Boards funktionieren einfach ohne Treiber (z.B. alle Smartboards und die Promethean Boards). Daher habe ich die Hoffnung, dass der Kernel das Gerät lediglich nicht kennt und man ihm sozusagen mitteilen muss, welchen Treiber er zu laden hat.
Deine Idee geht in die richtige Richtung. Der Kernel weiss welchen Treiber laden muss. Ansonsten kann dir lsusb das Gerät auch nicht anzeigen. Meine Vermutung geht in Richtung Xorg Treiber.

Stöpsel das Board, was nicht funktioniert an und poste dann mal bitte die Ausgabe von

Code: Alles auswählen

egrep "EE|WW" /var/log/Xorg.0.log

goeba
Member
Member
Beiträge: 242
Registriert: 23. Nov 2015, 13:48

Re: Eigene udev rule schreiben

Beitrag von goeba » 7. Feb 2018, 23:19

Hallo,

vielen Dank schon mal! Es kann ein paar Tage dauern, bis ich die Informationen nachreichen kann, ich bleibe dran!

Gruß, Andreas

goeba
Member
Member
Beiträge: 242
Registriert: 23. Nov 2015, 13:48

Re: Eigene udev rule schreiben

Beitrag von goeba » 15. Feb 2018, 15:25

@spoensche :

Nochmal eine Rückfrage. Du meintest "der Kernel weiß, welchen Treiber er laden muss, sonst würde ..." - ich habe lsusb an dem betreffenden Rechner aber noch gar nicht ausgeführt (ich habe diesen nicht zu Hause stehen).

Könntest Du nochmal kurz Hinweise geben, wie ich zunächst herausfinde, ob der Kernel für das Gerät einen Treiber lädt? Einfach "lsusb ", oder wären da noch Parameter wichtig?

Anschließend würde ich den von Dir genannten Befehl ausführen.

Gruß,
Andreas

spoensche
Moderator
Moderator
Beiträge: 7338
Registriert: 30. Okt 2004, 23:53
Wohnort: Siegen

Re: Eigene udev rule schreiben

Beitrag von spoensche » 15. Feb 2018, 20:09

Wenn du das Gerät einsteckst, dann kannst du z.B. mit

Code: Alles auswählen

dmesg | tail
sehen, was der Kernel für Meldungen bezüglich USB ausgibt.

Eine weitere Möglichkeit wäre udevadm. Bevor du das Gerät einsteckst führst du den Befehl

Code: Alles auswählen

udevadm monitor -s usb
aus. Du bekommst dann alle Kernel und Udev Meldungen für das USB Subsystem angezeigt, wenn du das Gerät einsteckst.

Als letztes bleibt dann noch

Code: Alles auswählen

lsusb

goeba
Member
Member
Beiträge: 242
Registriert: 23. Nov 2015, 13:48

Re: Eigene udev rule schreiben

Beitrag von goeba » 17. Feb 2018, 12:01

Besten Dank!

(das Board steht in einem Klassenraum, das heißt, der Raum muss frei sein + ich muss Zeit und Lust haben, mich drum zu kümmern, deswegen dauert das so lange)

goeba
Member
Member
Beiträge: 242
Registriert: 23. Nov 2015, 13:48

Re: Eigene udev rule schreiben

Beitrag von goeba » 19. Feb 2018, 16:15

Code: Alles auswählen

linux-ezvt:/home/ag # dmesg | tail
[59358.415841] usb 1-1: New USB device found, idVendor=04b8, idProduct=0907
[59358.415848] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[59358.416599] hub 1-1:1.0: USB hub found
[59358.416689] hub 1-1:1.0: 4 ports detected
[59358.703659] usb 1-1.4: new full-speed USB device number 22 using xhci_hcd
[59358.806654] usb 1-1.4: New USB device found, idVendor=04b8, idProduct=0316
[59358.806672] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[59358.806684] usb 1-1.4: Product: Interactive Function
[59358.806693] usb 1-1.4: Manufacturer: SEIKO EPSON
[59358.815484] hid-generic 0003:04B8:0316.0011: hiddev96,hidraw1: USB HID v1.01 Device [SEIKO EPSON Interactive Function] on usb-0000:00:14.0-1.4/input0

Code: Alles auswählen

linux-ezvt:/home/ag # udevadm monitor -s usb
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[59410.413687] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
KERNEL[59410.415949] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0 (usb)
UDEV  [59410.441397] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
UDEV  [59410.447084] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[59410.812190] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4 (usb)
KERNEL[59410.814310] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4:1.0 (usb)
UDEV  [59410.863441] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4 (usb)
UDEV  [59410.871205] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.4/1-1.4:1.0 (usb)


Code: Alles auswählen

linux-ezvt:/home/ag # egrep "EE|WW" /var/log/Xorg.0.log
[    10.392] Current Operating System: Linux linux-ezvt 4.14.15-5.g9a6fca5-default #1 SMP PREEMPT Mon Jan 29 08:15:43 UTC 2018 (9a6fca5) x86_64
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    10.414] (WW) The directory "/usr/share/fonts/misc/sgi" does not exist.

Das sind die Befehle und was sie ausgeben. Soweit ich das verstehe, gibt es keine Fehler. Wenn ich Gimp starte, dann zeigt er mir das Epson Board sogar als Eingabegerät an - wenn ich es in Gimp aktiviere, geht es aber nicht.

Normalerweise sollte der Mauszeiger dem Stift folgen und Klicks erzeugen, wenn man den Stift auf das Board drückt.

Der Stift hat eine Lampe, die leuchtet, wenn ich eine Taste drücke, daher ist die Batterie wohl auch nicht leer.

Unter Windows geht das Board auch (das habe ich heute allerdings nicht getestet, es könnte also theoretisch auch noch am Board etwas defekt sein oder falsch eingestellt, der Test unter Windows ist länger her).

Könnt Ihr da was rauslesen? Dank + Gruß, Andreas

josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5036
Registriert: 23. Sep 2008, 17:09

Re: Eigene udev rule schreiben

Beitrag von josef-wien » 19. Feb 2018, 17:47

Aus Sicht des Kernel schaut für mich alles normal aus. Wie spoensche denke ich auch an Xorg. Kommt das Gerät in /var/log/Xorg.0.log überhaupt vor? Schaut der diesbezügliche Dateiinhalt bei
goeba hat geschrieben:
5. Feb 2018, 19:51
Ein älteres Modell wird einfach als Maus erkannt
anders aus?

goeba
Member
Member
Beiträge: 242
Registriert: 23. Nov 2015, 13:48

Re: Eigene udev rule schreiben

Beitrag von goeba » 19. Feb 2018, 19:31

Hallo,

ich präzisiere. Ich habe da offenbar beim Einkaufen Mist gebaut. Die Boards, die nicht funktionieren, sind Epson EB‑455Wi . Das, was Funktioniert ist das EB-485WI.

Letzteres ist nicht älter, sondern einfach etwas teurer.

Ich habe die Befürchtung, dass die 455 WI Teile der Positionserkennung an die Rechner delegieren, während beim 485 das auf dem Projektor selbst läuft.

Ich habe jetzt mal an Epson geschrieben, die sinst sonst eigentlich recht aktiv mit Linux Treibern (gerade bei Druckern und MUltifunktionsgeräten), vielleicht können die mir ja helfen.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste