PCがあれば何でもできる!

へっぽこアラサープログラマーが、覚えたての知識を得意げにお届けします

Ubuntu 14.04(Kernel 3.13)にPLANEXの無線LAN子機GW-900Dのドライバをインストール

昨年から、Ubuntu 12.04の入ったデスクトップ端末は、無線LAN子機でネットに繋いでおりました。

ただ、最近になって大分環境も汚くなってきたので、OSを再インストールしよう。 そしてついでに、Ubuntuを14.04にアップグレードしよう。

そう思ったのが事の始まりでした。

子機のドライバが入らねぇ…、ネットに繋がらねぇ… orz

PLANEXの最新ドライバでチャレンジ

公式サイトからLinux用ドライバ(v4.2.5)をダウンロードし、install.shを実行。

しかし、以下のエラー。

$ cd /work/RTL8812AU_linux_v4.2.5_10640.20140303
$ sudo sh install.sh

#〜〜〜 省略 〜〜〜

make ARCH=arm CROSS_COMPILE=/usr/src/bin/arm-none-linux-gnueabi- -C /usr/src/Mstar_kernel/3.1.10/ M=/work/RTL8812AU_linux_v4.2.5_10640.20140303/driver/rtl8812AU_linux_v4.2.5_r10640.20140303  modules
make: *** /usr/src/Mstar_kernel/3.1.10/: そのようなファイルやディレクトリはありません.  中止.
make: *** [modules] エラー 2

Mstar_kernelという、まったく身に覚えのないディレクトリ^^;

Googleで検索するも、7件しかヒットせず完全にお手上げ状態…。

しかし有線接続は、部屋の配置的にまず不可能。諦めるわけにはいきません。

PLANEXのやや古いドライバでチャレンジ

そこで、たまたまドライブに残っていたv4.2.3のドライバを、ダメ元で試してみました。

するとさっきとはまた異なるエラーが発生。

$ cd /work/RTL8812AU_linux_v4.2.3
$ sudo sh install.sh

#〜〜〜 省略 〜〜〜

/work/RTL8812AU_linux_v4.2.3/driver/rtl8812AU_8821AU_linux_v4.2.3_8123.20130705/os_dep/linux/os_intfs.c:355:3: error: implicit declaration of function ‘create_proc_entry’ [-Werror=implicit-function-declaration]
   rtw_proc=create_proc_entry(rtw_proc_name, S_IFDIR, init_net.proc_net);

〜〜〜 省略 〜〜〜

make: *** [modules] エラー 2

こちらのサイトによると、Linuxカーネル3.10から使えなくなってる関数があるとのこと。

だからUbuntu 12.04では何事もなく上手く行っていたのですね、ふむふむ。

GitHubの最新のソースでチャレンジ

PLANEXのinstall.shの中身を見ると、何の事はない、driverディレクトリに入っているオープンソースのドライバを、ソースからビルドしているだけでした。

もしかして最新ならきちんと対応されているかも。ということで、GitHubから最新ソースをダウンロードして再チャレンジ。

対象のGitHubのページはこちら

PLANEXのinstall.shは、driverディレクトリ内に存在するtar.gzファイルを解凍し、makeを開始する仕組みですが、*.tar.gzとワイルドカードでアクセスしているため、拡張子さえ一致していれば、ファイル名は何でも良いようでした。

その特性を利用し、driverディレクトリのソースを差し替えて、install.shを実行します。

$ cd /work/RTL8812AU_linux_v4.2.5_10640.20140303/driver
$ rm rtl8812AU_linux_v4.2.5_r10640.20140303.tar.gz   #元のドライバを削除
$ wget https://github.com/gnab/rtl8812au/archive/master.zip
$ unzip master.zip
$ rm master.zip
$ tar cfvz rtl8812au-master.tar.gz rtl8812au-master --remove-files
$ cd ..
$ sudo sh install.sh

これで無事にインストール完了!