Pi 4 BLE gateway: bluetoothctl says no default controller available
For my final-year project I’m turning a Pi 4 into a BLE gateway: it listens to six RuuviTags around the lab and reports each one to Hermetry as a child device over v1/gw/telemetry. The Hermetry part works when I feed it fake data from my laptop.
The Bluetooth part doesn’t. On the Pi:
$ bluetoothctl
Agent registered
[bluetoothctl]# scan on
No default controller available
$ hciconfig -a
$
$ systemctl status bluetooth
Active: active (running)
So the service runs but there’s no controller. Pi 4 Model B, Raspberry Pi OS Bookworm 64-bit, fresh-ish install from about a month ago. The same SD card was in the Pi I used for the receipt-printer thing a few weeks back, if that matters.
did you install bluez? I think it’s not there by default on lite
It’s installed, bluetoothctl wouldn’t run otherwise.
What does rfkill list show? A soft block looks like this too.
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
Only Wi-Fi, no Bluetooth entry at all.
Hm, if rfkill doesn’t even list it, the kernel never brought the controller up.
Could be the radio. I had a Pi 4 with dead Bluetooth but working Wi-Fi once, same chip but it happens.
“Same SD card as the receipt printer” is the clue. Check /boot/firmware/config.txt (on Bookworm it moved from /boot) for dtoverlay=disable-bt. Our integrator put that in for an RS-485 hat on a line gateway and six months later someone spent a day trying to pair a scanner to the same Pi.
On the Pi 4 the Bluetooth chip hangs off the good UART. disable-bt gives that UART to the GPIO pins and Bluetooth disappears completely, which matches your rfkill output. Comment the line out, then:
sudo systemctl enable --now hciuart
sudo reboot
# after reboot
rfkill list # should show hci0: Bluetooth
bluetoothctl show
If you need both a hardware UART and Bluetooth on the Pi 4, dtoverlay=miniuart-bt keeps Bluetooth on the mini UART, or use one of the extra UARTs (uart2 to uart5) the Pi 4 has.
That was it, the disable-bt line from the printer project. Embarrassing. Commented out, hciuart enabled, hci0 is back and all six tags show up in the scan. They’re appearing as children in Hermetry now.
Worth leaving a comment above every line you add to config.txt with the date and why. Saves the next person.
- You must be logged in to reply to this topic.
Join the conversation
Sign in to ask and answer, like helpful posts and mark the reply that solved your problem. Every contribution earns points and levels.

