Skip to content
Advertisement

Bulk message transfer USB Linux

I am at the very beginning to write my own Linux Driver for a dds generator.

I want to write 2 bulk messgages to the generator when der Kernel call the probe function. But I dont know how to call the usb_bulk_msg function. I hope you could me.

hsync

JavaScript

Advertisement

Answer

Kernel is kinda self-explanatory project, so usually you can find an answer right in kernel code.

Function usage

include/linux/usb.h: here you can see signature of this function

JavaScript

drivers/usb/core/message.c: here you can see nice description for this function (parameters, return value, how to use it)

JavaScript

Examples

If you need some examples how to use this function, you can also find them in kernel code, e.g. using LXR site.

If you are novice to USB drivers development, you may also be interested in some tutorials:

Answering question in comments

when I plug in my generator, the kernel execute my driver but then the usbcore loads the usbhid driver, because the generator is an hid device and at the next time the usbcore does not execute my “driver”.

I know two possible ways to fix that:

  1. Using usbhid driver’s “quirks” param.

    Provide your device’s Vendor ID and Product ID as quirks param to usbhid module. You can pass this param via kernel cmdline. Edit /etc/default/grub file, adding something like usbhid.quirks=0xdead:0xbeef:0x4 to GRUB_CMDLINE_LINUX_DEFAULT, and then do:

    JavaScript

    Then reboot.

  2. Using udev.

    Create udev rule for your device with ignore_device option. But it seems like this option was removed in new versions of udev, so you may be unable to use it.

Details:

[1] https://unix.stackexchange.com/questions/55495/prevent-usbhid-from-claiming-usb-device/55590#55590

[2] http://ubuntuforums.org/showthread.php?t=1175001&p=7548820#post7548820

Advertisement