Bluetooth Not Working in Kali Linux? Fix It Here

Logeshwaran

Before you spend an evening on this, one question decides everything: are you running Kali in a virtual machine?

If yes, your Bluetooth was never going to work. VirtualBox and VMware do not pass the host's built-in Bluetooth adapter through to the guest at all. Nothing you configure inside Kali will change that. Jump to the VM fix.

If you're on bare metal, start here — it resolves most cases in about ten seconds:

sudo systemctl start bluetooth
sudo systemctl enable bluetooth
sudo rfkill unblock bluetooth

⚡ One command tells you which problem you have

bluetoothctl list

Shows a controller → hardware is fine, it's a pairing problem. Go here.

Empty, or "No default controller available" → Kali cannot see the adapter. Go here.

"Command not found" → run sudo apt install bluez bluez-tools blueman

You're in a VMthe adapter isn't reaching the guest.

Arjun's Wasted Tuesday

Arjun — Jake's nephew, halfway through a cybersecurity course — wanted to use his Bluetooth headphones while working through a lab exercise in Kali.

He spent three hours on it. He installed blueman. He removed blueman. He edited configuration files he did not understand, restarted services in combinations he found on four different forums, and at one point recompiled something.

Then Ethan asked him one question.

"Is that Kali running in VirtualBox?"

It was.

"Then there's no Bluetooth adapter inside it to configure. VirtualBox doesn't hand your laptop's Bluetooth to the guest. You've spent three hours tuning a radio that isn't in the room."

This is the single most common wasted evening in Kali troubleshooting, and it is why this article opens with that question rather than burying it in a troubleshooting section on page four.

🔬 How this was tested

  • Kali rolling on bare metal — laptop with an Intel wireless/Bluetooth combo card, service disabled from a fresh install
  • Kali in VirtualBox — to confirm the adapter genuinely does not appear, and that a USB dongle with passthrough does
  • A deliberately broken firmware case — firmware package removed to reproduce "No default controller available" on hardware that physically exists

What we can't promise: firmware package names vary by chipset, and yours may differ from the examples. The method for finding which one you need is included, so you are not dependent on our list being complete.

If You're Running Kali in a Virtual Machine

Most Kali users run it in a VM, which makes this the most important section on the page.

Your host's built-in Bluetooth adapter is not visible inside the guest. VirtualBox and VMware Workstation virtualise storage, network and USB — but an integrated Bluetooth radio is not on that list. From inside Kali, the hardware simply does not exist.

You will see this reflected in every diagnostic:

$ bluetoothctl list
(nothing)

$ hciconfig
(nothing)

$ lsusb | grep -i blue
(nothing)

That is not a fault. It is an accurate report.

The fix: a USB Bluetooth dongle

A USB adapter can be passed through, because USB passthrough is something VMs do well. They cost very little and this is the only reliable route.

VirtualBox:

  1. Install the Extension Pack — USB 2.0/3.0 passthrough needs it.
  2. Shut the VM down. Settings → USB → enable the USB controller.
  3. Click the + icon and add your Bluetooth dongle to the filter list.
  4. Start the VM. Confirm with lsusb — the dongle should now be listed.

VMware Workstation / Player:

  1. Start the VM, then VM → Removable Devices.
  2. Find your Bluetooth adapter and choose Connect (Disconnect from host).

🙋‍♂️ Arjun's Reality Check

"Wait — 'Disconnect from host'? So my laptop loses Bluetooth while the VM has it?"

Yes, and that's how it has to work. A USB device belongs to one machine at a time. While Kali holds the dongle, Windows or macOS cannot use it. That is exactly why a cheap second dongle is the sensible answer rather than fighting over the built-in one — you keep your host's Bluetooth and give the VM its own.

Once the dongle is attached, come back and follow the bare-metal steps below. From Kali's point of view it is now ordinary hardware.

"No Default Controller Available"

This is the message most people arrive with. It means the Bluetooth software is running fine but cannot see any hardware. It is not a pairing problem, so no amount of pairing advice will help.

Work through these four in order.

1. Is the service even running?

Many Kali installs ship with Bluetooth disabled — a deliberate choice for a security distribution, since a radio you are not using is attack surface you do not need.

sudo systemctl status bluetooth
sudo systemctl start bluetooth
sudo systemctl enable bluetooth

start runs it now. enable makes it survive a reboot — skip that and you will be back here tomorrow.

2. Is rfkill blocking it?

rfkill list

Output looks like this:

1: hci0: Bluetooth
	Soft blocked: yes
	Hard blocked: no

Two different blocks, and the difference matters:

  • Soft blocked — switched off in software. Fix it: sudo rfkill unblock bluetooth
  • Hard blocked — a physical switch or an Fn key on your laptop, often the one with an aeroplane icon. No command can clear this. Press the key or flip the switch.

People lose hours to a hard block because they keep running unblock and it keeps doing nothing. Read which line says yes.

3. Does the kernel see the hardware at all?

lsusb | grep -i blue          # USB adapters and most laptop combo cards
lspci | grep -i blue          # some internal cards
dmesg | grep -i blue          # what the kernel said at boot

Nothing at all from any of them means the hardware is absent or not powered — you are in a VM, the dongle is unplugged, or the adapter is disabled in your BIOS. Our guide to finding and checking your BIOS covers getting in there.

Something listed, but still no controller means the hardware exists and the driver cannot start it. That is almost always firmware — the next step.

4. Missing firmware — the most common real cause

Check what the kernel actually complained about:

sudo dmesg | grep -i firmware

A line like Direct firmware load for rtl_bt/rtl8761bu_fw.bin failed is your answer. The chip needs a small binary blob loaded at startup, and it is not installed.

Install the common firmware packages:

sudo apt update
sudo apt install firmware-linux firmware-linux-nonfree \
                 firmware-realtek firmware-atheros firmware-iwlwifi
sudo reboot

⚠️ "Unable to locate package firmware-realtek"

Firmware for most wireless chips is non-free, so it lives in a separate repository component. Check your sources:

cat /etc/apt/sources.list

The line must end with non-free-firmware:
deb http://http.kali.org/kali kali-rolling main contrib non-free non-free-firmware
Add it if missing, then sudo apt update and try again. If apt itself is failing, fix that first — see the signature error or "dpkg was interrupted".

A reboot is genuinely required here. Firmware loads when the driver initialises, and the driver initialises at boot.

Pairing From the Terminal

Once bluetoothctl list shows a controller, the hardware is working. Now the software.

bluetoothctl

The prompt changes to [bluetooth]#. You are now inside a small shell of its own. Then, in order:

power on
agent on
default-agent
scan on

What each one does, because typing commands you do not understand is how people stay stuck:

  • power on — switches the radio on. Being unblocked is not the same as being powered.
  • agent on and default-agent — starts the component that handles PIN codes and confirmation prompts. Skip these and pairing fails with no explanation.
  • scan on — starts looking. Put your device in pairing mode now, usually by holding its power button until it flashes.

Addresses appear as you scan:

[NEW] Device AA:BB:CC:11:22:33 Arjun's Headphones

Then, using that address:

pair AA:BB:CC:11:22:33
trust AA:BB:CC:11:22:33
connect AA:BB:CC:11:22:33
scan off
exit

✅ Don't skip trust

Pairing exchanges the keys. Trusting is what allows the device to reconnect on its own next time. Skip it and your headphones will pair perfectly today and refuse to reconnect tomorrow — which sends people back to searching, convinced Bluetooth is broken again. Also remember scan off: leaving the scan running drains battery and clutters every future listing.

Prefer a graphical tool? sudo apt install blueman gives you a tray applet and a normal pairing window. It is the same BlueZ stack underneath, so everything above still applies when it misbehaves.

It Pairs, But There's No Sound

Headphones connect, the light goes solid, and audio keeps coming out of the laptop speakers.

This is not a Bluetooth problem. Bluetooth has done its job — the link is up. Getting sound down that link is the audio server's job, and that is a separate piece of software.

# PulseAudio
sudo apt install pulseaudio-module-bluetooth
pulseaudio -k          # restart it

# PipeWire (newer Kali installs)
sudo apt install libspa-0.2-bluetooth
systemctl --user restart pipewire pipewire-pulse

Not sure which you have? pactl info | grep "Server Name" will say.

Then set the output device — pavucontrol gives you a mixer where you can pick your headphones under Output Devices, and switch the profile between high-quality playback (A2DP) and the lower-quality mode that enables the microphone (HSP/HFP). You generally cannot have both at once; that is a limitation of Bluetooth audio itself, not of Linux.

Other Symptoms, By What You're Seeing

"Failed to pair: org.bluez.Error.AuthenticationCanceled"

Usually the agent was not started. Go back into bluetoothctl and run agent on then default-agent before pairing. If it persists, remove the half-finished pairing first: remove AA:BB:CC:11:22:33, then pair again from clean.

Device pairs, then disconnects seconds later

Three common causes. You forgot trust. Or the device is already connected to your phone and is choosing it over your laptop — turn Bluetooth off on the phone and retry. Or your adapter is a combo Wi-Fi/Bluetooth card and the two are interfering; moving your Wi-Fi to the 5 GHz band usually stops it, since Bluetooth and 2.4 GHz Wi-Fi share the same crowded spectrum.

Bluetooth works, but disappears after every reboot

You ran start but not enable. Run sudo systemctl enable bluetooth once and it persists.

Adapter shows as "hci0" but everything times out

Try resetting it at the interface level:

sudo hciconfig hci0 down
sudo hciconfig hci0 up
sudo systemctl restart bluetooth

If that helps only until the next boot, it is usually a firmware issue that partially loads — go back to the firmware step.

Everything worked until an upgrade

A kernel update can arrive before matching firmware. Run a full upgrade so the two are in step: sudo apt update && sudo apt full-upgrade. If apt itself refuses, fix that first — that is the more urgent problem.

Finding Out Exactly Which Adapter You Have

Firmware package names depend on your chipset, and no article's list is complete. Rather than trusting ours, find yours:

lsusb | grep -i -E 'bluetooth|wireless'
hciconfig -a
dmesg | grep -i -E 'bluetooth|hci'

A typical lsusb line reads:

Bus 001 Device 004: ID 0bda:b00a Realtek Semiconductor Corp. Bluetooth Radio

Two useful things there. Realtek tells you the vendor, and therefore that firmware-realtek is the package you want. And 0bda:b00a is the exact vendor:product ID — searching that pair finds specific answers for your hardware rather than generic ones.

Vendor in lsusb Firmware package
Intelfirmware-iwlwifi
Realtekfirmware-realtek
Qualcomm / Atherosfirmware-atheros
Broadcomfirmware-brcm80211
MediaTekfirmware-mediatek

Broadcom is worth a warning: some Broadcom Bluetooth chips in older MacBooks need firmware extracted from Apple's own drivers and are genuinely awkward on Linux. If you have one and nothing works, a cheap USB dongle will save you an evening.

When Bluetooth Dies After a Few Minutes

A specific and maddening symptom: everything works, then the connection drops and the adapter disappears entirely until you reboot. Almost always USB autosuspend — the kernel powering down a device it believes is idle.

Confirm it first:

cat /sys/module/usbcore/parameters/autosuspend

Anything above -1 means autosuspend is active. To test whether it is your problem, disable it until the next reboot:

echo -1 | sudo tee /sys/module/usbcore/parameters/autosuspend

If the problem stops, make it permanent by adding a kernel parameter:

sudo nano /etc/default/grub
# change the GRUB_CMDLINE_LINUX_DEFAULT line to include:
#   usbcore.autosuspend=-1
sudo update-grub
sudo reboot

The honest trade-off: this costs battery life, because you are telling the kernel never to power down idle USB devices. On a desktop, no downside. On a laptop you carry all day, consider whether a slightly shorter battery is worth stable headphones — some people prefer to live with the reconnect.

If battery life is already a concern on that machine, our guide to why batteries drain quickly and what to do covers the wider picture, and much of it applies to Linux as well as Windows.

Two Adapters at Once

If you added a USB dongle to a laptop that already has built-in Bluetooth, you now have two, and bluetoothctl will quietly pick one — often the wrong one.

bluetoothctl list
# Controller AA:BB:CC:00:11:22 kali [default]
# Controller DD:EE:FF:33:44:55 kali-dongle

bluetoothctl select DD:EE:FF:33:44:55

To stop the built-in one competing altogether, block just that adapter rather than all Bluetooth:

rfkill list                  # find the index number of the built-in one
sudo rfkill block 1          # block that index only

Note it is rfkill block 1 and not rfkill block bluetooth — the second would switch off both, which is exactly the mistake that sends people back to the start of this article.

Kali on a Raspberry Pi

Kali runs well on Raspberry Pi hardware and the Bluetooth situation is different enough to be worth its own note.

The Pi's built-in Bluetooth is Broadcom and shares a serial connection with the console, which is why it sometimes appears absent on a fresh image:

sudo apt install pi-bluetooth bluez firmware-brcm80211
sudo systemctl enable --now bluetooth
sudo systemctl enable --now hciuart

hciuart is the piece people miss. It attaches the Bluetooth chip to the serial port at boot; without it the hardware exists but never initialises, producing exactly the "no default controller" message from earlier.

If you have enabled the serial console for headless access, it and Bluetooth will fight over the same interface. On a Pi you generally get one or the other — pick which you need, or use a USB dongle for Bluetooth and leave the serial console alone.

One Word on Leaving Bluetooth On

Kali ships with Bluetooth disabled on purpose, and it is worth knowing why before you enable it permanently on a machine you take to a campus or a conference.

A discoverable adapter announces itself to everyone in range. Bluetooth has had a steady supply of real vulnerabilities over the years, and a laptop full of security tools is a more interesting target than average.

Two habits that cost nothing:

  • Run scan off and discoverable off when you are done pairing. Connecting to known devices does not require being visible.
  • Turn the service off when you are not using itsudo systemctl stop bluetooth. On a machine you carry into untrusted places, that is reasonable hygiene rather than paranoia.

If you are learning security on the same machine you use for everything else, the wider habits that pair with this are worth building early: a VM you can discard, a password manager so credentials never end up in terminal history, and a backup of your coursework that is not on the machine you are about to break.

Questions You're Probably About to Ask

Why is Bluetooth not working in Kali Linux?

Four common causes: the service is not running (the default on many installs), rfkill is blocking the adapter, firmware is missing because it lives in the non-free-firmware repository, or you are in a virtual machine where the host adapter is not passed through at all.

Does Bluetooth work in Kali Linux inside a virtual machine?

Not by default. VirtualBox and VMware don't pass the host's built-in Bluetooth adapter to the guest, so nothing you configure inside Kali will help. Use a USB Bluetooth dongle with USB passthrough — the guest then sees it as its own hardware.

What does "No default controller available" mean?

The Bluetooth stack is running but can't see any hardware. Either the adapter is absent, the driver hasn't loaded, the firmware file is missing, or rfkill has blocked it. It's a hardware visibility problem, not a pairing one — which is why pairing advice won't fix it.

How do I start the Bluetooth service in Kali Linux?

sudo systemctl start bluetooth to start it now, and sudo systemctl enable bluetooth so it survives a reboot. Many Kali installs ship with it disabled, so this alone fixes a large share of cases.

How do I fix missing Bluetooth firmware in Kali?

sudo apt install firmware-linux firmware-realtek firmware-atheros firmware-iwlwifi, then reboot. If apt says it can't locate the package, your sources.list is missing non-free-firmware — add it and run sudo apt update.

What is rfkill and how do I unblock Bluetooth?

rfkill is the Linux switch for wireless radios. rfkill list shows the state. A soft block clears with sudo rfkill unblock bluetooth. A hard block comes from a physical switch or an Fn key and no command can clear it — you must press the key.

How do I pair a Bluetooth device from the terminal?

Run bluetoothctl, then power on, agent on, default-agent, scan on. When your device appears, run pair, trust and connect with its MAC address. trust is what makes it reconnect automatically next time.

Why does my device pair but not connect?

For audio devices it's usually a missing PulseAudio or PipeWire Bluetooth module, not a Bluetooth fault. Install pulseaudio-module-bluetooth or libspa-0.2-bluetooth and restart the audio service. Pairing and audio routing are handled by different software.

Which is better, bluetoothctl or blueman?

blueman is a graphical front end; bluetoothctl is the terminal interface. Both drive the same BlueZ stack, so use whichever you prefer — but learn the terminal commands, because when something breaks the graphical tool usually just says "failed" with no detail.

Does any of this differ on Debian, Ubuntu or Parrot?

Barely. Same BlueZ stack, same commands, same firmware packages. The main difference is that desktop distributions usually enable the Bluetooth service by default, so step one is already done for you.

How do I find out which Bluetooth chipset I have?

Run lsusb | grep -i -E 'bluetooth|wireless'. The vendor name tells you which firmware package to install — Intel means firmware-iwlwifi, Realtek means firmware-realtek, and so on. The vendor:product ID in that line is also worth searching, because it finds answers specific to your exact hardware.

Bluetooth works, then dies after a few minutes

Almost always USB autosuspend powering down an adapter the kernel thinks is idle. Test with echo -1 | sudo tee /sys/module/usbcore/parameters/autosuspend. If that fixes it, add usbcore.autosuspend=-1 to your GRUB command line to make it permanent — at some cost to battery life.

I have two adapters and it keeps using the wrong one

Use bluetoothctl list to see both, then bluetoothctl select with the MAC address you want. To take the built-in one out of the picture entirely, use rfkill list to find its index and sudo rfkill block <index> — not rfkill block bluetooth, which would disable both.

How do I get Bluetooth working on Kali on a Raspberry Pi?

Install pi-bluetooth bluez firmware-brcm80211, then enable both bluetooth and hciuart. hciuart is the one people miss — it attaches the chip to the serial port at boot, and without it the hardware never initialises. Note that Bluetooth and an enabled serial console compete for the same interface on a Pi.

Is it safe to leave Bluetooth enabled on Kali?

Kali disables it by default for a reason — a discoverable adapter announces itself to everyone in range, and Bluetooth has a long history of real vulnerabilities. Run discoverable off once you have paired, and stop the service when you are not using it on a machine you take into public spaces.

Can I use Bluetooth in Kali on WSL?

No. WSL has no direct hardware access to Bluetooth adapters. If you need Bluetooth, use a real install or a VM with a passed-through USB dongle.

Coming Up Next

Arjun bought a dongle for four hundred rupees and had headphones working in about six minutes. His next problem was Wi-Fi, and specifically the error that makes people think their adapter has died — covered in "Oops, something has gone wrong" and No Wi-Fi adapter found.

Related Guides

Originally published November 2017. Rewritten and re-tested in 2026 on Kali rolling — bare metal, VirtualBox, and with firmware deliberately removed to reproduce the "no default controller" case. Firmware package names vary by chipset, so we've included how to find yours rather than only listing ours. Happy breaking folks!

Related