2011-12-05 18 views
7

को USB ड्राइवर आवंटित करने के लिए यह सवाल है दो गुना:लिनक्स: कैसे डिवाइस

1- कैसे आप मैन्युअल रूप से एक यूएसबी डिवाइस से एक ड्राइवर को अलग और इससे अलग देते हैं? उदाहरण के लिए, मेरे पास एक डिवाइस है जो कनेक्ट होने पर स्वचालित रूप से यूएसबी-स्टोरेज ड्राइवर का उपयोग करता है।

// usbview उत्पादन

Vendor Id: xxxx 
Product Id: xxxx 
... 
    Number of Interfaces: 2 
    Interface Number: 0 
     Name: usb-storage 
     Number of Endpoints: 2 
     ... 
    Interface Number: 1 
     Name: (none) 
     Number of Endpoints: 2 
     ... 

मैं USB-भंडारण ड्राइवर का उपयोग नहीं करना चाहते हैं, तो मैं एक आवेदन मेजबान जिसमें मैं libusb लाइब्रेरी का उपयोग USB-भंडारण चालक अलग करने पर चल रहे हैं और फिर मैं इंटरफ़ेस का दावा करता हूं। मैं फिर अपने यूएसबी डिवाइस पर चल रहे अनुप्रयोगों और मेरे मेजबान लिनक्स सिस्टम पर डेटा भेज सकता हूं।

आप किसी एप्लिकेशन के बाहर मैन्युअल रूप से ड्राइवर को कैसे अलग करते हैं?

2- मैं स्वचालित रूप से डिवाइस प्लगइन पर संलग्न करने के लिए ड्राइवर को कैसे निर्दिष्ट करूं। वर्तमान में डिवाइस अनुमतियों को स्वचालित रूप से सेट करने के लिए मेरे पास udev नियम सेटअप है।

SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", MODE="0666" 

क्या मैं यूएसबी डिवाइस पर विशिष्ट इंटरफेस को ड्राइवरों को असाइन करने के लिए udev नियमों का उपयोग कर सकता हूं? उदाहरण के लिए, यदि मैं यूएसबी-स्टोरेज के बजाय इंटरफ़ेस 0 पर स्वचालित रूप से यूएसबीनेट मॉड्यूल का उपयोग करना चाहता था, तो क्या यह udev में संभव है?

धन्यवाद,

(मैं एक छोटे से कैसे काम करता है StackExchange के साथ विभिन्न साइटों है या अगर वे सब एक ही हैं। यह एक लिनक्स सवाल यह है तो यह भी यूनिक्स & लिनक्स पर पोस्ट किया गया था के बारे में उलझन में हूँ। माफ कर दो मुझे अगर इसे यहां भी पोस्ट नहीं किया जाना चाहिए, लेकिन स्टैक ओवरव्लो भी लिनक्स को संभालता है, तो ...)

+0

** यूनिक्स और लिनक्स ** पर इसी तरह का प्रश्न http://unix.stackexchange.com/questions/13964/prevent-claiming-of-novelty-usb-device-by-usbhid-so-i-can-control -it-with-libusb –

+0

@AlessandroPezzato, मैंने उस लेख को पढ़ा और यह समान है, लेकिन मेरी समस्या का समाधान नहीं है। जैसा कि मैंने अपने प्रश्न में कहा था, मेरे पास एक ऐसा एप्लिकेशन है जिसे मैं चला सकता हूं जो इंटरफ़ेस को अलग करने और दावा करने के लिए libusb API का उपयोग करता है।लेकिन मुझे यह जानने की जरूरत है कि कमांड प्रॉम्प्ट से एलकेएम को कैसे अलग करें और स्वचालित रूप से एप्लिकेशन स्पेस के बाहर udev के माध्यम से कैसे संलग्न करें। – linsek

उत्तर

8

यह प्रश्न एक यूएसबी डिवाइस की तरह लगता है जिसमें एक छोटी फ्लैश डिस्क है जिसमें विंडोज चालक है, लेकिन वास्तव में यह है नेटवर्क एक्सेस डिवाइस का एक प्रकार (यूएमटीएस मॉडेम मेरे दिमाग में आता है)। यदि ऐसा है, तो USB_ModeSwitch का उपयोग करने का प्रयास करें, जिसमें यूएसबी डिवाइस का डेटाबेस और कमांड और डेटा शामिल है जिसका उपयोग डिवाइस को "स्टोरेज मोड" से "नेटवर्क एक्सेस मोड" में स्थानांतरित करने के लिए किया जाना चाहिए। यदि डिवाइस डेटाबेस में कॉन्फ़िगर नहीं किया गया है, तो Usb Sniffer for Windows का उपयोग यूएसबी यातायात का पता लगाने और आवश्यक कमांड/डेटा कॉम्बो निकालने के लिए विंडोज पर किया जा सकता है।

usb_modeswitch का स्वचालन, ताकि जब आप अपने डिवाइस में प्लग करते हैं तो यह यूडवी नियमों का उपयोग करके किया जा सकता है। यदि आप फेडोरा या उबंटू आधारित वितरण का उपयोग कर रहे हैं, तो यह आपके लिए संभाला जाता है जब आप usb_modeswitch प्रदान करने वाले पैकेज इंस्टॉल करते हैं (क्षमा करें मुझे SUSE के बारे में कोई जानकारी नहीं है लेकिन मुझे लगता है कि यह समान है)। फेडोरा में यह पैकेज use_modeswitch_data है, जो एक प्रदान करता है usb_modeswitch cmd और आवश्यक नियम फ़ाइलों के लिए रैपर।

यदि आप वास्तव में ड्राइवरों को यूएसबी डिवाइस को बाध्य/अनबाइंड करना चाहते हैं, तो this LWN article देखें। रूट के रूप में, echo $usbid > /sys/bus/usb/drivers/usb-storage/unbind "यूएसबी-स्टोरेज" ड्राइवर से $usbid के साथ यूएसबी डिवाइस को अनबाइंड करेगा। उसी आदेश का उपयोग करते हुए, unbind के बजाय bind का उपयोग करके, डिवाइस को ड्राइवर को बाध्य करने का प्रयास करेगा। लेकिन ध्यान रखें कि किसी डिवाइस को बांधने के लिए यह कोई समझ नहीं आता है (और काम नहीं करेगा) जो एक यूएसबीनेट ड्राइवर को स्टोरेज डिवाइस की तरह कार्य करता है।

+2

यदि आप वास्तव में ड्राइवरों को यूएसबी डिवाइस को बाध्य/अनबाइंड करना चाहते हैं, तो इसे देखें [एलडब्लूएन लेख] (http://lwn.net/Articles/143397/)। # echo $ usbid>/sys/bus/usb/drivers/usb-storage/unbind "यूएसबी-स्टोरेज" ड्राइवर से यूएसबी डिवाइस के साथ यूएसबी डिवाइस को अनबिंड करेगा। एक ही cmdline, लेकिन unbind के बजाय "बाइंड" का उपयोग करके, डिवाइस को ड्राइवर को बाध्य करने का प्रयास करेगा। लेकिन ध्यान रखें कि किसी डिवाइस को बांधने के लिए यह कोई समझ नहीं आता है (और काम नहीं करेगा) जो एक यूएसबीनेट ड्राइवर को स्टोरेज डिवाइस की तरह कार्य करता है। –

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