WLAN+BT搭載のArmadillo-X1で、Bluetooth対応機器とシリアル通信を確認しました。
ここでは、Bluetooth対応機器としてPCを使用しました。
1.必要なパッケージのインストール
Armadillo-X1をインターネットに接続可能なネットワークに接続します。
下記コマンドで、gnome-bluetoothをインストールします。
root@armadillo:~# apt-get update
root@armadillo:~# apt-get install gnome-bluetooth
2.rfcommに対するModemManagerの無効化
Bluetooth対応機器とのシリアル通信でRFCOMMプロトコルを使用します。
以降の確認において、rfcommに対してModemManagerが介在しないように無効化します。
/etc/udev/rules.d/90-rfcomm.rules
を下記の内容で作成します。
KERNEL=="rfcomm[0-9]*", ENV{ID_MM_DEVICE_IGNORE}="1"
下記のコマンドで、udevルールをリロードします。
root@armadillo:~# udevadm control --reload
3.sdptoolの有効化
sdptoolで、Bluetooth対応機器とのシリアル通信のポートを有効化します。
/etc/systemd/system/dbus-org.bluez.service
の下記の箇所を変更します。
変更前
ExecStart=/usr/lib/bluetooth/bluetoothd
変更後
ExecStart=/usr/lib/bluetooth/bluetoothd --compat
Armadillo-X1を再起動します。
再起動後、下記コマンドでシリアルポートを設定します。
root@armadillo:~# chmod 777 /var/run/sdp
root@armadillo:~# sdptool add --channel=22 SP
Serial Port service registered
下記コマンドを実行して"Serial Port"が表示されることを確認します。
root@armadillo:~# sdptool browse local | grep -i serial
Service Name: Serial Port
"Serial Port" (0x1101)
"Serial Port" (0x1101)
4.対向機(PC)とのペアリング
下記の手順で対向機(PC)とペアリングします。
root@armadillo:~# bluetoothctl
[NEW] Controller XX:XX:XX:XX:XX:XX armadillo [default]
BTの電源を入れます。
[bluetooth]# power on
Changing power on succeeded
発見可能にします。
[bluetooth]# discoverable on
Changing discoverable on succeeded
[CHG] Controller XX:XX:XX:XX:XX:XX Discoverable: yes
ペアリングコード(PIN code)の管理を行うエージェントを立ち上げます。
[bluetooth]# agent on
Agent registered
周辺にあるBluetooth対応デバイスを表示させます。
[bluetooth]# scan on
対向機(PC)のBDアドレスを確認したら、scanを停止します。
[bluetooth]# scan off
上記で確認した対向機(PC)のBDアドレスで、対向機(PC)とペアリングをします。
[bluetooth]# pair [対向機(PC)のBDアドレス]
bluetoothctlを終了します。
[bluetooth]# exit
5.対向機(PC)でArmadillo-X1とのシリアルポートを確認
対向機(PC)でArmadillo-X1とのシリアルポートを確認します。
例として、対向機(PC)がWindows10の場合は、下記の設定で確認できます。
Bluetoothとその他のデバイス
->その他のBluetoothオプション
->COMポート
下記のようにarmadilloとのシリアルポートが見えることを確認します。
armadilloとのシリアルポートが見えない場合は、ペアリングを再度やり直します。
6.Armadillo-X1でシリアル通信を待ち受ける
Armadillo-X1でシリアルポート(/dev/rfcomm0)に接続されるのを待ち受けます。
(下記コマンド内の"22"は、上記手順3で設定した"--channel=22"を意味します。)
root@armadillo:~# rfcomm listen /dev/rfcomm0 22 &
7.対向機(PC)からArmadillo-X1にシリアル通信で接続
対向機(PC)でシリアル通信ソフト(TeraTerm等)を起動します。
シリアルポートは、上記5で「発信」になっているCOMポートを指定します。
接続が成功すると、Armadillo-X1側で下記ログが表示されます。
Connection from [対向機(PC)のBDアドレス] to /dev/rfcomm0
Press CTRL-C for hangup
8.Armadillo-X1と対向機(PC)とのシリアル通信を確認
例として、Armadillo-X1でcuコマンドを実行してシリアル通信してみます。
下記のようにcuコマンドを実行します。(下記はボーレート:115200の場合)
root@armadillo:~# cu -l /dev/rfcomm0 -s 115200
Armadillo-X1と対向機(PC)で、シリアル通信ソフトのコンソールに入力した文字が、
お互いのシリアル通信相手のコンソールに表示されることで、シリアル通信ができていることが確認できます。
(Armadillo-X1でcuを終わるときは、~.を入力します。)