|
@@ -1,265 +0,0 @@
|
|
|
-Debian 9 with kernel 4.4.55_3
|
|
|
-
|
|
|
-http://wiki.banana-pi.org/Banana_Pi_BPI-M2%2B#Raspbian
|
|
|
-
|
|
|
-``` bash
|
|
|
-
|
|
|
-# Install System
|
|
|
-
|
|
|
-sudo fdisk -l
|
|
|
-
|
|
|
-unzip 2018-11-09-debian-9-stretch-mate-desktop-preview-bpi-m2p-4.4-sd-emmc.img.zip
|
|
|
-
|
|
|
-sudo dd if=2018-11-09-debian-9-stretch-mate-desktop-preview-bpi-m2p-sd-emmc.img of=/dev/mmcblk1 bs=10MB
|
|
|
-
|
|
|
-# Bluetooth Setup
|
|
|
-
|
|
|
-sudo apt install libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev
|
|
|
-
|
|
|
-wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.49.tar.xz
|
|
|
-
|
|
|
-tar -xf bluez-5.49.tar.xz
|
|
|
-
|
|
|
-cd bluez-5.49/
|
|
|
-
|
|
|
-./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-experimental
|
|
|
-
|
|
|
-make -j4
|
|
|
-
|
|
|
-sudo make install
|
|
|
-
|
|
|
-sudo adduser pi bluetooth
|
|
|
-
|
|
|
-sudo cp /etc/dbus-1/system.d/bluetooth.conf /etc/dbus-1/system.d/bluetooth.conf.bak
|
|
|
-
|
|
|
-sudo nano /etc/dbus-1/system.d/bluetooth.conf
|
|
|
-
|
|
|
-#add the #comment lines to the bluetooth.conf without the #
|
|
|
-
|
|
|
-<policy user="root">
|
|
|
- <allow own="org.bluez"/>
|
|
|
- <allow send_destination="org.bluez"/>
|
|
|
- <allow send_interface="org.bluez.Agent1"/>
|
|
|
- <allow send_interface="org.bluez.MediaEndpoint1"/>
|
|
|
- <allow send_interface="org.bluez.MediaPlayer1"/>
|
|
|
- <allow send_interface="org.bluez.Profile1"/>
|
|
|
- #<allow send_interface="org.bluez.AlertAgent1"/>
|
|
|
- #<allow send_interface="org.bluez.ThermometerWatcher1"/>
|
|
|
- #<allow send_interface="org.bluez.HeartRateWatcher1"/>
|
|
|
- #<allow send_interface="org.bluez.CyclingSpeedWatcher1"/>
|
|
|
- <allow send_interface="org.bluez.GattCharacteristic1"/>
|
|
|
- <allow send_interface="org.bluez.GattDescriptor1"/>
|
|
|
- <allow send_interface="org.bluez.LEAdvertisement1"/>
|
|
|
- <allow send_interface="org.freedesktop.DBus.ObjectManager"/>
|
|
|
- <allow send_interface="org.freedesktop.DBus.Properties"/>
|
|
|
- </policy>
|
|
|
-
|
|
|
- #<!-- allow users of bluetooth group to communicate -->
|
|
|
- #<policy group="bluetooth">
|
|
|
- # <allow send_destination="org.bluez"/>
|
|
|
- #</policy>
|
|
|
-
|
|
|
- <policy at_console="true">
|
|
|
- <allow send_destination="org.bluez"/>
|
|
|
- </policy>
|
|
|
-
|
|
|
-sudo reboot
|
|
|
-
|
|
|
-rfkill list
|
|
|
-
|
|
|
-0: sunxi-bt: Bluetooth
|
|
|
- Soft blocked: no
|
|
|
- Hard blocked: no
|
|
|
-1: phy0: Wireless LAN
|
|
|
- Soft blocked: yes
|
|
|
- Hard blocked: no
|
|
|
-2: brcmfmac-wifi: Wireless LAN
|
|
|
- Soft blocked: yes
|
|
|
- Hard blocked: no
|
|
|
-4: hci0: Bluetooth
|
|
|
- Soft blocked: yes
|
|
|
- Hard blocked: no
|
|
|
-
|
|
|
-rfkill unblock bluetooth
|
|
|
-
|
|
|
-0: sunxi-bt: Bluetooth
|
|
|
- Soft blocked: no
|
|
|
- Hard blocked: no
|
|
|
-1: phy0: Wireless LAN
|
|
|
- Soft blocked: yes
|
|
|
- Hard blocked: no
|
|
|
-2: brcmfmac-wifi: Wireless LAN
|
|
|
- Soft blocked: yes
|
|
|
- Hard blocked: no
|
|
|
-4: hci0: Bluetooth
|
|
|
- Soft blocked: no
|
|
|
- Hard blocked: no
|
|
|
-
|
|
|
-bluetoothctl
|
|
|
-
|
|
|
-power on
|
|
|
-
|
|
|
-agent on
|
|
|
-
|
|
|
-scan on
|
|
|
-
|
|
|
-# wait few seconds
|
|
|
-
|
|
|
-scan off
|
|
|
-
|
|
|
-pair 00:0B:CE:04:F6:66
|
|
|
-
|
|
|
-#Attempting to pair with 00:0B:CE:04:F6:66
|
|
|
-#Request PIN code
|
|
|
-#[blue1m[agent] Enter PIN code: 0000
|
|
|
-
|
|
|
-#[CHG] Device 00:0B:CE:04:F6:66 Connected: yes
|
|
|
-#[CHG] Device 00:0B:CE:04:F6:66 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
|
|
|
-#[CHG] Device 00:0B:CE:04:F6:66 ServicesResolved: yes
|
|
|
-#[CHG] Device 00:0B:CE:04:F6:66 Paired: yes
|
|
|
-#Pairing successful
|
|
|
-
|
|
|
-info 00:0B:CE:04:F6:66
|
|
|
-
|
|
|
-#Device 00:0B:CE:04:F6:66 (public)
|
|
|
-# Name: BAmobile
|
|
|
-# Alias: BAmobile
|
|
|
-# Class: 0x00001f00
|
|
|
-# Paired: yes
|
|
|
-# Trusted: no
|
|
|
-# Blocked: no
|
|
|
-# Connected: no
|
|
|
-# LegacyPairing: yes
|
|
|
-# UUID: Serial Port (00001101-0000-1000-8000-00805f9b34fb)
|
|
|
-
|
|
|
-sudo rfcomm bind 0 00:0B:CE:04:F6:66
|
|
|
-
|
|
|
-sudo rfcomm show /dev/rfcomm0 0
|
|
|
-#rfcomm0: 00:0B:CE:04:F6:66 channel 1 clean
|
|
|
-
|
|
|
-#test send
|
|
|
-sudo python3 -c 'print("\26\01\62\65\72\6c\69\6e")' > /dev/rfcomm
|
|
|
-
|
|
|
-#test empfang
|
|
|
-cat /dev/rfcomm0
|
|
|
-
|
|
|
-sudo apt-get install python3-dev
|
|
|
-
|
|
|
-sudo apt install python3-pip
|
|
|
-
|
|
|
-python3 -m pip install setuptools
|
|
|
-
|
|
|
-python3 -m pip install wheel
|
|
|
-
|
|
|
-python3 -m pip install pybluez
|
|
|
-
|
|
|
-sudo apt autoremove
|
|
|
-
|
|
|
-# Python serial bluetooth transmitter / receiver
|
|
|
-
|
|
|
-sudo nano /etc/systemd/system/dbus-org.bluez.service
|
|
|
-
|
|
|
-changing
|
|
|
-
|
|
|
-ExecStart=/usr/lib/bluetooth/bluetoothd
|
|
|
-
|
|
|
-into
|
|
|
-
|
|
|
-ExecStart=/usr/lib/bluetooth/bluetoothd -C
|
|
|
-
|
|
|
-sudo sdptool add SP
|
|
|
-
|
|
|
-nano send_serial_bluetooth.py
|
|
|
-
|
|
|
-# Python Code Start
|
|
|
-
|
|
|
-#!/usr/bin/env python3
|
|
|
-
|
|
|
-import sys
|
|
|
-import bluetooth
|
|
|
-
|
|
|
-addr = None
|
|
|
-
|
|
|
-if len(sys.argv) < 2:
|
|
|
- print("No device specified. Searching all nearby bluetooth devices for "
|
|
|
- "the SampleServer service...")
|
|
|
-else:
|
|
|
- addr = sys.argv[1]
|
|
|
- print("Searching for SampleServer on {}...".format(addr))
|
|
|
-
|
|
|
-# search for the SampleServer service
|
|
|
-uuid = "00001101-0000-1000-8000-00805f9b34fb"
|
|
|
-service_matches = bluetooth.find_service(uuid=uuid, address=addr)
|
|
|
-
|
|
|
-if len(service_matches) == 0:
|
|
|
- print("Couldn't find the SampleServer service.")
|
|
|
- sys.exit(0)
|
|
|
-
|
|
|
-first_match = service_matches[0]
|
|
|
-port = first_match["port"]
|
|
|
-name = first_match["name"]
|
|
|
-host = first_match["host"]
|
|
|
-
|
|
|
-print("Connecting to \"{}\" on {}".format(name, host))
|
|
|
-
|
|
|
-# Create the client socket
|
|
|
-sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
|
|
|
-sock.connect((host, port))
|
|
|
-
|
|
|
-print("Connected. Type something...")
|
|
|
-while True:
|
|
|
- data = input()
|
|
|
- if not data:
|
|
|
- break
|
|
|
- sock.send(data)
|
|
|
-
|
|
|
-sock.close()
|
|
|
-
|
|
|
-# Python Code End
|
|
|
-
|
|
|
-sudo hciconfig hci0 piscan
|
|
|
-
|
|
|
-nano receive_serial_bluetooth.py
|
|
|
-
|
|
|
-# Python Code Start
|
|
|
-
|
|
|
-#!/usr/bin/env python3
|
|
|
-
|
|
|
-import bluetooth
|
|
|
-
|
|
|
-server_sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
|
|
|
-server_sock.bind(("", bluetooth.PORT_ANY))
|
|
|
-server_sock.listen(1)
|
|
|
-
|
|
|
-port = server_sock.getsockname()[1]
|
|
|
-
|
|
|
-uuid = "00001101-0000-1000-8000-00805f9b34fb"
|
|
|
-
|
|
|
-bluetooth.advertise_service(server_sock, "SampleServer", service_id=uuid,
|
|
|
- service_classes=[uuid, bluetooth.SERIAL_PORT_CLASS],
|
|
|
- profiles=[bluetooth.SERIAL_PORT_PROFILE],
|
|
|
- # protocols=[bluetooth.OBEX_UUID]
|
|
|
- )
|
|
|
-
|
|
|
-print("Waiting for connection on RFCOMM channel", port)
|
|
|
-
|
|
|
-client_sock, client_info = server_sock.accept()
|
|
|
-print("Accepted connection from", client_info)
|
|
|
-
|
|
|
-try:
|
|
|
- while True:
|
|
|
- data = client_sock.recv(1024)
|
|
|
- if not data:
|
|
|
- break
|
|
|
- print("Received", data)
|
|
|
-except OSError:
|
|
|
- pass
|
|
|
-
|
|
|
-print("Disconnected.")
|
|
|
-
|
|
|
-client_sock.close()
|
|
|
-server_sock.close()
|
|
|
-print("All done.")
|
|
|
-
|
|
|
-# Python Code End
|
|
|
-```
|