RaspberryPi
raspbian
GW-450D

Raspberry Pi 2 + RASPBIAN JESSIEでPLANEXのGW-450D(無線LANドングル)を使う

More than 1 year has passed since last update.

はじめに

この記事ではRASPBIAN JESSIEをインストールしたRaspberry Pi 2でPLANEXの無線LANドングル GW-450Dを使うための手順を説明します。RASPBIAN JESSIEのインストールは次の記事を参考にしてください。

以降、ユーザー名piとして/home/piで作業します。

自動化 (興味ない方は読み飛ばしてください)

「...ないでござる〜手順の説明なんて読みたくないでござる〜」という声が聞こえた気がするので、この記事の内容をansibleで自動化しました。playbookは次のリポジトリで公開しています。

人間が手順書を読んで作業するなど愚の骨頂...ansibleに任せるのじゃ。

% ansible-playbook -i hosts install-mt7610u.yml

Enjoy :pineapple:

aptのセットアップ

まずは、/etc/apt/sources.list/etc/apt/preferencesを変更します。それぞれ次のように書き換えるか、新しく作成してください。

/etc/apt/sources.list

deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi

/etc/apt/preferences

Package: *
Pin: release n=wheezy
Pin-Priority: 900

Package: *
Pin: release n=jessie
Pin-Priority: 300

Package: *
Pin: release o=Raspbian
Pin-Priority: -10

書き換えが終わったら、変更を反映します。

% sudo apt-get update -yq

これでaptのセットアップは完了です。

ncurses-devとgcc-4.8のインストール

次のコマンドを実行してください。

$ sudo apt-get install ncurses-dev -yq -t jessie
$ sudo apt-get install gcc-4.8 -yq -t jessie

続いて、gcc-4.8の優先度を変更します。

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60

次のコマンドを実行して、デフォルトのgccがバージョン4.8に切り替わったか確認します。

$ gcc --version | head -n 1
gcc (Raspbian 4.8.4-1) 4.8.4

これで完了です。

ドライバのダウンロード

続いて、MT7610U USB - MediaTekソースをダウンロードします。

$ wget http://cdn-cw.mediatek.com/Downloads/linux/mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2

ダウンロードが完了したら、tarで展開します。

$ tar jxf mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2

修正パッチの適用

ダウンロードしたドライバは、そのままでは使えません。この記事のためにパッチを作成したので、それを使いましょう。

$ git clone https://gist.github.com/moutend/cb35a37297910c99d3e2 gist

パッチを適用します。

% ./gist/patch.sh

実行すると、5つのファイルにパッチが適用されます。

pi@raspberrypi ~ $ ./gist/patch.sh
patching file /home/pi/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux/rt_linux.c
patching file /home/pi/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux/config.mk
patching file /home/pi/mt7610u_wifi_sta_v3002_dpo_20130916/include/os/rt_linux.h
patching file /home/pi/mt7610u_wifi_sta_v3002_dpo_20130916/conf/RT2870STA.dat
patching file /home/pi/mt7610u_wifi_sta_v3002_dpo_20130916/common/rtusb_dev_id.c
Successfully done.

これで完了です。

この記事を作成する際に参考にしたRaspberryPi - Raspberry Pi 2+NOOBSでPlanexのGW-450D(802.11ac対応無線LANドングル)を使う - Qiitaとの違いはrt_linux.cの有無です。

実はrt-linux.cにパッチを適用しなくても、GW-450Dはつかえるのですが、その場合、5GHzのアクセスポイントが検出できなくなります。

カーネルのダウンロード

続いて、raspi-kernelを実行してカーネルをダウンロードします。

$ bash -c "$(curl -fsSSL https://raw.githubusercontent.com/moutend/raspi-kernel/master/raspi-kernel)"

途中でエラーが発生しなければ、次のように表示されます。

$ bash -c "$(curl -fsSSL https://raw.githubusercontent.com/moutend/raspi-kernel/master/raspi-kernel)"Info:  REVISION=960832a6c2590635216c296b6ee0bebf67b21d50
Info:   GIT_HASH=59e76bb7e2936acd74938bb385f0884e34b91d72
Info:   GIT_REPO=https://api.github.com/repos/raspberrypi/linux/tarball/59e76bb7e2936acd74938bb385f0884e34b91d72
Download: https://api.github.com/repos/raspberrypi/linux/tarball/59e76bb7e2936acd74938bb385f0884e34b91d72
Unpack: 59e76bb7e2936acd74938bb385f0884e34b91d72
Info:   Entering /lib/modules/4.1.7-v7+/build
Run:    make bcm2709_defconfig
  ...
  SHIPPED scripts/kconfig/zconf.hash.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#
Run:    make modules_prepare
  ...
  HOSTCC  scripts/conmakehash
  HOSTCC  scripts/recordmcount
  HOSTCC  scripts/sortextable
Info:   Successfully done.

Successfully doneと表示されたら、/usr/srclinux-...というディレクトリが作成されたか確認します。

$ ls -lah /usr/src
total 16K
drwxr-xr-x  4 root root 4.0K Oct 27 23:56 .
drwxr-xr-x 10 root root 4.0K Sep 24 13:16 ..
drwxr-xr-x 24 pi   pi   4.0K Oct 27 23:57 linux-59e76bb7e2936acd74938bb385f0884e34b91d72
drwxr-xr-x  3 root root 4.0K Sep 24 14:44 sense-hat

これでカーネルのダウンロードは完了です。

ドライバのビルド

ドライバをビルドします。次のコマンドを実行してください。

$ cd ./mt7610u_wifi_sta_v3002_dpo_20130916/
$ sudo make
$ sudo make install

完了まで10分ほど必要です。お茶でも飲んで待ちましょう。

ドライバを読み込む

ビルドが完了したら、次のコマンドを実行してドライバを読み込みます。

$ sudo insmod /lib/modules/4.1.7-v7+/kernel/drivers/net/wireless/mt7650u_sta.ko

ドライバの読み込みが成功すると、GW-450DのLEDが点灯します。そして、ra0というネットワークインターフェースが自動的に作成されます。。ipで確認しましょう。

% ip addr show ra0

例として、次のように表示されます。

$ ip addr show ra0
3: ra0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 00:22:cf:e8:bd:63 brd ff:ff:ff:ff:ff:ff
    inet 169.254.185.103/16 brd 169.254.255.255 scope global ra0
       valid_lft forever preferred_lft forever
    inet6 fe80::24b:5bfc:8a9e:b148/64 scope link
       valid_lft forever preferred_lft forever

これでドライバの読み込みは完了です。

ネットワークインターフェースとWiFiの設定

最後にネットワークインターフェースとWiFiの設定を行います。まず、/etc/network/interfacesを次のように書き換えます。

/etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

auto ra0
allow-hotplug ra0
iface ra0 inet manual
    pre-up sh -c "sleep 5"
    wpa-roam /etc/wpa_supplicant/ra0.conf
iface default inet dhcp

続いて、/etc/wpa_supplicant/ra0.confを作成します。次のコマンドを実行してください。(SSIDPASSPHRASEは各々の環境に合わせて読み替えてください。)

$ wpa_passphrase SSID PATHPHRASE | grep -v '#.*$' | sudo tee -a /etc/wpa_supplicant/ra0.conf

ra0.confが作成されたか、catで確認します。例として、次のように表示されます。

$ sudo cat /etc/wpa_supplicant/ra0.conf
network={
    ssid="SSID"
    psk=6cfd9adbce6ad052a27d7cde26b307e068f90d09c52e894f827487ff033e62b8
}

これで、ネットワークインターフェースとWiFiの設定は完了です。

IPアドレスが割当てられたか確認

今までに行った変更を反映させるため、一度リブートします。

$ sudo reboot

その後、Raspberry Piが起動したらipコマンドでIPアドレスが割当てられたか確認します。

$ ip addr show ra0

例として、次のように表示されます。IPv6アドレスが割当てられました。

$ ip addr show ra0
3: ra0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state DORMANT group default qlen 1000
    link/ether 00:22:cf:e8:bd:63 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::222:cfff:fee8:bd63/64 scope link
       valid_lft forever preferred_lft forever

これで、インターネットに接続できるようになりました!

おまけ: 5GHzのアクセスポイントをスキャンする

GW-450Dが5GHzのアクセスポイントを認識しているか確認します。次のコマンドを実行してください。

$ sudo iwlist ra0 scan | grep GHz | sed 's/^ *//'

例として、次のように表示されます。

$ sudo iwlist ra0 scan | grep GHz | sed 's/^ *//'
Frequency:2.412 GHz (Channel 1)
Frequency:2.442 GHz (Channel 7)
Frequency:2.462 GHz (Channel 11)
Frequency:5.18 GHz (Channel 36)
Frequency:5.58 GHz (Channel 116)

5GHzのアクセスポイントを認識しています。これでGW-450Dを最大限に活用できます。

Enjoy !

Enjoy :pineapple:

参考

  1. Raspberry Pi 2+NOOBSでPlanexのGW-450D(802.11ac対応無線LANドングル)を使う - Qiita