Pi Zero rev1.3をGW-450D2で5GHz WiFi対応にしてみた(RASPBIAN JESSIE LITE版)

ガジェット・家電・グッズ
この記事は約19分で読めます。
スポンサーリンク
スポンサーリンク

RaspberryPiの超小型バージョンのPi Zeroを5GHz無線LAN対応にしてみました。

 

<ご参考>Pi Zero rev1.3を手に入れて専用ケースを作った話はコチラ↓

RaspberryPiZero用のケースを作成してみた(STLデータ公開有り)
先日Raspberry Pi2/3用ケースをご紹介しましたが、もっと小型のRaspberry Pi Zero用のケースもご紹介しようと思います。 カメラ用のフレキコネクタが追加された新型Pi Zero(ver1.3)に対応しています。

 

<ご参考>RaspberryPi3をモニター・キーボードレスセットアップしてみた話はコチラ↓

RaspberryPi3をモニター・キーボードレスセットアップしてみた
さて、ケースも無事出来ましたので、RaspberryPi3のセットアップを行おうと思います。 いつもは、RaspberryPi用にHDMIモニタとUSBドングル付きのコードレスキーボード&マウスを用意するのですが、今回は敢えてモニタもキーボードもマウスも用意せず、何も無しのイキナリPCからの遠隔だけでセットアップしてみようと思います。(単に物ぐさなだけw)

 

先日手に入れたPi Zero rev1.3ですが、Pi Cameraのコネクタも付いたことですし、ここらでミニマムなカメラシステムを作ってみたいところ。

今回は手始めに無線LAN USBアダプタを使ってネット接続可能にするまでです。

 

最近、RASPBIANのカーネルが3.xから4.xへUpしたせいか、昨年作った無線LAN対応のイメージファイルが使えませんでしたので、また一から作り直してみました。

 

必要なモノの準備

必要なモノはこれだけ。dsc04660

Raspberry Pi Zero rev1.3

Pi Cameraの必要が無ければ、rev1.3ではない旧verなPi Zeroでも問題無いでしょう。

私と一緒にPi Cameraで遊んで下さる方は、rev1.3を用意して下さい。

 

microSDカード

8GB以上あればOK。 というより、4GBで試したことないんですよね。カーネルビルドするので4GBだと足りるのかは不明。

 

microSD対応USBカードリーダー・ライター

PCからRASPBIAN JESSIE LITEのイメージファイルをmicroSDカードへ書き込むのに使用します。

 

microUSB ホスト変換ケーブル

Pi ZeroへUSBアダプタ機器を繋ぐのに必要です。

通常のホスト変換ケーブルも良いのですが、超小型のホスト変換アダプタだと、よりPi Zeroの小ささを活かせます。

通常のホスト変換ケーブルとGW-450D2の組み合わせ。dsc04661

超小型ホスト変換アダプタとGW-450D2。dsc04662

GW-450D2のUSBハウジング内に収まります。dsc04663

 

但し、超小型のホスト変換アダプタは、USBアダプタの形状によっては電源用のmicroUSBケーブルと干渉してしまいます。

 

通常のホスト変換ケーブル(白い方)だと、電源用microUSBと干渉しません。dsc04668

超小型ホスト変換アダプタだと、赤丸部分が当たってGW-450D2が微妙に傾いてます。dsc04666

なので、この様に干渉する場合は、後述するL型ケーブルを使うと良いです。

こんな感じで当たらずに済みます。dsc04667

 

USBハブ付き有線LAN USBアダプタ

最初は無線LANに繋ぐことは出来ないので、有線LANベースで作業を行います。

Pi Zeroで遊ぶなら持っておいても損はないと思います。

USB HUBタイプなら、作業途中で無線LAN USBアダプタが正しく動いているかを差し替えずに一緒に確認出来るので、オススメです。

私が使ってるのはコレ。USB3.0対応な上コンパクトなのでノートPCのお供にも使えるので便利です。(USB3.0対応ですが、Piで認識してくれました )

尚、有線LAN USBアダプタは、お使いのルーター上でMACアドレスからIP指定されたモノが望ましいです。

事前に手元のPCに繋いで、ルータに割り当てておきましょう。

IP指定しない場合は、Pi ZeroへHDMIモニタを繋いでコマンドラインでIP取得する必要が出ますので、とても面倒です。※本記事上では、IPアドレスが事前に分かっている物としています。

 

有線LANケーブル

説明不要ですかね。

 

無線LAN USBアダプタ

今回の目玉。2.4GHz帯と5GHz帯両対応の無線LAN USBアダプタです。

RASPBIANレディな5GHz対応無線LAN USBアダプタは皆無なので、使える様にする為にはドライバ構築の手間が必要です。

PlanexのGW-450Dシリーズは、Planexが公式にRaspberryPi対応を謳ってますので、5GHz 帯のWiFi使いたい方には結構人気だったり。

ちなみに、USBハウジング無しの初代GW-450Dではなく、ハウジングの有るGW-450D2がオススメ。

理由は、USBハウジングが無いと超小型USBホスト変換アダプタを付けることが出来ない為で、こんな感じで初代GW-450Dには付けようがありません・・・(笑)dsc08788

コチラ↓はUSBハウジングがあるGW-450D2です。オススメ。

尚、有線LAN USBアダプタ同様に、お使いのルーター上でMACアドレスからIP指定しておきましょう。※本記事上では、IPアドレスが事前に分かっている物としています。

 

USB電源&給電用microUSBケーブル

特に指定は有りませんが、Pi Zeroの給電用microUSBコネクタは、隣のmicroUSBコネクタを非常に近い為、USBアダプタ類を繋ぐと当たってしまうという問題があります。(なんでこんなに近く作ったんだろ?w)

なので、私はL型コネクタのケーブルを使っております。(L型の向きに注意です!逆向きだと余計に干渉しますw)

 

私が使ってるのはコチラ↓です。

30cm、91cm、1.8mと幾つかのケーブル長が選べますので、お好みに合わせてチョイスしましょう。

 

 

作業概要

内容はほぼコチラのサイトの情報を参考にさせて頂きました。有難うございます。m(__)m

Raspberry Pi + kernel 4.1 / 4.4 / 4.9 / 4.14 / 4.19系列で5GHz対応WifiドングルGW-450D/GW-450D2/Archer T1U/WI-U2-433DMを動かした
Raspberry Pi 2 + kernel 4.1 / 4.4 系列で5GHz対応WifiドングルGW-450Dを動かした

尚、上記サイトではPi2・3(ARMv7コア)を前提(変更点の補足有り)にされてましたので、本記事ではPi Zero(ARMv6コア)を前提に構成させて頂きました。重ねて感謝します!!

 

大雑把な流れになりますが、こんな感じです。

  1. microSDカードへRASPBIAN JESSIE LITEを書き込み
  2. 有線LANでSSH接続して初期設定
  3. Lunixソースのダウンロードとビルド
  4. ドライバソースコードの修正とビルド&インストール
  5. ネットワーク設定修正
  6. 無線LAN接続確認

3.のLinuxのビルドに凄く時間掛かります。14~16時間くらい掛かったような?

Pi ZeroのCPUが非力な為ですが、クロス環境が作れる人は工夫するのもアリでしょう。

 

では作業を進めましょう。

 

 

microSDカードへRASPBIAN JESSIE LITEを書き込み

公式よりイメージファイルをダウンロードする

Pi Zeroは非力ですので、デスクトップ環境は不要と割り切り、ミニマムなJESSIE LITEを採用します。

公式のダウンロードはコチラ

2016/10/26時点の最新イメージは、「2016-09-23-raspbian-jessie-lite.img」でした。

 

用意したmicroSDカードへイメージファイルを書き込む

私は、microSDカードへの書き込みに「Win32DiskImager」を使っています。

使い方が分からない方はコチラ↓を参考に。

RaspberryPi3をモニター・キーボードレスセットアップしてみた
さて、ケースも無事出来ましたので、RaspberryPi3のセットアップを行おうと思います。 いつもは、RaspberryPi用にHDMIモニタとUSBドングル付きのコードレスキーボード&マウスを用意するのですが、今回は敢えてモニタもキーボードもマウスも用意せず、何も無しのイキナリPCからの遠隔だけでセットアップしてみようと思います。(単に物ぐさなだけw)

 

 

有線LANでSSH接続して初期設定

もろもろ接続して起動し、SSH接続する

Pi Zeroへ先程イメージ書き込みしたmicroSDカードをセットし、有線LAN USBアダプタを接続。LANケーブルも繋ぎましょう。dsc04669

USB電源に繋いで、Pi Zeroを起動させます。

事前に判明している有線LAN USBアダプタのIPアドレスに対し、Tera Term等のターミナルソフトでSSH接続します。

ターミナルソフトが分からない方はコチラ↓を参考に。

RaspberryPi3をモニター・キーボードレスセットアップしてみた
さて、ケースも無事出来ましたので、RaspberryPi3のセットアップを行おうと思います。 いつもは、RaspberryPi用にHDMIモニタとUSBドングル付きのコードレスキーボード&マウスを用意するのですが、今回は敢えてモニタもキーボードもマウスも用意せず、何も無しのイキナリPCからの遠隔だけでセットアップしてみようと思います。(単に物ぐさなだけw)

 

初期設定を行う

SSH接続で初期ユーザー「pi」でログインします。

下記コマンドで初期設定を行います。

$ sudo raspi-config

 

下記の項目を修正してください。

 

[Expand Filesystem]

SDカードの容量全体を使える様になります。

後でカーネルコンパイルするのに容量必要なので、設定必須。

 

[Internationalisation]

localeにて「en_us.UTF-8」「ja_jp.UTF8」「ja_jp.EUC-JP」を追加して、

default system localを「ja_ja.UTF8」に変更します。

 

[Timezone]

Asia→Tokyoを選択。

 

以上の項目を修正したら、Finishを選んで再起動しましょう。

 

一通りアップデートを掛ける

下記コマンドで、一通りアップデートをしておきます。

$ sudo apt-get update
$ sudo apt-get -y dist-upgrade

 

続いて、下記コマンドで必要なプログラムをインストールします。

$ sudo apt-get install gcc make bc screen ncurses-dev git

 

ここで一度再起動しておきましょう。

$ sudo reboot

 

 

Lunixソースのダウンロードとビルド

カーネルバージョンを確認する

下記コマンドでカーネルのバージョンを確認します。

$ uname -r

2016/10/22時点では、「4.4.21+」と返ってきました。

 

カーネルソースを入手する

下記コマンドでカーネルソースを入手します。もし先に確認したカーネルバージョンが4.4系列じゃなければ、3行目の赤字部分をバージョンに合う様に修正しましょう。

$ cd /usr/src
$ sudo su
# git clone --depth 1 https://github.com/raspberrypi/linux.git -b rpi-4.4.y
# git clone --depth 1 https://github.com/raspberrypi/firmware.git
# cd linux
# modprobe configs
# zcat /proc/config.gz > .config
# cp ../firmware/extra/Module.symvers Module.symvers

先程も書きましたが、Pi ZeroのCPUコアは旧Model B+やModel A+と同じARMv6コアですので、このコマンド群のままだとPi2・Pi3では動きません。(Pi2はARMv7コア、Pi3はARMv8コアですがv7相当で動いています)

 

カーネルをビルドする

下記コマンドでカーネルのビルドを行います。

# make oldconfig
# make -j 4 zImage modules dtbs
# make modules_install
# cp arch/arm/boot/dts/*.dtb /boot/
# cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
# cp arch/arm/boot/dts/overlays/README /boot/overlays/
# cp /boot/kernel.img /boot/kernel.img.old
# scripts/mkknlimg arch/arm/boot/zImage /boot/kernel.img
# reboot

もし最初のmake oldconfigで新しい設定項目を聞かれたら、yかmで進めましょう。

ちなみに、2行目の[make -j 4 zImage modules dtbs]は凄く時間掛かりますので、1日待つつもりで気長に待ちましょう。(私がやった時は14~15時間くらい?掛かりました・・・)

 

念の為、ここまで出来たら、シャットダウンさせてmicroSDカードを抜いてイメージバックアップして置きましょう。

イメージバックアップがあれば、もし後で失敗して最初からやり直す際にもまた1日待つ必要が無くなります。

ちなみに、イメージバックアップは「Win32DiskImager」でWriteではなくReadすればOKです。(間違えてWriteしない様にw)

 

 

ドライバソースコードの修正とビルド&インストール

Planexのドライバソースをダウンロードする

ドライバダウンロードは、Planexサイトのコチラから行えます。

 

ダウンロードした「gw-450d_driver_linux_v3002.zip」をPi Zeroへscpコマンドなどでコピーします。

Tera Termの場合は、対象のzipファイルをターミナルウィンドウへドラッグアンドドロップすると下記の様なダイアログが出ますので、SCPボタンをクリックすればファイルが転送されます。scp%e8%bb%a2%e9%80%81

デフォルトだと、Pi Zero上の/home/pi/に転送されますので、下記コマンドで/usr/srcに移動して圧縮ファイルを展開します。

$ sudo mv gw-450d_driver_linux_v3002.zip /usr/src/
$ cd /usr/src
$ sudo su
# unzip gw-450d_driver_linux_v3002.zip
# cd gw-450d_driver_linux_v3002
# tar xf mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2
# cd mt7610u_wifi_sta_v3002_dpo_20130916

 

ドライバソースコードへパッチ当てる

ドライバソースを修正するパッチを作って下さってる方が居るので活用します。(有り難や~)

# wget https://raw.githubusercontent.com/neuralassembly/raspi/master/gw-450d/gw-450d-rpi-kernel41.patch
# patch -p0 < gw-450d-rpi-kernel41.patch

 

ドライバをビルドする

っと、ここで念のためカーネルのバージョンを再確認しておきます。

# uname -r

ちなみに、2016/10/23時点では「4.4.26+」と返ってきました。

 

下記コマンドでビルドします。

# make

 

ビルドしたドライバをインストールする

下記コマンドを実行します。

# cp -p os/linux/mt7650u_sta.ko /lib/modules/4.4.26+/kernel/drivers/net/wireless
# depmod -a

※先程確認したカーネルバージョンと赤字部分が違っていれば合わせましょう。

 

設定ファイルをコピーする

下記コマンドを実行します。

# mkdir -p /etc/Wireless/RT2870STA
# cp RT2870STA.dat /etc/Wireless/RT2870STA/RT2870STA.dat

 

ドライバのインストール完了です。

 

 

ネットワーク設定修正

続いて、ネットワーク設定を行います。

ネットワーク設定を行う

ネットワーク設定ファイルに繋ぎたい無線LANネットワークの記述を追記します。

ご使用のルータの設定に合わせて赤字を読み替えて実行してください。

# vi /etc/network/interfaces

末尾にra0(無線LAN)の項目を追記します。 eth0の項目をdhcpにするのはお好みで。

auto lo
iface lo inet loopback

#auto eth0
#allow-hotplug eth0
iface eth0 inet dhcp

auto ra0
allow-hotplug ra0
iface ra0 inet dhcp
wpa-ssid "SSID"
wpa-psk "PASSWORD"

iface default inet dhcp

※”PASSWORD”の部分は、「wpa_passphrase」コマンドで取得した暗号文にした方が安全です。

「wpa_passphrase」コマンドの使い方が分からない方はコチラ↓を参考に。

RaspberryPi3をモニター・キーボードレスセットアップしてみた
さて、ケースも無事出来ましたので、RaspberryPi3のセットアップを行おうと思います。 いつもは、RaspberryPi用にHDMIモニタとUSBドングル付きのコードレスキーボード&マウスを用意するのですが、今回は敢えてモニタもキーボードもマウスも用意せず、何も無しのイキナリPCからの遠隔だけでセットアップしてみようと思います。(単に物ぐさなだけw)

尚、上記記事では /etc/wpa_supplicant/ra0.conf にSSIDとパスフレーズを記載する様になっていますが、本記事では /etc/network/interfaces に直接記載する方式にしていますので、ご注意ください。

 

シャットダウンして再起動する

# shutdown -h now

 

シャットダウンしたら、無線LAN USBアダプタをUSB HUBに接続して再起動させます。

もう一度有線LANでSSH接続し、下記コマンドでra0が正しく認識出来ていることを確認しましょう。

$ ifconfig

もし、ra0が無ければ、上記までの作業で何かミスが無いか確認しましょう。

 

 

無線LAN接続確認

無線LANで接続する

ようやく最終フェーズです。

USBアダプタの接続を変更するので、もう一度シャットダウンします。

# shutdown -h now

 

有線LAN USBアダプタなどの余計なモノを外しましょう。dsc04670

スッキリしました♪

 

再度起動させて、無線LAN USBアダプタのIPアドレスでSSH接続します。

上手くいってれば、正常に接続できるはずです。

 

上手く接続出来た場合は、ここでまたイメージバックアップして置きましょう。保険は大事です。(笑)

 

スピードテストしてみる

この作業は必須では無いので、興味のある方のみどうぞ。

ネットワーク回線のスピードテストをする方法は色々ある様ですが、今回は「www.speedtest.net/」を活用するコチラ↓の情報を参考にさせて頂きました。

cliでインターネットの速度計測(speedtest.net) - Qiita
今までBNRスピードテストを使ってきたが、Linuxのcliからでは測定できないため別のものを探すことにした。がよく使われている様子。$ sud…

 

下記コマンドを実行して、speedtestプログラムをインストールします。

$ sudo apt-get install speedtest-cli

 

下記コマンドで、スピードテストが出来ます。

$ speedtest

 

対象となるサーバーを固定させた方が比較としてはより良さそうなので、下記コマンドでTokyoサーバーの番号を調べます。

$ speedtest --list | grep Tokyo

7510) ASEINet (Tokyo, Japan) [19.55 km]

と返ってきました。

 

という事で、サーバー番号指定してスピードしてみます。

$ speedtest --server 7510

我が家のネット環境だと、Pi Zero&GW-450D2はこんな数値でした。(IEEE802.11ac接続)

Download: 57.67 Mbits/s

Upload: 39.05 Mbits/s

 

ちなみに、2.4GHz WiFi接続したRaspberry Pi3だとこんな数値でした。(IEEE802.11n接続)

Download: 14.07 Mbits/s

Upload: 27.90 Mbits/s

ご参考まで。

 

 

今回はここまでです。

ミニマムなカメラシステムの為のPi Cameraとの接続については、また改めてご紹介します。

 

 

謝辞

参考にさせて頂いた諸々のサイトリンクです。

昨年GW-450DをPi2で使える様にした際に、参考にさせて頂きました。

GW-450DやWN-AC433UKをRaspberry Piで使う - 簡潔なQ
planexのありがたい記事を参考に作業。環境としてはRaspbian wheezyを仮定。おおまかな流れ : まず、下準備としてカーネルモジュールのビルドに必要な道具を揃える(既に揃えてある人はスルーしてよい)。続いて、ドライバのソースコードを取得し、必要な変更を加えてからビルド、インストールする。 前提知識 記事執筆時点ではGW-450DやWN-AC433UKはRaspbe...【続きを読む】

 

今回のKernel4.x対応で躓いて、参考にさせて頂きました。

Raspberry Pi + kernel 4.1 / 4.4 / 4.9 / 4.14 / 4.19系列で5GHz対応WifiドングルGW-450D/GW-450D2/Archer T1U/WI-U2-433DMを動かした
Raspberry Pi 2 + kernel 4.1 / 4.4 系列で5GHz対応WifiドングルGW-450Dを動かした

 

GW-450Dが上手く繋がらない時の対処を参考にさせて頂きました。

301 Moved Permanently

 

ネット回線速度を調べる方法について参考にさせて頂きました。

cliでインターネットの速度計測(speedtest.net) - Qiita
今までBNRスピードテストを使ってきたが、Linuxのcliからでは測定できないため別のものを探すことにした。がよく使われている様子。$ sud…

 

同じくネット回線速度を調べる方法について参考にさせて頂きました。

Linux上でネットワーク回線速度を計測する手段について整理してみた | DevelopersIO

 

有難うございました。m(__)m

 

 

 

USBハブ付有線LAN USBアダプタ

2.4GHz/5GHz WiFi対応 無線LAN USBアダプタ GW-450D2

L型micro USBケーブル 91cm

超小型microUSBホスト(OTG)変換アダプタ

残念ながら、Pi Zeroは日本では正式な流通ルートがありません。

海外通販に抵抗が無い方は、Pimoroniとかで購入した方がかなり安く手に入ります。

海外通販サイトに抵抗ある方はコチラ↓で。

新型Pi Zero(ver1.3)のセット(microUSBホスト変換ケーブルやら諸々一式付いてます)

コメント