2009年11月21日土曜日

Ubuntu kernel 2.6.31.x で Buffalo WLI-UC-GN を動かす

kernel 2.6.31 に変えてから、WLI-UC-GN のドライバをコンパイルするときに、下記のエラーが出るようになりました。

make[1]: Entering directory `/usr/src/linux-2.6.31.6'
 CC [M]  /home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.o
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c: In function 'RtmpOSNetDevAttach':
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c:1510: error: 'struct net_device' has no member named 'open'
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c:1511: error: 'struct net_device' has no member named 'stop'
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c:1512: error: 'struct net_device' has no member named 'hard_start_xmit'
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c:1513: error: 'struct net_device' has no member named 'do_ioctl'
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c:1519: error: 'struct net_device' has no member named 'get_stats'
/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.c:1553: error: 'struct net_device' has no member named 'validate_addr'
make[2]: *** [/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux/../../os/linux/rt_linux.o] Error 1
make[1]: *** [_module_/home/masao/work/2009_1106_RT3070_Linux_STA_V2.1.1.0/os/linux] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.31.6'
make: *** [LINUX] Error 2

パッチを当てるとコンパイルが通るようになります。

1. 下記の場所から最新ドライバをダウンロードする (RT3070USB(RT307x) を選択)

http://www.ralinktech.com/support.php?s=2

2. ダウンロードしたファイルを展開する。

$ tar jxvf 2009_1110_RT3070_Linux_STA_v2.1.2.0.tar.bz2

3. 下記の場所から rt3070-2.6.31-compile.patch.gz をダウンロードする

http://www.megaupload.com/?d=2NDDOFTR
(予備) http://lists.rpmfusion.org/pipermail/rpmfusion-commits/2009-August/006214.html
(予備) rt3070-2.6.31-compile.patch.gz

4. パッチを当てる

$ cd 2009_1110_RT3070_Linux_STA_v2.1.2.0/
$ gunzip -c ../rt3070-2.6.31-compile.patch.gz | patch -p1

5. os/linux/config.mk を編集する

$ vi os/linux/config.mk
# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=n

# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n

を以下のように修正する (WPA_SUPPLICANT 関連オプションを ”y” に変更)

# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=y

# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

6. WLI-UC-GN を PC の USB ポートに挿入し、デバイス ID を調べる

$ lsusb
...
Bus 001 Device 003: ID 0411:015d MelCo., Inc.
...

7. 2009_1110_RT3070_Linux_STA_v2.1.2.0/os/linux/usb_main_dev.c を編集する

$ vi os/linux/usb_main_dev.c
struct usb_device_id rtusb_usb_id[] 
に以下を追加
{USB_DEVICE(0x0411,0x015d)}, /* Melco */

8. make & make install する。

# make
# make install

アクセス解析を見ていると、無線 LAN 関係は、困っている人が多いようだ。

● WLI-UC-GN, 2.6.31, error: 'struct net_device' has no member named 'open',

1 件のコメント:

もちき さんのコメント...

いつもお世話になってます。
こちらのページのおかげで無事に動かすことができました!ありがとうございました。