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

昨年記事化したPi Zero WじゃないPi Zero rev1.3を5GHz無線LAN対応にしてみました・・・の2017年版です。

最新のRASPBIAN STRETCH LITEに対応しています。

2017年度版と言いつつ、昨年のカーネルフルコンパイルする手法から、必要なモジュールをコンパイルする手法(前回記事のPi2/3で行った方法を踏襲)へ変更し、Pi Zeroでも圧倒的に作業時間短縮されました!(一日仕事だったのが1~2時間くらいで済む様になりました)

Pi Zeroしか持ってない人は前回記事との差分読み比べなんてしたくないでしょうから、Pi Zero用として改めてほぼ同内容を記述しています。(て、手抜きって言わないでw)

なので、前回のPi2/3用を読んだ方には目新しい所はありません。悪しからず。m(__)m

ご参考その1:2016年版のRASPBIAN JESSIE LITE対応版はコチラ↓

Pi Zero rev1.3をGW-450D2で5GHz WiFi対応にしてみた(RASPBIAN JESSIE LITE版)
RaspberryPiの超小型バージョンのPi Zeroを5GHz無線LAN対応にしてみました。

ご参考その2:前回記事のPi2/3の記事(RASPBIAN STRETCH LITE版です)はコチラ↓

RaspberryPi2/3をGW-450D2で5GHz WiFi対応にしてみた(RASPBIAN STRETCH LITE版)
3Dプリンタサーバとして使っていたRaspberryPi2が、ある日突然応答しなくなりました。 どうやらSDカードが寿命を迎えたらしい・・・。 2年程前に作ったイメージファイルからのリストアも考えましたが、RASPBIANがメジャーバージョンアップしてJESSIEからSTRETCHになったという事もあり、今回はゼロからのクリーンインストールをすることにしました。 勿論、物ぐさ太郎として、今回もキーボードもモニタも繋がずにセットアップしております。

スポンサーリンク

対象環境

対象ハードウェア: Pi Zeroシリーズ

前回記事ではARMv7コアのPi2/3向けでしたが、今回はARMv6コアのPi Zeroシリーズに向けています。

今回はカメラI/F付きのPi Zero rev1.3を使いました。

試してはいませんが、同一コアのPi Zero Wでも使えると思います。 もっとも、Pi Zero Wは元からWiFi載っているのであまり意味はないかもしれませんが。。

Amazonのマーケットプレイスでも出品されているのですが、非常に割高な値付けになってるので、個人的にはあまりおススメしません。

日本国内だとコチラ↓のスイッチサイエンスさんあたりが安心ですかね。 もっとも大人気商品なのか大抵在庫無いんですけどね。(;^ω^)

Pi Zero rev1.3(旧モデルでWiFi/BT無し)

Pi Zero W(最新モデルで2.4GHz帯WiFi&BT付き)

どうしても割安でという事なら、海外通販になりますがPayPalも使えるPimoroniあたりがおススメです。 私はいつもPimoroniで買ってますが、一番安い発送方法でも1~2週間で手元に届きます。

Pi Zero rev1.3(旧モデルでWiFi/BT無し)

Pi Zero W(最新モデルで2.4GHz帯WiFi&BT付き)

5GHz WiFiな無線LANドングルはお馴染みの11ac対応GW-450D2です。(旧版のGW-450Dでも動きました)

microSDカードは信頼?の東芝製 8GBです。

なぜ8GBかは・・・前回記事でも触れましたが、イメージバックアップする時に小さい容量の方が良いという考えからです。

有線LAN USBアダプタ

物ぐさ太郎として、今回もキーボード・モニタレスでセットアップする関係上、最初は有線LANベースで作業を行います。

Pi Zeroで遊ぶなら有線LANアダプタくらい持っておいても損はないと思いますので、紹介しておきますね。

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

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

尚、有線LAN USBアダプタは、お使いのルーターのDHCP機能でMACアドレスからIP割り当てしておきましょう。

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

microUSBホスト変換ケーブル(or アダプタ)

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

通常のホスト変換ケーブルも良いのですが、超小型のホスト変換アダプタだと、よりPi Zeroの小ささを活かせます。 凄くミニマム感が出ますので個人的にはお勧めです。

但し、この超小型ホスト変換アダプタを使うと、給電用のmicroUSBケーブルと若干干渉しますので、注意が必要です。 なので、給電用microUSBケーブルにはL型タイプを使った方が良いでしょう。 ※L型の向きに注意です!逆向きだと余計に干渉します

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

対象RASPBIAN: STRECTH LITE

2017年8月のメジャーバージョンアップで登場した最新RASPBIANのSTRECTH LITEを使います。

事前に公式↓からダウンロードしておいてください。

尚、9/15時点では9/7付け版が最新でした。

作業概要

基本は前回記事の踏襲ですが、一部、Pi ZeroのARMv6コア用に書き換えてあります。

大雑把な流れはこんな感じです。

  1. microSDカードへRASPBIAN STRETCH LITEを書き込む
  2. 有線LANでSSH接続して初期設定
  3. Linuxソースのダウンロードと関連モジュールのビルド
  4. ドライバソースへのパッチ当てとビルド&インストール
  5. 無線LANの接続設定

所用時間はPi Zeroでも2時間掛かってないと思います。(離席してたので、正確な時間は不明)

昨年記事ではカーネルのフルビルドして丸一日仕事でしたが、今回は関連モジュールのビルドだけにしてるので、かなり時間短縮できました!!(先達に感謝です!)

尚、前回同様に、物ぐさ太郎の矜持として、キーボード、モニタレスでセットアップ作業しております。

なので、事前に有線LANアダプタのIPアドレス、無線LANドングルGW-450D2のIPアドレスは把握しておく必要が有ります。 ルーターなどで、MACアドレスからIPを固定割り当てする様にしておけば問題ないでしょう。

では、作業を始めましょう。

microSDカードへRASPBIAN STRETCH LITEを書き込む

イメージファイルの書き込み

公式からダウンロードしたRASPBIANをmicroSDカードへ書き込みます。

私は、イメージ書き込みには「Win32DiskImager」というアプリを使っておりますが、使用方法が分からない場合は、コチラ↓を参考に。

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

SSH接続の為の事前準備

最近のRASPBIANでは、そのままだとSSH接続が使えない状態になっています。(セキュリティ対策の一環??)

コチラによると、microSDカードの/boot/直下にsshという名前で拡張子無しの空ファイルを作っておけば、RaspberryPiで起動させた際に自動的にSSH接続が有効になるみたいなので、PCから外す前にファイルを作っておきましょう。

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

有線LANを繋いで起動させ、PCからSSH接続する

先程イメージファイルを書き込んだmicroSDカードを対象のPi Zeroへセットし、有線LANアダプタを繋いで、有線LANも繋いで起動させます。

(写真では気が早くGW-450D2も繋いでおりますが、繋いだまま作業しても問題なしです)

事前に判明している有線LANのIPアドレスに対し、PCからTera TermなどのターミナルソフトでSSH接続します。(正しいIPアドレスで、先のSSH有効化処置を行ってあれば、ちゃんと繋がる筈です)

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

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

初期設定を行う

SSH接続で初期ユーザー「pi」でログインしているものとします。

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

$ sudo raspi-config

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

[Change User Password]

「pi」ユーザーのパスワードをデフォルトのまま使うのは、セキュリティリスクとなります。

後ほど、ユーザー名を「pi」から変更する作業なども行いますが、初期工程は「pi」ユーザーで進めますので、最初にデフォルトパスワードを変更しておきましょう。

[Localisation Options] ->[Change Locale]

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

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

[Localisation Options] ->[Change Timezone]

「Asia」→「Tokyo」を選択。

[Localisation Options] ->[Change WiFi Country]

「JP Japan」を選択。

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

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

再起動後、もう一度「pi」ユーザーでSSH接続します。(パスワード変更した場合は新しいパスワードを入れて下さい)

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

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

rebootを促されるので、一応再起動しておきましょう。

$ sudo reboot

もう一度「pi」ユーザーでSSH接続し、下記コマンドで必要なプログラムをインストールします。

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

Lunixソースのダウンロードと関連モジュールのビルド

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

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

$ uname -r

2017/09/15時点では、「4.9.50+」と返ってきました。

カーネルソースと関連モジュールを用意する

作業フォルダへ移動します。

$ cd /usr/src

カーネルソースを取得します。もし先に「uname -r」で確認したカーネルバージョンが4.9系列じゃなければ、赤字部分をバージョンに合う様に修正しましょう。

$ sudo wget https://github.com/raspberrypi/linux/archive/rpi-4.9.y.tar.gz

一緒に、モジュールチェックファイルも取得します。

$ sudo wget https://github.com/raspberrypi/firmware/raw/master/extra/Module.symvers

先程取得したカーネルソースを展開します。(赤字部分は先程のバージョンに合う様に修正しましょう)

$ sudo tar xvfz rpi-4.9.y.tar.gz

シンボリックリンクを作成します。(赤字部分は先程のバージョンに合う様に修正しましょう)

$ sudo ln -s /usr/src/linux-rpi-4.9.y/ /lib/modules/`uname -r`/build

モジュールビルド用フォルダに移動します。

$ cd /lib/modules/`uname -r`/build

makeコンフィギュレーションを初期化します。

$ sudo make mrproper

暫し待たされます・・・。

config.gzを準備します。

$ sudo modprobe configs

コンフィギュレーションを作成します。

$ sudo sh -c 'gzip -dc /proc/config.gz > .config'

バージョンチェックで刎ねられない様に、作成した「.config」を修正します。

$ sudo vi .config

37行目を下記の様に修正します。(赤字部分は先程確認したカーネルバージョンに合う様に修正しましょう)

CONFIG_LOCALVERSION=""

CONFIG_LOCALVERSION="+"

修正後、上書き保存しましょう。

続いて、関連ファイルをmakeします。

$ sudo make modules_prepare

暫し待たされます・・・。

ドライバソースへのパッチ当てとビルド&インストール

Planex公式ドライバを入手する

コチラ↓から、GW-450DのPlanex公式Linux用ドライバをダウンロードします。

取得したzipファイル中の「mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2」を、RaspberryPiへscpコマンドなどで転送します。 (Tera Termの場合は、対象のzipファイルをターミナルウィンドウへドラッグアンドドロップするとダイアログが出ますので、SCPボタンをクリックすればファイルが転送されます)

デフォルトだと、/home/pi/に転送されますので、確認します。

$ cd /home/pi
$ ls

「mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2」がちゃんと存在するか確認した後、解凍します。

$ sudo tar xvjf mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2

Planex公式ドライバのソースにパッチをあてる

このPlanexドライバはそのままでは使えず、ソースファイルの修正が必要なのですが、修正用パッチを公開されてる方がいらっしゃいますので、有り難く使わせて頂く事にします。ありがたや~

ドライバ修正パッチを取得します。

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

そのままだと、何故か$HOMEパスが通らないので、パッチを一部修正します。

$ vi ./gist/patch.sh

下記1行を追加して上書き保存します。

HOME=/home/pi

ドライバ修正パッチを実行します。

$ sudo ./gist/patch.sh

gcc-4.8を準備する

ドライバのコンパイルにはgcc-4.8あるいは4.9が必要ですが、gcc-4.9だとエラーチェックが厳しくてコンパイルが通らないので、gcc-4.8を使います。

ということで、gcc-4.8を取得します。

$ sudo apt-get -y install gcc-4.8

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

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

ちゃんと、gcc-4.8が優先になったかを確認します。

$ gcc --version | head -n 1

2017/09/15時点では、「gcc (Raspbian 4.8.5-4) 4.8.5」と返ってきました。

ドライバをビルドし、ロードする

ドライバのファイルがあるディレクトリへ移動します。

$ cd ./mt7610u_wifi_sta_v3002_dpo_20130916/

続いて、make。

$ sudo make

ちょっと待たされます。 Pi Zero rev1.3で15分程度?待たされました。

インストールします。

$ sudo make install

モジュールをロードします。

$ sudo insmod /lib/modules/`uname -r`/kernel/drivers/net/wireless/mt7650u_sta.ko

カーネルの依存関係情報の更新。

$ sudo depmod -a

エディタで、/etc/modulesに追記します。

$ sudo vi /etc/modules
末尾に以下の1行を追加して、上書き保存します。
mt7650u_sta

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

続いて、無線LANの接続設定を行います。

無線LANの接続設定

ネットワーク設定を行う

繋ぎたい無線LANの「SSID」と「パスフレーズ」を用意し、下記コマンドを実行します。(赤字は自身の環境に置き換えて実行してください)
$ sudo sh -c 'wpa_passphrase SSID パスフレーズ >> /etc/wpa_supplicant/wpa_supplicant.conf'

尚、このwpa_passphraseコマンドは、パスフレーズを暗号化してくれるのは良いのですが、何故か暗号化されてない平文のパスフレーズをそのまま併記してくれるとても親切且つ危険なコマンドなので、作成された「wpa_supplicant.conf」ファイルの平文部分を削除しておいた方が良いです。

なので、エディタで平文部分だけ削除します。
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
#psk=”xxxxx”の行を削除して、上書き保存します。

「/etc/network/interfaces」に追記します。
$ sudo vi /etc/network/interfaces
私は下記だけ追記しています。 環境によってはステルス設定など色々あるかと思いますので、お好みに合わせて編集してください。
auto ra0
allow-hotplug ra0
iface ra0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

以上で設定完了です。

一旦、シャットダウンさせます。
$ sudo shutdown -h now

有線LANを外し、無線LANのIPアドレスに対しSSH接続してみましょう。
ケーブルがmicroUSBだけになるとPi Zeroの小ささが際立ちます。 やっぱり、小さいって良いことですねぇ♪

上手く接続出来たら、SDカードのイメージバックアップを忘れずにしておきましょう。
間違えてwriteしないように。 バックアップするときはreadですから。(;^ω^)

おまけ:セキュリティ対策とスピードテスト

以降は、お好みにあわせて実施して下さい。

最近はRaspberryPiを狙ったハッキングなども行われている様です。
ですので、幾つかの対策を行っておきます。

rootパスワード設定

初期状態では未設定なので、rootパスワードを設定しておきましょう。
$ sudo passwd root
ルート(管理者権限)の新しいパスワードを入力しましょう。

ユーザー名「pi」をオリジナルのユーザー名へ変更

「pi」ユーザーを削除して、新しいユーザーを追加でも良いのですが、piフォルダには色々なモノが入っている様で、経験上不都合が起こることが多いです。
なので、「pi」ユーザーの削除ではなく、ユーザー名の変更で対処することにします。

まず、SSHのコンフィグファイルを編集して、rootでのログインを可能にします。
$ sudo vi /etc/ssh/sshd_config
下記を1行追加します。(コメントアウトされてる分はそのままでOK)
PermitRootLogin yes
編集後、上書き保存します。

SSHサービスを再起動させます。
$ sudo service ssh restart

「pi」ユーザからログアウトします。
$ exit

改めて、SSH接続し、今度はユーザー名「root」でログインします。
パスワードは先程設定したモノを入力しましょう。

ログイン出来たら、ユーザー名「pi」を新しいユーザ名へ変更します。(自身のユーザー名に合わせて、赤字の部分を差し替えて実行して下さい)
# usermod -l newuser pi
# usermod -d /home/newuser -m newuser
# groupmod -n newuser pi

続いて、先程編集したSSHのコンフィグファイルを元に戻し、rootでのログインを不可にします。
# vi /etc/ssh/sshd_config
先程追加した下記1行を削除します。
PermitRootLogin yes
編集後、上書き保存します。

SSHサービスを再起動させます。
# service ssh restart

「root」ユーザからログアウトします。
# exit

改めて、SSH接続し、「root」と「pi」でログイン出来なくなっていることを試しておきましょう。
続いて、新しく作ったユーザー名でログイン出来ることを確認しておきましょう。パスワードは「pi」ユーザーの時に変更したままでOKです。

続いて、SSHのポート番号を変更・・・しても良いのですが、スキャンすりゃ分かってしまうということなので、そのままでもアリでしょう。 お好みにあわせて実施して下さい。

以上で、取り敢えず最低限のセキュリティ対策は完了です。
もっと細かく対策したい場合は、色々調べてみましょう。

スピードテスト

折角、5GHz WiFiに接続したんですから、どれくらい速度出てるのか確認したいのが人情というもの。

コチラ↓の過去記事でその辺触れてますので、ご参考に。

Pi Zero rev1.3をGW-450D2で5GHz WiFi対応にしてみた(RASPBIAN JESSIE LITE版)
RaspberryPiの超小型バージョンのPi Zeroを5GHz無線LAN対応にしてみました。

ちなみに、私の環境で試した結果は、

Download: 21.07 Mbit/s
Upload: 33.45 Mbit/s

という数値でした。

謝辞

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

カーネルのフルビルド無しでモジュールビルドする方法を参考にさせて頂きました。

初期にSSH接続出来ない際の対応方法として、参考にさせて頂きました。

insmodで「insmod: ERROR: could not insert module ・・・:Invalid module format」のエラーが出て困り果てた際に、参考にさせて頂きました。

Planexドライバのパッチを公開されている方、有り難く活用させて頂きました。

セキュリティ対策について、参考にさせて頂きました。

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

Pi Zero W

microSD 8GB 東芝製

GW-450D2

USB3.0対応 有線LANアダプタ付きUSB HUB

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

microUSB 左向きL型ケーブル

スポンサーリンク

この記事をシェアする

  • このエントリーをはてなブックマークに追加

このブログをフォローする