HPCメモ

HPC(High Performance Computing)に関連したりしなかったりすることのメモ書き

ラズパイ4のセットアップ(その3)

昨日積み残していた、画面周りの設定を追加します。

その前に、ひょっとしてlinux用のbonjourクライアントがあればラズパイに突っ込んでおけばいちいちIPアドレスを調べなくてもアクセスできるんじゃないか?と思い立って調べてみました。

結論から言うと

  • デフォルトで有効
  • raspberrypi.local でアクセス可能

ということでしたorz *1

Raspberry Piに Avahi Bonjourサービスを入れて、ホスト名で接続できる様にする方法 (ラズパイに Bonjourサービスを入れて IPアドレスが分からなくてもホスト名で簡単に接続する方法)

というわけで、これからは[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を立ち上げてメニューバーから[移動]->[サーバへ接続]と選びます。

f:id:n_so5:20210325094150p:plain

表示されたダイアログにvnc://pi@raspberrypi.localと入力して[接続]をクリックすると

f:id:n_so5:20210325094532p:plain

接続できませんo....rz

f:id:n_so5:20210325094333p:plain

どうやら、macのfinderから接続する時は、VNCのパスワードを設定する必要があるようです。

qiita.com

こちらの記事では、GUIVNCのパスワードを設定されていますが、CUIから作業してみましょう。

まず、sshでログインしてvncpasswdコマンドを使ってパスワードを生成します。

> ssh pi@raspberrypi.local
$ sudo vncpasswd  -service 

2回聞かれるので、同じパスワードを入力してください。

続いて、/root/.vnc/config.d/vncserver-x11AuthenticationVncAuthに変更します。*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で設定したパスワードを入力します。

f:id:n_so5:20210325113835p:plain

これで無事にラズパイにVNCで接続することができました !!

f:id:n_so5:20210325114312p:plain

さて、当初の目的だったカメラの映像を出してみると・・・映りませんorz

ちょっと昨日の記事を確認してみましょう。

hpcmemo.hatenablog.com

(意訳)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

f:id:n_so5:20210325115530p:plain

まとめ

いつも以上にぐだぐだだったので、今回分かったことをまとめておきます。

  1. 最近の(2015年以降?)ラズパイはデフォルトでbonjourが有効なので、macからならpi@raspberrypi.localとしてアクセスできる。
  2. ラズパイOSにインストールされているawkはmawk。inplcae処理がしたければgawkを別途インストールすること
  3. macのfinderからVNCでラズパイに接続する時はラズパイ側でVNCのパスワードを有効にする必要がある
  4. ラズパイカメラの出力をリモートマシンから見る簡単な方法は今のところ無い。ラズパイのHDMI出力をキャプチャするのが手っ取り早い

カメラ出力の件は、見るだけならmjpg-streamerを使ってストリーミング配信するというのが定番のようですが、これだとカメラ出力を加工して見たりする時にかえって難しくなりそうなので、今のところ避けてます。

github.com

ともかく、これでラズパイで開発する準備が整いました。

*1:それも2015年の時点でw

*2:複数台のラズパイが同一ネットワーク内に居る時ってどうなるんでしょうね。前述のページには/etc/hostnameに書いてる名前+.localが使われると書かれてるけど後で実験してみます。

*3:次のコマンド例でやっているのは、正確にはVncAuthの行が存在したら削除した上で、最終行にAuthentication=VncAuthを追記という操作ですが、設定ファイルにデフォルト値とかコメントとか入っていないシンプルなものなので、後から見て混乱することも無いでしょう(^^;

*4:最初はsed -iでなんとかしようとしてたんですが、上手い方法が思いつかず、もうawkでやってしまえーと思ってawkに乗り換えたらラズパイOSにインストールされてるawkgawkではなくmawkでinplace処理ができずと、この修正をワンライナーでやるためだけに1時間くらいかかりましたorz

*5:このキャプチャ自体はただのUSB video deviceなのでQuick time player以外でも対応しているソフトなら何でも使えます。zoomで他の会議参加者に出力とかもできるはず