New: the AI firewall watches the whole platform and explains each incident in plain words. See how it works

Pi 4 BLE gateway: bluetoothctl says no default controller available

Pi 4 BLE gateway: bluetoothctl says no default controller available

Solved 9 7

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.

Timestamps in UTC or it didn't happen.
♥ 0

did you install bluez? I think it’s not there by default on lite

Measure twice, poll once.
♥ 0

It’s installed, bluetoothctl wouldn’t run otherwise.

Timestamps in UTC or it didn't happen.
♥ 2

What does rfkill list show? A soft block looks like this too.

QoS 1 and a lot of patience.
♥ 2
0: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no

Only Wi-Fi, no Bluetooth entry at all.

Timestamps in UTC or it didn't happen.
♥ 2

Hm, if rfkill doesn’t even list it, the kernel never brought the controller up.

♥ 0

Could be the radio. I had a Pi 4 with dead Bluetooth but working Wi-Fi once, same chip but it happens.

♥ 0

“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.

Accepted solution♥ 8

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.

Timestamps in UTC or it didn't happen.
♥ 0

Worth leaving a comment above every line you add to config.txt with the date and why. Saves the next person.

♥ 2
Viewing 10 posts – 1 through 10 (of 10 total)
  • 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.

Share