WSLでシリアルポートアクセス
はじめに
WSL環境が便利で積極的に使用中。今回はシリアルポートへのアクセスについて調査した。参考にした記事は Serial Support on the Windows Subsystem for Linux ? だったが、後で日本語の記事もあることに気づいた。 WSLでシリアル通信をする - /*ぶろぐ/
WSLでやったことは、こちらの記事と全く同じなので特に新しい情報は無いが、備忘録を兼ねてメモ。
やりたいことは、Raspberry Pi のシリアルポートに接続してコンソールログインすること。HDMIにつながなくてもブートメッセージを見ることができれば望ましい。特にブートしなくなったり、問題が起きた時のデバッグ用に使えれば便利だろう。
USB-シリアル変換ケーブルの入手
安価なものからケーブルまで、いろいろある。お勧めはFTDI社のチップを使っているモノが確実。 例えばDIPパッケージならFT231X USBシリアル変換モジュール: 秋月電子通商とか、ケーブルならばFTDI・USBシリアル変換ケーブル(3.3V)とか。
VCP (Virtual Com Port Driver)のインストール
FTDI社の VCP ダウンロードページにアクセスして、Windows 64bit 用のドライバーをダウンロードする。zipファイルでも良いが、右のコメント欄にある"setup executable"をダウンロードしてインストールするのがお手軽。
ポート番号確認
デバイスマネージャーを起動し、シリアルポートを確認。今回は に示すように COM4 だった。
Raspberry Pi と接続
GPIOピンを使ってUART経由でアクセス。ピンアサインは elinuxの説明にまとまっている。 これを使って RX, TX, GND の3本を接続(当然クロスで)。
GNU Screen で接続
他にも cu とか minicom とかありますが、GNU Screen が簡単。ポート番号とボーレートを指定して
~ $ sudo screen /dev/ttyS4 115200
として、Raspberry Pi の電源を入れる。しばらく待つとログインプロンプトが出る。 最後に抜けるには 「Control-a を押したあと、k (kill)」コマンドを送るれば良い。
使っているのはRasPi 2 modelB + Raspbian GNU/Linux 8 (jessie) だが、ブート中のメッセージは見えなかった。 これを表示するには /boot/cmdline.txt ファイルを編集して、その中にある "quiet" を削除すれば良い。ついでに "splash" も削除。 現状では以下の通り:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=5c87e609-- 02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait plymouth.ignore-see rial-consoles
ブート時のメッセージ表示は以下のようになった
[ 0.000000] Booting Linux on physical CPU 0xf00 [ 0.000000] Linux version 4.9.24-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g84 60611) ) #993 SMP Wed Apr 26 18:01:23 BST 2017 [ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d [ 0.000000] CPU: div instructions available: patching division code [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] OF: fdt:Machine model: Raspberry Pi 2 Model B Rev 1.1 -------------------- [ 3.591353] systemd[1]: Started Forward Password Requests to Wall Directory Watch. [ 3.962644] fuse init (API version 7.26) [ 3.994109] i2c /dev entries driver Raspbian GNU/Linux 8 raspberrypi ttyAMA0 raspberrypi login:
GNU Screen は今まで主に端末上で仮想スクリーンの切り替えに使ってきたが、実際に/dev/ttyS* にアクセスできるとは知らなかった。これがあるならば、いよいよ TeraTerm をインストールする必要もなくなる日がくるかも。
今後
WSLからSDカードへのアクセスができるようになれば良いが、これはまだ先の話か。