#はじめに
Raspberry PIのディスプレイを接続するのに、毎回HDMIケーブル指すのが面倒だなと思いまして、bluetoothのPAN(Personal Area Network)を利用してVNCServerにつなげられるようにすれば、RasPIのモニター事情を改善できるのでは、という試みです。
こういうイメージです、WiFiではない分、ハブなどのネットワーク機器もいりませんし、イーサネットをふさがないので、良いのでは、というはなしです。
#用意するもの
-
Raspberry PI (Bluetooth有のタイプ)もしくは、Raspberry PI + Bluetooth2.1以上のプロファイルが使えるアダプタ
-
VNCクライアントの入ったスマホもしくはタブレット
VNC Viewer - Remote Desktopがおすすめ
iOS系なら
https://itunes.apple.com/jp/app/vnc-viewer/id352019548?mt=8&ign-mpt=uo%3D4
Androidなら
https://play.google.com/store/apps/details?id=com.realvnc.viewer.android&hl=ja
#RaspberryPIの設定
-
OSはRaspbian stretch(ライブラリの関係でLiteじゃないほうにしてください)が入っていること
-
/boot/ssh
を作っておくか、sshdを有効にしておくこと -
/boot/config.txt
にてdtoverlay=pi3-disable-bt
がコメントアウトしてあること(有効だとBluetoothが使えません) -
ロケーション設定などはここで済ませてください
設定例:
sudo apt update
sudo apt install -y bc vim screen nkf lv wget curl lynx unzip zip lsof git ntpdate
sudo apt install -y task-japanese fcitx-mozc fonts-takao fonts-takao-gothic fonts-takao-mincho fonts-ipafont fonts-ipafont-gothic fonts-ipafont-mincho jfbterm
sudo apt remove -y nano
cat << _VIMRCCFG_ > ~/.vimrc
syntax on
colorscheme pablo
set mouse=
_VIMRCCFG_
mkdir -p ~/.vim/after/plugin
cat << _VINSTOPAC_ > ~/.vim/after/plugin/common-settings.vim
au FileType * setlocal formatoptions-=ro
_VINSTOPAC_
sudo localectl set-locale LANG=ja_JP.utf8
sudo localectl set-keymap jp106
sudo localectl status
sudo timedatectl set-timezone Asia/Tokyo
sudo timedatectl status
sudo ntpdate time.google.com
-
PAN
を使うためのツールをインストールします
sudo apt install python-dbus
sudo curl -L https://raw.githubusercontent.com/mk-fg/fgtk/master/bt-pan -o /usr/bin/bt-pan
sudo chown root.root /usr/bin/bt-pan
sudo chmod 777 /usr/bin/bt-pan
- スマホorタブレットのbluetoothの検出を有効にして、以下のコマンドをたたきMacアドレスが取れるか確認
hcitool scan
- ペアリングを実施します
bluetoothctl
[bluetooth]# agent DisplayOnly
[bluetooth]# default-agent
[bluetooth]# discoverable on
[bluetooth]# scan on
[NEW] Device XX:XX:XX:XX:XX:XX (スマホorタブレットのMacアドレス)
[bluetooth]# pair XX:XX:XX:XX:XX:XX (スマホorタブレットのMacアドレス)
[bluetooth]# trust XX:XX:XX:XX:XX:XX (スマホorタブレットのMacアドレス)
[bluetooth]# exit
- PANを接続します
sudo bt-pan client XX:XX:XX:XX:XX:XX (スマホorタブレットのMacアドレス)
※以後自動で接続したい場合は、bt-pan client XX:XX:XX:XX:XX:XX
を /etc/rc.local
に追記してしまうのがいいかもしれません。
- インターフェースができたか確認します、以下のコマンドで
bnep0
があるか確認してください
IPが取れていれば、一応メモを。
ip a
- VNC Serverをインストールします
sudo apt install tightvncserver
- VNCの設定をします、この際、スマホ、タブレット側の解像度に設定を合わせますので、サイズを確認しましょう
Xの動作設定、これがないとVNCがつながらない、個々の環境で設定するのでsudoはしないこと。
cat << _VNCXCFG_ >~/.vnc/xstartup
xsetroot -solid grey
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
setxkbmap -model jp106 -layout jp
awesome &
virt-manager
_VNCXCFG_
以下の設定中にあるgeometrの後ろの数値が(横)x(縦)になります
sudo cat << _VNC1CFG_ > /etc/systemd/system/vncserver@1.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=pi
PAMName=login
PIDFile=/home/pi/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1920x1080 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
_VNC1CFG_
- VNCの自動起動設定
sudo systemctl daemon-reload && sudo systemctl enable vncserver@1.service
スマホorタブレットから繋いでみよう
PANで接続しているので、インターネットとかは関係なくつながります
VNCクライアントで raspberrypi:5901
と繋いでみましょう。名前解決ができない場合は、確認したIPを使って (IPアドレス):5901
に繋いでみましょう。つながりましたか?
#さいごに
これでRasPIの画面事情が少しでも楽になれば幸いです。何かの参考までに。