PLANEX GW-450D KATANAをLinux(CentOS6.5)で動かす

PLANEX GW-450D KATANAをLinux(CentOS6.5)で動かすhosiiのメモ帳Linuxでも無線LANを使いたい今日この頃。どうせなら一番新しい無線LAN規格の11acを搭載した製品をと獲物を絞り、電波の受信感度が良さそうな「PLANEX GW-450D KATANA」を導入する事にした。
PLANEX 無線LAN USBアダプタ カッ飛び! 11ac USB2.0 5GHz対応 可動式 GW-450D-KATANA

Linux用のドライバは存在するものの、導入に一苦労したのでそのときのメモ。適当にやっている部分もあるので変な手順があったらアドバイスください。

前提条件
OS:CentOS6.5
ネットワーク管理サービス:network(NetworkManagerは使わない)
無線LAN接続ツール:wpa_supplicant
無線LAN方式:WPA2-PSK
暗号化方式:TKIP/AES-CCMP

まずはドライバを入手する。プラネックスのサイトにあるドライバは古い物なので、アダプタ搭載チップのメーカーであるMediaTek社のサイトから最新版を入手する。作業端末でダウンロードしてscpで対象マシンに送るなり、対象マシンのGUI上でブラウザからダウンロードするなりご自由に。

http://www.mediatek.com/_en/07_downloads/01_windows.php?sn=501
「MT7610U USB」をクリックし、ページ下部の名前とメールアドレスを入力。「Submit」をクリックするとダウンロードが開始される。

以下無線LANアダプタを導入するマシンでの作業。ドライバをインストールする。

## makeを実行するためのパッケージ類。普段make作業をするユーザなら入っていると思うけど念のため
yum install -y gcc make kernel kernel-devel

## 今回は/tmpを作業ディレクトリとする
cd /tmp

##ダウンロードしたファイルがある事を確認
ls | grep mt7610u
  mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2
tar jxvf mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2
cd mt7610u_wifi_sta_v3002_dpo_20130916

## USBの無線LANアダプタをマシンに挿した状態で認識されているかを確認
lsusb | grep PLANEX
  Bus 002 Device 003: ID 2019:ab31 PLANEX

## デバイスIDをドライバソースに追加
vim common/rtusb_dev_id.c
  43行目あたり、endifの上に以下の1行を追加
 {USB_DEVICE(0x2019,0xab31)},

## wpa_supplicantの使用設定を追加
vim os/linux/config.mk
  以下の2部分をそれぞれ変更
  HAS_WPA_SUPPLICANT=n → yに変更
  HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n → yに変更

## ドライバのmakeとインストール
make
cp os/linux/mt7650u_sta.ko  /lib/modules/`uname -r`/kernel/drivers/net/wireless/
mkdir -p /etc/Wireless/RT2870STA
cp RT2870STA.dat  /etc/Wireless/RT2870STA/

## 設定ファイルを編集
vim /etc/Wireless/RT2870STA/RT2870STA.dat
  以下のように一部項目を変更
  CountryRegion=1
  CountryCode=JP
  SSID= (空の状態にしておく)
  WirelessMode=9 (11bgnの場合。11aにも対応している環境の人は"5"にすると11abgnモードになる)
  Channel=0
  AuthMode=WPA2PSK ("WEPAUTO", "OPEN", "SHARED", "WPAPSK", "WPA2PSK", "WPANONE"
の中から自分の環境を選ぶ)
  EncrypType=AES ("NONE", "WEP", "TKIP", "AES"の中から自分の環境を選ぶ)
  WPAPSK= (空の状態にしておく)

## デバイス名をra0として使えるようにmodprobe設定ファイルにaliasを書いてやる
vim /etc/modprobe.d/99-local.conf (存在しなければ新規に作成)
  以下を追加
  alias ra0 mt7650u_sta

## ドライバを読み込み
depmod -a
modprobe mt7650u_sta
lsmod | grep mt7650u_sta
  mt7650u_sta           928219  1 

## ra0が認識されているか確認
ifconfig -a | grep ra0

ドライバのインストールはここまで。次に、networkサービスの設定ファイルを作成してやる。

vim /etc/sysconfig/network-scripts/ifcfg-ra0
## 以下の内容で保存(固定IPの場合。LAN内のIPレンジが異なる人、DHCPを使いたい人は適宜修正してください)
DEVICE=ra0
ONBOOT=yes
BOOTPROTO=none
TYPE=Wireless
USERCTL=yes
IPADDR=192.168.1.2
NETMASK=255.255.255.0
NETWORK=192.168.1.0

このままでもra0をifupすることはできるが、暗号化環境の無線LANに繋げるためwpa_supplicantを設定してやる。

vim /etc/sysconfig/wpa_supplicant
  ## 以下のように変更
  INTERFACES=""
  ↓
  INTERFACES="-ira0"

  DRIVERS=""
  ↓
  DRIVERS="-Dwext"

## SSIDのパスフレーズを生成する
wpa_passphrase SSID名 パスワード
  ## 以下の内容が出力されるのでpskをコピーしておく
  network={
    ssid="SSID名"
    #psk="パスワード"
    psk=df8c40a0c8c2baa2e2e500ea2512d8143c6f26f655eef6820461e273795aff3e(例)
  }

vim /etc/supplicant/wpa_supplicant.conf
  ## 以下のように追記
  network={
        ssid="SSID名"
        key_mgmt=WPA-PSK
        proto=WPA WPA2
        pairwise=CCMP TKIP
        group=CCMP TKIP WEP104 WEP40
        #psk="パスワード"(この行はメモ)
        psk=df8c40a0c8c2baa2e2e500ea2512d8143c6f26f655eef6820461e273795aff3e(先ほどコピーしたもの)
  }

## IF(ra0)のアップ
ifup ra0

## wpa_supplicantの起動と自動起動設定
service wpa_supplicant start
  Starting wpa_supplicant: /etc/wpa_supplicant/wpa_supplicant[  OK  ]ira0, -Dwext
chkconfig wpa_supplicant on
chkconfig --list wpa_supplicant
  wpa_supplicant 	0:off	1:off	2:on	3:on	4:on	5:on	6:off

あとはifconfigなりiwconfigなりで、無線LANの接続を確認する。もしうまく繋がらないようなら、有線LANのIF(eth0など)をifdownで落としてやるとうまくいくかも。

PLANEX GW-450D KATANAをLinux(CentOS6.5)で動かす」への5件のフィードバック

  1. 村上和夫

    参考にさせていただきました。
    /lib/modules/2.6.32-431.el6.i686/build がシンボリックリンクで、make時にNo such Directoryになったのですが、、ダメ元で実ファイルを以下のように複製してみたらエラーはなくなりました。
    cd /lib/modules/2.6.32-431.el6.i686
    mv build build_org
    mkdir build
    cp -r /usr/src/kernel/2.6.32-431.el6.i686/* build

     

    返信
    1. hosii 投稿作成者

      >> 村上和夫 さん
      お返事が遅くなりすみません。情報ありがとうございます。

      シンボリックリンクであるbuild(現在のbuild_org)のリンク先がどこを指しているか気になりますね。
      今回使用したマシンでは、別作業でkernel-headersパッケージをインストールしていたので、それが関係しているかもしれません。

      返信
      1. 上田 隆

        すみません。季節遅れのコメントになってしまいますが、村上さんの手順を踏まないと、
        kernel-headersがインストールされていても、コンパイルで落ちます。

        返信
      2. 上田 隆

        自己レスですが、Top Directory の Makefile を書き換えた方が正しいかも知れません。
        上記の /lib/modules/`uname -r`/build への kernel source code のコピーをせず、

        mt7610u_wifi_sta_v3002_dpo_20130916/Makefile の199行目付近

        ifeq ($(PLATFORM),PC)
        # Linux 2.6
        LINUX_SRC = /lib/modules/$(shell uname -r)/build
        —> LINUX_SRC = /usr/src/kernels/`uname -r`

        これでいいはずです。

        返信
        1. hosii 投稿作成者

          >> 上田 隆 さん
          情報ありがとうございます。
          Makefile内の記述、確かにカーネルバージョンが正しく指定できていないですね。

          ifeq ($(PLATFORM),PC)
          # Linux 2.6
          LINUX_SRC = /lib/modules/$(shell uname -r)/build
          (省略)
          LINUX_SRC_MODULE = /lib/modules/$(shell uname -r)/kernel/drivers/net/wireless/

          調べてみたところ、$()はバッククオートと同様の記法でした。(ただしコマンドの標準出力のみを変数へ代入)
          参考URL: http://shellscript.sunone.me/variable.html#バッククォートの代替機能

          shellというコマンドがCentOSに存在しないため、$(shell uname -r)は文字列を返さず、
          LINUX_SRC = /lib/modules/$(shell uname -r)/build
          -> LINUX_SRC = /lib/modules//build
          となっていたようです。(LINUX_SRC_MODULEも同様)

          $(shell uname -r)を`uname -r`もしくは$(uname -r)に直せば上手いこと動いてくれます。
          それにしてもshellとは一体。。。昔のLinuxには搭載されていたコマンドなのでしょうか。

          返信

上田 隆 へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です