投稿日: | 最終更新日:
【失敗】ラズパイ3にシリアルケーブルを接続して初期設定を行う
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通りあります。
- Bluetoothを無効にしてしまう方法。
- CPUのコアクロックを固定してしまう方法。
Bluetoothを利用しない場合は、1の方法をおすすめします。両方利用したい場合は2つ目の方法になりますが、コアクロックを固定すると少々パフォーマンス(性能)が落ちます。ただ、どちらのシリアル設定でも、GPIO14(TDX)とGPIO15(RDX)にシリアルポートはマッピングされます。
今回作業の流れ
- RaspberryPiのOSイメージをSDカードに書き込みます。
- 初期OSイメージの設定ファイルを書き換えます。
- 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から初期設定することはできませんでした(泣)。初期設定を終えた後ならできるかもしれません。結果は後ほど報告します。
- Python 114
- 制作 54
- RaspberryPi 41
- Django 40
- WordPress 40
- Linux 27
- VPS 22
- JavaScript 21
- PHP 20
- HTML・CSS 19
- AWS 16
- 仮想環境 15
- レスポンシブデザイン 13
- マイコン 11
- WEB全般 11
- 動画製作 9
- Webサービス 8
- 統合開発環境 8
- 機械学習 8
- PyCharm 7
- jQuery 7
- AfterEffects 7
- 起業・設立 7
- Django REST framework 6
- C# 6
- デザイン 6
- SEO 6
- pydata 6
- Visual Studio 5
- 数学 5
- 携帯サイト 5
- heroku 5
- Mac 5
- illustrator 5
- node.js 5
- Anaconda 5
- Nginx 4
- Jupyter Notebook 4
- インフラ 4
- Google Colaboratory 4
- symfony 4
- Webスクレイピング 3
- photoshop 3
- Go言語 3
- PC 3
- ツール 3
- Docker 3
- facebook 3
- 作業効率化 3
- データベース 3
- Cloud9 3
- コマンド 2
- micro:bit 2
- Kali Linux 2
- Webサーバー 2
- MariaDB 2
- ドローン 2
- コンテナ 2
- DaVinci Resolve 2
- ネットワーク 2
- Java 2
- movie 2
- PCDJ 2
- 音楽 2
- XSERVER 2
- Ansible 1
- Vue.js 1
- JSON 1
- Bootstrap 1
- バージョン管理システム 1
- SSL 1
- S3 1
- ムームードメイン 1
- ネットワーク 1
- アニメーション 1
- D3.js 1
- Rhino 1
- アニメ 1
- git 1
- windows 1
- アクセス解析 1
- スマートフォン 1
- アフィリエイトノウハウ 1
- 知識 1
- TypeScript 1
- 役立つ本・書籍 1
- データサイエンス 1
- ESP32 1
- AI 1
- ownCloud 1
- API 1