
Ubuntu日本語フォーラム
ログインしていません。
この記事は、jackalopeさんのBUFFALO WLI-UC-GNをUbuntu 9.10で使う方法を参考にさせて頂きました。
その上で、Ubuntu 10.04 LTS(linux-2.6.32)を前提にしたBUFFALO WLI-UC-GNMをセットアップする方法について解説しています。
1.ドライバのコンパイル及びインストールを行う為の環境を整えます:
sudo aptitude build-dep linux-source
2.WLI-UC-GNMドライバコンパイル作業用ディレクトリを作ります(以下は一例です。作業用ディレクトリは任意の場所で構いません):
mkdir -p ~/workspace/linux
3.カーネルソースを取得します(Ubuntu 10.04で以下のコマンドにより取得を行うと、linux-2.6.32がダウンロードされます):
cd ~/worksapce/linux
apt-get source linux-image-$(uname -r)
4.以下の2870_main_dev.c.diffに従って、デバイス定義情報を追加します:
2870_main_dev.c.diff
--- linux-2.6.32/drivers/staging/rt2870/2870_main_dev.c 2010-12-18 22:23:19.000000000 +0900
+++ linux-2.6.32/drivers/staging/rt2870/2870_main_dev.c.modified 2010-12-18 19:31:27.000000000 +0900
@@ -143,6 +143,7 @@
{ USB_DEVICE(0x1EDA, 0x2310) }, /* AirTies 3070 */
{ USB_DEVICE(0x1737, 0x0077) }, /* Linksys WUSB54GC-EU v3 */
{ USB_DEVICE(0x0411, 0x015D) }, /* Buffalo Airstation WLI-UC-GN */
+ { USB_DEVICE(0x0411, 0x01A2) }, /* Buffalo Airstation WLI-UC-GNM */
{ } /* Terminating entry */
};
※デバイスのプロダクトIDは、http://www.linux-usb.org/usb.idsを参考にしました。
5.ドライバのコンパイル及びインストールを行います:
make -C /lib/modules/$(uname -r)/build M=$(pwd)/linux-2.6.32/drivers/staging/rt2870 modules && sudo make -C /lib/modules/$(uname -r)/build M=$(pwd)/linux-2.6.31/drivers/staging/rt2870 modules_install
6.インストールしたドライバを利用可能な状態にします:
sudo su
mv /lib/modules/$(uname -r)/kernel/drivers/staging/rt2870/rt2870sta.ko /lib/modules/$(uname -r)/kernel/drivers/staging/rt2870/rt2870sta.ko.bak
mkdir -p /etc/Wireless/RT2870STA
touch /etc/Wireless/RT2870STA/RT2870STA.dat
echo Default > /etc/Wireless/RT2870STA/RT2870STA.dat
depmod -a
exit
7.デバイスを接続して、自動的に認識されればドライバのセットアップ完了です。
オフライン
ご投稿ありがとうございます。
リナックスの初心者ですが、現在Ubuntu11.04でBUFFALO WLI-UC-GNMをインストールしようとています。
私の住んでる所では、WIFIが繋がっていますが、Ubuntuをインストールすれば、GNMのドライバが見つからなくてネットに繋がれません。それで、Windows XPにログインして、VM VirtualboxでUbuntuを使ってます。ドライバのコンパイルができれば、本物のUbuntuに移って、インストールしようと考えてます。
しかし、4段目で迷っています。「2870_main_dev.c」ってファイルは見当たりません。しかも、何をすればいいのか、よく分かりません。
何かアドバイスしていただけませんでしょうか?
よろしくお願いいたします。
オフライン
すみません、cat /etc/issueで確認してみたら、やっぱり10.10です。
ちなみに、有線LANに繋げるチャンスがあって、Ubuntu 10.10を実際にインストールして、アップデートしてみたんですが、やっぱりまだWLI-UC-GNMに対応していませんね。
オフライン
> noritoshiさん
Ubuntu11.04は、linux-2.6.37を現状では利用しているようですので、私のローカルマシンで、以下のコマンドを実行し、2.6.37-rc8のカーネルを作成しましてみました:
wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2
wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.37-rc8.bz2
tar jxvf linux-2.6.36.tar.bz2
bzip2 -d patch-2.6.37-rc8.bz2
patch -d linux-2.6.36 -p1 < patch-2.6.37-rc8
上記カーネルソース内を検索したところ、linux-2.6.36/drivers/net/wireless/rt2x00/rt2800usb.c内に、linux-2.6.32の2870_main_dev.c相等のソースコードが見つかりました。このrt2800usb.cに対して、以下のrt2800usb.c.diffの修正を施します:
rt2800usb.c.diff
--- drivers/net/wireless/rt2x00/rt2800usb.c 2010-12-30 23:52:26.000000000 +0900
+++ drivers/net/wireless/rt2x00/rt2800usb.c.modified 2010-12-30 23:55:41.000000000 +0900
@@ -842,6 +842,7 @@
{ USB_DEVICE(0x0411, 0x0148), USB_DEVICE_DATA(&rt2800usb_ops) },
{ USB_DEVICE(0x0411, 0x0150), USB_DEVICE_DATA(&rt2800usb_ops) },
{ USB_DEVICE(0x0411, 0x015d), USB_DEVICE_DATA(&rt2800usb_ops) },
+ { USB_DEVICE(0x0411, 0x01a2), USB_DEVICE_DATA(&rt2800usb_ops) },
/* Conceptronic */
{ USB_DEVICE(0x14b2, 0x3c08), USB_DEVICE_DATA(&rt2800usb_ops) },
{ USB_DEVICE(0x14b2, 0x3c11), USB_DEVICE_DATA(&rt2800usb_ops) },
この修正を行った上で、デバイスドライバをコンパイルし、適用されてみてはいかがでしょうか。
但し、私の方では、ソース修正箇所の調査を行っただけで、実際にビルドや動作確認を行った分けではありませんので、この修正のみで動かない可能性もありますが、ご了承下さい。
オフライン
#2のnoritoshiさん、
cd ~/workspace/linux ls
の結果を書いてもらえますか?
noritoshiさんがどれだけのLinux初心者なのか全く判断がつかないのですが、まさかLinuxソースがunpackされていない落ち、ってことはないですよね。
kojima_hさん、
ご返信ありがとうございました。教えてくださった通りにやってみたんですけど、やはりまだちょっと迷っています。
rt2800usb.c.diffの修正を施すというのは具体的にどういう事ですか?
勝手に、rt2800usb.c.diffっていうファイルを作って、コードの内容を書き込んで保存して、カーネルコンパイルしてみましたけど、だめでした。
もう一度教えていただけませんでしょうか?
不手際で本当に申し訳ありません。<m(__)m>
所で、いつも新しいカーネルが出たら、同じ事を繰り返すんですか?
よろしくお願いいたします。
オフライン
STGSAGWANさん、
結果はこれです。
2870_main_dev.c.diff linux_2.6.35-24.42.diff.gz linux-2.6.36 linux-2.6.32 linux_2.6.35-24.42.dsc linux-2.6.36.tar.bz2 linux-2.6.35 linux_2.6.35.orig.tar.gz patch-2.6.37-rc8
よろしくお願いします。
オフライン
diffの結果の利用。
--- drivers/net/wireless/rt2x00/rt2800usb.c <--このファイルを変更する 2010-12-30 23:52:26.000000000 +0900
+++ drivers/net/wireless/rt2x00/rt2800usb.c.modified 2010-12-30 23:55:41.000000000 +0900
@@ -842,6 +842,7 @@<---rt2800usb.cとrt2800usb.c.modifiedファイルの行番号と行数
{ USB_DEVICE(0x0411, 0x0148), USB_DEVICE_DATA(&rt2800usb_ops) },<---これが842行目
{ USB_DEVICE(0x0411, 0x0150), USB_DEVICE_DATA(&rt2800usb_ops) },
{ USB_DEVICE(0x0411, 0x015d), USB_DEVICE_DATA(&rt2800usb_ops) },
+ { USB_DEVICE(0x0411, 0x01a2), USB_DEVICE_DATA(&rt2800usb_ops) },<---これがrt2800usb.cには無くてrt2800usb.c.modifiedにある行
/* Conceptronic */
{ USB_DEVICE(0x14b2, 0x3c08), USB_DEVICE_DATA(&rt2800usb_ops) },
{ USB_DEVICE(0x14b2, 0x3c11), USB_DEVICE_DATA(&rt2800usb_ops) },
テキストエディタでrt2800usb.cを開いて845行目に、
{ USB_DEVICE(0x0411, 0x01a2), USB_DEVICE_DATA(&rt2800usb_ops) },
を追加して保存すればよいのだが、この情報はバージョンが2.6.36なのでUbuntu 10.10では行数が異なり960行あたりになります。
オフライン
jackalopeさん、
ご説明ありがとうございました。参考になりました。
rt2800usb.cに追加して、以下のコマンドを使ってインストールしてみました。
make -C /lib/modules/$(uname -r)/build M=$(pwd)/linux-2.6.35/drivers/staging/rt2870 modules && sudo make -C /lib/modules/$(uname -r)/build M=$(pwd)/linux-2.6.35/drivers/staging/rt2870 modules_install
ちなみに、echo $(uname -r)の結果は2.6.35-24-genericです。)
それで、結果の部分を以下に投稿します。
make: Leaving directory `/usr/src/linux-headers-2.6.35-24-generic' make: Entering directory `/usr/src/linux-headers-2.6.35-24-generic' INSTALL /home/lenovo/workspace/linux/linux-2.6.35/drivers/staging/rt2870/rt2870sta.ko DEPMOD 2.6.35-24-generic
それで、以下のコマンドを行いました。
sudo su mv /lib/modules/$(uname -r)/kernel/drivers/staging/rt2870/rt2870sta.ko /lib/modules/$(uname -r)/kernel/drivers/staging/rt2870/rt2870sta.ko.bak mkdir -p /etc/Wireless/RT2870STA touch /etc/Wireless/RT2870STA/RT2870STA.dat echo Default > /etc/Wireless/RT2870STA/RT2870STA.dat depmod -a exit
それで、デバイスを接続してみたのですが、まだ動いていないみたいです。
アドバイスをしていただけませんでしょうか?
よろしくお願いいたします。
オフライン
参照している情報が自分の環境と異なれば同じ事を実行しても期待する結果を得られるとは限りません。
参照している情報の内容を理解して自分の環境に合うように作業しなければなりません。
10.04ではWLI-UC-GNMはカーネルモジュールrt2870sta.koで動いているようなので、10.10でも同じモジュールを使うようにようにしてみるのがいいと思います。
WLI-UC-GNMの情報を追加するファイルは、drivers/staging/rt2860/usb_main_dev.cの148行目あたりになります。
変更、保存後makeを実行します。
一度makeを実行していますので変更部分のみの処理が行われます。
6番の処理も済んでいますので子機を装着すれば無線LANが有効になるはずです。
802.11nで使うのであれば、RT2870STA.datの内容の変更が必要かもしれません。
以下はrt2800usb.koを使う場合です。
make -C...のM=以下は処理するディレクトリを指定しますので、rt2800usb.cがあるディレクトリを指定しなければなりません。
6番目の作業のモジュール名の変更もrt2870sta.koではなく、/lib/modules/.../rt2x00/rt2800usb.koにしなければなりません。
6番目の作業でmkdir -pから3行は必要ありません。
オフライン
jackalopeさん、ありがとうございました。
usb_main_dev.cに以下の情報を追加したら、やっと動きました。
{ USB_DEVICE(0x0411, 0x01A2) }, /* Buffalo Airstation WLI-UC-GNM */
みんなさんのお蔭で成功いたしました。本当にありがとうございました。
オフライン