Immediate Fix
If you encounter the “bluetoothd not running” error on an AWS EC2 instance, the first step is to ensure the BlueZ protocol stack is installed and the service is enabled. Most EC2 AMIs do not include Bluetooth utilities by default.
Run the following commands to install the necessary packages and force the daemon to start:
# Update package list and install BlueZ
sudo apt-get update
sudo apt-get install bluez -y
# Enable and start the bluetooth service
sudo systemctl enable bluetooth
sudo systemctl start bluetooth
# Verify the status
sudo systemctl status bluetooth
If the service starts but shows “No default controller available,” it is because EC2 instances lack physical Bluetooth hardware. You must use a virtual controller for testing purposes.
# Load the virtual HCI kernel module
sudo modprobe vhci
Technical Explanation
The bluetoothd daemon is the primary process responsible for managing Bluetooth devices and pairing on Linux systems via the BlueZ stack. On AWS EC2, this daemon often fails because it communicates with the kernel via the D-Bus interface to find Hardware Controller Interface (HCI) devices.
Since EC2 instances are virtual machines running on Xen or Nitro hypervisors, they do not have access to a physical Bluetooth radio. When bluetoothd starts, it scans the system for HCI nodes. Finding none, it may exit or remain in a “NotReady” state, causing pairing attempts to fail immediately.

The error “org.bluez.Error.NotReady” usually indicates that while the daemon is technically active, it has no hardware to command. This is common when developers try to run containerized Bluetooth applications or IoT simulations in the cloud.
Alternative Methods
Since physical hardware is unavailable, you must simulate a Bluetooth environment if your goal is software testing or API development. You can use the btvirt tool included in the BlueZ source or use a mock DBus server.
| Method | Use Case | Difficulty |
|---|---|---|
| VHCI Module | Simulating kernel-level HCI nodes. | Medium |
| BlueZ btvirt | Creating virtual local/remote devices for pairing tests. | Hard |
| USB Passthrough | Only available via specific Bare Metal instances (i3.metal). | Expert |
If you are using a Bare Metal EC2 instance, you can attach a USB Bluetooth dongle. In this scenario, ensure you have installed the specific firmware for your chipset, as generic Linux kernels on AWS are often stripped of non-essential firmware drivers.
# Check if the kernel recognizes a USB Bluetooth device
lsusb
hciconfig -a