0

I'm trying to connect my Raspberry Pi 3B to an Arduino that has an HC-05 bluetooth chip to send commands. I have successfully paired between the HC-05 and the Pi using

Device 98:7B:F3:57:76:34
    Name: BT05
    Alias: BT05
    Paired: yes
    Trusted: yes
    Blocked: no
    Connected: yes
    LegacyPairing: no
    UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
    UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
    UUID: Device Information        (0000180a-0000-1000-8000-00805f9b34fb)
    UUID: Unknown                   (0000ffe0-0000-1000-8000-00805f9b34fb)
    Modalias: bluetooth:v000Dp0000d0110

Now I'm trying to use Python to send commands. My code is:

import bluetooth

bd_addr = "98:7B:F3:57:76:34"

def connect ():
    port = 1
    sock=bluetooth.BluetoothSocket(bluetooth.RFCOMM)
    print("Trying to pair to", bd_addr)
    sock.connect((bd_addr, port))
    a = "a"
    while a != 'quit':
        a = input("<<< ")
        sock.send(a)
    sock.close()

connect()

I get an exception while running the code, saying that the host is down, and I can't find the problem:

python3 tests/bt.py 
Trying to pair to 98:7B:F3:57:76:34
Traceback (most recent call last):
  File "<string>", line 3, in connect
_bluetooth.error: (112, 'Host is down')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "tests/bt.py", line 16, in <module>
    connect()
  File "tests/bt.py", line 9, in connect
    sock.connect((bd_addr, port))
  File "<string>", line 5, in connect
bluetooth.btcommon.BluetoothError: (112, 'Host is down')

I've tried replacing the HC-05 device and restarting the bluetooth service, and the Pi but I still can't seem to connect to Arduino, and I'm lost.

Thanks to all helpers

Dan Sheinin
  • 59
  • 10
  • Before connecting, try checking if the host where you start the connection from has it's bluetooth interface up. If not, manually put it up. [This](https://stackoverflow.com/questions/31123540/making-a-successful-bluetooth-connection-to-rpi) thread has a couple of answers that could help. – BoboDarph Jun 03 '19 at 13:58
  • 1
    @BoboDarph Wow! Thanks! it really helped! – Dan Sheinin Jun 03 '19 at 14:59

1 Answers1

1

I fixed the issue by doing 2 things: First of all, only one out of my 5 HC-05 modules is OK, which made solving the other half of the issue very hard.

The other solution came from this post. I changed the class section in

/etc/bluetooth/main.conf

to:

Class = 0x400100

And that's it. I don't even need to pair my device after a reboot (of the Arduino or the Pi). This code connects the Pi and the Arduino and sends all commands.

Dan Sheinin
  • 59
  • 10
  • I think Class 0x400100 tells your interface that your BT device is a Computer with Telephony capabilities. See [this](http://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html) page for more details. I guess it would make no sense for your development board's bt interface to retain pairing information otherwise. – BoboDarph Jun 06 '19 at 09:03