RaspberryPi(3,ZW)へのUSB-TTLシリアルコンソール接続 2017年版

追記：2019年3月10日現在、いくらドライバの入れ直しをしてもうまく認識できず。Windows10が最新に更新されているとダメかも？（ドライバのバージョンによっては動くのかも？）


# はじめに
RaspberryPiに別のPCからログインする方法の一つとしてヘッダピンを使ったシリアルコンソール接続が有名であるが、やや古い情報を扱った記事やMac向けの記事が多いようだ。そこで、Windows10(64bit)からの接続について、簡単に纏めておくことにする。

# 実験環境（接続に使ったハードウェア）
- RaspberryPi3
 - uname -a の結果は Linux raspberrypi 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux
 - /etc/debian_version は 9.1
- RaspberryPiZeroW
 - uname -a の結果は Linux raspberrypi 4.9.48+ #1034 Fri Sep 8 13:55:13 BST 2017 armv6l GNU/Linux
 - /etc/debian_version は 8.0
- ThinkPad T460s
- [Amazon | Raspberry Pi ラズベリーパイ用の USB－TTLシリアルコンソールのUSB変換COMケーブルモジュールのケーブル | GAOHOU | USBケーブル 通販](https://www.amazon.co.jp/GAOHOU-ESA854-Raspberry-%E3%83%A9%E3%82%BA%E3%83%99%E3%83%AA%E3%83%BC%E3%83%91%E3%82%A4%E7%94%A8%E3%81%AE-USB%EF%BC%8DTTL%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%AEUSB%E5%A4%89%E6%8F%9BCOM%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB/dp/B00K7YYFNM/ref=cm_cr_arp_d_product_top?ie=UTF8 "Amazon | Raspberry Pi ラズベリーパイ用の USB－TTLシリアルコンソールのUSB変換COMケーブルモジュールのケーブル | GAOHOU | USBケーブル 通販")

# シリアルコンソールケーブルの接続（ドライバインストール）
実験環境に書いた安物ケーブルだが、Amazonのレビューを見ればわかるようにWindows10 64bitで使うのがちょっと難しい。とは言え、実際にやらねばならないことは簡単。
まず[Products](http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=225&amp;pcid=41 "Products")からドライバを入手してインストールする。本記事作成の時点では PL2303_Prolific_DriverInstaller_v1.18.1.zip 。解凍してDriverInstallerを起動。
上記のドライバをインストールしてもドライバが正しく認識されない（デバイスマネージャで！が出て、詳細を見ると「このデバイスを開始できません。 (コード 10)」のようなエラーが出る）時は、さらに[Family Software Drag Racing - Newsletter#37, Prolific PL-2303 Driver Solution for Code 10 Error](http://www.ifamilysoftware.com/news37.html "Family Software Drag Racing - Newsletter#37, Prolific PL-2303 Driver Solution for Code 10 Error")からPL2303_64bit_Installer.exeをダウンロードしてインストールする。この修正プログラムをインストールしても状況が変わらないときは、ドライバの削除や修正プログラムの再インストール（インストールしてある状況でさらにもう一度インストール）すると改善する気がする。※実際に再インストールで有効になった
ドライバインストール後に付属のチェックツールで確認した結果をデバイスマネージャの画像と一緒に貼っておく。![2017-09-18 18_26_21-plasma-Greenshot.jpg](https://qiita-image-store.s3.amazonaws.com/0/199517/b81490ed-39e8-0475-2b3c-109a630617dd.jpeg)
なお、これはケーブルに埋め込まれたチップ（解体したわけではないが、USBコネクタ部分だと思われる）を認識しているという状態であり、この時点でケーブルの先にRaspberryPiを繋ぐ必要は無い。

# RaspberryPiとの接続
RaspberryPi3とRaspberryPiZeroW共通で、ピンヘッダが右側にある状態で右列の上から3ピン目から5ピン目まで順に黒・白・緑のケーブルを繋ぐ。RaspberryPiZeroWは電子工作パーツとして100円足らずで売っているピンヘッダを半田付けすれば良い。
ここで接続を間違えると、他の作業をいくら頑張っても絶対に動かないどころか最悪壊れる。実際、繋ぐ場所が1ピンずれていて10分くらい無駄な時間を過ごしたorz

# RaspberryPi側の設定
raspi-configの5 Interfacing OptionsからSerialをYesにするだけ。
他のWebページを見るとサービスを立ち上げるだのなんだの色々書かれていることがある気がするが、まずはこの設定を弄ってみてから考えれば良いのでは？
（/boot/cmdline.txtにconsole=serial0,115200が書かれているとか/boot/config.txtにenable_uart=1が書かれているあたりが必要な気がするが、raspi-configを弄った時点で書かれているのでは？）

# 接続
teratermとかputtyとかで接続。
COMポートの番号を合わせることと、接続速度を115200（ビット/秒）にすることが重要。デバイスマネージャから見えるポートの設定が9600になっていても関係ないみたい。
正しく繋いでRaspberryPiを起動した状態なら、Enterキーを入力するとログインプロンプトが表示される。電源OFFでもなんでもできる。Let's Happy Hacking!

# その他
どうしてもターミナルが化けちゃってうまく行かない（読めない、書けない）場合はRaspberryPiを再起動すると改善するかも？

# 追記
同じRaspberryPi3の別個体で試したら何故かターミナルが無反応だった。何が悪いのかわからず。カーネルやソフトウェアのバージョンが完全に同じではない、というか少し古いはずなので更新してみようと思ったが作業環境のネットワークが悪くてできなかった。その後、遠隔地に置いてしまっているので、後日また試そう……。
→結局、ちゃんと動いた。なんだったんだ？