Hallo liebe Liste, Ich habe hier ein USBgerät, was durch den HID- Treiber "quasi erkannt" und blockiert wird. Somit kann es von den mitgelieferten Treibern nicht erkannt/ erreicht werden. In der Anleitung steht, dass man in der "/usr/src/linux/drivers/usb/input/hid-core.c" die vendor und device ID's als Blacklist- Elemente angegeben werden sollen. Das Problem ist nur, dass bei SUSE die Datei an der angegebenen Stelle nicht existiert und unter "/usr/src/linux/drivers/hid/hid-core.c" bzw. "../drivers/hid/usbhid/hid-core.c" finde ich den Abschnitt mit der Blacklist nicht. Da man aber unter "/etc/modprobe.d/blacklist" auch was zum ignorieren angeben kann, stellt sich nun die Frage: Wo soll ich nun die ID's angeben? Kann man in "/etc/modprobe.d/blacklist" auch ID's angeben, oder nur ganze Module (da stehen ja schon ein paar drin)? -- Mit freundlichen Grüßen Sebastian Reinhardt -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Samstag, 2. Mai 2009 01:11:49 schrieb Sebastian Reinhardt:
Hallo liebe Liste,
Ich habe hier ein USBgerät, was durch den HID- Treiber "quasi erkannt" und blockiert wird. Somit kann es von den mitgelieferten Treibern nicht erkannt/ erreicht werden.
In der Anleitung steht, dass man in der "/usr/src/linux/drivers/usb/input/hid-core.c" die vendor und device ID's als Blacklist- Elemente angegeben werden sollen. Das Problem ist nur, dass bei SUSE die Datei an der angegebenen Stelle nicht existiert und unter "/usr/src/linux/drivers/hid/hid-core.c" bzw. "../drivers/hid/usbhid/hid-core.c" finde ich den Abschnitt mit der Blacklist nicht. Da man aber unter "/etc/modprobe.d/blacklist" auch was zum ignorieren angeben kann, stellt sich nun die Frage: Wo soll ich nun die ID's angeben? Kann man in "/etc/modprobe.d/blacklist" auch ID's angeben, oder nur ganze Module (da stehen ja schon ein paar drin)?
Rein von deiner Beschreibung her handelt es sich dabei um ein modifizieren und neu kompilieren des Kernels. Dafür benötigst du natürlich die installierten Kernel-Quellen (kernel-sources?). Diese liegen dann in /usr/src/kernel-name- Version (oder meist auch mit einem symlink linux auf das passende Verzeichnis). Ob es eine simplere Lösung gibt, ob es wirklich hilft, etc. kann ich jedoch nicht sagen ;) Grüße Michael
Michael Skiba schrieb:
Am Samstag, 2. Mai 2009 01:11:49 schrieb Sebastian Reinhardt:
Hallo liebe Liste,
Ich habe hier ein USBgerät, was durch den HID- Treiber "quasi erkannt" und blockiert wird. Somit kann es von den mitgelieferten Treibern nicht erkannt/ erreicht werden.
In der Anleitung steht, dass man in der "/usr/src/linux/drivers/usb/input/hid-core.c" die vendor und device ID's als Blacklist- Elemente angegeben werden sollen. Das Problem ist nur, dass bei SUSE die Datei an der angegebenen Stelle nicht existiert und unter "/usr/src/linux/drivers/hid/hid-core.c" bzw. "../drivers/hid/usbhid/hid-core.c" finde ich den Abschnitt mit der Blacklist nicht. Da man aber unter "/etc/modprobe.d/blacklist" auch was zum ignorieren angeben kann, stellt sich nun die Frage: Wo soll ich nun die ID's angeben? Kann man in "/etc/modprobe.d/blacklist" auch ID's angeben, oder nur ganze Module (da stehen ja schon ein paar drin)?
Rein von deiner Beschreibung her handelt es sich dabei um ein modifizieren und neu kompilieren des Kernels. Dafür benötigst du natürlich die installierten Kernel-Quellen (kernel-sources?). Diese liegen dann in /usr/src/kernel-name- Version (oder meist auch mit einem symlink linux auf das passende Verzeichnis).
Ob es eine simplere Lösung gibt, ob es wirklich hilft, etc. kann ich jedoch nicht sagen ;)
Grüße Michael
Hallo Michael, Ja, Ich hatte das auch so verstanden, dass ich die Kernelmodule neu bauen muss (das hab ich schon mal für FTDI- USBgeräte gemacht). Die Kernel- Sourcen sind natürlich installiert und der Pfad ist der Symlink auf die aktuelle Version! Der Spaß ist, dass das Gerät (ein USB- gesteuertes FM- Autoradio von www.xtronic.be) unter 11.0 schon mal funktioniert hat. Da ich aber nach einem Update von 11.0 Probleme mit der Erkennung von USB- zu Serial- Konvertern hatte (wurden nicht mehr eingehangen), habe ich lieber gleich mit der 11.1 weitergemacht. Doch nun wird das Gerät erkannt, das Kernelmodul ist für den Kernel kompiliert und "ge-insmod-ed". Aber beim Treiber (z.B. bei "yast2 hwinfo") steht der hid- Treiber drin => sollte sich mit einem Blacklist- Eintrag beheben lassen, oder? Im Anhang mal die dazugehörige README. -- Mit freundlichen Grüßen Sebastian Reinhardt Linux HQCT API Insufficient Documentation V.2 This is document is intended to get your radio up and running in no time. Note, HQCT Module V.2 suffers from a design flaw where almost all functions will block for 100ms regardless of what is going on. This is to protect the radio. V.3 will fix this problem while maintaining an identical API. I. INSTALLATION: ================= You must first compile the driver and api. ~ $ cd hqct2 hqct2 $ make The kernel driver should now be compiled as hqct.ko. You can place the driver in your modules directory and add it to your modules autoload. This is distribution-dependent as far as I am concerned. Log in as root and try inserting the module manually. hqct2 # insmod hqct.ko Running dmesg should show that the driver has been initialized: hqct2 # dmesg | tail ... ... HQCT Driver initialized. Plug the HQCT radio into a USB port on your computer. It is OK if the radio is already plugged in from before you ran insmod. Now check your kernel log: hqct2 # dmesg | tail ... ... HQCT Driver initialized. usb 2-1: new full speed USB device using uhci_hcd and address 5 HQCT: Probe /home/llama/projects/hqct2/hqct.c: USB hqct device now attached to USBhqct-192 HQCT: AlignFr = {87500, 90900, 94300, 97700, 101200, 104600, 108000} HQCT: DAAs = {79, 77, 75, 73, 72, 72, 74} Sometimes it may take a minute for the driver to read the EEPROM data and extract the AlignFr and DAAs, so if you do not see all the lines above then wait a few seconds and try dmesg again. If you see "usb fu-bar: new full speed USB device using ..." but you do not see ".../hqct.c: USB hqct device now attached to blah.." then some other device driver is claiming the device. If you have hiddev installed in your kernel then you must either disable it if possible, or add HQCT to the black list. (Optional) Adding HQCT to the hiddev blacklist: In your linux kernel source tree, edit the file drivers/usb/input/hid-core.c with your favorite text editor. Search for "hid_blacklist". A few lines above this line you will see a giant list of defines. Add the following two lines to the bottom of the list: #define USB_VENDER_ID_DATALEX 0x04d8 #define USB_DEVICE_ID_HQCT 0x000a Now, find hid_blacklist[] and add the following line to the end of the list: { USB_VENDER_ID_DATALEX, USB_DEVICE_ID_HQCT, HID_QUIRK_IGNORE } So, the bottom of this list should look something like: ... { USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD, HID_QUIRK_BADPAD }, { USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD, HID_QUIRK_BADPAD }, { USB_VENDER_ID_DATALEX, USB_DEVICE_ID_HQCT, HID_QUIRK_IGNORE } { 0, 0 } Now compile your kernel, install it, and reboot. (Optional) Creating HQCT device file: For some reason the /dev/hqct0 device file may not be created for your. This depends on how you have the /dev filesystem configured. If this is the case, simply run: ~ # mknod /dev/hqct0 c 180 192 II. TESTING: ============ You can test the radio's basic functionality by running the demo application. The user you use must have permission to access the hqct device file. Setting user permissions depends on how you are using /dev. hqct2 $ ./demo /dev/hqct0 This is a very trivial program that begins by seeking the radio. Press 'c' to select the current frequency or any other key to seek the next. You are then able to set the loudness, volume, and demonstrates canceling a seek. Note, try to find a range with few stations so you have time to try the cancel. Eventually the demo program will let you control the radio from the command-line. III. DEVELOPMENT: ================= I am always looking for someone to help with development. If you are writing a program that interfaces with the HQCT radio, then you will need to link to hqctapi.o and include hqctapi.h for function declarations. You should find all the documentation you need inside hqctapi.c. Be sure to use the #defines found in hqctapi.h when using the hqct functions when applicable. Please email me if you have any comments, questions, or contributions. More functions can easily be added to modify the TEF string. -PG
Ja, Ich hatte das auch so verstanden, dass ich die Kernelmodule neu bauen muss (das hab ich schon mal für FTDI- USBgeräte gemacht). Die Kernel- Sourcen sind natürlich installiert und der Pfad ist der Symlink auf die aktuelle Version! Der Spaß ist, dass das Gerät (ein USB- gesteuertes FM- Autoradio von www.xtronic.be) unter 11.0 schon mal funktioniert hat. Da ich aber nach einem Update von 11.0 Probleme mit der Erkennung von USB- zu Serial- Konvertern hatte (wurden nicht mehr eingehangen), habe ich lieber gleich mit der 11.1 weitergemacht. Doch nun wird das Gerät erkannt, das Kernelmodul ist für den Kernel kompiliert und "ge-insmod-ed". Aber beim Treiber (z.B. bei "yast2 hwinfo") steht der hid- Treiber drin => sollte sich mit einem Blacklist- Eintrag beheben lassen, oder?
Wenn du denkst, dass ein einfaches blacklisten hilft, dann probier doch mal einen Eintrag in /etc/modprobe.d/blacklist zu machen. Oder habe ich was komplett falsch vertanden? Gruß, Felix
Felix Lemke schrieb:
Ja, Ich hatte das auch so verstanden, dass ich die Kernelmodule neu bauen muss (das hab ich schon mal für FTDI- USBgeräte gemacht). Die Kernel- Sourcen sind natürlich installiert und der Pfad ist der Symlink auf die aktuelle Version! Der Spaß ist, dass das Gerät (ein USB- gesteuertes FM- Autoradio von www.xtronic.be) unter 11.0 schon mal funktioniert hat. Da ich aber nach einem Update von 11.0 Probleme mit der Erkennung von USB- zu Serial- Konvertern hatte (wurden nicht mehr eingehangen), habe ich lieber gleich mit der 11.1 weitergemacht. Doch nun wird das Gerät erkannt, das Kernelmodul ist für den Kernel kompiliert und "ge-insmod-ed". Aber beim Treiber (z.B. bei "yast2 hwinfo") steht der hid- Treiber drin => sollte sich mit einem Blacklist- Eintrag beheben lassen, oder?
Wenn du denkst, dass ein einfaches blacklisten hilft, dann probier doch mal einen Eintrag in /etc/modprobe.d/blacklist zu machen. Oder habe ich was komplett falsch vertanden?
Gruß, Felix
Hallo, Nein Felix, das hast Du schon richtig erkannt! Es geht um ein "blacklisten". Ich habe nur das Problem, dass, soweit ich das verstanden habe, nur ganze Treiber in der "/etc/modeprobe.d/blacklist" ausschließen kann? Außerdem finde ich, wie bereits erwähnt, die Abschnitte in der angegebenen Quelldatei nicht. Da liegt das eigentliche Problem! Also, wo kann/ soll ich die ID's eintragen? -- Mit freundlichen Grüßen Sebastian Reinhardt -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
Felix Lemke
-
Michael Skiba
-
Sebastian Reinhardt