2011-06-15 156 views
8

我正在爲使用libusb的USB設備編寫設備驅動程序。當我嘗試聲明該設備時,出現錯誤代碼LIBUSB_ERROR_BUSY(-6)。根據文件,這意味着該設備已被要求(link)。libusb接口已經聲明

如何找出哪個驅動程序/程序聲明瞭該設備,更重要的是,我如何才能在聲明該設備後聲明該設備。

代碼片段:

r = libusb_claim_interface(handle[0], 0); 
if (r < 0) { 
    fprintf(stderr, "libusb_claim_interface error %d\n", r); 
    goto out_release; 
} 
printf("claimed interface\n"); 

輸出:

libusb_claim_interface error -6 
+0

我發現這篇文章尋找「_如何找出哪個驅動程序/程序聲稱device_」,所以我想鏈接這個問題:[有沒有辦法找出什麼是使用Linux內核模塊? ](http://stackoverflow.com/questions/448999/is-there-a-way-to-figure-out-what-is-using-a-linux-kernel-module),我認爲這是相關的,因爲它說,不可能看到哪個程序要求驅動程序/模塊。 – sdaau 2013-03-18 19:59:19

回答

0

你叫libusb_set_configuration()libusb_claim_interface()過嗎?

即使在描述符中只有一個配置,也必須調用它。

+0

我確實嘗試過,但得到了完全相同的錯誤(-6)。在終端的'usb-devices'上看到'usb-storage'作爲設備的驅動程序。出於某種原因,該設備正在分配一個驅動程序,我無法防止這種情況發生。我試過使用udev規則。 – jairo 2011-06-20 14:15:32

10

您是否在libusb_claim_interface()之前致電libusb_detach_kernel_driver()?這可能是必要的。

1

該問題很可能是由另一個Linux驅動程序聲明的接口。請致電libusb_detach_kernel_driver()並指定接口號碼,然後您應該能夠連接它。