concerti.tsukubaのブログ

つくば・土浦・牛久近辺のコンサート情報のほか、個人的なメモなど

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"をダウンロードしてインストールするのがお手軽。

ポート番号確認

バイスマネージャーを起動し、シリアルポートを確認。今回は f:id:concerti:20180207212111p:plain に示すように 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カードへのアクセスができるようになれば良いが、これはまだ先の話か。