2011-08-26 6 views
4

Linux 용 장치 드라이버에서 작업하고 있습니다. 그것은 USB 펜 태블릿입니다. 문제는 드라이버의 프로브 콜백이 호출되지 않는다는 것입니다. dmesg 님의 내용 :Linux USB 장치 드라이버가 프로브되지 않음

generic-usb: probe of 0003:099A:2620.000F failed with error -22 

나는 결코 장치에 연결하지 않습니다. 시스템 드라이버가 내 운전자를 어떤 식 으로든 무시하는 것처럼 보입니까?

내 코드는 insmod 명령/rmmod 명령을 사용하여 올바르게 등록 취소 & 등록되어

#include <linux/module.h> 
#include <linux/kernel.h> 
#include <linux/init.h> 
#include <linux/usb.h> 
#include <linux/slab.h> 

MODULE_DEVICE_TABLE (usb, id_table); 
struct usb_device_id id_table[] = 
{ 
    {USB_DEVICE(0x099a, 0x2620)}, //Zippy Technology Corp. Digi Tablet 
    {0} 
}; 

void dt_disconnect(struct usb_interface *interface) 
{ 
    printk("dt_disconnect called\n"); 
} 

int dt_probe(struct usb_interface *interface, const struct usb_device_id *id) 
{ 
    printk("dt_probe called\n"); 
    return 0; 
} 

static struct usb_driver dt_driver = 
{ 
    .name = "Zippy Technology Corp. Digi Tablet", 
    .probe = dt_probe, 
    .disconnect = dt_disconnect, 
    .id_table = id_table 
}; 

static int __init dt_init(void) 
{ 
    //0 means success 
    int error = usb_register(&dt_driver); 
    if(error) 
     printk("dt_init failed\n"); 

    return 0; 
} 

static void __exit dt_exit(void) 
{ 
    //void 
    usb_deregister(&dt_driver); 
} 

module_init(dt_init); 
module_exit(dt_exit); 

MODULE_LICENSE("GPL"); 

dt_probe가 호출되지 않습니다. 저는 리눅스 2.6.40 (Fedora 15의 3.0 버전)을 사용하고 있습니다.이 문서에 대한 대부분의 문서는 매우 오래된 것이므로 여기서 물어볼 생각입니다. 이견있는 사람?

답변

2

예, usbhid 드라이버가 드라이버를 재정의합니다. 실행중인 커널에서 usbhid 드라이버를 제거해야합니다. 먼저 시스템에서 장치를 분리하고 "modprobe -r usbhid"를 사용하여 usbhid 모듈을 제거합니다. 이제 모듈을 삽입하고 장치를 연결하면 드라이버가 사용됩니다.

+0

'modprobe -r usbhid'가 작동하지 않았지만 아이디어를 얻었습니다. 필자는 좀 더 연구를했고 펜 타블렛에 HID 키보드, HID 마우스 및 HID 프로토콜 (Windows에서 스니핑 한 펜 모드 프로토콜)을 사용하는 것으로 나타났습니다. 그래서 그것은 운전사를 무시하는 그 usbhid와 함께 단지 어 질리게하게되었다. usbhid는 마우스와 키보드를 xinput에 설치하는 것처럼 보이지만 실제로는 작동하지 않습니다. 당신은 내가 패치를 위해 usbhid를 파헤 치거나 다른 방법으로 usbhid를 무시하려고 시도한다고 생각합니까? 나는 usbhid가 패치가 필요하다는 것을 확신하지 못한다. 그러나 나는 태블릿을 작동시키지 못한다. – Alex

+0

http://stackoverflow.com/questions/3389192/register-bind-match-a-device-with-a-driver는 똑같은 질문입니다. – Alex