PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : USB-Dongle: Bestimmten Treiber erzwingen



tomcom
29.07.13, 11:03
Hallo,

ich habe zwei unterschiedliche WLAN-Dongles mit rt2800usb-Chipsatz.
Den einen möchte ich mit dem Parameter nohwcrypt=1 betreiben und den anderen normal.

Mein erster Schritt war, rt2800usb.ko als rt2800usb_nohwcrypt.ko zu bauen. Dank entsprechender Konfiguration funktioniert das auch soweit:


# lsmod
Module Size Used by
rt2800usb_nohwcrypt 9833 0
rt2800usb 16869 0
rt2800lib 68685 2 rt2800usb,rt2800usb_nohwcrypt
...

# cat /sys/module/rt2800usb/parameters/nohwcrypt; cat /sys/module/rt2800usb_nohwcrypt/parameters/nohwcrypt
N
Y


Die USB-Dongles haben unterschiedliche USB-Vendor/Device-Ids.
Kann ich irgend wie damit was anfangen und sagen: Dongel 1: rt2800usb, Dongle 2: rt2800usb_nohwcrypt.

Als einzige Lösung viel mir ein, die Kernelmodule entsprechend zu Manipulieren.
Aber das will ich eigentlich nicht. Geht das irgendwie anders. Vieleicht mit Udev?

Gruß,
Tom

nopes
29.07.13, 11:15
mal hier mit (http://lwn.net/Articles/143397/) Probiert?

tomcom
29.07.13, 12:05
Mittlerweile bin ich hierdrauf gestoßen:
http://www.ha19.no/usb/ (Überschrift: Hotplugging with udev)

Vendor/Product ID sind angepasst.
Doch leider wird mein Skript nicht ausgeführt.
Mal schauen woran das liegt.

tomcom
29.07.13, 13:53
Mittlerweile gehts. Bei meinem Linux (ArchLinux ARM) musste ich gegenüber der oben genannten Anleitung SYSFS duch ATTRS ersetzen.


# cat /etc/udev/rules.d/91-local.rules
...
SUBSYSTEM=="usb", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="1234", RUN="/etc/specialdriver.sh"
#
# cat /etc/specialdriver.sh
#!/bin/sh
modprobe KERNELMODUL_nohwcrypt nohwcrypt=1
echo abcde 1234 > /sys/bus/usb/drivers/KERNELMODUL_nohwcrypt/new_id
modprobe KERNELMODUL
echo abcd 1234 > /sys/bus/usb/drivers/KERNELMODUL/remove_id

Rain_maker
29.07.13, 14:31
Kleine Randbemerkung:


Mittlerweile gehts. Bei meinem Linux (ArchLinux ARM) musste ich gegenüber der oben genannten Anleitung SYSFS duch ATTRS ersetzen.

Das dürfte so ziemlich für jede Linuxdistribution gelten, die nicht mehrere Jahre alt ist, SYSFS in udev-Regeln wird seit langem nicht mehr unterstützt.