Raspberry Piにシリアル通信(UART)でログインする方法(Mac版)

f:id:karaage:20160424000520j:plain:w640

Raspberry Piにシリアル通信でログインしたい

 モニタやキーボードがない環境でRaspberry Piにログインしたいときってありますよね。以下みたいな記事を書いたりしましたが、ネットワークが無い環境や、ネットワークに問題が発生するとアクセスできなくなってしまいます。

 そんなときの最後の手段がシリアル通信。これで直接有線でRaspberry Piと通信できます。やったね!えっ?Etherで直接接続してMacからIP振ればよい?ばっきゃろう!そんなん男じゃねぇだろう!

シリアル通信 ハードウェアセットアップ

必要なもの

 必要なものです。

Raspberry Pi 3

 周辺器機や基本セットアップは以下記事参照下さい。この後は下記記事のセットアップが完了している前提で説明していきます。

USB・シリアル変換ケーブル。この秋月電子のやつが一番メジャっぽいです。他の中華の激安商品等使っても良いですが、FTDIのICを使っていることとレベルが3.3Vであることに注意。RS232Cだとレベル変換が必要になるのでそのままだと繋がりません。

接続方法

 接続方法は下記サイトが参考になりました。

 簡単に表にしてまとめると以下です。

定義 Raspberry Pi Pin
GND 6pin(GND)
CTS N.C.
VCC(5V出力) N.C.
TXD 10pin(RXD)
RXD 8pin(TXD)
RTS N.C.

注意点:

  • N.C.は接続しない(No Connect)の意
  • TXDはRXDと接続することに注意 Transmit(送信)とReceive(受信)の関係ね

 Raspberry Piのピン配置は以下。

f:id:karaage:20160424000632j:plain:w640  接続した様子

シリアル通信 コマンド実行

 MacとRaspberry PiをUSB・シリアル変換ケーブルで接続してから、Macのターミナルで以下実行します。

$ ls /dev/tty.usb*

 MacがUSB・シリアル変換ケーブルを正しく認識していれば、例えば以下のようなデバイスが見えます(末尾は個々人で異なります)

/dev/tty.usbserial-FT98HPN4

 後は、以下のコマンドを実行すればMacとRaspberry Piをシリアル接続できます。

$ screen /dev/tty.usbserial-FT98HPN4 115200

 この後、Raspberry Piの電源を入れれば、起動ログの後ログイン画面が表示されて、MacからRaspberry Piにシリアル通信経由でログインできるようになります。

 screenを終了したい場合は、Ctrl + a してから kを押すと、「Really kill this window [y/n]」と出て来ますので、yを押しましょう。

Raspberry Pi 3だとシリアル通信できない?

 ところが、Raspberry Pi 3で試そうとしたら問題発生。

f:id:karaage:20160424002131p:plain:w640  起動ログが文字化けしている上、ログインしようとしても何も反応しない。

 全然原因が分からず、諦めていたのですが、しばらくして以下のような記事を発見。Raspberry Pi 3の不具合だったようです。Bluetoothが追加になった関係でボーレートの設定がうまく合っていないようです。

 Raspberry Pi 3の/boot/config.txtに以下の1行を追加すればうまくいくそうなので、試してみます。

core_freq=250

f:id:karaage:20160424002451p:plain:w640  ログインできた!

 でも/boot/config.txt書き換えるのはちょっと面倒臭いですね。今後のアップデートで修正して欲しいものです。

まとめ

 Raspberry Piにシリアル通信でログインできるようになりました。これで、ネットワーク無い環境下や、何か問題起きた時でもディスプレイやキーボード無しでも楽々ログインできて捗りますね。

 しかし、不覚だったのがRaspberry Pi 3での問題に自分で気づけなかったこと。Raspberry Pi 2で試してみるとか、RaspbianのGitHubのissueを検索するとか方法はあったはずなのに、Macの方の問題かと疑ってしまった上、まあ良いかと見切って諦めてしまっていました、猛省。