Bluetooth Not Working in Kali Linux? Fix It Here
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
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:
- Install the Extension Pack — USB 2.0/3.0 passthrough needs it.
- Shut the VM down. Settings → USB → enable the USB controller.
- Click the + icon and add your Bluetooth dongle to the filter list.
- Start the VM. Confirm with
lsusb— the dongle should now be listed.
VMware Workstation / Player:
- Start the VM, then VM → Removable Devices.
- 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 onanddefault-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 |
|---|---|
| Intel | firmware-iwlwifi |
| Realtek | firmware-realtek |
| Qualcomm / Atheros | firmware-atheros |
| Broadcom | firmware-brcm80211 |
| MediaTek | firmware-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 offanddiscoverable offwhen you are done pairing. Connecting to known devices does not require being visible. - Turn the service off when you are not using it —
sudo 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
- Fix the "sub-process /usr/bin/sqv" signature error
If apt fails when you try to install firmware, fix this first. - Recover saved Wi-Fi passwords from the terminal
The companion trick for the other radio in your laptop. - Kali Undercover mode
Make Kali look like Windows in a shared or public space. - Kali Linux 2025.3: what's new and how to upgrade
Newer kernels often bring better hardware support. - Kali download links and checksum verification
Get a current ISO and verify it before installing. - Install oniux: kernel-level Tor isolation
For when the networking side is working properly.
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!