Pages

raspberry pi と vnc

2014年11月14日金曜日

久しぶりの更新!

raspberry pi と vnc の話。
ちょっと苦労したのでメモ。

やりたいこと
・ラズベリーパイの中にあるプログラムをディスプレイ無しで実行したい
・プログラムは、ラズベリーパイに繋いだキーボードの入力を受け取りたい
・手元のMacからラズベリーパイで動いているプログラムの様子を見たい。(どんな入力を受け取っているか。どんなログが出てるか。)

で、今まではMacで同じことをしていて、その時は、
・手元のMacから、プログラムを動かすMacに、vnc接続する
・手元のMacから、プログラムを動かすMac上のプログラムを実行する
・プログラムを動かすMacに繋いでいるキーボードから値を入力をする
という感じで、何の苦労もなく動かすことができていた。

まぁラズベリーパイでも同じことが簡単にできるだろうなんて考えていたのですが、ちょっと大変でした。

まず、“raspberry pi vnc”みたいな感じで検索をするとTightVNCというものの情報ばかり出てくる。
で、linuxの知識が全くない私は、何の迷いもなくTightVNCをapt-getしちゃったわけなのですが、これがMacのvncと全然違う。
Macにvnc接続すると、接続先と接続元で同じ画面が表示されて、どっちからでも操作できるーみたいな状態になって私の“やりたいこと”が簡単にできたのですが、TightVNC経由だと、全く別の画面が表示される。
つまり、手元のMacから見えている画面でプログラムを実行しても、ラズベリーパイに接続しているキーボードから入力は受け取れない。(頑張ったらできるのかな…)

で、色々検索していたら、x11vncというものを発見。
こっちだと、同じ画面が見えるらしい。
(TightVNCとx11vncの違い:Linuxでディスプレイに表示中のXに対してVNCする(X11VNC)
ということで入れてみた。
インストールは、
$ sudo apt-get install x11vnc
するだけです。
で、パスワードを設定したりするらしい。
多くのサイトでは、
$ x11vnc -storepasswd
を実行するみたいだけど、私は、これで設定しても上手く接続できなかったので、
このページ『パスワードを設定する』を参考にしました。(結局やっていることは同じように見えるけど…)
$ mkdir ~/.x11vnc
$ x11vnc -storepasswd <password> ~/.x11vnc/passwd

そして、
$  x11vnc -display :0 -rfbauth ~/.x11vnc/passwd 
を実行すると、ポート5900番でvnc接続が出来るようになるので、vnc://<address>:5900で接続できます。
常に動作させるようにするには、オプションとして、 -forever を付けてください。
 x11vnc -forever -display :0 -rfbauth ~/.x11vnc/passwd 

ただし、ターミナルモード(???)だと、繋げないので、
 startx
をお忘れなく。
startxは、sshじゃ行えないので、ラズベリーパイにディスプレイを繋いで、行う必要があります。多分。
でも、ラズベリーパイはディスプレイに繋がないつもりなので、毎回行うのは無理です。
なので、最初からGUI画面が出るように設定しました。
設定の仕方は、Raspberry Piを別のPCからリモート操作の『自動起動』のあたりを参照してください。

ここまでできれば、私のやりたかったことは全てできるのですが、
毎回sshで繋いで、x11vncを起動して、というのは非常に面倒なので、自動起動の設定。
多くのページで、~/.config/autostart/x11vnc.configに以下の内容を書けと書かれています。(ちなみに、私は、.configの下にautostartがなかったので、作りました。)

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=X11VNC
Comment=
Exec=x11vnc -forever -display :0 -ultrafilexfer
StartupNotify=false
Terminal=false
Hidden=false

ただ、私は、これだとうまく起動していないような感じだったので、

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=X11VNC
Comment=
Exec=x11vnc -forever -display :0 -rfbauth /home/pi/.x11vnc/passwd
StartupNotify=false
Terminal=false
Hidden=false

としました。
これで、めでたく自動起動もできるように!

本当は、ラズベリーパイを起動した時に、プログラムを実行とかもやりたいけど、面倒なので、後回し。




0 コメント:

コメントを投稿