ホーム >  マイコン > RaspberryPi >  【失敗】ラズパイ3にシリアルケーブルを接続して初期設定を行う

投稿日:   |  最終更新日:

【失敗】ラズパイ3にシリアルケーブルを接続して初期設定を行う

RaspberryPi

RaspberryPiとUSB-シリアル変換ケーブルを接続し、ディスプレイ・キーボード等を使用せずに初期設定を行います。しかし、ネット上からいろいろ情報を集めて作業しましたが、PC(Ubuntu上)からラズパイを操作することはできませんでした。今回は失敗までの経緯を紹介します。

RaspberryPiの初期設定問題

RaspberryPiはマイコンボードのみですので、キーボードやディスプレイを接続して作業する必要があります。しかし、RaspberryPi3からはWi-Fi標準搭載ですので、設定さえすればディスプレイやキーボードなしでも無線で操作ができます。

そのとき問題となるのが「初期設定をどうやってやるのか」です。

解決策

以下のような解決方法があります。

  • LANケーブル経由操作
  • VGA端子でモニターに接続
  • シリアルコンソール

「LANケーブル経由操作」のやり方は、DHCP内のネットワークにLANケーブルで接続し、SSHでアクセスします。ツールなどを利用してRaspberryPiのIPアドレスを検索してSSHで接続します。

「シリアルコンソール」は今回の記事の内容です。

USB-シリアル変換ケーブルを接続する

RaspberryPi3にUSB-シリアル変換ケーブルを利用してコンソール接続して設定します。RaspberryPi用のUSB-シリアル変換ケーブルがAmazonで200円くらいで売っています。製品名は『ケーブル』となっていますが、PL2303搭載のUSBシリアル変換アダプタです。

特にノートPCユーザーは1つ手元にあると便利です。

ラズパイ3のシリアル通信はコツが必要

ラズパイ3のUART(シリアル通信)は、デフォルト設定のままではうまく接続できません。以下のような要因が関係しているそうです。

  • RPi3では、Bluetooth機能が加わりました。その通信に従来のシリーズで利用していたURAT0(ttyAMA0)を割り当てました。
  • そのため、RPi3ではシリアルコンソールがデフォルトで利用できなくなりました
  • RPi3にはUART1(ttyS0)が加わりました。UART1はソフトウェア制御のため、CPUのコアクロックに依存してしまいます。
  • RPiのコアクロックはデフォルトでは可変のため、CPUの負荷等で変化します。
  • それに依存しているUART1のボーレートも同様に変化してしまうため、通信が失敗します。

シリアル通信問題の解決策

解決方法は2通りあります。

  1. Bluetoothを無効にしてしまう方法。
  2. CPUのコアクロックを固定してしまう方法。

Bluetoothを利用しない場合は、1の方法をおすすめします。両方利用したい場合は2つ目の方法になりますが、コアクロックを固定すると少々パフォーマンス(性能)が落ちます。ただ、どちらのシリアル設定でも、GPIO14(TDX)とGPIO15(RDX)にシリアルポートはマッピングされます。

今回作業の流れ

  1. RaspberryPiのOSイメージをSDカードに書き込みます。
  2. 初期OSイメージの設定ファイルを書き換えます。
  3. PCとRaspberryPiを変換ケーブルで接続します。

準備

用意するものは以下の3点のみです。

  • RaspberryPi3
  • USB-シリアル変換ケーブル
  • SDカードを編集するクライアントPC

SDカードにRaspberryPiのOSを書き込んでください。

Ubuntuで、RaspberryPiのOSをSDカードに書き込む

ラズパイ環境

RaspberyyPi Raspberry Pi 3 Model B (Element14)
OS RASPBIAN JESSIE LITE

ラズパイ操作用クライアントPC

※今回はubuntuから操作しますが、windowsまたはmacでも可能です。

OS Ubuntu 16.04.1 LTS 64bit

初期OSイメージの設定ファイル

OSイメージをSDカードに記述したところで、以下の設定ファイルを書き換えます。

  • /boot/config.txt
  • /boot/cmdline.txt

①SDカードをてクライアントPCに接続します。

②端末を開き、root権限に変更します。SDカード下のbootディレクトリへ移動します。

sudo su -
cd /media/user/root/

③編集ミス防止のため、ファイルをcpコマンドでバックアップします。

cp config.txt config.txt.original
cp cmdline.txt cmdline.txt.original

④「/boot/config.txt」を開きます。

vi config.txt

51行目ぐらいに「dtoverlay=」を変更します。Bluetoothを無効にして、シリアルコンソール(ttyAMA0)を有効にし、RS232Cに切り替わります。

# Uncomment this to enable the lirc-rpi module
dtoverlay=pi3-miniuart-bt

⑤このままだとシリアル通信側に全てコンソール情報が常に表示されてしまいます。「/boot/cmdline.txt」を編集します。

vi cmdline.txt

以下のように変更します。

dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

※config.txtは末尾に追記でしたが、こちらは完全に置き換えてください。

PCとRaspberryPiをケーブルで接続・起動

①RaspberryPi3とPCをUSB-シリアル変換ケーブルで接続します。

出ているUSARTの信号線はRxD,TxDで、他はUSB5V,GNDの2本です。

RaspberyyPi3側 変換ケーブル側
4番(5V PWR) (赤) USB5V
6番(GND) (黒) GND
8番(UART0 TX) (白) RxD ロジックレベル(約3.3V)
10番(UART0 RX) (緑) TxD ロジックレベル(約3.3V)

②ラズパイの電源を起動し、USBケーブルをクライアントPC(Ubuntu)に接続します。

通常、ドライバが必要になります。Linuxを使用している場合はドライバはすでにカーネルに含まれているので、何もインストールする必要はありません。

③端末を立ち上げ、接続が認識されているか確認します。

lsusb

以下のような結果が表示されます。1行目が変換ケーブルです。

Bus 002 Device 006: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 1bcf:288e Sunplus Innovation Technology Inc. 
Bus 001 Device 003: ID 046d:c52f Logitech, Inc. Unifying Receiver
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

④Ubuntuにscreenパッケージ(仮想端末管理ソフト)をインストールします。

sudo apt-get install screen

⑤screenコマンドでシリアル通信を開始します。

sudo screen /dev/ttyUSB0 115200

あれ?何もターミナルに表示されません。Ctrl+AのあとKを押して終了します。

結果

長々と説明しましたが、結局シリアル通信でPCから初期設定することはできませんでした(泣)。初期設定を終えた後ならできるかもしれません。結果は後ほど報告します。

トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告