Raspbian Stretch Lite で突然無線LANに接続不能になったとき
引き続きラズパイ関連ネタで。無線LANのトラブルに関して(Voice Kitは無関係です)。
問題なく無線LANに接続できていたのに突然接続できなくなってしまった場合の話。
Qiitaに書こうと思ったが、唐突に買収されたらしいのでちょっと様子見。
非常に冗長な記事なので結論を先に書いておくと、rfkill
コマンドがポイント。インストールして/etc/rc.local
にrfkill unblock wif
と1行入れれば解決。
その場しのぎの解決策ではあるけど。
環境
- ブロードバンドルーター: NEC WX01 (WiMAX2+)
- Raspbian Stretch Lite (2017/11/29 ver. )
- Raspberry Pi model 3B
環境要因ではなさそう。
現象
初回セットアップ直後は問題はなく、普通に無線LANに接続できていた(はず)。
接続が不安定とかそういうのではなく、特定のタイミングからさっぱりつながらなくなってしまった。
パッケージを追加後の後処理が実行されている最中(systemd 関係のフック処理?)で通信が途切れて再起動しても接続できず。
$ sudo ip link set wlan0 up RTNETLINK answers: Operation not possible due to RF-kill
"RF-kill"に関してはArch LinuxのWikiが参考になった。無線LANデバイスをソフトウェア側で無効化するスイッチがあり、これを"RF-kill"と呼ぶらしい。
理由はわからないが、無線LANデバイスを無効化するための内部ロックがセットしたまま解除されてない状態。
ソフトウェア的に無線LANが無効化されているので接続処理が実行されない。
対処
無線LANデバイスの内部ロックを外すためにrfkill
コマンドが必要だがRaspbian Liteではインストールされていない。
有線ネットワークにつないでrfkill
パッケージをapt
でインストールする。
$ sudo apt install rfkill
以下のコマンドでロックを外すことができる。
$ rfkill unblock wifi
この状態で、再度ip
コマンドでデバイスを有効化する。
$ sudo ip link set wlan0 up
成功していれば、無事にIPアドレスを取得できるはず。
その他
rfkill
コマンドの他のオプションとして、list
で現在のデバイスのブロック状態を確認できる。
$ rfkill list 0: phy0: Wireless LAN Soft blocked: no Hard blocked: no 1: hci0: Bluetooth Soft blocked: yes Hard blocked: no
ラズパイの無線LANモジュール用のカーネルモジュール名はbrcmfmac
なので、以下のようにしてカーネルのログを絞り込んだりできる。
$ dmesg | grep brcm
あとはjournalctl -l
でログを見る。
再起動のたびに接続不能になる場合
上記で問題が解決するかと思いきや、手元の環境では解決せず。とりあえずudev
かsystemd
が容疑者。
systemd-udevd[169]: Process '/usr/lib/raspberrypi-sys-mods/rfkill-persist' failed with exit code 1
頑張って調べていくと、udevは/lib/udev/rules.d/15-rfkill.rules
というルールにより、/usr/lib/raspberrypi-sys-mods/rfkill-persist
というスクリプトを実行している。
このスクリプトはどういうスクリプトかというと、/dev/rfkill
の状態が変化した時にudev経由で実行されるもの。
こいつは何をしているかというと、/lib/systemd/systemd-rfkill
というコマンドを引数付きで実行するのだが……。
ところがこのsystemd-rfkill
コマンドは引数を要求しない。よって必然的にエラーになる。
$ /lib/systemd/systemd-rfkill save wifi This program requires no arguments.
このコマンドは何をするかというと、ソースを見る限り、udev
イベントの状態をチェックして、/var/lib/systemd/rfkill/
ディレクトリ配下のファイルに状態を記録あるいは読み出すコマンド。
マニュアルによるとカーネルのコマンドラインオプションをチェックするので無効化自体はできるみたいだけど、そもそも状態の保存に失敗しているので、オプションに関係なくうまく動いていないのでは……。
試行錯誤のメモ
とりあえず問題のあるスクリプトを修正してみた。
$ sudo vi /usr/lib/raspberrypi-sys-mods/rfkill-persist
要するに引数なしで実行すればいいので、3行目のコマンドの引数2つを削除。
#!/bin/sh #RFKID=`basename $DEVPATH` #/lib/systemd/systemd-rfkill save $RFKID /lib/systemd/systemd-rfkill
2行目をコメントアウト。3行目をコピーして元の行をコメントアウト。コピーした行は引数を除去。
もう一度、sudo rfkill unblock wifi
を実行して再起動。やはり解決せず。
結論
仕方がないので、/etc/rc.local
でお茶を濁す。まあその場しのぎなんだけど。
以下の1行を/etc/rc.local
の、# By default this script does nothing.
という行の下に追加。
/usr/sbin/rfkill unblock wifi
systemd
、バグってんじゃないのかと思いつつ、ググってもそれらしいバグは上がってない。それとRaspbianのGUIなしを使うユーザはあまり無線LANは使わないのかな……。
適切かどうか断言できないけど、udev
ルールのうち、/lib/udev/rules.d/15-rfkill.rules
というのは無駄ではないかと思う。理由としては"systemd-rfkill"というサービスが存在しており起動時と終了時に実行されるはずなので*1。
参考情報
古いバージョンのRaspbian向けの情報だと、/etc/network/interfaces
を編集しろと書いてあるけどこれは不要。
同時に、/etc/network/interfaces.d
も空で問題なく無線LANは接続できる(前述のRF Kill問題さえなければ)。
pi@raspberrypi:~ $ cat /etc/network/interfaces # interfaces(5) file used by ifup(8) and ifdown(8) # Please note that this file is written to be used with dhcpcd # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d
上記の設定ファイルでインクルードしているディレクトリは空。
pi@raspberrypi:~ $ ls /etc/network/interfaces.d pi@raspberrypi:~ $
なお、天下無双の嫌われ者?、systemd様がよろしくやってくれるので、wpa_supplicant.service
も無効のままで問題ない。
$ systemctl is-enabled wpa_supplicant.service disabled
IPアドレスを固定したいとかそう言うのはdhcpcd
でやるか、systemd-networkdにやらせろということらしい。
なお、ifup
およびifdown
コマンドの応答を見ると、デバイスがみつからないように見えるが、この状態でも正常につながるので気にしなくていい。
$ ifup wlan0 ifup: unknown interface wlan0
まとめ
ちゃんとRaspbianのネットワークまわりの初期化処理の流れを把握していないので勉強しないとまずそう。
良くも悪くもハードウェアの知識が知らずと身につくのがLinux系のいいところ。Windows にrfkill
相当のコマンドがあるのか知りませんが。
トラブルの度に今まで知らなかった知識が増えるんでこういうのも(たまには)悪くない*2。
関連リンク
- systemd/rfkill.c at master · systemd/systemd
- Arch Linux のライブラリアップデート後に Wifi に接続できなくなった場合 › なんか書いていこうぜー.com
- ワイヤレス設定 - ArchWiki
- [ubuntu] I have to issue "rfkill unblock wifi" at every boot...
カラー図解 最新 Raspberry Piで学ぶ電子工作 作って動かしてしくみがわかる (ブルーバックス)
- 作者: 金丸隆志
- 出版社/メーカー: 講談社
- 発売日: 2016/07/20
- メディア: 新書
- この商品を含むブログ (1件) を見る
カラー図解 Raspberry Piではじめる機械学習 基礎からディープラーニングまで (ブルーバックス)
- 作者: 金丸隆志
- 出版社/メーカー: 講談社
- 発売日: 2018/03/15
- メディア: 新書
- この商品を含むブログを見る
Google AIY Voice Kit (Google Homeもどき)のセットアップ
月曜日に到着したGoogle AIY Voice Kitを日曜日にセットアップしているってのはどうなんでしょう。
Google AIY Voice Kit 販売開始のご案内 - Raspberry Pi Shop by KSY
国内正規品の初回ロット。最近の出荷分には日本語ガイドがついているそうです*1。
何はともあれ、セットアップ。
- Google AIY Voice Kitとは
- 開封の儀
- 用意するもの
- 準備
- セットアップ作業
- 電源投入
- ソフトウェア側の設定
- Assistant APIの動作確認
- 普通のRapsbianとの違い
- 所感など
- 入手方法について
- まとめ
Google AIY Voice Kitとは
ざっくり言うとGoogleがリリースしたスマートスピーカー(ホームスピーカー)の組み立てキットです。
発表されたのは少し前ですが、日本国内でも正式に販売が開始されたということで購入。
Google のAI Yourself プロジェクトの第一弾としてリリースされたもの。現在は第二弾のVision Kitというのもリリースされています。
このVoice KitはRaspberry Pi model 3Bと組み合わせることで、音声認識を活用した「何か」を作れますよ、というキット。
Voice Kit 自体は税抜き3,000円ですが、別途、Raspberry Pi model 3Bと電源アダプタ、microSDなどを用意する必要があります(Vision Kit の方はRaspberry Pi Zero WとPi Cameraが必要)。
Google Home もどきの自作キットという認識でよろしいかと。
Raspberry Pi mdel 3Bを組み込むので、ラズパイ関連のノウハウなり周辺機器の一部を利用できて色々と遊べる、はず……。
開封の儀
公式のページの写真と何も変わりはないですが、一応。
英語のガイド本つき。
外装のダンボールがお目見え。
部品一式。
用意するもの
- Raspberry Pi moedel 3B
- 両面テープ
- 精密ドライバー
- microSD & SDカードアダプタ
- HDMI接続のディスプレイ(VNCを使わない場合)
- キーボードおよびマウス(VNCを使わない場合)
ドライバーは"#00"のサイズのものが必要と書いてあります。ダイソーの精密ドライバーセットで全く問題ないです。
ディスプレイとキーボード、マウスは無くてもSSH+VNCで作業するので無くても問題ない、です。
準備
事前にOSのイメージファイルをダウンロード。
2017年12月23日時点でaiyprojects-2017-09-11.img.xz
というファイル名でした。
Etcherで書き込み。圧縮ファイルに対応しているので、xz
形式のファイルを直接指定してOK。
一度microSDを取り外し、ssh接続用に小細工しておきます。
$ touch /Volumes/boot/ssh
Finderからboot
というボリュームをマウント解除して取り出し。
2017年12月現在、旧式のRaspbian Jessie、つまりDebian 8ベースのRaspbianにサンプルコード一式を追加した代物のようです。
セットアップ作業
注意点
ラズパイ側に放熱用のヒートシンクを取り付けている場合、高さによっては接触するので取り外す必要あり。
基盤の取り付けと配線
それほど難しい英語ではないので、写真を見ながらゆっくり作業して行けば問題ないです。ドライバーはちゃんと寸法のあったものを使う、ぐらいでしょうか。
ちょっと拍子抜けするレベル。スペーサーの取り付けがちょっと力がいるので手こずるかも。
一通り取り付けて、配線を確認したら外装に組み込み。
片方の側面にだけ穴があるのはやはり内部からケーブルを取り出せということ?
分解はできなくはないですが、ラジオペンチでスペーサーの頭をつまむ必要があります。
電源投入
microSDをセットして電源ケーブルを接続。 無線は面倒なのでネットは有線に逃げました。
説明書にLEDの状態をチェックしろと書いてありますが、、本体上部の赤いボタンのLEDはプログラムを動かさない限り光らないようです。説明書の記述が間違っているとか。
ソフトウェア側の設定
前述のとおり、公式ページで提供されているOSはRaspbianそのものなので基本的にRaspbian Jessieのセットアップと同じ。まずはsshでログインしてVNCを有効化。
VNC
$ sudo raspi-config
VNCを有効化する。
過去記事を同じなので省略。
Raspbian Stretch Lite とVNC - ながいものには、まかれたくない
$ sudo vi /boot/config.txt
以下の2行の行頭のコメント記号を外す。
framebuffer_width=1280 framebuffer_height=720
スピーカーとマイクの動作チェック
とりあえずVNCで接続する。
警告が出るのでパスワードは変更しておく。
ログインするとデスクトップに"Check audio"というアイコンがあるのでおもむろにダブルクリックすると、端末エミュレータのウィンドウが開いていきなりスピーカーから音声が聞こえる。
テキストメッセージの指示に従ってEnterを押してから"Testing 1,2,3"と読み上げるとスピーカーから自分が読み上げた音声が再生される。
なぜか音量でかいので注意。
Assistant APIの動作確認
APIの有効化
https://console.cloud.google.com
にアクセスする。ラズパイ上でアクセスしてもいいし、普段使いのマシンで作業してJSONを転送してもいい。
- プロジェクトを作成
- Assistant APIを有効化
- OAutuの認証キーを作成してJSONファイルをダウンロード
別のマシンからVoice Kit内部のラズパイに送る場合は、以下のようにする。
$ scp Downloads/client_secret_*.json pi@raspberrypi.local://home/pi/
ラズパイ側で、ファイル名をassistant.jsonにリネームする。
$ mv client_secret_*.json assistant.json
`https://myaccount.google.com/activitycontrols'にアクセス。
- ウェブとアプリのアクティビティ
- 端末情報
- 音声アクティビティ
の3つを有効化する。
[2017/12/27 追記]
「ウェブとアプリのアクティビティ」という項目に関しては、以下のチェックボックスをオンにしないと定形応答しか帰ってきません。チェックしなくても音声認識は動作するようです。
Chrome の閲覧履歴と Google サービスを使用するウェブサイトやアプリでのアクティビティを含める
何を話しかけても同じ応答メッセージが帰ってくる場合はアクティビティの設定を確認。
権限不足の場合は何かが足りないのでGoogleのページを参照しろ、という応答が返ってきます。
"Actually? There are silence? XXX your development? Going to Google web site your phone? for more detail."(イマイチ聞き取れず)。
参考:Configure a Developer Project and Account Settings | Google Assistant SDK | Google Developers
[追記ここまで]
デモプログラムの実行
デスクトップ上にある、"Start dev terminal"をダブルクリック。端末エミュレータのウィンドウが起動するので、``と入力してEnterキーを押す。
デモプログラもの動作が始まると、赤いボタンの内蔵LEDが点滅する。
"OK, Google"と話しかけると反応がある。ただし、発音を英語っぽく”オーケイ、ゴオゥゴォ”みたいに呼びかけないと反応しない……。
なんか早口で会話が成立していない。
付属のデモプログラムについて
全部で4つデモプログラムが付属。Assistant API のAPIキーで動くのは以下の3つ。
- AIY-voice-kit-python/src/assistant_library_demo.py : "OK, google"という呼びかけに反応するサンプル
- AIY-voice-kit-python/src/assistant_library_with_button_demo.py : "OK, google"という呼びかけか、ボタンを押すと反応するサンプル
- AIY-voice-kit-python/src/assistant_grpc_demo.py : ボタンを押すと認識した音声がコンソールに表示されるサンプル
デモプログラムの返答は固定っぽい。"OK, google"ではなく"Hey, Google"でも反応する。
最後の1つはCloud Speech APIを有効化する必要があるサンプル。月1時間までは無料ですが、それ以上は課金されるので注意。
- AIY-voice-kit-python/src/cloudspeech_demo.py : ボタンを押すと音声がテキストに変換される(要カスタマイズ?)
Assistant APIと同じ要領で、Google Cloud Speech APIのAPIを有効化し、サービスアカウントのAPIキーを作成する必要あり。認証情報のJSONファイル(プロジェクト名で始まるファイル)を入手してcloud_speech.json
にリネームしてホームディレクトリに配置すると動く。
公式ドキュメント参照:Create a service account and credentials
普通のRapsbianとの違い
再配布に制限のあるパッケージを除去して拡張基板(VoiceHat)用のドライバ類がインストールされただけ?
dmesg
コマンドの出力を見ると、voicehat-code
というのが認識されています。
$ dmesg | grep voicehat [ 2.687675] voicehat-codec voicehat-codec: property 'voicehat_sdmode_delay' not found default 5 mS [ 3.880121] snd-googlevoicehat-soundcard soc:sound: voicehat-hifi <-> 3f203000.i2s mapping ok [ 18.092070] voicehat-codec voicehat-codec: Enabling audio amp... [ 19.201221] voicehat-codec voicehat-codec: Disabling audio amp... [ 34.730969] voicehat-codec voicehat-codec: Enabling audio amp... [ 34.737530] voicehat-codec voicehat-codec: Enabling audio amp... [ 37.056762] voicehat-codec voicehat-codec: Disabling audio amp...
カーネルまわりは普通っぽいし。
uname -a Linux raspberrypi 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux
いまいちよくわかりませんでした。
所感など
どこからどこまでラズパイ側で処理しているのかちょっと不明です。"OK, Google"だけラズパイ側でTensorflowでやってるとか?
構造上、Pi Camera は使えないです。それとヒートシンクが干渉するというのはちょっと盲点でした。いわゆるHATシリーズは今まで試したことがなかったので気づきませんでしたよ。
ダンボール筐体にボタンというのも趣があります。
問題は自宅に赤外線リモコン対応機器がロクにないとか、遠隔操作可能な家電がないってことですかね。
はんだ付けしてやればスピーカーをモノラルからステレオに拡張できるみたいですし、付属の冊子を読む限りサーボモータをつないだり色々できるようです。
入手方法について
KSYから買うのが確実ですが、、入門セットがamazonでも購入できる状態になっているようです。
- メディア:
- この商品を含むブログを見る
はてなのAmazon商品紹介、検索にヒットしてもうまくリンクされないのはちょっと困るんですが。
まとめ
なんだかんだで遊べそうです。基本的にスピーカーとマイクとプラスアルファなのに。
次の目標は日本語の呼びかけに反応させることと、USBのカメラの制御ぐらいはやらせたい。
*1:別にいらないけど
ラズパイ版のVivaldiを試す
VivalidiというWebブラウザの、Raspberry Pi向けのバージョンがリリースされているので試してみた。
公式プレリリース:Vivaldi releases browser for Raspberry Pi and ARM devices | Vivaldi Browser
公式のアナウンスから間が空いているけどせっかくだし。
パッケージの入手
ラズパイのGUI環境からVivaldiのページにアクセスし、「その他のプラットフォーム」のリンクをクリック。
Linux向けパッケージの中から”Vivaldi 1.13 32bit ARM DEB (Unsupported)”のような"ARM"という文字列入りのリンクを探してdeb形式のパッケージをダウンロードする。
インストール
何も考えずにインストールするとパッケージの依存関係でエラーが出るので先にフォントをインストールする。
$ sudo apt install fonts-liberation
続いてVivaldiのバッケージ。
$ sudo dpkg -i vivaldi-stable_1.13.1008.40-1_armhf.deb
サポート対象外らしいので自己責任で。
起動方法は、メニューからたどるか、端末エミュレータで
$ vivaldi &
……こいつ、動くぞ?
感想
Youtubeの動画で試してみたが、流石に動画の再生はいまいちの様子。
動画は最初の数秒だけ再生されるけど、途中でローディングのマーカーがくるくる回り続けて再生できない。
逆にいうと動画再生系以外は普通に表示されている。
ラズパイ公式のChromium+adobe-flashpluginパッケージの構成で動画再生はできるので、VivaldiからFlashのプラグインを読み込めるなら行けそうな気もする。
実験的にリリースしたんだろうし、まあ当然と言えば当然の結果。何より選択肢が増えるのは喜ばしい話。
今後に期待ということで。
Raspbian Stretch Lite とVNC
引き続きラズパイ関連。
VNCの設定について。
前提
- Raspbian Stretch Lite
- ディスプレイは接続しない
- クライアントにReal VNCを使わない前提
基本的な作業は以下の公式ガイドと同じ。
パッケージの追加
$ sudo apt install realvnc-vnc-server
これだとミニマム構成というかXサーバーもウィンドウマネージャもインストールされていないので、VNCで接続しても真っ黒な画面が表示されるだけ。
適当なデスクトップ環境をインストールする。
以下はLXQtの例。
$ sudo apt install lxqt xinit
要はX サーバー本体と最小限のツール類を入れればいいんだけど不便だし。
GUIの設定ツールも入れておく。
$ sudo apt-get install rc-gui
本気で最低限で行きたいなら、下記のようにopenboxとXサーバー本体をインストールすればいいはず(試していません)。
$ sudo apt-get install xserver-xorg-core xserver-xorg-input-all \ xserver-xorg-video-fbdev libx11-6 x11-common \ x11-utils x11-xkb-utils x11-xserver-utils xterm lightdm openbox
参考:Should running VNC on Jessie Lite "just work"? - Raspberry Pi Stack Exchange
設定
基本設定。
$ sudo raspi-config
"5. Interfacing Option"から"P3 VNC"とたどっていくだけ。楽すぎて退屈ではあるけど。
素直に"はい(Yes)"。
”Finish"で完了。
認証に関する設定の変更
クライアントとして素直にRealVNC Viewerか、限りなく互換性のあるモノを使うならこの作業は不要。
$ sudo vi /root/.vnc/config.d/vncserver-x11
Authentication=
という行があるので、右辺をVncAuth
に変更。該当する行がなければ追加する。
$ sudo vncpasswd -service
適当なパスワードをセットする。接続時に必要なので忘れないこと。
関連:Raspbian (2016/09/23以降)とVNC接続 - ながいものには、まかれたくない
解像度の変更
次に、解像度の設定を変更する。
$ sudo vi /boot/config.txt
以下の行の行頭のコメント記号を外す。
framebuffer_width=1280 framebuffer_height=720
再起動。
$ sudo reboot
日本語入力
$ sudo apt install fcitx-mozc
VNCでログイン後に、インプットメソッドのON/OFFをShift+Spaceに変更する。
接続
macOSのFinder で、Cmd+k
を押すと接続先の選択画面が表示されるので、vnc://raspberrypi.local
と入力。
先ほどvncpasswd
コマンドで設定したパスワードを入力する。
ユーザーを選択し、パスワードを入力する。
ログインした状態。LXQtの勇姿。
ちょっと重いので解像度を下げたほうがいいかも。
PIXEL環境にしたい場合
Raspbianの標準デスクトップ環境であるPIXELを使いたい場合は以下のように、raspberrypi-ui-mods
をインストール。
$ sudo apt install raspberrypi-ui-mods
ただ、その場合は最初からRaspbian Stretch with PIXELという名前のリンクからイメージをダウンロードした方が早いと思います。
参考: [GUIDE] Raspbian Lite with PIXEL/LXDE/XFCE/MATE/i3/X11 GUI - Raspberry Pi Forums
まとめ
素直にRealVNC Viewerをインストールすると手間が省けます。まあその辺りは個人の好みの問題ってことで。
インターネット越しで使うつもりはないので、セキュリティに関してはちょっと危ないかも。
Raspbian のセットアップ(Raspbian Stretch 2017/11/29版)
久しぶりにRaspbian のセットアップ(Raspbian Stretch 2017/11/29版)。
夏のうちにやろうと思いつつ放置状態だったので。
RaspbianというのはRaspberry Piという教育用の小型PC用のOS、です。あとはGoogle先生にお尋ねください。
OpenCV 3.4がもうじきリリースされるみたいなんで、環境を構築し直してもいいかな、と。
今年の夏ぐらいからDebian StretchベースになっているのでGUI環境はともかくかなり便利になっているはず。
旧バージョンでは諸事情でffmpegのパッケージの代わりにlibavが採用されていましたが、今後はその点を気にする必要がないというのは大きいです。
方針
旧バージョンからアップグレードも可能みたいですが、諸事情でモニタを処分したり色々しているので、マウスとかキーボードを接続せずにセットアップする方向で。
基本的にNOOBSは使わないです。
GUI関係はインストールしなくても後からVNC入れるとかやりようは色々あるので。
ダウンロードとmicroSDへの書き込み
手元のにWindowsマシンはないので以下のの手順はmacOS側で作業。
ダウンロード
とりあえず今回はGUIなしで。
"RASPBIAN STRETCH LITE"の方のリンクからダウンロード。
microSDへの書き込み
まずはダウンロードしたzipファイルを展開。
$ unzip 2017-11-29-raspbian-stretch-lite.zip Archive: 2017-11-29-raspbian-stretch-lite.zip inflating: 2017-11-29-raspbian-stretch-lite.img
EtcherというソフトでmicroSDに書き込み。
展開したimgファイルと書き込み先のSDカードリーダーを選択する。
書き込み完了したら一度microSDを取り出し、再度カードリーダーにセットする。
もしdd
コマンドを使用する場合はオプションに注意されたし。
参考:Raspbian2017-05以降のイメージはddコマンドで書き込む時に追加のオプションが必要 - あっきぃ日誌
ちょっとした準備
ネットワーク経由で設定するためにちょっとした小細工をしておく。
作業としては
- SSHを自動起動させる
- 無線LANのパスフレーズのセット
の2点。
Raspbian のイメージを書き込んだmicroSDをセットすると、Windows/macOSではboot
というバーティションしか表示されない。
というか、boot
だけアクセスできるようにWindows向けのファイルシステムになっている。
このboot
というパーティションにアクセスして簡単な作業をするだけ。
SSHのための設定
Finder でもターミナルでもなんでもいいので、boot
にssh
という名前のからのファイルを作る。
例えば、
$ touch /Volumes/boot/ssh
無線LAN(Wifi) の設定
同じ要領で無線LANに接続するための設定ファイルをboot
というパーティションに配置すると自動的に適用される。
$ vim /Volumes/boot/wpa_supplicant.conf
上記ファイルに以下のように書き込んでおく。5行目のSSIDと6行目のパスフレーズを環境に合わせる必要あり。
country=JP ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="your ssid" psk="your passphrase" }
引用元:Raspberry Piの無線LANをmicroSDで設定する - Qiita
平文でパスフレーズを保存するのは好ましくないというのは確かにそのとおりだけど、それはラズパイの起動に成功してから修正すれば済む話では?
boot
パーティションに作成したファイルは初回起動時に削除されるので、/etc
の設定ファイルを編集する。
wpa_passphrase
というコマンドでハッシュ化されたパスフレーズを生成できるので、これを設定ファイル(/etc/wpa_supplicant/wpa_supplicant.conf
)に書き込めば良い。
あとは修正済みの設定ファイルを別のマシンにコピーしておくとセットアップし直す時に役に立つはず。
あとはmicroSDをカードリーダーから取り外して、ラズパイの本体にセットして電源を入れるだけ。
初期設定
最初の電源投入時はmicroSDのパーティションを拡張したりなんだかんだで時間がかかる。数分間のんびり待つ。
sshで接続する
環境にもよるけど、Avahi というデーモンのおかげで、ホスト名で接続できるのでping
を連打する必要はない。要するにBonjour のマルチキャスト DNS 機能と同じ。
$ ssh pi@raspberrypi.local
環境によってはこの方法は使えないので、ブロードバンドルーターなどのWifの親機か、ping
コマンドで頑張るか、大人しくディスプレイを接続して確認するかのいずれかになる。
pi
というユーザーの初期パスワードはraspberry
になっているので、速やかに変更する。
同一のサブネットにラズパイが複数存在する場合、ホスト名が自動的に修正されるのかどうかは試したことがないのでなんとも言えないでs*1。
パスワード変更
前述のとおり、初期設定のままインターネットにつなぐのはよろしくないのでパスワードを変更する。
$ passwd Changing password for pi. (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
パスワード入力中のエコーバック(*
が表示されたりするもの)はないので注意。
アップデート
apt
コマンドで各種パッケージのアップデート。
まずはパッケージデータベースの更新。
$ sudo apt update
パッケージの更新。
$ sudo apt upgrade
なお、apt
というコマンドはapt-get
コマンドのフロントエンド。直接apt-get
コマンドを実行してもいいですが、入力文字数が少ない方がラクなので。
raspi-configによる設定
GUIの設定メニューは使えないが、代わりにCLIの設定ツールがあるのでこれを使う。由緒正しきCLIの設定ツールという感じでカーソルキーの左右とTabキー、スペース、Enterで操作する。前の項目に戻るときはEscキーも使える。
$ sudo raspi-config
まず"4. "の"Localisation Options"から言語周りを設定。
- "I1 Change Locale" :ロケールの生成と日本語をデフォルトに。
- "I2 Change Timezone" :タイムゾーンの設定
次に"5. "の"Interfaceing Options"からI/O周りの設定。
"P1 Camera"という項目を選択した状態でEnter。
"Yes" か "No"を訊いてくるので"Yes"
他の項目は適宜設定。
最初のメニューに戻って、Tabキーで"Finish"にカーソルを移動してEnterを押すと再起動するかどうかの確認メッセージが表示されるので、"Yes"にカーソルを移動してEnter。
パッケージの追加
この辺は個人の好みと使い方による。
- git
- tmux
- ag
- rfkill
$ sudo apt install git tmux
後から色々追加するはず。
$ sudo apt install silversearcher-ag
$ sudo apt install rfkill
バージョン情報など
冒頭に書いたとおり、ベースのDebianのバージョンがStretchになった関係で基本的なパッケージがバージョンアップされています。
旧バージョンよりもapt
でインストールできるパッケージが増えているのでデスクトップとしても結構使えるのではと思います。
例えばフォント周りとか。
Kernel
$ uname -a Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l GNU/Linux
Python
pi@raspberrypi:~ $ python --version Python 2.7.13 pi@raspberrypi:~ $ python3 --version Python 3.5.3
gcc
$ gcc --version gcc (Raspbian 6.3.0-18+rpi1) 6.3.0 20170516 Copyright (C) 2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
その他
apt
経由でインストールできるPHPは7.0、Ruby は2.3.3。
難点としてはNetatalkのバージョンが2.xのまま……。
まとめ
GUIなしのセットアップとしてはこんな感じかと。VNCサーバーについては後でセットアップする予定。
そもそもVoice Kitが届いているのでそっちで遊ぶのが先か。
【国内代理店版】Google AIY Voice Kit - 日本語「組み立てガイド」付属
- 出版社/メーカー: Google
- メディア: エレクトロニクス
- この商品を含むブログを見る
カラー図解 Raspberry Piではじめる機械学習 基礎からディープラーニングまで (ブルーバックス)
- 作者: 金丸隆志
- 出版社/メーカー: 講談社
- 発売日: 2018/03/15
- メディア: 新書
- この商品を含むブログを見る
*1:一台ずつセットアップしてホスト名を変えればいいのか