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

More than 3 years have 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