Raspberry Pi 3にXRDP入れてみた

XRDPはVNCみたいなもので別のパソコンの画面全体をリアルタイムで表示して遠隔操作するもの。
Raspbianやその他UNIXライクOSにXRDPをインストールして、WindowsからRaspbianやその他UNIXライクOSを遠隔操作する。
(私の場合は遠隔ではなく、Windowsパソコンの上にRaspberry Pi 3を置いている)
WindowsのRDPを利用しているのでWindows側には何もインストールする必要はない。
英語版のWindowsならRemote Desktop Connectionで検索して出てくるプログラムに操作するコンピューターのIPを入力すれば接続できる。
Remode Desktop Connectionのファイル名はmstsc.exe。
sudo apt-get install xrdpとしてインストールした。
(最近はapt-getでなくaptを使うのが推奨らしいが。)
一度しか使ったことがないので詳細はまだ分からない。
動画はyoutubeの144pの低画質を試してみたがスムーズではないが一応見れた。
音声も転送できると聞いたことがあるが、音声は転送されずにホスト側からは音が出た。
なんかホスト側のコンピューターを使いながらWindowsから操作というのは問題があるようだ。
それをするといろいろ挙動があった。
Windows側からだけ操作する場合は音声以外はうまくいくようだ。
同時に二台のコンピューターを使わなければならない事態が想定しにくいので利用価値がある人は限られると思う。
Windows側がディスク容量が極端に少ないなど非力な場合は少しは意味があるかも知れない。
Windows単体でもCygwin、WSL、仮想化ソフトなどでUNIXライクOS系のソフトは動かせるので普通はWindows単体で済むと思う。

Raspberry Pi 3のwi-fiのローカルIPを固定

OSはRaspbian。
/etc/dhcpcd.conf
に、以下の記述を追加すると、192.168.1.111が固定ローカルIPになる。
少なくともうちの環境では動いた。
interface wlan0
static ip_address=192.168.1.111/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8

この設定前にifconfigコマンドを打ってwlan0のinetのIPが元の可変するIPで、私の場合は192.168.1.101 などになっていた。
192.168.1 の部分は変化しないようだった。
なので、192.168.1の部分はそのままにした。

Raspberry Pi 3がケースに入れても動くようになった。

2.5インチのハードディスクを使うため、X820というRaspberry Pi 2/3向けのUSB2.0/3.0-SATA変換基盤とX820専用メタルケースを使用しています。
Raspberry Pi3 + X820 + X820ケースで起こった三つの問題。
・X820専用ケースがAudio/Videoジャックに未対応。
・X820専用ケースによる内蔵wi-fiの電波障害。
 内蔵wi-fiは外部アンテナを接続できない。
・X820ケース付属USBジャンパーの不良でケースに入れるとジャンパーの長さが足りずにハードディスクを認識しない。
の三つの問題が出てせっかく買ったケースを使えずにいました。

それを、以下のように対策。
・ドリルでケースに穴開けてイヤホン延長ケーブル買ってAudio/Videoジャックの音声だけ端子を外部に出した。
https://www.aliexpress.com/item/Hot-Sale-3-5mm-1-To-2-Dual-Y-Audio-Splitter-Cable-Adapter-Golden-Connector-for/32809998475.html
(ビデオ信号を出せないのでベストではない。)
・USBwi-fiドングルを購入。
https://www.aliexpress.com/item/EP-N8508GS-Realtek-RTL8188CUS-150Mbps-USB-WiFi-Dongle-Wireless-Adapter-for-PC-Raspberry-PI/32589918098.html
 設定で内蔵wi-fiを無効にした。
・X820とX820専用メタルケースを買った店に苦情を出してUSBジャンパーの使えるものを送ってもらった。
 昨日届いた。

右が新バージョンのケースでも使えるUSBジャンパー。
左が旧バージョンのケースでは使えないUSBジャンパー。
新バージョンでは基盤のプリントが長くなっているため、ケース使用時でもプリント部分がUSB端子の奥まで届きます。

今のノートパソコン

今のノートパソコンは2012-12-01ぐらいに買いました。
一部壊れていますがまだ使える状態にありメインパソコンとして現役です。
CPUは、Intel COre i3-3110M 2.4GHzです。
今、話題になっているIntel CPUのメルトダウン(Meltdown)の脆弱性の対象外です。
(メルトダウンの他にSpectreという脆弱性も一緒に発表されていますがその対象にはなるのかな。)

だいぶ前にいろいろ壊れてACアダプターもDVDドライブもタッチパネルも壊れました。
ACアダプターとDVDドライブは相当品に交換しています。
タッチパネルは使えなくなりました。
画面がつかなくなる症状がある時もあったけどタッチパネルのケーブル抜いたからか症状が出なくなりました。

いつ完全に使えなくなるかなー と思っています。

Raspberry Pi 3をX820用ケースに入れて電源入れたら

ハードディスクを認識せずに起動しなかった。
SDカードで動かしたことはあったけどケースいれた状態でハードディスク使おうとしたのがはじめてだったんで今まで気がつかなかった。
内蔵wi-fiがX820用ケースに入れるとふたを開けた状態でもインターネットができないもしくは不安定な状態だったのケースに入れられなかった。
注文していたUSBのwi-fiドングルが届いたのでケースに入れられると思っていたところ。
ハードディスクはRaspberry Pi 2/3用のUSB-SATA変換基盤のX820に取り付けて使っています。
X820用ケースはAudio/Videoジャックに対応していないのでドリルでケース穴をを開けて延長ケーブルを取り付けて一応解決しました。
これで完璧と思いましたがX820用ケースに入れると起動しませんでした。
症状はハードディスクがつながっていない時と全く同じです。
X820とRaspberry Piをつなぐジャンパー(って言うのかな?)を使わずにUSBケーブルを使うと起動しました。
ケースに入れるとジャンバーがUSB端子の奥まで入らないのでハードディスクを認識しないのです。
USBケーブルは長すぎて使いたくないです。
とりあえず今はふたを外して使っています。
ふたを付けるにはふたに大きな穴を開ける必要があります。
金属ケースなので簡単にはできません。
小さいやすりを買ってこないといけない。
いつになったらケースをつけられるのか。
aliexpress.comの中の買った店に苦情を言うと、その問題は把握していてUSBジャンパーは既にバージョンアップしてケースに対応しているものがあって無料で送ってくれることになりました。
在庫さばくためにわざと欠陥品送って来たのかな?
原価一個10円ぐらいのものだと思うけど。
ケースに入れない仕様なら欠陥ではないけどケースも買って、X820にもX820のケースにもUSBジャンパー付いていて全く同じ物でケースに使えないんだから欠陥です。
二個とも設計の時点で欠陥品だったから品物を間違えたとは考えにくい。

Raspberry Pi 3はデフォルトでUSBが1.2A

調べたらRaspberry Pi 3は何もしなくてもUSBの電流が全4ポート合計で1.2Aでした。
なので/boot/config.txtを書き換える必要はなかった。
初代からRasberry Pi Bまでは
/boot/config.txtに、safe_mode_gpio=4の行を追加でUSBバスパワーが0.6Aから1.2Aにアップ。

Raspberry Pi B+ と Rasberry Pi 2は、
/boot/config.txtに、max_usb_current=1を追加でUSBバスパワーが0.6Aから1.2Aにアップ。

Raspberry Pi 3は最初から1.2A。

Wi-fi経由のSSH、FTPでRaspberry Pi 3とWindowsを接続

メモ。
Windows側からRaspberry Pi 3(OSはRaspbian)にSSHまたはFTPで接続してみました。
逆方向はやっていません。

sudo raspi-config
(メニューはバージョンにより違うので下記と違う場合は自分でSSH有効の箇所を探す)
5 Interfacing Options→P2 SSH→
「Would you like the SSH server to be enabled?」でYesを選択
そしてリブート?

WindowsからのSSH接続にはTeratermを使用した。
Windows側からRaspberry Piのシェル(bash)を操作しコンソール(文字だけでグラフィックなし)のプログラムを動かせる。
viなどのスクリーンエディタも使える。(正確にはviクローン)
Windows側にXmingなどのX-Windowサーバーを入れればWindowsでRaspberry Pi 3のX-Windowのソフトを実行できるらしいが試していない。
Raspberry Pi 3側の接続ローカルIPは、Raspberry Pi 3側で、ifconfigと打って、wlan0: のinetのIPで取得できる。
(IPの例、192.168.1.100)
IPは固定ではなく変わるが固定にする方法は今のところ知らない。
IPを固定しないと日常的に使うのは面倒くさいな。
とりあえず、Raspbianデフォルトのユーザー名 pi と パスワード raspberry でログインできる。
セキュリティー的にはパスワード変更とかSSH用のユーザー追加してそれを使うのがいいとは思うが私の場合はwi-fi圏内にパソコンを持った人が住んでいないので別にしなくてもいいかな。
私の村では半径10km以内にSSHの知識がある人がいるとも考えにくい。
TeratermのメニューのFile→SSH SCP…でSSH経由の単一ファイルの送受信も可。
複数ファイルの送受信はできないのでZIPなどでアーカイブするかWinSCPという別ソフトを使うかFTPを使うかになると思う。

個人的にFTPでファイルを送受信したいと思ったのでvsftpdというFTPサーバーをRaspberry Pi 3にインストールした。
sudo apt-get update
sudo apt-get install vsftpd
ウェブ公開ではなくローカルだけでやる前提で設定した。
設定ファイルは/etc/vsftpd.conf
テキストエディタvi を使う場合はsudo vi /etc/vsftpd.confのようにviを起動。(要viの知識)
設定ファイルは元々ある内容は不用意にいじらないまま次のように設定した。
(行頭が#だと設定として意味のない無効な行になり、行頭の#を外すと設定として意味のある行になる。#から行末までは設定としては無視される)
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

テキストファイル用の改行コードの変換設定はしなかったがもしするなら、
ascii_upload_enable=YES
ascii_download_enable=YES

FTPを使えるユーザーを指定するファイルの、
/etc/vsftpd.chroot_listに、ユーザー名を書く。
とりあえず、pi と書けば使える。
FTP用のユーザーを作ったほうがセキュリティー的には良い。
ウェブ公開用途ならもうちょっと設定を考えたほうがいいかも知れないがする予定ないので考えない。

Raspberry Pi 3起動時にvsftpdを自動起動にする。
sudo update-rc.d -f vsftpd defaults

手動でvsftpd起動sudo service vsftpd start
vsftpd停止sudo service vsftpd stop

Windows側のftpコマンドはディレクトリごとの送受信ができなかったので、昔インストールしていたncftpというコマンドラインのソフトで、put -R ディレクトリ名としてディレクトリごと複数ファイルを送信できることを確認。
ncftpをWindowsにどうやってインストールしたかは昔過ぎて覚えていない。
ncftpの起動は、ncftp -u ユーザー名 -p パスワード IP
あくまで例ncftp -u pi -p raspberry 192.168.1.100
ncftpはなぜか少なくともユーザー名を起動オプションに書かないとFTPサーバーの設定でanonymous(匿名)を有効にしていない場合エラーになる。
普通のftpコマンドと操作上の互換が少しとれていないのが残念だ。
GUIのffftpでもいいかも知れないが長いパス名(深い階層)に対応しているのかな?

SSHは暗号化するので暗号化の必要ない状況下で使っても無意味に負荷がかかり速度低下もする。
ssh -c noneという暗号化しないオプション使えるんかな?
Teratermの暗号化させない指定は知らないな。
暗号化要らないのでtelnetを使いたいがtelnetはX-Windowソフトの起動に対応していないらしいしWindowsではデフォルトでは使えないとか世間がなるべくtelnetを使わせない方向で動いているのでまあSSHでもいいか。
SSHでファイル転送するSCPも別に暗号化要らないしローカルの自分のパソコン同士での転送ならなおさら要らないのでSCPよりFTPのほうがいいかなと思った。

逆方向のRaspberry Pi 3からWindowsにアクセスするにはWindowsにSSHサーバーとかFTPサーバーインストールすればいいんだろうけどそれするぐらいならVNCとかxrdpとかSambaにしたほうがいいかな。

Raspberry Pi 3のオーディオジャックはビデオ信号も出力するものだった

3poleのイヤホンジャックかと思っていたものは、ステレオ音声とコンポジット(CVBS)のビデオを出力する4poleのジャックだった。
今まで3poleの延長ケーブルでスピーカーにつないでいたんだけどもビデオ信号とGNDがショートしていて大丈夫だったんだろうか。
HDMI出力しているときはコンポジットビデオ信号はどうなっているんだろうか。
HDMI衆力しているときのコンポじっとビデオの出力が0V(GND)だったら問題ないと思う。
コンポジット出力が壊れているかどうか知りたくて、/boot/config.txtの設定変えてコンポジット出力してみたんだけどテレビ(正確にはRFテレビ機能とディスプレイ付きDVDプレイヤーのコンポジット入力)には映らなかった。
使ったケーブルのGNDとビデオ信号が逆になっていた可能性があるので壊れて映らないのかケーブルが悪いのかは分からない。
まあコンポジット使う気ないからどっちでもいいや。
面倒くさいからGNDとビデオがショートする3poleでいいや