doku.md 5.8 KB

Debian 9 with kernel 4.4.55_3

http://wiki.banana-pi.org/Banana_Pi_BPI-M2%2B#Raspbian


# 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