Android端末をLinuxマシンのディスプレイにする方法。
今回は,VNCを使って,Android端末をLinuxマシンのディスプレイにしてみる。
Linuxマシンは,VMware Workstation Playerで動かしているUbuntu 20.04を利用している。
Linuxマシンで複数のディスプレイデバイスを接続して使用するマルチディスプレイを構成する方法は,いくつかの方法がある。
Linux/Unixでは,GUIとしてX Window Systemを使用している。ここでのマルチディスプレイは,GUI(X Window System)での構成方法を説明している。
Linuxマシンにディスプレイが接続されていて,同じ画像をAndroid端末にミラー表示させる。Android端末を独立したセカンドディスプレイとして使うのではない。
これは,VNCでリモートデスクトップを行う方法と何も変わらない。
LinuxマシンにはVNC Serverをインストールする。Ubuntu 20.04の場合は,最初からVNC Serverであるvinoがインストールされている。
もしインストールされていない場合は,以下のようにしてインストールする。
# apt install vino
次にVNC Serverの設定をする。
この設定を行うと,/etc/xdf/autostart/vino-server.desktopがセットアップされる。これでGNOME環境にログインすると自動的にvinoが起動される。
この後,Android端末とVNCで接続するには暗号化接続が使用できないので,ターミナルを起動し,
$ gsettings set org.gnome.Vino require-encryption false
として,暗号化した接続を使用しないようにしておく。
Linuxマシンが使用しているNetworkのIP Addressを以下のようにして調べておく。(ブリッジ接続)
$ ifconfig
Android端末側には,VNC Viewerをインストールする。
Google Playからインストールするか,ADBからインストールする。
今回はADBを使って,
> adb install vncviewer_3.7.1.44443.apk
としてvncviewer_3.7.1.44443.apkをインストールした。
Android端末でVNC Viewerを起動し,
その他は,デフォルトのままで大丈夫だった。
接続するポート番号は,デフォルトの:5900となる。
Ubuntu 20.04に最初からインストールされているvinoは,標準ディスプレイをミラー化したX Windowを使用するリモートデスクトップを実現するVNC Server。なので,VNCで接続する別のセカンドディスプレイとして(例えば:1)のVNC Serverとしては利用できない。
VNCで接続する別のセカンドディスプレイを作るために,別のVNC Serverであるtightvncserverをインストールして使用することにした。
tightvncserverはユーザーモードのみで動作するVNC Serverで,通常のデスクトップ環境はもちろん,デスクトップ無しの単なる表示のみといった環境も作成できる。
注意することとして,tightvncserverはRANDR拡張には対応していない。 RANDR拡張を利用する場合はtightvncserverをフォークして開発されているtigervncが使用できる。
tightvncserverは以下のようにしてインストールした。
# apt install tightvncserver
物理ディスプレイを使用しているなどでミラー化したVNC Serverが必要なければ,画面共有のスイッチはオフにする。
また,ミラー化VNC Serverのvinoと別ディスプレイとしてのVNC Serverであるtightvncserverは共存できる。
必要であればx2vncをインストールする。x2vncはキー操作やVNCに転送したり,マルチスクリーン管理をする。表示だけ行えればいいのであれば,x2vncは必要ない。
# apt install x2vnc
そして,インストールしたVNC Serverを起動する。
$ vncserver
最初に接続用のパスワード(max. 8文字)を設定する。
一度,vncserverを停止する。
$ vncserver -kill :1
VNCの接続パスワードを変更する場合は,
$ vncpasswd Password: ******** Verify: ********
のようにする。
現在のメインのディスプレイのDISPLAY番号を確認する。
$ echo $DISPLAY :0
:0が現在のメインディスプレイのDISPLAY番号になっている。(:1の場合もある)
VNC Serverを起動する。
$ vncserver :1 -geometry 1080x1920
Android端末の解像度を-geometryで設定している。2個めのディスプレイ:1を指定している。もしメインディスプレイが:1の場合は,:2とかにする。
キー操作が必要な場合は,x2vncも起動しておく。
$ x2vnc -shared -west localhost:1
これで準備が出来た。
新しくコメントをつける