2010-10-15 12 views
22

मैं लिनक्स के लिए एक यूएसबी डिवाइस ड्राइव लिख रहा हूं। यह एक जॉयस्टिक के लिए है। हर बार इसे प्लग करते हैं, लिनक्स एक छुपा ड्राइवर लोड करता है। क्या मैं इसे लोड करने के लिए लिनक्स को लोड करने का एक तरीका है? या कम से कम डिफ़ॉल्ट लोड नहीं?मैं यूएसबी डिवाइस के साथ ड्राइवर को कैसे बांध सकता हूं?

मैं डिफ़ॉल्ट ड्राइवर के अनबिंड में आईडी को प्रतिबिंबित कर सकता हूं और इसे अपने ड्राइवर के बाध्यता में गूंज सकता हूं; लेकिन मुझे कुछ और स्वचालित चाहिए .. धन्यवाद

+0

"लिनक्स लाड एक छुपा चालक" का क्या अर्थ है? –

+0

@ मार्सेलो कैंटोस: मुझे लगता है कि वह लिखना चाहता था "लिनक्स एक छुपा चालक लोड करता है।" छिपा = मानव इंटरफेस डिवाइस। –

+0

यदि आपके पास कर्नेल स्रोत पेड़ की पूर्ण पहुंच है, तो आप ड्राइवर को 'hid_have_special_driver' सरणी' ड्राइवर/hid/hid-core.c' में जोड़ सकते हैं। इससे 'छुपा-जेनेरिक' डिवाइस को अनदेखा कर देगा। लेकिन मुझे बहुत उम्मीद है कि एक ऐसा समाधान है जो मौजूदा मॉड्यूल को संशोधित किए बिना काम कर सकता है, और इसलिए डीकेएमएस या इसी तरह के अतिरिक्त जोड़े गए अतिरिक्त मॉड्यूल के लिए उपयुक्त होगा। दुर्भाग्य से इस उपयोग के मामले में कोई 'usbhid' quirk नहीं प्रतीत होता है। – MvG

उत्तर

10

खुद USB ड्राइवर usbhid

पर पूर्वता ले जा रहा तुम बंधन को रोकने के लिए usbhid ड्राइवर के लिए, आप अपने HID_QUIRK_IGNORE (= 4) सेटिंग का उपयोग कर सकते हैं। , उदाहरण के कार्ल Bielefeldt इस्तेमाल किया साथ रहना कुछ /etc/modprobe.d/*.conf फाइल करने के लिए

options usbhid quirks=0x15c2:0x0043:0x04 

जोड़ने (और शायद अपने initramfs को फिर बनाने)। उस डिवाइस को अनदेखा करने के लिए hid-core बताएगा। तो usbhid इसे देखेगा लेकिन इसे इसके बजाय किसी अन्य ड्राइवर के लिए छोड़ देगा।

खुद HID ड्राइवर hid-सामान्य पर पूर्वता ले जा

हालांकि, अगर आपके दूसरे ड्राइवर एक HID ड्राइवर नहीं एक USB ड्राइवर है, तो आप जरूरतusbhid यूएसबी स्तर पर ड्राइवर के लिए बाध्य करने के लिए, और आप hid-generic से अधिक प्राथमिकता लेने के लिए अपने स्वयं के छुपा ड्राइवर की आवश्यकता है। यही वह समस्या है जिसे मैं अपने आप का सामना कर रहा हूं, और जिसके लिए मुझे अभी तक कोई समाधान नहीं मिला है, बाद में डिवाइस को अनबाइंडिंग और रीबंड करने से कम।

4

Here's इसी तरह की समस्या के लिए एक थ्रेड के साथ एक थ्रेड। संक्षेप में, आप अपने /etc/udev/rules.d फ़ाइलों में से एक के लिए निम्न की तरह कुछ जोड़ें:

SYSFS{idVendor}=="15c2", SYSFS{idProduct}=="0043", MODE="0666", PROGRAM="/bin/sh -c 'echo -n $id:1.0 >/sys/bus/usb/drivers/usbhid/unbind;\ 
echo -n $id:1.1 >/sys/bus/usb/drivers/usbhid/unbind'" 
1

http://lwn.net/Articles/143397/ बहुत ऊपर जवाब है, शायद कुछ और जानकारी के समान है।

+0

लिंक-केवल उत्तर स्टैक ओवरव्लो पर निराश हैं। जवाब में आवश्यक उपयोगी जानकारी होनी चाहिए। लिंक संदर्भ के रूप में अच्छे हैं। –

संबंधित मुद्दे