Find the answer to your Linux question:
Results 1 to 3 of 3
First off, this is my first post in the forums. This shouldn't be too hard of a question, I feel like I'm just missing something simple but obvious. So I ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    Just Joined!
    Join Date
    Jul 2008
    Posts
    7

    [SOLVED] Changing a USB Device id in a kernel driver module


    First off, this is my first post in the forums.

    This shouldn't be too hard of a question, I feel like I'm just missing something simple but obvious.

    So I have a usb device that has a SI CP2101 Serial to USB Converter on board. It can use the cp2101.ko kernel module, and we have used it in the past.

    By default the kernel module has a list of IDs associated with it. The ID of our device, however, is not in the list. We would need to add it to the driver and recompile it.

    My question is: Can you dynamically assign a device that does not have a driver associated with it (or the kernel doesn't know which driver to associate with it) without recompiling the kernel module? I have seen people mention that you can 'create a simple hotscript to assign the module driver to a device' but can't figure out what tool I should be using. (See the included references for the device ID)

    ... and if this is impossible whats the simplest way to compile this module? Do I only need the kernel headers? Do I need to recompile the module inside the kernel source build tree, or can I build it by itself with just gcc -c?

    Thanks!
    Blaine

    References:
    Device ID: (Device 007)
    blaine:~$ lsusb
    Bus 005 Device 001: ID 0000:0000
    Bus 003 Device 001: ID 0000:0000
    Bus 004 Device 002: ID 058f:9360 Alcor Micro Corp.
    Bus 004 Device 001: ID 0000:0000
    Bus 002 Device 001: ID 0000:0000
    Bus 001 Device 007: ID 0c6c:8021
    Bus 001 Device 004: ID 046d:c00e Logitech, Inc. M-BJ69 Optical Wheel Mouse
    Bus 001 Device 001: ID 0000:0000
    Code:
    Kernel Module Driver default device list (cp2101.c):
    static struct usb_device_id id_table [] = {
            { USB_DEVICE(0x08e6, 0x5501) }, /* Gemalto Prox-PU/CU contactless smartcard reader */
            { USB_DEVICE(0x0FCF, 0x1003) }, /* Dynastream ANT development board */
            { USB_DEVICE(0x0FCF, 0x1004) }, /* Dynastream ANT2USB */
            { USB_DEVICE(0x10A6, 0xAA26) }, /* Knock-off DCU-11 cable */
            { USB_DEVICE(0x10AB, 0x10C5) }, /* Siemens MC60 Cable */
            { USB_DEVICE(0x10B5, 0xAC70) }, /* Nokia CA-42 USB */
            { USB_DEVICE(0x10C4, 0x803B) }, /* Pololu USB-serial converter */
            { USB_DEVICE(0x10C4, 0x8053) }, /* Enfora EDG1228 */
            { USB_DEVICE(0x10C4, 0x8066) }, /* Argussoft In-System Programmer */
            { USB_DEVICE(0x10C4, 0x807A) }, /* Crumb128 board */
            { USB_DEVICE(0x10C4, 0x80CA) }, /* Degree Controls Inc */
            { USB_DEVICE(0x10C4, 0x80DD) }, /* Tracient RFID */
            { USB_DEVICE(0x10C4, 0x80F6) }, /* Suunto sports instrument */
            { USB_DEVICE(0x10C4, 0x813D) }, /* Burnside Telecom Deskmobile */
            { USB_DEVICE(0x10C4, 0x814A) }, /* West Mountain Radio RIGblaster P&P */
            { USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */
            { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */
            { USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */
            { USB_DEVICE(0x10C4, 0x81E2) }, /* Lipowsky Industrie Elektronik GmbH, Baby-LIN */
            { USB_DEVICE(0x10C4, 0x81E7) }, /* Aerocomm Radio */
            { USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */
            { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
            { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
            { USB_DEVICE(0x10C5, 0xEA61) }, /* Silicon Labs MobiData GPRS USB Modem */
            { USB_DEVICE(0x13AD, 0x9999) }, /* Baltech card reader */
            { USB_DEVICE(0x16D6, 0x0001) }, /* Jablotron serial interface */
            { } /* Terminating Entry */
    };

  2. #2
    Just Joined!
    Join Date
    Jul 2008
    Posts
    7
    What about a hotplug script? Is anyone familiar with hotplug and how I could use it for this?

  3. #3
    Just Joined!
    Join Date
    Jul 2008
    Posts
    7
    Meh, looks like it was a tougher problem than I thought. I just recompiled the kernel module and got on with life

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •