昨日積み残していた、画面周りの設定を追加します。
その前に、ひょっとしてlinux用のbonjourクライアントがあればラズパイに突っ込んでおけばいちいちIPアドレスを調べなくてもアクセスできるんじゃないか?と思い立って調べてみました。
結論から言うと
- デフォルトで有効
- raspberrypi.local でアクセス可能
ということでしたorz *1
というわけで、これからは[raspberrypi.local]というマシンが出てきたら、ラズパイのことだと思ってくださいw *2
さて、昨日の時点で残っていた問題は、「カメラの映像がリモートマシンで見れない」ということでした。 正確には、picamera(やpicameraを使っているraspistillコマンドとか)が、Xクライアントじゃなくて、linuxfbに直で書き込んでいるのでsshの接続元に飛ばせないということです。
そもそも、なんでリモート側で画面を見たいかというと・・・机が狭いんでラズパイ用のディスプレイを片付けたいだけなんですw
しかも、ほとんどの作業はsshでログインしてCUIでやるので、本当に必要なのはカメラの映像を見る時くらいのもの。それもテスト用途なので特にパフォーマンスは求めていません。というわけで、一番お手軽なリモート画面転送ソリューションであるところのVNCでアクセスできるようにしましょう。
ラズパイのVNCサーバを有効にするには、sshでログインしてraspi-configを起動し [3 Interface Options ] -> [ P3 VNC ] -> 「はい」 と選択すれば OKです。最後に画面上にThe VNC Server is enabled
と表示されればVNCサーバが有効になりさらに起動された状態になります。
続けて、macのfinderを立ち上げてメニューバーから[移動]->[サーバへ接続]と選びます。
表示されたダイアログにvnc://pi@raspberrypi.local
と入力して[接続]をクリックすると
接続できませんo....rz
どうやら、macのfinderから接続する時は、VNCのパスワードを設定する必要があるようです。
こちらの記事では、GUIでVNCのパスワードを設定されていますが、CUIから作業してみましょう。
まず、sshでログインしてvncpasswd
コマンドを使ってパスワードを生成します。
> ssh pi@raspberrypi.local $ sudo vncpasswd -service
2回聞かれるので、同じパスワードを入力してください。
続いて、/root/.vnc/config.d/vncserver-x11
のAuthentication
をVncAuth
に変更します。*3
デフォルトではgawkはインストールされていないので、事前にapt-get install gawk
してから実行してください。*4
$ sudo gawk -i inplace '!/Authentication/{print $0} ENDFILE {print "Authentication=VncAuth"}' /root/.vnc/config.d/vncserver-x11 $ sudo systemctl restart vncserver-x11-serviced.service
改めてfinderから接続すると、次のようにパスワードを聞かれるので、vncpasswdで設定したパスワードを入力します。
これで無事にラズパイにVNCで接続することができました !!
さて、当初の目的だったカメラの映像を出してみると・・・映りませんorz
ちょっと昨日の記事を確認してみましょう。
(意訳)picameraはframe bufferに直で書いてるんで、X11で飛ばすん無理
VNCサーバのサービス名を良く見てみましょう。
vncserver-x11-serviced.service
ええ、VNCは内部的にはXorg呼んでますね。o.......rz
というわけで、ソフトウェア的な解決は諦めて、amazonで昔買った激安HDMIキャプチャデバイスを使うことにします。
私が買った時は700円でしたが、今は780円のようです(どっちにしろ激安)
これをPCに挿して、ラズパイのHDMI出力とつなぎ、Quick time playerの新規ムービー収録から、USB videoを選ぶとこんな感じで見えます。*5
せっかくなので、ラズパイでカメラを起動してVNCからは見えず、HDMIキャプチャでは見えているという状態のスクショを最後に貼っておきますw
まとめ
いつも以上にぐだぐだだったので、今回分かったことをまとめておきます。
- 最近の(2015年以降?)ラズパイはデフォルトでbonjourが有効なので、macからなら
pi@raspberrypi.local
としてアクセスできる。 - ラズパイOSにインストールされているawkはmawk。inplcae処理がしたければgawkを別途インストールすること
- macのfinderからVNCでラズパイに接続する時はラズパイ側でVNCのパスワードを有効にする必要がある
- ラズパイカメラの出力をリモートマシンから見る簡単な方法は今のところ無い。ラズパイのHDMI出力をキャプチャするのが手っ取り早い
カメラ出力の件は、見るだけならmjpg-streamerを使ってストリーミング配信するというのが定番のようですが、これだとカメラ出力を加工して見たりする時にかえって難しくなりそうなので、今のところ避けてます。
ともかく、これでラズパイで開発する準備が整いました。
*1:それも2015年の時点でw
*2:複数台のラズパイが同一ネットワーク内に居る時ってどうなるんでしょうね。前述のページには/etc/hostnameに書いてる名前+.localが使われると書かれてるけど後で実験してみます。
*3:次のコマンド例でやっているのは、正確にはVncAuthの行が存在したら削除した上で、最終行にAuthentication=VncAuthを追記という操作ですが、設定ファイルにデフォルト値とかコメントとか入っていないシンプルなものなので、後から見て混乱することも無いでしょう(^^;
*4:最初はsed -iでなんとかしようとしてたんですが、上手い方法が思いつかず、もうawkでやってしまえーと思ってawkに乗り換えたらラズパイOSにインストールされてるawkがgawkではなくmawkでinplace処理ができずと、この修正をワンライナーでやるためだけに1時間くらいかかりましたorz
*5:このキャプチャ自体はただのUSB video deviceなのでQuick time player以外でも対応しているソフトなら何でも使えます。zoomで他の会議参加者に出力とかもできるはず