まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

タグ:serial

アマゾンで PC とラズベリーパイをシリアル接続する USB ケーブルを購入しました:
Raspberry Pi ラズベリーパイ用の USB-TTLシリアルコンソールのUSB変換COMケーブルモジュールのケーブル


これ、Windows ではデバイスドライバも提供されていて、Teraterm などでシリアル接続できることがよく知られています。では Ubuntu (16.04) で同様のことができるのか? ということに挑戦してみました。結論としては特別にデバイスドライバを用意することもなく、アクセスすることができました。以下、その手順です。


まずはラズベリーパイの設定(raspi-config)でシリアル接続を有効にします。raspi-config で Interface - Serial を選択します:
2018081701


「はい」を選んでシリアル接続を有効にします:
2018081702


次にラズベリーパイと USB シリアルケーブルとを接続します。USB シリアルケーブルの黒(GND)をラズパイの6番ピン、白(UART TXD(14))を8番ピン、緑(UART RXD(15))を10番ピンにそれぞれ接続します。赤は結線の必要がないので宙ぶらりんのままです:
IMG_2932


次に Ubuntu 側の準備です。実は特別にデバイスドライバを準備することもなく、そのまま認識されます。が、ただ認識しただけでは通信はできないため、そのための準備が必要です。

まず、今回のシリアル通信には cu コマンドを使います。なので、まずは cu をインストールします:
$ sudo apt-get install cu

次にシリアルポートの確認と設定を行います。Ubuntu の USB ポートに USB シリアルケーブルを接続し、次のコマンドを入力して、ちゃんと認識できているかどうかを確認します:
$ ls -l /dev/serial/by-id/

USB シリアルケーブルが正しく認識できていると /dev/ttyUSB0 といった感じで最後に 0(ゼロ)が付いたデバイスとして認識されます。今回は /dev/ttyUSB0 として認識されていると仮定して以下の説明を続けます:
20180814a


/dev/ttyUSB0 の権限を変更します:
$ sudo chmod 666 /dev/ttyUSB0

ここまでの手順で準備が完了しました。最後に cu コマンドで目的のデバイスに接続します。その際にボーレートを 115200 bps に指定して接続します:
$ sudo cu -s 115200 -l /dev/ttyUSB0

成功するとこんな感じでラズパイのログインプロンプトが現れ、ログインできます:
20180814


モニタがないとか、無線LAN がないとか、無線 LAN の環境が普段と違う時(の無線 LAN の設定を変えたい時)でもラズパイを使えて、とても便利な接続方法です。アナログ最強!

 

以前にこんな記事を書きました:
ラズパイと PC とをシリアル接続する

小型PCでもあるラズベリーパイは「一度セットアップしてしまえば」便利なのですが、このセットアップ時がちと面倒なのです。イメージの入ったマイクロ SD カードを用意し(ここまではいい)、HDMI ケーブルでディスプレイにつなぎ、キーボードとマウスをUSB接続して起動し、この外付けしたキーボードとマウスを使って初期セットアップを行います。要は初期セットアップ時に GUI を操作するための環境が必要なのです。 このセットアップが済んでしまえば(セットアップ時にネットワークや SSH の設定も済ませてしまえば)後は電源だけを繋いで起動したら SSH でログインして使う、なんてこともできるようになるのですが、最初のセットアップ時だけはどうにもなりません。

そこで上記のシリアル接続環境が便利になります。要は PC とラズパイをシリアルケーブルで接続し、PC 側の CUI 画面とキーボードを使って操作する、というものです。この方法であれば GUI は使えませんが、テキストコマンドを使った初期セットアップができるようになります。要は HDMI や USB マウス&キーボードを用意しなくてもシリアルケーブル1本だけでセットアップができるようになり、初期セットアップ後はネットワーク接続を使って普通に使えるようにできる、というものです。セットアップが完了した後も、ネットワーク環境が変わって SSH ログインなどができなくなるようなケースでもシリアルから操作できるようになり、とても便利で愛用していました。


さてラズベリーパイ3が発売されました。CPU などの基礎機能が上がったことに加え、Bluetooth と無線 LAN を標準搭載したモデルです。実際自分もそうですが、ラズベリーパイを持ち運んで使おうとするとモバイルルータやテザリングで無線 LAN 接続して使う、という形になると思います。要は持ち運んで使うには無線 LAN は必須です。その無線 LAN を標準搭載したのが大きな魅力でした:



早速購入し、これもいつもの感じ(上記リンク参照)でシリアル接続してセットアップ・・・しようと試みたのですが、何かこれまでと違います。起動時のメッセージにいきなり文字化けが・・・
2016041101


しばらく待つとログインプロンプトが表示されました。なので一応起動プロセスは正しく行われていたようです・・:
2016041102


ではセットアップを行おうと、初期ログインユーザー名の "pi" を入力すると・・・なぜか "pl" になってしまう。どういうこと?しかも改行がズレてるし・・・
2016041103


何これ? ログインできないの?? 結果としてはこれはラズパイ3にシリアル接続した時だけ発生する現象でした(普通に HDMI や USB 接続では問題なくセットアップできるし、同じバージョンの Raspbian Jessie をラズパイ1や2に入れると問題は発生しない)。どういうことだろう、と思って調べてみると、どうやらこの現象が起こっているのは僕だけではなかった様子でした。

結論としては、どうやらラズパイ3は現時点ではシリアル接続での初期セットアップはできない模様です:


どうも Bluetooth モジュールがシリアル関係と同じ所を使っているようで、その影響でシリアル接続の調整が上手く行かなくなっているようです。単にボーレートを 115200 から下げればよい、というわけでもなく、下げたら下げたなりに狂ってしまうので、どうにもできないようでした。

で、↑このリンク先にも書かれていますが、シリアル接続を使えるようにするための解決策も一応あります。/boot/config.txt ファイルに
core_freq=250

の1行を追加してあげるだけです。特にパフォーマンスが落ちることもなくシリアル接続が使えるようになりました:
2016041201
 ↑できたーっ!


ただ、この1行を追加するには一度セットアップを完了させる必要があり、そのためには HDMI や USB 機器を接続してセットアップする必要があります。

要するに現時点での結論としてはラズパイ3でもシリアル接続はできる、でも初期セットアップ時には HDMI や USB キーボード/マウスが必要になりそうです。ということは最初からシリアルケーブルだけで、というわけにはいかない。うーむ・・・ (--;


解決策の続報を待つ!

このページのトップヘ