VNCを使ってRaspberry Pi の画面をAndroidに出す

前回はUSBモニターを接続してみましたが、一万円強で800x600の解像度だとちょっとコストパフォーマンス的にどうだろうと考えてしまうレベルです。
コンパクトで手頃な値段のモニター単品ってなかなかないんですよね。

そこで今回は少し視点を変えて、VNCで別の機器に画面を出力する方法を試してみました。
本記事でのクライアントはAndroidですが、別のクライアントでも大丈夫でしょう。

VNCserverの導入

パッケージインストール

% sudo apt-get install tightvncserver

サービス起動
クライアントから接続するためのパスワードをここで設定します。

% vncserver -geometry 1280x720

You will require a password to access your desktops.

Password: 
Verify:   
Would you like to enter a view-only password (y/n)? n

New 'X' desktop is pi2:1

Creating default startup script /home/penkoba/.vnc/xstartup
Starting applications specified in /home/penkoba/.vnc/xstartup
Log file is /home/penkoba/.vnc/pi2:1.log

停止

% vncserver -kill :1
Killing Xtightvnc process ID 2615

Android VNCクライアント

以下をインストールしました。無料です。
https://play.google.com/store/apps/details?id=android.androidVNC&hl=ja

Android機を、vncserverを起動したRaspberry Piにリーチ可能なネットワークにつなぎます。
VNCクライアントを起動すると、コネクションの設定画面になりますので適宜設定します。

  • コネクション名:任意の名前
  • パスワード:先ほどvncserverで設定したもの
  • アドレス:Raspberry Piのホスト名またはIP
  • ポート:デフォルトでは5900にディスプレイ番号を足した物(:1の場合は5901)となります。

これで接続すると、Android機にXの画面が表示されます。

なかなかお手軽ですね。

Bluetoothのキーボードやマウスがなくても、sshRaspberry Piにログインして export DISPLAY=:1 してからXアプリケーションを起動すればこちらの画面に表示されます。表示されるだけでGUIの操作はほとんどできませんが...

表示のスピードですが、画面サイズが1280x768、Raspberry Pi側がWLANでという条件で1fps行くかどうか、というくらいの印象です。
Raspberry Piを有線接続にしたら多少早くなりましたがそれでも2fpsくらいでしょうか。動画再生なんかは諦めた方がいいですね。

デスクトップのカスタマイズ

起動スクリプトは以下になります。
~/.vnc/xstartup
設定を変える場合はこれを編集するか、~/.xsession を作って好きなようにいじります。

わたしのいつもの画面です。

キーボード、マウスの接続

画面が出るだけだと何もできないので、Bluetoothのキーボード・マウスをAndroidに接続して入力環境を作ってみました。

が、なぜか今のところコントロールキーが効きません。Androidのキーボード事情をよく知らないのでこれから調べてみたいと思います。

まとめ

一応これでAndroidRaspberry Piの画面を出すことができたのでジャンクな中華パッドでも購入してみたいと思っていますが、表示スピードやコントロールキーの問題があるのでまだ快適な独立環境とはいきません。もう少しいろいろ試してみたいと思います。