Raspberry PiにBluetoothドングルをつけて接続しました。
~ペアリング~
1.Bluetoothのパッケージの追加
$ sudo apt-get install bluetooth bluez-utils blueman
2.bluetooth-agentを自動起動する。
$sudo vim /etc/init.d/bluetooth-agent
$sudo chmod 755 /etc/init.d/bluetooth-agent
$sudo update-rc.d bluetooth-agent defaults
bluetooth-agentに以下を記載。
### BEGIN INIT INFO
# Provides: bluetooth-agent
# Required-Start: $remote_fs $syslog bluetooth pulseaudio
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Makes Bluetooth discoverable and connectable to 0000
# Description: Start Bluetooth-Agent at boot time.
### END INIT INFO
#! /bin/sh
# /etc/init.d/bluetooth-agent
USER=root
HOME=/root
export USER HOME
case "$1" in
start)
#echo "setting bluetooth discoverable"
#sudo hciconfig hci0 piscan
sudo hciconfig hci0 pscan
start-stop-daemon -S -x /usr/bin/bluetooth-agent -b -- 0000
echo "bluetooth-agent startet pw: 0000"
;;
stop)
echo "Stopping bluetooth-agent"
start-stop-daemon -K -x /usr/bin/bluetooth-agent
;;
*)
echo "Usage: /etc/init.d/bluetooth-agent {start|stop}"
exit 1
;;
esac
exit 0
3.PINコードではなくYes/Noで接続できるようにする。
$ sudo perl -i -pe 's/KeyboardDisplay/DisplayYesNo/' /usr/bin/bluez-simple-agent
4.スマホ(Xperia)で設定→Bluetoothで”周辺のすべてのBluetooth危機で検出可能”の状態にする。(ここではまりました。)
5.以下でRaspberry Piをスキャン状態にする
$ hcitool scan
xx:xx:xx:xx:xx:xx Xperia AX
6.接続
$ sudo bluez-simple-agent hci0 xx:xx:xx:xx:xx:xx
RequestConfirmation
Confirm passkey (yes/No):yes
ここでスマホ側にペアリングするかのメニューがでてくるのでペアリングする。
Creating device failed: org.bluez.Error.AlreadyExists: AlreadyExistsというエラーがでた場合は、以下で1回消す。
$ sudo bluez-test-device remove XX:XX:XX:XX:XX:XX
ペアリングできると以下がでる。
New device・・・
5.自動接続
次回から自動接続する場合は以下となります。
$ sudo bluez-test-device trusted XX:XX:XX:XX:XX:XX yes
$ sudo bluez-test-input connect XX:XX:XX:XX:XX:XX
参考
Raspberry PiでBluetoothを扱う
Raspberry PiからBluetoohを使ってiPhoneでテザリング
~シリアル通信してみる~
1.SDP(Service Directory Protocol)にSPP(Serial Port Profile)を追加する。
まず登録されているサービスを確認する。
$sdptool browse local
Service NameにSerial Portがないので、以下でSPPを登録する。
$sdptool add --channel=22 SP
Serial Port service registered
もう一回以下で確認。
$sdptool browse local
Service Name: Serial Port
Service Description: COM Port
が追加されている。
2.RFCOMMサーバーを起動
$sudo rfcomm listen /dev/rfcomm0 22
Waiting for connection on channel 22とでて待機状態になる。
3.Android側からBluetooth Terminalで接続
接続されるとRaspberry Pi側で、以下が表示され、/dev/rfcomm0が作成される。
Connection from XX:XX:XX:XX:XX:XX to /dev/rfcomm0
Press CTRL-C for hangup
受信データの確認
$ cat /dev/rfcomm0
送信
$ echo "hello" > /dev/rfcomm0
以下のように修正すると自動化できると書いてあったが、逆にうまくいっていない。。
sudo vim /etc/bluetooth/rfcomm.conf
rfcomm0 {
# Automatically bind the device at startup
bind yes;
# Bluetooth address of the device
device XX:XX:XX:XX:XX:XX;
# RFCOMM channel for the connection
channel 22;
# Description of the connection
comment "a comment";
}
起動後自動でSerial Portができるようにする
rc.localに以下を修正することで改善
sudo vim /etc/rc.local
sdptool add --channel=22 SP
hciconfig hci0 piscan
hciconfig hci0 name ‘pi’
rfcomm listen /dev/rfcomm0 22 &
exit 0
$sudo chmod +x /etc/rc.local
参考
Linux PCにUSB Bluetoothを付けてNexus7と通信
[GPSRCC] RaspberryPiでBluetooth QZPOD編
Raspberry Pi をA2DPのsinkにして携帯やタブレットから音楽を再生する
Bluetooth/rfcomm
Camp Hack Day 2014 喋るテントTipee ソース
0 件のコメント :
コメントを投稿