एडिमैक्स वायरलेस यूएसबी के लिए बिल्डिंग वायरलेस ड्राइवर्स: EW-7811UN


33

मैं अपने USB वायरलेस डिवाइस के लिए मॉड्यूल बनाने के लिए दिनों से कोशिश कर रहा हूं।

यह एक एडिमैक्स EW-7811UN है

मुझे डेबियन के लिए मॉड्यूल बनाने पर कई संसाधन मिले हैं, लेकिन आर्क के लिए कोई नहीं। वर्तमान में मैं रास्पबेरी पाई गिटहब पर पाए गए टूलचैन का उपयोग करके क्रॉस-कंपाइल करने का प्रयास कर रहा हूं । ये कदम मैंने उठाए हैं:

  • एडिमैक्स वेबसाइट से ड्राइवर स्रोतों को डाउनलोड किया ।
  • GitHub से कर्नेल स्रोतों को डाउनलोड किया ।
  • एडिमैक्स मेकफाइल में एक विशिष्ट मेक नियम (एडिमैक्स दस्तावेज के अनुसार) बनाया गया:

ifeq ($(CONFIG_PLATFORM_PI), y)
  EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
  ARCH := arm
  CROSS_COMPILE := arm-bcm2708-linux-gnueabi-
  KVER  := 3.1.9-30-ARCH+
  KSRC := /pi-sources/lib/modules/3.1.9-30-ARCH+/build 
  MODDESTDIR := /pi-sources/lib/modules/3.1.9-30-ARCH+/kernel/drivers/net/wireless/
  INSTALL_PREFIX :=
endif
  • KSRC वह निर्देशिका है जिसमें कर्नेल स्रोत हैं।
  • MODDESTDIR वह निर्देशिका है जो आप मॉड्यूल को समाप्त करना चाहते हैं।
  • CROSS_COMPILEमेरा टूलकिन है (जिसे जोड़ा गया है PATH)

पहले प्रयास में makeयह त्रुटि मिलती है:

fatal error: linux/smp_lock.h: No such file or directory

मैंने पाया कि यह एक पुराना हेडर है, और smp.hइस समस्या को ठीक करने के लिए इसे सिम्बल करना चाहिए। हालाँकि, स्रोत त्रुटियों के साथ बिल्ड अभी भी विफल रहता है, जो इस तरह दिखता है:

error: field 'recv_tasklet' has incomplete type

मैंने यह जानने के लिए पर्याप्त संकलन किया है कि क्या बिल्ड नवीनतम कर्नेल संस्करण का समर्थन नहीं करता है, लेकिन यदि ऐसा है तो इसे डेबियन के लिए कैसे बनाया गया है?


अतिरिक्त जानकारी:


मेरे पास एक ही एडाप्टर है, हालांकि अभी तक इसे आज़माने के लिए नहीं मिला है!
शेन हडसन

कृपया मुझे बताएं कि आप इसे कैसे प्राप्त करते हैं और बाद में अपना अनुभव जोड़ते हैं, भले ही यह नकारात्मक हो।
Jivings

@ टॉमस, और अधिक इनाम! सुनिश्चित करें कि एलेक्स इस बार नहीं मिलता है :)
Jivings

जवाबों:


12

क्रॉस-संकलन के लिए निर्देश

  1. एडिमैक्स वेबसाइट से ड्राइवर स्रोतों को डाउनलोड किया ।

  2. GitHub से कर्नेल स्रोतों को क्लोन करें ।

  3. cdअपने कर्नेल स्रोत और में cdमें include/linux। रन

    ln -s smp.h smp_lock.h`.
    
  4. unzipएडिमैक्स डाउनलोड और tar -xzfड्राइवर पैकेज। cdमें driver/rtl...उपनिर्देशिका।

  5. संपादित करें include/rtw_xmit.hऔर #include <linux/interrupt.h>दूसरे के तहत जोड़ें शामिल हैं।

  6. संपादित करें os_dep/osdep_service.cऔर जोड़ें

    #include <linux/semaphore.h>
    #define init_MUTEX(sem)         sema_init(sem, 1)
    

    अन्य में शामिल हैं।

  7. Makefileजोड़ने को संपादित करें

    ifeq ($(CONFIG_PLATFORM_PI), y)
    EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
    ARCH := arm
    CROSS_COMPILE := arm-bcm2708-linux-gnueabi-
    KVER  := 3.1.9-30-ARCH+
    KSRC := ~/pi-sources
    MODDESTDIR := ~/pi-sources/lib/modules/3.1.9-30-ARCH+/kernel/drivers/net/wireless/
    INSTALL_PREFIX :=
    endif
    

समान वर्गों के तहत।

  1. मान arm-bcm2708-linux-gnueabi-{gcc|ld}लेना तुम्हारे रास्ते में है, भागो make CONFIG_PLATFORM_PI=y modules

मॉड्यूल अब संकलित किया जाना चाहिए।


बिल्ड सफल है! लेकिन मॉड्यूल को कहां बनाया जाता है? तो मैं इसे पाई पर कॉपी कर सकता हूं।
जिविंग्स

ड्राइवर पैकेज की जड़ मुझे लगता है।
एलेक्स चेम्बरलेन

1
हम्म, लगता है। अजीब। MODDESTDIRतब की बात क्या है ?
जीवन्त

कोई जानकारी नहीं!!!!!!!!!
एलेक्स चैंबरलेन

रास्पबेरी पाई पर बनाने के लिए इसे प्राप्त करने के लिए मुझे /lib/modules/3.1.9-30-ARCH+/buildनिर्देशिका को कर्नेल स्रोतों से जोड़ना था ।
जिविंग्स

-1

अपने RPi पर /proc/config.gz से config.gz कॉपी करने का प्रयास करें। फिर इसे गुनजाइए और इसका नाम बदलकर .config और ऊपर जैसा बनाइए।


3
क्या आप बता सकते हैं कि यह आपके उत्तर में क्यों उपयोगी है?
जीविंग्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.