Skip to content
Snippets Groups Projects
Select Git revision
  • faa3208bdb2efaff3723997b0433204a23bf7a5a
  • master default
  • 2015ss
  • 2014ss
4 results

notes.txt

Blame
  • Forked from Peter Gerwinski / bs
    Source project has a limited visibility.
    notes.txt 3.64 KiB
    |=== : Trennzeichen
    
    # sysfsutils beinhaltet systool -- Anzeige, welche Parameter akzeptiert werden.
    systool -vm usbhid
    
    |===
    
    lsmod # Listen der geladenen Module evtl. einmal ohne dongle und mit dongle in Datei schreiben und mittels diff analysieren, welche Treiber geladen werden.
    Links mit Dongle; Rechts ohne:
    	diff lsmodWithDongle.txt lsmodWithoutDongle.txt 
    	3c3
    	< snd_usb_audio         176128  2
    	---
    	> snd_usb_audio         176128  0
    	52c52
    	< snd                    81920  27 snd_usb_audio,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec_generic,snd_usbmidi_lib,snd_hda_codec,snd_hda_intel,snd_seq_device,snd_hda_codec_analog
    	---
    	> snd                    81920  23 snd_usb_audio,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec_generic,snd_usbmidi_lib,snd_hda_codec,snd_hda_intel,snd_seq_device,snd_hda_codec_analog
    
    |===
    
    dmesg # Beinhaltet auch Informationen, welche Treiber geladen werden.
    	[ 2560.047464] perf interrupt took too long (2521 > 2500), lowering kernel.perf_event_max_sample_rate to 50000
    	[ 3052.284075] usb 3-1: USB disconnect, device number 2
    	[ 3085.016021] usb 3-1: new full-speed USB device number 3 using uhci_hcd
    	[ 3085.278039] usb 3-1: New USB device found, idVendor=1b1c, idProduct=1b27
    	[ 3085.278045] usb 3-1: New USB device strings: Mfr=3, Product=4, SerialNumber=0
    	[ 3085.278049] usb 3-1: Product: Corsair VOID Wireless Gaming Dongle
    	[ 3085.278052] usb 3-1: Manufacturer: Corsair
    	[ 3085.565157] input: Corsair Corsair VOID Wireless Gaming Dongle as /devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.3/0003:1B1C:1B27.0008/input/input18
    	[ 3085.620234] hid-generic 0003:1B1C:1B27.0008: input,hiddev0,hidraw4: USB HID v1.11 Device [Corsair Corsair VOID Wireless Gaming Dongle] on usb-0000:00:1a.0-1/input3
    
    |===
    
    Treiber einem Gerät zuweisen oder Gerät von Treiber trennen:
    cd /sys/bus/usb/drivers/hiddev
    ls
    #B-P:C.I ist die Form von Interface Dateinamen
    B = Bus Nummer, P String der Portnummer, C Konfigurationswert, I Interfacenummer
    # Treiber entladen:
    	echo -n interface-filename > unbind
    # Treiber laden:
    	echo -n interface-filename > bind
    
    |===
    
    lsusb liefert die USB Adresse, an der der USB-Dongle zu erreichen ist:
    lsusb
    	Bus 003 Device 003: ID 1b1c:1b27 Corsair
    
    ls /sys/bus/usb/drivers/hiddev
    	lrwxrwxrwx 1 root root    0 Mai 14 18:26 3-1:1.3 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.3
    
    |===
    
    lsusb -vvv | more # Hochdetailierte Informationen über alle USB Geräte
    Interessant hier: Der Report Descriptor liefert Auskunft über alle Telegramme, die das Gerät als Human Interface Device senden kann und bietet damit die Möglichkeit das Gerät zu betreiben ohne einen speziellen Treiber für dieses spezifische Gerät schreiben zu müssen. Falls der Descriptor nicht zu den in der Realität vorhandenen Daten passt, kann es zu Problemen kommen.
    
    Eine Vermutung von mir: In den HID-Treiben werden Mutexe verwendet. Ich könnte mir vorstellen, dass falls im Descriptor ein Telegramm fälschlicherweise zu lang angemeldet wird, dass ein Mutex für den Lesevorgang blockiert wird und nicht wieder auftaut, da ein zu kurzes Telegramm angekommen ist. (Würde erklären, weshalb Funktionen teilweise noch funktionieren, aber Tasten fälschlicherweise als gedrückt empfunden werden z.B. Eventuell passt die Kommunikation auch nicht mehr, wenn das falsche Telegramm kommt und durch STRG+ALT+F1 und anschließendes zurückwechseln in den xserver werden die Puffer neu initialisiert.
    
    Möglicherweise interessante Treiber, um die Theorie zu bestätigen:
    	snd
    	hid-input 
    	hid-generic
    
    hid-input:
    	Implementiert Kommandos (Keycodes) nach Spek.: usb-hid.c Z:749: USB HUT v1.12, pages 75-84 */