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

対象はBluetooth内蔵のPi3B、PiZeroWです。

下準備

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

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?
<YES>

<FINISH>

これでUARTが有効になりました。
しかし、このままではコンソールに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

を、削除します。

また、末尾に

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がコメントアウトされていないか確認しておきます。

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

さらに、

#dtparam=i2c_arm=on

が、あったら#を外して

dtparam=i2c_arm=on

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

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