Raspberry Pi Zero W – Bluetooth not initializing on OpenWrt (medical alert system)

Hi everyone,

I’m trying to build a custom OpenWrt image for Raspberry Pi Zero W to be used in a medical alert / nurse-call–style system.

Use Case / System Flow

The intended flow is:

Bluetooth button → nearest Raspberry Pi → webhook → website API

  • A patient presses a Bluetooth button (BLE or classic)

  • The nearest Raspberry Pi Zero W receives the button event

  • The Pi is connected via Ethernet

  • The Pi sends a webhook with the event + location data to a website API

  • The backend dispatches a doctor or nurse to the patient

This device is headless, and Bluetooth reliability is critical for the system to function correctly.


The Problem

Bluetooth does not initialize on OpenWrt:

  • hciconfig returns nothing

  • No hci0 device appears

  • No Bluetooth interface visible

  • Wi-Fi and USB-Ethernet work perfectly

  • No obvious Bluetooth errors in dmesg


Build Details

  • Build method: OpenWrt Image Builder

  • Versions tested: 19.07, 21.x, 22.x, 23.05

  • Target: bcm27xx/bcm2708 (Raspberry Pi Zero W)


What I Have Tried

Firmware

I know the Pi Zero W requires Broadcom proprietary firmware.

  • Added:

    BCM43430A1.hcd
    
    
  • Placed at:

    /lib/firmware/brcm/BCM43430A1.hcd
    
    

Packages

Included explicitly in the image:

  • kmod-bluetooth

  • kmod-hci-uart

  • bluez-daemon

  • bluez-utils

Manual Attach Attempt

I added an init script to force Bluetooth attachment:

hciattach /dev/ttyAMA0 bcm43xx 921600 noflow

This still does not create hci0.

Image Builder / mkconfig

When using mkconfig, I included the same configuration files I normally use.
I’ve uploaded the Image Builder configs and generated images here:

:backhand_index_pointing_right: https://gofile.io/d/P1AgSd

If anyone is willing to review what’s working vs not working, I’d really appreciate it.


Suspicions / Questions

  1. UART Conflict

    • Is /dev/ttyAMA0 being used by the serial console instead of Bluetooth?

    • On Raspberry Pi OS, Bluetooth usually requires:

      enable_uart=1
      dtoverlay=miniuart-bt
      
      
    • Is this also required on OpenWrt for the Pi Zero W?

  2. config.txt & Image Builder

    • Is there a supported way to bake config.txt changes (UART + overlays) into the Image Builder output?

    • Or must these be manually edited on the SD card boot partition after flashing?

  3. Kernel Drivers

    • Is kmod-hci-uart alone sufficient?

    • Do I also need a specific BCM2835 / serial UART kernel module for the Pi Zero W?

  4. Known-Working Setup

    • Does anyone have a known-working Bluetooth configuration for Raspberry Pi Zero W on OpenWrt?

    • Correct UART device, overlay, kernel modules, or firmware placement?


Any guidance, documentation, or example configs would be extremely helpful.
Bluetooth is the last blocking issue before this system can be fully tested.

Thanks in advance :folded_hands:

I don't think you're going to get the Broadcom bluetooth to work because of the closed-source firmware. Additionally, based on searches, I don't think anyone has had any success. For example, this GitHub issue dates back to 2020 and has the same issue, but no action or solutions.

Why are you using ancient and unsupported builds? Not that it's likely to make a difference, of course, because the Broadcom issue will be the same on all versions, but if you want help, you should be using 24.10 or 25.12 which are currently supported.

I'll let others provide additional insight if there is any way to do what you're attempting, but I wouldn't hold your breath.

It is highly irresponsible to use AI chatbot advice in medical pager context.

Enough with adminasrtivia, lets get to technicals.

Please show full dmesg output from OpenWrt 24.10.5 with AI barfed "firmware" file removed.

You say "working" bluetooth - uart is one of dozen bluetootk applications, add obex, audio, hid to name a few.