"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Linux: Erzeugung bestimmter Device Nodes (/dev/ttyUSB*) verhindern: Wie?!

GrandAdmiralThrawn 21.11.2012 - 21:03 2831 2
Posts

GrandAdmiralThrawn

XP Nazi
Avatar
Registered: Aug 2000
Location: BRUCK!
Posts: 3682
Grüß euch!

Ich habe hier ein USB Device, so einen UMTS Stick, bei dem nach Einstecken und erfolgreichem usb_modeswitch drei Device Nodes erzeugt werden: /dev/ttyUSB0, /dev/ttyUSB1 und /dev/ttyUSB2.

Device 0 ist ein NMEA GPS Device, 1 irgendwas und 2 das Modem Device.

Nun lädt dabei der Kerneltreiber option.ko, welcher an Device /dev/ttyUSB2 binden soll, um es als Modem zu nutzen. Manchmal funktioniert das auch, manchmal bindet er aber fälschlicherweise an /dev/ttyUSB1, wonach das Einwählen ins GPRS/UMTS Netz natürlich nicht klappen kann.

Ich weiß nicht wie ich option.ko beibringen soll, NIE an /dev/ttyUSB1 zu binden, das muß ein Bug in probe() sein. Eine entsprechende Kernelmoduloption hat das Modul laut modinfo nicht...

Mein Ansatz: Einfach das Erzeugen des Device Nodes /dev/ttyUSB1 verhindern!

Wenn ich den Stick abziehe, und dann einfach blanke Files mit Namen /dev/ttyUSB0 und /dev/ttyUSB1 erzeuge (chmod 000 drauf), dann funzts, weil er einfach nur /dev/ttyUSB2 erzeugen kann. Nur nach einem Reboot ist das natürlich weg.

Wie kann ich einfach das Erzeugen bestimmter Device Nodes beim Einstecken des Sticks unterbinden, sodaß der option.ko Kerneltreiber immer nur das korrekte /dev/ttyUSB2 zum Fraß vorgeworfen bekommt?

Eine udev Rule evtl.? Aber wie....
Bearbeitet von GrandAdmiralThrawn am 21.11.2012, 21:09

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11901
Was udev so treibt, wenn ein Hotplug-Event feuert, kannst du dir mit
Code:
udevadm monitor
ansehen. Am besten wird sein du postest was das ausgibt, waehrend du das Modem ein- und dann wieder aussteckst. Dann wird man dir ziemlich sicher mit einer udev-Regel helfen koennen.

GrandAdmiralThrawn

XP Nazi
Avatar
Registered: Aug 2000
Location: BRUCK!
Posts: 3682
Der Dirthäcka of Shit hat jetzt /etc/init.d/boot.d/S01boot.udev editiert, und darin vor allem anderen zwei Dummy Files erstellt, eben:

/dev/ttyUSB0
/dev/ttyUSB1

Beide chmod 000, nur zur Sicherheit. Damit verhindere ich, daß option.ko jemals auf die Idee kommen kann, das falsche Device anzufassen.

Schon mehrmals mit eingestecktem Stick rebooted, und es funktioniert jetzt jedes Mal! Auch beim Hotplug klappts. Das ist natürlich unfaßbar Sch***e, weils den korrekten Betrieb so einiger anderer Devices verhindern dürfte, aber für den Benutzer für den ich das brauche ist das ziemlich egal..
Bearbeitet von GrandAdmiralThrawn am 21.11.2012, 22:39
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz