Raspberry Pi Zero WH をテレビなしで無線LAN接続する方法あれこれ


はじめに

 テレビもパソコンも一家に一台の時代

 晩飯のおかずにもならない「Raspberry Pi」(以下ラズパイ)のセットアップごときに、テレビとパソコンの両方を占有するなんて(家庭の平和のため)許されんのです。
 さらにラズパイZeroは、

  • 映像出力がminiHDMIなので、ふつうのHDMIケーブルがそのまま使えない。
  • USB端子がmicroBなので、ふつうのUSBキーボードがそのまま使えない。

 ということで、小さくなったのは良いんだけど、変換器を準備しないといけないので、ちょっと面倒くさいのです。

目標

 無線LANでSSH接続出来たら、後はパソコンからどうとでもなるので、どうにかしてラズパイ上で下記コマンド(wpa_passphrase)を実行できたら勝ち。

sudo sh -c "wpa_passphrase [SSID] [KEY] >> /etc/wpa_supplicant/wpa_supplicant.conf"

 ([SSID]と[KEY]は各自の無線LAN設定に従ってください。)

 ちなみに、IPアドレスはDHCPで自動的に割り振られるものとします。固定化については他の人の解説読んでください。

おことわり

 会長はWindowsの民ゆえ、Macintoshさんの事情はよくわからないので悪しからず。

やってみよう

下準備

 ここは各方法共通です。とりあえず用意するものを挙げておきます。

  • Raspberry Pi Zero WH(Wでも一緒やと思う)
  • microSDカード(手元にあった16GB)
  • ラズパイ用電源(microB端子で給電できるもの)
  • SDカードリーダ(USBでmicroSDカードの読み書きできるようにするやつ)
  • パソコン(Windows 10)

Raspbianのダウンロード

 公式ページからRaspbianをダウンロード(Download ZIP)します。
 今回使用したイメージはこちら。

Raspbian Buster Lite
Minimal image based on Debian Buster
Version:February 2020
Release date:2020-02-13
Kernel version:4.19
Size:434 MB

 「~ with desktop」でも同じ方法で出来ると思いますが未確認です。(そもそもデスクトップ版使うなら、テレビ要るやろ?)

RaspbianイメージのmicroSDカードへの書き込み

 ダウンロードしたZIPファイル(2020-02-13-raspbian-buster-lite.zip)を解凍し、イメージファイル(2020-02-13-raspbian-buster-lite.img)を取り出します。
 microSDカードをSDカードリーダにセットし、パソコンに挿します。(以下、単に「SDカードを挿す」と言います)

 イメージファイルのSDカードへの書き込みはシリコンリナックスさんのDD for Windows Ver.0.9.9.8 を使用しました。
 「DDWin.exe」を右クリックし、「管理者として実行」します。(ふつうに実行すると、ディスク選択できなかった)

 「ディスク選択」でパソコンに挿したSDカードを選択1し、「ファイル選択」でRaspbianのイメージファイルを選択します。この時表示される「開く」ダイアログでは、ファイル種類を「All Files」にしないとイメージファイルが選択できないので注意。

 最後に「<<書込<<」ボタンを押せば、(何度かの確認の後)書き込みが始まるので、終わるまで待ちます。

SSH接続できるようにしておく

 ラズパイのSSH接続を有効にするため、Raspbianイメージを書きこんだSDカードをパソコンに挿し、bootのドライブ直下に「ssh」という名前のファイルを作成しておきます。(右クリックして「新規作成」→「テキスト文書」でファイル作成し、ファイル名を(拡張子含めて)「ssh」に変更する。もしくは、コマンドラインでecho:>G:\sshでもOK。(G:はSDカードのbootのドライブ))

 ちなみに、Raspbianイメージを書きこんだSDカードをパソコンに挿したときに「フォーマットする必要があります」とか言われますが、間違ってもフォーマットしないように。

いよいよ無線LANの設定をする

 ここから先は、お好きな方法でどうぞ。一応、手間のかからない順(会長基準)で紹介します。

その1 Linuxを使う

 Linuxマシンを持っているのが前提ですが、たぶんこれが王道です。

用意するもの

  • Linuxマシン(パソコン、仮想マシン、セットアップ済みのラズパイでも出来るかも)

 会長は仮想マシン(VMWare)に「Debian GNU/Linux 10」を入れているので、これで解説します。
 Raspbianイメージを書き込んだSDカードをLinuxマシンに挿し、以下のコマンドを実行します。

$ cd /media/develop/rootfs/etc/wpa_supplicant
$ sudo sh -c "wpa_passphrase [SSID] [KEY]>>wpa_supplicant.conf"

 SDカードのマウント先(/media/develop/rootfs)は各自の環境で読み替えてください。

 SDカードを取り出してラズパイに挿し、ラズパイの電源を入れます。初回の起動はしばらく時間がかかるので、LEDのチカチカが落ち着く(点灯状態になる)まで待ちます。
 (DHCPクライアントで追加されたIPアドレスに対して)パソコンからSSH接続できたら勝ちです。


その2 スマホ(Android)を使う

 USBテザリングを使用すると、Androidスマホとラズパイをネットワーク接続することができるので、これを使ってSSH接続し無線LAN設定します。
 なお、会長はAndroidの民ゆえ、iPhoneさんの事情は(以下略)

用意するもの

  • microB-TypeC USB変換ケーブル

 なかなかそんな都合の良いケーブルは見つからないので、ダイソーで以下のセットを買ってきました。

  • Androidスマホ

 会長のはHUAWEIです。まぁメーカーは関係ないでしょう。Androidのバージョンは9(9.1.0)です。(「開発者向けオプション」がONになっていますが、これはあまり関係ないかな。)

 ラズパイとは以下のように接続します。

 この時、USB(PWRでない方)端子のみでもラズパイに電源入るのですが、電源(PWRの方)端子からも給電しないと、USBテザリングに反応しませんでした。

Android側の設定
 データセーバが有効な場合はテザリングが使用できないので、まずはこれを無効にします。
 設定 ≫ 無線とネットワーク ≫ データ通信量
「スマートデータセーバー」を無効にします。

 ラズパイとスマホをUSBで接続し、USBテザリングを有効にします。
 設定 ≫ 無線とネットワーク ≫ テザリングとポータブルアクセス

 反応するまで十数秒かかったので、焦らずに。

ターミナルアプリを入れて、ラズパイのIPアドレスを確認する
 ここまでで、ラズパイとAndroidがネットワーク接続されたのですが、ラズパイのIPアドレスがわからないと、SSH接続できません。そこで、ターミナルアプリをスマホにインストールします。会長はTermuxを使用しました。
 アプリを立ち上げ、arp -aとコマンドを打ち込むと、IPアドレスが表示されます。

 2つ表示されていますが、「on rndis0」のアドレス(192.168.42.166)がラズパイに割り当てられたIPアドレスです。

SSHクライアントアプリを入れてラズパイにSSH接続する
 あとは、ラズパイに入るためにSSHクライアントアプリをスマホにインストールします。会長はJuiceSSH - SSH Clientを使用していますが、お好みのものでどうぞ。
 先ほど入手したラズパイのIPアドレスに、初期ユーザ(pi)と初期パスワード(raspberry)で接続します。

そして、wpa_passphraseを実行します。

ラズパイを再起動し、(DHCPクライアントで追加されたIPアドレスに対して)パソコンからSSH接続できたら勝ちです。

参考にしたサイト


その3 パソコンのモニタを使う

 「なんやそれ、ネタ切れか?」と言われそうですが、「テレビ」は使っていないので間違いではない。
 で、なんでこれが3番目かというと、冒頭でも書いた通り変換器が必要なのと、モニタひっくり返してケーブル挿すのが億劫なのです。

用意するもの

  • HDMIに対応したモニタ
  • (必要であれば)HDMI‐miniHDMI変換
  • USB接続キーボード
  • (必要であれば)USB‐microB変換

 変換器は以下のように接続します。

 あとは、キーボードとモニタを接続し・・・・・・ん?
 会長のモニタには、そんな“こじゃれた端子”(HDMI)付いてなかったよ。
 ということで、以下は家族が出かけているうちにテレビで確認。

 (運よくHDMIに対応したモニタを持っていたあなたは、)ラズパイの電源を入れ、しばらくぼーっと待つと以下の表示で入力待ちになるので、初期ユーザ(pi)と初期パスワード(raspberry)でログインします。

Raspbin GNU/Linux 10 raspberrypi tty1

raspberrypi login:

 ログインしたら、おもむろにwpa_passphraseを実行します。日本語キーボードを使っている方は、たぶん「_」が入力できなくて困っていると思います(会長は困った)ので、お助けします。
 Shift押しながら「ほ」

 ラズパイを再起動し、(DHCPクライアントで追加されたIPアドレスに対して)パソコンからSSH接続できたら勝ちです。


その4 シリアル通信を使う

 会長が最初に試した方法がこれです。わざわざ無線LAN設定のためだけにシリアル変換アダプタを用意する人もいないと思うので4番目ですが、手元にあればそこまで手間ではありません。

用意するもの

  • シリアル変換アダプタ
  • (必要であれば)ジャンパワイヤ
  • (必要であれば)USBケーブル

 ラズパイのシリアル接続を有効にするため、Raspbianイメージを書き込んだSDカードをパソコンに挿し、bootのドライブ直下の「config.txt」という名前のファイルを開き、ファイルの末尾に「enable_uart=1」を追記します。(SSHの接続設定と一緒にやっとけばOK)

config.txt
# シリアル接続を有効にする
enable_uart=1

 ラズパイとシリアル通変換アダプタ、パソコンとは以下のように接続します。(TXとRXをクロスで接続)

 パソコンでターミナルソフト(会長はTera Termを愛用)を使って、シリアルポートに接続します。通信設定は以下の通りです。

項目
ボーレート 115200 bps
データサイズ 8 bit
ストップビット 1 bit
パリティ none
送信 CR
受信 CR
ローカルエコー OFF

 ラズパイの電源を入れ、以下の表示で入力待ちになるので、初期ユーザ(pi)と初期パスワード(raspberry)でログインします。

Raspbin GNU/Linux 10 raspberrypi ttyS0

raspberrypi login:

 ログインしたら、wpa_passphraseを実行します。ラズパイを再起動し、(DHCPクライアントで追加されたIPアドレスに対して)パソコンからSSH接続できたら勝ちです。


最初の設定

 以上で、無線LANでSSH出来るようになっているので、ここから先は必要な人だけ。(というか、会長の備忘録)

ラズパイ設定

 まずはラズパイの設定ツール(raspi-config)を実行します。

pi@raspberrypi:~$ sudo raspi-config

1 Change User Password
 初期パスワードのままだと誰でもログイン出来てしまいますので、パスワードを変更します。新しいパスワードを2回入力すればOK。

4 Localisation Options
 地域設定を日本に合わせます。
 I1 Change Locale
 「Locales to be generated:」と書かれた下にリストが表示されていますので、「ja_JP.UTF-8 UTF-8」にカーソルを合わせ、スペースキーでチェックを入れてエンターキーを押します。
 「Default locale for the system environment:」と書かれた下にリストが表示されていますので、「ja_JP.UTF-8」にカーソルを合わせ、エンターキーを押します。(ちょっと時間かかる)

 I2 Change Timezone
 「Geographic area:」と書かれた下にリストが表示されますので、「Asia」にカーソルを合わせてエンターキーを押します。
 「Time zone:」と書かれた下にリストが表示されますので、「Tokyo」にカーソルを合わせてエンターキーを押します。

 「Raspberry Pi Software Configuration Tool (raspi-config)」に戻ってきたら、右カーソルキーを押して「」にカーソルを合わせてエンターキーを押します。

パッケージの更新

 下記コマンドでインストールされているパッケージを最新のものに更新しておきます。(途中、処理を続行するために「y」を入力してエンターキーを押すことを促されるので、素直に従いましょう。)

pi@raspberrypi:~ $ sudo apt update
pi@raspberrypi:~ $ sudo apt upgrade

セキュリティ

 使用用途(接続環境)によっては、セキュリティも気をつけたほうがいいですね。

最後に

 これだけは言っておこう。

 いろいろいじる前に、今の状態でSDカードのイメージを作成しておくのだ。


  1. 一度ラズパイのイメージを書いたSDカードに上書きする場合、bootに割り当てられてる方のドライブを選択してください。もう一方を選択すると書き込みが途中で失敗してしまいます。