EdimaxワイヤレスUSB用のワイヤレスドライバーの構築:EW-7811UN


33

USBワイヤレスデバイス用のモジュールを構築するために、何日も試行錯誤を繰り返してきました。

それはEDIMAX EW-7811UN

Debian用のモジュールの構築に関するいくつかのリソースを見つけましたが、Arch用のリソースはありません。現在、Raspberry Pi GitHubにあるToolChainを使用してクロスコンパイルを試みています。これらは私がとったステップです:

  • Edimax Webサイトからドライバーソースをダウンロードしました。
  • GitHubからカーネルソースダウンロードしました。
  • Edimax MakeFileに特定のmakeルールを作成しました(Edimaxのドキュメントに従って)。

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

ビルドが最新のカーネルバージョンをサポートしていないかのように見えるように十分なコンパイルを行いましたが、そうであれば、Debian用にどのようにビルドされたのでしょうか?


追加情報:


私は同じアダプターを持っていますが、まだ試してはいません!
シェーンハドソン

どうやってそれがうまくいくかを教えてください、そしてたとえそれが否定的であっても、後であなたの経験を追加してください。
Jivings

@トーマス、もっとバウンティ!今回はアレックスがそれを取得しないようにしてください:)
Jivings

回答:


12

クロスコンパイルの手順

  1. Edimax Webサイトからドライバーソースをダウンロードしました。

  2. GitHubからカーネルソースクローンします。

  3. cdカーネルソースとcdinclude/linux。走る

    ln -s smp.h smp_lock.h`.
    
  4. unzipEdimaxダウンロードとtar -xzfドライバーパッケージ。サブディレクトリ。cddriver/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ます。

これでモジュールがコンパイルされます。


ビルドが成功しました!しかし、モジュールはどこに構築されますか?それでPiにコピーできます。
Jivings

ドライバーパッケージのルートだと思います。
アレックスチェンバレン

1
うーん、そこにいるようです。奇妙な。その時のポイントは何MODDESTDIRですか?
Jivings

わからない!!!!!!!!!
アレックスチェンバレン

これをRaspberry Piでビルドするには、/lib/modules/3.1.9-30-ARCH+/buildディレクトリをカーネルソースにシンボリックリンクする必要もありました。
-Jivings

-1

RPiの/proc/config.gzからconfig.gzをコピーしてみてください。次に、それをgunzipし、.configに名前を変更して、上記のように作成します。


3
これがあなたの答えになぜ役立つのかを述べていただけますか?
Jivings
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.