Problem / Outcome Summary
- This how to guide will show you how to install a working Bluetooth driver for Arch Linux on the Raspberry Pi 3
- Please see the ‘Summary Overview’ tab below for a high level view of the objectives this ‘how to’ will achieve.
This guide applies to:
- Arch Linux on Raspberry Pi 3
Why might I want to do this?
- Because currently Arch Linux does not supply a working bluetooth driver for Raspberry Pi 3
- Because you want to add Bluetooth Capability to Rune Audio, which uses Arch Linux
- Just because
To be clear, why do I need to do this?
Sometimes distrubutions such as Arch Linux are not able to provide drivers as quickly as the public would like, new hardware comes out all the time and sometimes there are difficulties getting things to work. It is important to make things work in an official way, which is why this uide uses AUR, the official Arch Linux User Repository. In this way this should work until such time as Arch makes this official.
Full credit must go to Huulivoide from the Arch Linux User Repositories for creating these modified packages.
- Arch Linux or a derivative
- Raspberry Pi 3
- SSH if you have a headless based Arch Linux system such as Rune or other Arch Linux system
- A working Internet connection
High Level Summary Steps
The below lists the high level summary of steps we’re about to take to get the Raspberry Pi 3 Bluetooth driver working in Arch Linux
- Install software pre-requisites
- Install Updated drivers
- enable updated drivers
Install software pre-requisites
ssh into your Raspberry Pi 3 or start up a local console
Note that Rune Audio doesn’t really have an ordinary user account which therefore must be created, if you’re doing this on a rune Audio device, please see the next steps specific to Rune Audio. If you don’t have a rune, just skip these.
Create an ordinary User Account for Rune Audio
# useradd -G wheel -m rune
# nano /etc/sudoers (uncomment the below line by taking the hash out)
# %wheel ALL=(ALL) NOPASSWD: ALL
# passwd rune (then enter your preferred password)
# su rune
$ cd /home/rune, then perform the below steps as this new ordinary user
$ sudo pacman -Syu (Note that this mostly will break Rune Audio, on Rune just omit the u to prevent a full system upgrade)
Install the build essentials
$ sudo pacman -S kernel26-headers file base-devel abs (Press Enter to accept default=all)
Press Y to proceed with installation. If you get any errors about missing files, sometimes the pacman -Sy command fails, just repeat it and retry.
Arch will now retrieve any necessary package updates and install them.
Get the modified Raspberry Pi files that enable bluetooth
$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/hciattach-rpi3.tar.gz
$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/pi-bluetooth.tar.gz
( note watch your permissions here, for me I ended up downloading as root and doing a chown rune.rune on them to get it to work – Arch seems a bit ‘funky’ at times…
Also – check you have spare disk space ($df -h) if not, follow this disk space article here. You may also need to install the libutil-linux package if you get an fdisk error aka # pacman -Sy libutil-linux
Install updated drivers
$ tar -zxvf hciattach*
$ tar -zxvf pi-blue*
$ cd hciattach-rpi3
Press Y to compile the package
$ sudo pacman -U hciattach-rpi3-5.38.1-armv7h.pkg.tar.xz (or your equivalent version which may change)
Press Y to install this newly compiled package
$ cd ..
Press Y to compile the package
$ sudo pacman -U pi-bluetooth-1-1-armv7h.pkg.tar.xz
Press Y to install the package you just compiled
[spacer color=”429d4a” icon=”fa-angle-double-down” style=”3″]
Enable updated drivers
$ sudo systemctl enable brcm43438.service
$ sudo reboot
Essentially, this guide is now complete, after the reboot we will confirm that.
$ hcitool dev
This command should output something like:
[rune@runeaudio pi-bluetooth]$ hcitool dev
You should now have a completely installed, automatically starting, bluetooth module. The world is your oyster! Enjoy.
If you have any issues or questions, hit me up in the comment section below.