Debian wheezyでBuffaloのWLI-UC-GNMを使う

環境: Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2+deb7u2 i686 GNU/Linux

AirPrint環境を作ろうとしてWLI-UC-GNMにはまる

Debian wheezyのインストールは有線LANを使って済ませたけれども、ファンが回るとけっこう喧しいPCをNTTのルータのそばに置いておくことはできないので、無線LANで接続することにしました。PCIにさしてあるVIA RhineのLANカードはつけたままで、USBの無線LANアダプタを採用(何より値段が安い)ということで、BUFFALO社のWLI-UC-GNMというアダプタを購入。

本体のUSBポートにさせば、自動的に認識され、何もせずにすぐ使えるというのが理想ですが、そうはいきませんでした。Xもあがっていないので、手動設定をします。

$ lsusb
Bus 001 Device 002: ID 0411:01a2 BUFFALO INC. (formerly Melco., Inc.) WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070]

$ lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 2, If 0, Class=vend., Driver=rt2800usb, 12M

認識はされているようです。IDのところにある411がベンダID、1a2がディバイスIDです。BUFFALOの前身はMelcoだったのか、といらぬ感慨に耽りながら、Ralink RT8070と製品名で検索してみると、WLI-UC-GNM の Linuxドライバーインストール(2012-07-10)というページがありました。このページで紹介されているLinuxでkai(wlan設定編) > rt3070staを見ると、Ralink RT8070Vとなっていて、Vの文字が余分です。wiki.debianのrt2800usbではRT8070となっています。同じ製品名でも、内部で使われている部品が異なることは珍しくありませんから、不思議ではないのですが、検索でヒットするページを漠然と見ていると、何もせずに使えたという報告とベンダが提供するドライバで動作したという報告が混在していて、チップの違いだけでなく別の要素もあるような予感がします。この検証は後ほど。

無線LAN設定

wiki.debian.orgのrt2x00のページの記述を見ると(日本語がないので、拙訳です)、こんなことが書いてあります。

このページは、Debianシステムで、Ralink 802.11n USBチップセットを使ったWiFiディバイスのサポートができるようにする方法を述べる。
Debian 6.0 "Squeeze"ユーザは、rt2870staのページでディバイスのサポートを見ていただきたい。
rt2800usbはrt2x00プロジェクトが作成したドライバで、Ralink 802.11n USBチップセットをサポートする。サポートされるディバイスはこのページの最後にリストする。
これは、バージョン2.6.31からLinuxカーネルの幹に統合され、Debian 7.0 "Wheezy"と後のリリースでは、実験段階のrt2870staドライバを置き換えるものである。ファームウェアが必要とされるが、firmware-ralinkパッケージで入手できる。
RT3370とRT3572チップの実験的サポートは、linux-2.6、つまり2.6.38-5で使えるようになった。RT3370のサポートは、Linux 3.0ではもう実験的ではなくなっている。

ファームウェアがインストールされていなかったので、インストールしました。

$ sudo apt-get install firmware-ralink

$ dpkg -L firmware-ralink
/.
/usr
/usr/share
/usr/share/bug
/usr/share/bug/firmware-ralink
/usr/share/bug/firmware-ralink/presubj
/usr/share/doc
/usr/share/doc/firmware-ralink
/usr/share/doc/firmware-ralink/changelog.gz
/usr/share/doc/firmware-ralink/copyright
/lib
/lib/firmware
/lib/firmware/rt2561.bin
/lib/firmware/rt2870.bin
/lib/firmware/rt73.bin
/lib/firmware/rt2561s.bin
/lib/firmware/rt3071.bin
/lib/firmware/rt2661.bin
/lib/firmware/rt2860.bin
/lib/firmware/rt3070.bin
/lib/firmware/rt3090.bin

同じく、wiki.debianのWiFi HowToUseを参考にして設定をしました。

WPA-PSK and WPA2-PSK

GNOMEもKDEも使っていないので、NetworkManagerを使わず、手動で設定します。ネットワークデーモンを止め、/etc/network/interfaceをwpa_supplicantを使うように編集します。

/etc/wpa_supplicant/wpa_supplicant.confがないので、作ります。

# wpa_passphrase SSID PSK > /etc/wpa_supplicant/wpa_supplicant.conf

man wpa_supplicant.confを見ると、様々な設定例が書いてありますが、最低限これだけでもいけるようです。最終的には下のようにしましたが。

ここで、ネットワークデーモンを再起動しても、dhclientでアドレスを取得できません。インターフェイス、wpa_supplicant、dhcpをひとつづつ手動で開始しても、アドレスの取得でタイムアウトして、スリープしてしまいます。たまたま、インターフェイスをスキャンしてみると…

$ /sbin/iwlist scan
lo      Interface doesn't support scanning.

wlan0   No scan results

eth0    Interface doesn't support scanning.

無線を受信できてません。ああ…

MediaTek Inc.のドライバ

ベンダのドライバを試してみることにします。ドライバの配布元は、MediaTek Inc.で、Downloadsというページがあります。RT8070 /RT3070 /RT3370 /RT5370 /RT5372 USB(10/22/2012更新) バージョン2.6.1.3をダウンロードします。ファイル名は2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2で、「Linuxドライバインストール」のページではファイル名を変えるように書いてありますが、そのまま展開できました(*1)

【2014-02-26 追記】
MediaTek 社のページがリニューアルされて、アドレスが変わり、ダウンロードページもメールアドレスを要求するようになったようです。新しいバージョンのドライバを見ていないので、わかりませんが、下の記述は古くなっている可能性があります。
$ tar jxvf 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2

ファイルの修正は3点あります。

  1. archive_root/Makefile
    存在しないディレクトリにコピーしようとして、makeが止まるので、次の行をコメントアウトします。
  2. archive_root/common/rtusb_dev_id.c
    さきほど得たディバイス情報を追加します。
  3. archive_root/os/linux/config.mk
    wpa_supplicantにWPA2-PSKを任せるので、スイッチを有効にします。README_STA_usbの記述を参照。 README_STA_usbを読むと、NetworkManagerかwpa_supplicantのwextコマンドでコントロールする場合は両者をyに、wpa_supplicantでRalinkドライバを使う場合は、後者をnにするように、と書かれています。wpa_supplicantを起動するときに、
    /sbin/wpa_supplicant -D wext
    
    と、wextオプションをつけるか、
    /sbin/wpa_supplicant -D ralink
    
    と、ralinkオプションをつけるかのちがいです。

これでビルドの準備は終了です。

$ make
$ sudo make install

本体は、

/lib/modules/your_kerne_version/kernel/drivers/net/wireless/rt5370sta.ko

に、設定ファイルは、

/etc/Wireless/RT2870STA/RT2870STA.dat

に、それぞれインストールされます。ロードして確認しましょう。

$ sudo service networking stop
$ sudo killall -HUP wpa_supplicant
$ sudo kill dhclient pid
$ sudo modprobe -r rt2800usb
$ sudo echo blacklist rt2800usb >> /etc/modprobe.d/blacklist.conf
$ sudo echo blacklist rt2x00usb >> /etc/modprobe.d/blacklist.conf
$ sudo echo blacklist rt2x00lib >> /etc/modprobe.d/blacklist.conf
$ sudo echo blacklist rt2800lib >> /etc/modprobe.d/blacklist.conf
$ sudo modprobe rt5370sta
$ sudo modinfo rt5370sta
filename:    /lib/modules/3.2.0-4-686-pae/kernel/drivers/net/wireless/rt5370sta.ko
version:     2.5.0.3
lincense:    GPL
description: RT2870 Wireless Lan Linux Driver
author:      Paul Lin
srcversion:  AF10EDBE2D75FC6A4B65A2F
alias:
-- 略 --

$ sudo service networking start

$ lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 2, If 0, Class=vend., Driver=rt2870, 12M

$ /sbin/iwlist scan
ra0       Scan completed :
          Cell 01 - Address: XX:XX:XX:XX:XX:XX
-- 略 --

アドレスが取得できて、ステーションのscanもできています。

BUFFALO WLI-UC-GNMについてのページと情報

とりあえず、Google検索にて、検索文字列«WLI-UC-GNM Linux»でヒットしたページの情報をまとめてみます。長いタイトルは省略しました。あしからず。

紹介サイト OS(kernel) Chipset Vendor ID Device ID Driver
WLI-UC-GNMの… CrunchBang 11(?) RT8070V 0x0411 0x01a2 rt5370sta
Linux Wireless… Ubuntu 10.10 AMD64(?) RT2870 ? ? ?
Ubuntu日本語フォーラム Ubuntu 10.04 LTS(2.6.32) RT2870(?) 0x0411 0x01A2 rt2870sta
Linuxでkai (wlan設定) ?(<2.6.40) RT8070V 0x0411 0x01A2 rt3070sta
Linuxでkai (wlan設定) ?(>3.0) RT8070V 0x0411 0x01A2 rt2800usb(*1)
Ubuntu11.04で… Ubuntu 11.04(2.6.38) RT3070 0x0411 0x01A2 rt2870sta
Linux Mint 13… Linux Mint 13(?) ? 0x0411 0x01A2 rt2800usb
Linux Wireless ? RT3070V 0x0411 0x01a2
rt2800usb(wiki.debian) Debian 7.0(3.2.0) RT8070 0x0411 0x01A2 rt2800usb(*2)
  1. Linuxカーネル3.0(2.6.40)以降の場合。このドライバはファームウェアが必要とある。see also rt2x00 Project. ただし、このページには動作したかどうかの検証がありません。
  2. やはりファームウェアが必要(パッケージになっている)。rt2x00 Projectのもの。

これを見ると、チップは、RT2870、RT3070、RT8070、RT8070Vの四つ(または、三つ?)あって、一部は他のディバイス(たとえば、WLI-UC-GNなど)と共通だったりするようです。一覧表を提供しているサイトもありましたが、カーネルのバージョンとの関係がわかりませんでした。ひょっとすると、rt2800usbがエクスペリメンタルなときに、別のモジュールで動作していたのかもしれません、カーネルモジュールのrt2800usbが導入されて動作するようになったのかもしれません。3.0以上のカーネルの情報がほとんどなかったので、わかりませんが、

役立ったサイト・コマンド

サイト

コマンド

  • dpkg -L package_name
    debパッケージに含まれるファイルをディレクトリ毎に表示する。
  • /sbin/iwlist scan
    無線親機がブロードキャストしているデータを取得する。
  • tar jxvf archive_name
    アーカイブを展開する。オプションは、j: bzip2にフィルタする、x: ファイルを抽出する、v: 処理したファイル名を出力する、f: アーカイブファイルを指定する
  • /sbin/wpa_supplicant
    ネットワーク・インタフェイスを通してWi-Fi機器とネゴシエートするデーモン。
  • modinfo module_name
    読み込まれたカーネルモジュールの情報を出力する。

4 thoughts on “Debian wheezyでBuffaloのWLI-UC-GNMを使う

  1. Pingback: Raspberry Pi 2をWiFiで接続してみる。 | さば技研

  2. Pingback: » Debian GNU/Linux

Leave a Reply