Difference between revisions of "Raspberry Pi 3 - Setting Up Bluetooth"

From Alpine Linux
Jump to: navigation, search
(Work in progress)
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
The Raspberry Pi Bluetooth chip varies by model.
  
== Work in progress - still broekn ==
+
* Raspberry Pi 3 has BCM2837 connected to the hardware UART
 +
* Raspberry Pi 3B+ has BCM4345C0 connected to the hardware UART
 +
* Raspberry Pi Zero W has BCM43430A1 connected to the hardware UART
  
 +
You can get Bluetooth to work only if you are not using the UART (ttyAMA0) for anything else, for example serial console.
 +
Recent versions of Alpine Linux for Raspberry Pi come with the required Broadcom firmware files.
 +
If you need the UART for something else, you can use an USB Bluetooth adapter instead.
  
The Raspberry Pi 3 has bluetooth chip on the BCM2837 and it is connected to the hardware UART.
+
You'll need the bluez package
 +
 
 +
{{cmd|apk add bluez}}
 +
 
 +
The Bluetooth controller is not automatically discovered on the UART. Test attaching it and check that the controller is found
 +
 
 +
{{cmd|btattach -B /dev/ttyAMA0 -P bcm -S 115200 -N &}}
  
You can get bluetooth to work only if you are not using the UART for anything else.
+
{{cmd|/etc/init.d/bluetooth start}}
  
You'll need the bluez package
+
{{cmd|<nowiki>bluetoothctl list
 +
Controller B8:27:EB:01:02:03 BlueZ 5.50 [default]
 +
</nowiki>}}
  
{{cmd|apk add bluez}}
+
If the interface is discovered after the attach, you can make attaching persistent by uncommenting
 +
the line next to "rpi bluetooth" in ''/etc/mdev.conf''
  
 
Start the bluetooth deamon at boot. This should load the right modules when you next reboot.
 
Start the bluetooth deamon at boot. This should load the right modules when you next reboot.
Line 15: Line 30:
 
{{cmd|rc-update add bluetooth}}
 
{{cmd|rc-update add bluetooth}}
  
We'll need the firmware from Broadcom
+
{{cmd|lbu commit && reboot}}
  
{{cmd|mount -o remount,rw /dev/mmcblk0p1
 
  
wget $URL/BCM43430A1.hcd -O /media/mmcblk0p1/firmware/brcm/BCM43430A1.hcd}}
+
The output from the btattach above should be
  
Next we load the hci_uart module and we attach the serial port to the bcm43xx
+
{{cmd|Attaching Primary controller to /dev/ttyAMA0
 +
Switched line discipline from 0 to 15
 +
Device index 0 attached
 +
}}
  
{{cmd|modprobe hci_uart
+
Then it's a matter of doing what you normally do with your Bluetooth stack.
  
ln -s /lib/firmware /etc/firmware
+
[[Category:Installation]]
 
+
[[category: Raspberry]]
hciattach /dev/ttyAMA0 bcm43xx 115200 noflow -
 
}}
 

Latest revision as of 10:08, 25 October 2019

The Raspberry Pi Bluetooth chip varies by model.

  • Raspberry Pi 3 has BCM2837 connected to the hardware UART
  • Raspberry Pi 3B+ has BCM4345C0 connected to the hardware UART
  • Raspberry Pi Zero W has BCM43430A1 connected to the hardware UART

You can get Bluetooth to work only if you are not using the UART (ttyAMA0) for anything else, for example serial console. Recent versions of Alpine Linux for Raspberry Pi come with the required Broadcom firmware files. If you need the UART for something else, you can use an USB Bluetooth adapter instead.

You'll need the bluez package

apk add bluez

The Bluetooth controller is not automatically discovered on the UART. Test attaching it and check that the controller is found

btattach -B /dev/ttyAMA0 -P bcm -S 115200 -N &

/etc/init.d/bluetooth start

bluetoothctl list Controller B8:27:EB:01:02:03 BlueZ 5.50 [default]

If the interface is discovered after the attach, you can make attaching persistent by uncommenting the line next to "rpi bluetooth" in /etc/mdev.conf

Start the bluetooth deamon at boot. This should load the right modules when you next reboot.

rc-update add bluetooth

lbu commit && reboot


The output from the btattach above should be

Attaching Primary controller to /dev/ttyAMA0 Switched line discipline from 0 to 15 Device index 0 attached

Then it's a matter of doing what you normally do with your Bluetooth stack.