RaspberryPiのUART(シリアルポート)を有効にする

対象はBluetooth内蔵のRaspberryPi 3 Model-Bと同ZeroWです。

下準備

下記全てが終わってsshでログインできるところまで完了しているとします。

  • Raspbian stretchイメージをSDカードにコピー
  • /boot/wpa_supplicant.configの作成
  • /boot/ssh.txtの配置

raspi-configでuartを有効にする

$ sudo raspi-config

メニューが出たら、次の順で進んでゆく

5 Interfacing Options  Configure connections to peripherals
↓
P6 Serial      Enable/Disable shell and kernel messages on the serial connection
↓
Would you like a login shell to be accessible over serial?
<NO>
↓
The serial login shell is disabled
The serial interface is enabled
<OK>
↓
Would you like the serial port hardware to be enabled?
<YES>
↓
<FINISH>

これでUARTが有効になりました。
このやり方ならUARTをコンソールにせずユーザに解放する設定になるはずですが、念のため確認します。

/boot/cmdline.txtの確認と編集

$ sudo nano /boot/cmdline.txt

nanoエディタで開くとこんな感じになっています

wc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=PARTUUID=01b0b38f-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

この文字列の中から、

console=serial0,115200

が存在したら削除します。

このとき、この例文をそのままコピペしないこと。
root=のところはUUIDになっているので、ここが現物と違っていると起動できなくなります。

また、末尾に

plymouth.ignore-serial-consoles

が無かったら追加します。

最終的にこんな感じになると思います。(root=のところ以外)

 wc_otg.lpm_enable=0 console=tty1 root=PARTUUID=01b0b38f-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

Ctrl-X → Y [Enter]で、保存してnanoエディタを終了します。

/boot/config.txtの編集

$ sudo nano /boot/config.txt

一番下に

# GPIO serial enable for pi3 & pizerow
dtoverlay=pi3-disable-bt

を、追加します。(uartを占有したいのでBluetoothを無効にする設定です)
同時に、次のとおりuartがコメントアウトされていないか確認しておきます。

# Enable uart(/dev/ttyAMA0)
enable_uart=1

さらに、

#dtparam=i2c_arm=on

が、あったら#を外して

dtparam=i2c_arm=on

に書き換えておきます。これでI2Cも使えるようになります。
ここまででUART(とI2C)が使えるようになりますが、同時にBloetoothが無効になります。
BluetoothとUARTは同時に使えないからです。

どうしてもBluetoothを使いたい人は、USBにBluetoothドングルを挿しましょう。
何が使えるかはわかりません。

gettyを停止させます

次の2つを実行します。

sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service

これでUARTが完全に解放されました。
ここから/dev/ttyAMA0が自由に使えます。

ユーザーpiがdialoutグループに登録されているか確認します

$ grep dialout /etc/group
dialout:x:20:pi

こうなればOK
パーミッションも問題ありません。

一度RaspberryPiを再起動してから、/dev/ttyAMA0を使う作業をしましょう。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-03-13 (水) 15:57:54 (191d)