You are not logged in.
Hi!
I can't get bluetooth to work on my recently purchased ThinkPad T420. Bluetooth is enabled in BIOS and I opened up the laptop and checked that the bluetooth daughter is really installed.
$ sudo systemctl status bluetooth
○ bluetooth.service - Bluetooth service
Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:bluetoothd(8)
Aug 09 12:15:09 thinkpad systemd[1]: Condition check resulted in Bluetooth service being skipped.The ArchWiki advises to check if /sys/class/bluetooth directory exists. It doesn't.
$ ls /sys/class/bluetooth
ls: cannot access '/sys/class/bluetooth': No such file or directoryThis also doesn't return anything:
$ lsmod | grep -i bluetoothOnly after modprobe:
$ sudo modprobe btusb
$ lsmod | grep -i bluetooth 3s
bluetooth 733184 4 btrtl,btintel,btbcm,btusb
ecdh_generic 16384 1 bluetooth
rfkill 32768 5 bluetooth,thinkpad_acpi,cfg80211
crc16 16384 2 bluetooth,ext4
$ sudo systemctl restart bluetooth
$ sudo systemctl status bluetooth
● bluetooth.service - Bluetooth service
Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2021-08-09 18:21:11 CEST; 1s ago
Docs: man:bluetoothd(8)
Main PID: 2701 (bluetoothd)
Status: "Running"
Tasks: 1 (limit: 14186)
Memory: 1.9M
CPU: 14ms
CGroup: /system.slice/bluetooth.service
└─2701 /usr/lib/bluetooth/bluetoothd
Aug 09 18:21:11 thinkpad systemd[1]: Starting Bluetooth service...
Aug 09 18:21:11 thinkpad bluetoothd[2701]: Bluetooth daemon 5.60
Aug 09 18:21:11 thinkpad systemd[1]: Started Bluetooth service.
Aug 09 18:21:11 thinkpad bluetoothd[2701]: Starting SDP server
Aug 09 18:21:11 thinkpad bluetoothd[2701]: Bluetooth management interface 1.20 initializedNow bluetooth seems to be running, however, then this happens:
$ bluetoothctl
Agent registered
[bluetooth]# power on
No default controller available
[bluetooth]# scan on
No default controller availableThe ArchWiki suggests that it may be blocked by rfkill, but it doesn't seems so:
$ rfkill list
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: noI have also tried installing bluez-utils-compat in lieu of bluez-utils, but that doesn't help either. Adding btusb.enable_autosuspend=n as a kernel parameter also doesn't make any difference.
This is the output after stopping bluetooth.service and when run manually:
$ sudo /usr/lib/bluetooth/bluetoothd -n -d
bluetoothd[3527]: Bluetooth daemon 5.60
bluetoothd[3527]: src/main.c:parse_config() parsing /etc/bluetooth/main.conf
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “DiscoverableTimeout” in group “General”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “AlwaysPairable” in group “General”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “PairableTimeout” in group “General”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “Privacy” in group “General”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “JustWorksRepairing” in group “General”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “TemporaryTimeout” in group “General”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “Name” in group “General”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “Class” in group “General”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “DeviceID” in group “General”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “ReverseServiceDiscovery” in group “General”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “Cache” in group “GATT”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “KeySize” in group “GATT”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “ExchangeMTU” in group “GATT”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “Channels” in group “GATT”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “SessionMode” in group “AVDTP”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “StreamMode” in group “AVDTP”
bluetoothd[3527]: src/main.c:parse_config() Key file does not have key “RSSISamplingPeriod” in group “AdvMon”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “PageScanType” in group “BR”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “PageScanInterval” in group “BR”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “PageScanWindow” in group “BR”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “InquiryScanType” in group “BR”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “InquiryScanInterval” in group “BR”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “InquiryScanWindow” in group “BR”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “LinkSupervisionTimeout” in group “BR”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “PageTimeout” in group “BR”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “MinSniffInterval” in group “BR”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “MaxSniffInterval” in group “BR”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “MinAdvertisementInterval” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “MaxAdvertisementInterval” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “MultiAdvertisementRotationInterval” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “ScanIntervalAutoConnect” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “ScanWindowAutoConnect” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “ScanIntervalSuspend” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “ScanWindowSuspend” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “ScanIntervalDiscovery” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “ScanWindowDiscovery” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “ScanIntervalAdvMonitor” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “ScanWindowAdvMonitor” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “ScanIntervalConnect” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “ScanWindowConnect” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “MinConnectionInterval” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “MaxConnectionInterval” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “ConnectionLatency” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “ConnectionSupervisionTimeout” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “Autoconnecttimeout” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “AdvMonAllowlistScanDuration” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “AdvMonNoFilterScanDuration” in group “LE”
bluetoothd[3527]: src/main.c:parse_mode_config() Key file does not have key “EnableAdvMonInterleaveScan” in group “LE”
bluetoothd[3527]: src/adapter.c:adapter_init() sending read version command
bluetoothd[3527]: Starting SDP server
bluetoothd[3527]: src/sdpd-service.c:register_device_id() Adding device id record for 0002:1d6b:0246:053c
bluetoothd[3527]: src/plugin.c:plugin_init() Loading builtin plugins
bluetoothd[3527]: src/plugin.c:add_plugin() Loading hostname plugin
bluetoothd[3527]: src/plugin.c:add_plugin() Loading wiimote plugin
bluetoothd[3527]: src/plugin.c:add_plugin() Loading autopair plugin
bluetoothd[3527]: src/plugin.c:add_plugin() Loading policy plugin
bluetoothd[3527]: src/plugin.c:add_plugin() Loading a2dp plugin
bluetoothd[3527]: src/plugin.c:add_plugin() Loading avrcp plugin
bluetoothd[3527]: src/plugin.c:add_plugin() Loading network plugin
bluetoothd[3527]: src/plugin.c:add_plugin() Loading input plugin
bluetoothd[3527]: src/plugin.c:add_plugin() Loading hog plugin
bluetoothd[3527]: src/plugin.c:add_plugin() Loading gap plugin
bluetoothd[3527]: src/plugin.c:add_plugin() Loading scanparam plugin
bluetoothd[3527]: src/plugin.c:add_plugin() Loading deviceinfo plugin
bluetoothd[3527]: src/plugin.c:add_plugin() Loading midi plugin
bluetoothd[3527]: src/plugin.c:add_plugin() Loading battery plugin
bluetoothd[3527]: src/plugin.c:plugin_init() Loading plugins /usr/lib/bluetooth/plugins
bluetoothd[3527]: profiles/input/suspend-none.c:suspend_init()
bluetoothd[3527]: profiles/network/manager.c:read_config() Config options: Security=true
bluetoothd[3527]: plugins/hostname.c:read_dmi_fallback() chassis: laptop
bluetoothd[3527]: plugins/hostname.c:read_dmi_fallback() major: 0x01 minor: 0x03
bluetoothd[3527]: src/main.c:main() Entering main loop
bluetoothd[3527]: src/rfkill.c:rfkill_event() RFKILL event idx 0 type 1 op 0 soft 0 hard 0
bluetoothd[3527]: Bluetooth management interface 1.20 initialized
bluetoothd[3527]: src/adapter.c:read_version_complete() sending read supported commands command
bluetoothd[3527]: src/adapter.c:read_version_complete() sending read index list command
bluetoothd[3527]: src/adapter.c:read_commands_complete() Number of commands: 84
bluetoothd[3527]: src/adapter.c:read_commands_complete() Number of events: 42
bluetoothd[3527]: src/adapter.c:read_commands_complete() enabling kernel-side connection control
bluetoothd[3527]: src/adapter.c:read_commands_complete() kernel supports the set_blocked_keys op
bluetoothd[3527]: src/adapter.c:read_commands_complete() kernel supports controller cap command
bluetoothd[3527]: src/adapter.c:read_commands_complete() kernel supports exp features
bluetoothd[3527]: src/adapter.c:read_commands_complete() kernel supports set system confic
bluetoothd[3527]: src/adapter.c:read_commands_complete() kernel supports ext adv commands
bluetoothd[3527]: src/adapter.c:read_commands_complete() kernel supports suspend/resume events
bluetoothd[3527]: src/adapter.c:read_index_list_complete() Number of controllers: 0
bluetoothd[3527]: src/profile.c:register_profile() sender :1.19
bluetoothd[3527]: src/profile.c:create_ext() Created "Headset unit"
bluetoothd[3527]: src/profile.c:register_profile() sender :1.19
bluetoothd[3527]: src/profile.c:create_ext() Created "Hands-Free Voice gateway"
bluetoothd[3527]: plugins/hostname.c:property_changed() static hostname: thinkpad
bluetoothd[3527]: plugins/hostname.c:property_changed() pretty hostname:
bluetoothd[3527]: plugins/hostname.c:property_changed() chassis: laptopI am a little confused what "Key file does not have key..." means and if that has an effect on my broken bluetooth.
Could you please help? I have no idea what's going on. Thanks!
Last edited by goldmund (2021-08-14 12:03:22)
Offline
I haven't got a T420 but an L430 with Broadcom bluetooth hardware. On those devices you typically need to install a firmware file to make the bluetooth module work. Have a look at https://github.com/winterheart/broadcom-bt-firmware and the instructions shown there. Typically it's as simple as copying the right file to the right location. As far as I remember, the file can always be extracted from the Windows drivers provided by Lenovo.
If you need further help, please post the output of
sudo dmesg | grep -i bluetoothOffline
I have installed the firmware you linked (from the AUR), but it hasn't changed anything unfortunately.
This is the dmesg:
$ sudo dmesg | grep -i bluetooth
[ 300.327710] Bluetooth: Core ver 2.22
[ 300.327753] Bluetooth: HCI device and connection manager initialized
[ 300.327757] Bluetooth: HCI socket layer initialized
[ 300.327758] Bluetooth: L2CAP socket layer initialized
[ 300.327761] Bluetooth: SCO socket layer initialized
[ 311.583470] audit: type=1130 audit(1628544016.602:101): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=bluetooth comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[ 311.591695] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 311.591699] Bluetooth: BNEP filters: protocol multicast
[ 311.591703] Bluetooth: BNEP socket layer initializedI have checked the Lenovo support page with the driver downloads, but it's all .exe programs as you say. How would you extract the drivers from it? I didn't know that it could be possible.
Offline
OK, that probably means the required firmware is in place. I would have expected something like "Direct firmware load for ... failed with error -2" otherwise. I just looked at the output on my L430 and it is pretty similar. Sorry, I can't really help here.
I don't remember how exactly the firmware can be extracted from the exe files but I wouldn't worry about that as missing firmware does not seem to be your issue.
Offline
A sequel to my bluetooth troubles:
I ordered a new bluetooth daughter and it arrived today. I swapped them and nothing has changed. So it's not a malfunctioning bluetooth daughter.
I also ordered a cheap bluetooth dongle. No success either, but I've got some new errors (some errors better than no errors?)
$ sudo journalctl -p 3 -xb
-- Journal begins at Fri 2021-08-06 19:57:16 CEST, ends at Wed 2021-08-11 17:06:51 CEST. --
Aug 11 17:02:06 thinkpad kernel: x86/cpu: VMX (outside TXT) disabled by BIOS
Aug 11 17:02:10 thinkpad kernel: Bluetooth: hci0: command 0x0c01 tx timeout
Aug 11 17:02:12 thinkpad kernel: Bluetooth: hci0: command 0x080f tx timeout
Aug 11 17:02:14 thinkpad kernel: Bluetooth: hci0: command 0x0c1b tx timeout
Aug 11 17:02:16 thinkpad kernel: Bluetooth: hci0: command 0x0c46 tx timeout
Aug 11 17:02:18 thinkpad kernel: Bluetooth: hci0: command 0x0c63 tx timeout
Aug 11 17:02:21 thinkpad kernel: Bluetooth: hci0: command 0x100b tx timeout
Aug 11 17:02:23 thinkpad kernel: Bluetooth: hci0: command 0x0c77 tx timeout
Aug 11 17:02:25 thinkpad kernel: Bluetooth: hci0: command 0x2024 tx timeout
Aug 11 17:02:27 thinkpad kernel: Bluetooth: hci0: command tx timeout$ sudo dmesg | grep -i bluetooth
[ 17.242842] Bluetooth: Core ver 2.22
[ 17.242882] Bluetooth: HCI device and connection manager initialized
[ 17.242888] Bluetooth: HCI socket layer initialized
[ 17.242892] Bluetooth: L2CAP socket layer initialized
[ 17.242900] Bluetooth: SCO socket layer initialized
[ 17.523608] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds...
[ 20.240258] Bluetooth: hci0: command 0x0c01 tx timeout
[ 22.127224] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 22.127228] Bluetooth: BNEP filters: protocol multicast
[ 22.127233] Bluetooth: BNEP socket layer initialized
[ 22.373578] Bluetooth: hci0: command 0x080f tx timeout
[ 24.507039] Bluetooth: hci0: command 0x0c1b tx timeout
[ 26.640344] Bluetooth: hci0: command 0x0c46 tx timeout
[ 28.773694] Bluetooth: hci0: command 0x0c63 tx timeout
[ 30.907021] Bluetooth: hci0: command 0x100b tx timeout
[ 33.040266] Bluetooth: hci0: command 0x0c77 tx timeout
[ 35.175184] Bluetooth: hci0: command 0x2024 tx timeout
[ 37.310247] Bluetooth: hci0: command tx timeout$ lsusb | grep -i bluetooth
Bus 002 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)I also remembered that my laptop was shipped with a small drive with Windows 10. I popped that in and the bluetooth also didn't work. The bluetooth daughter couldn't see any devices, Windows didn't recognize it at all. The dongle, however, could see my bluetooth mouse, but couldn't connect to it. It's a mystery...
If this cannot be fixed with software, would someone recommend replacing any hardware? I have to admit that I am not so familiar with all those various modules.
My wife is telling me that it's a good thing that my bluetooth isn't working, that it's "better for my health". Not sure about that... :-)
Last edited by goldmund (2021-08-11 15:23:27)
Offline
The only things that come to my mind right now:
* Is the physical wireless switch on the right side of the T420 turned on? (see https://forums.lenovo.com/t5/ThinkPad-T … m-p/700825 )
* Are there any BIOS settings reg. Bluetooth deactivated? There could be something like under "Security - I/O Port Access" and/or "Config - Network".
* Does pressing Fn + F5 change anything? Maybe on Windows?
Offline
Is the physical wireless switch on the right side of the T420 turned on?
Yes, the switch is on and WiFi is running flawlessly.
Are there any BIOS settings reg. Bluetooth deactivated? There could be something like under "Security - I/O Port Access" and/or "Config - Network".
All BIOS settings (including bluetooth) are enabled.
Does pressing Fn + F5 change anything? Maybe on Windows?
I've just tested it. It switches off/on the WiFi and bluetooth remains inactive.
Any idea what hardware could be replaced? Apart from the bluetooth daughter which has been replaced already?
Offline
I'm hesitant to call it a hardware issue yet. Especially since you already replaced the bluetooth module. Is it listed when you run `lscpi`?
Offline
I'm hesitant to call it a hardware issue yet. Especially since you already replaced the bluetooth module. Is it listed when you run `lscpi`?
No, the bluetooth daughter is not listed under 'lspci'. Not even the bluetooth dongle.
Offline
The external dongle is listed correctly under lsusb. Sorry, I expected the internal bluetooth module to be some kind of PCI device but it is not. I checked on my L430: The device shows up under lsusb (not lspci!) but only after it has been activated.
Can you check if you have the thinkpad_acpi module loaded? That one seems to be responsible for activating/deactivating the bluetooth hardware on my device. If not, try to load it manually. What does "dmesg|grep thinkpad" give you?
If none of that helps: there seems to be a fuse on the main board responsible for the BT module that was tripped for at least two people in a German forum: https://thinkpad-forum.de/threads/19388 … ost1957993
I think Google Translate does a pretty good job at translating that thread: https://translate.google.com/translate? … ost1957993
If that defect is the case, getting the external dongle to work would probably be the best option (unless you have some experience with SMD soldering).
Offline
Thanks for your extensive research, Bevan! Much appreciated. Unfortunately, I have neither the equipment nor the experience for SMD soldering, but thanks for the link nonetheless! It's reassuring to hear that I am not alone and the faulty fuse is quite plausible...
Yes, thinkpad_acpi seems to be loaded:
$ sudo dmesg | grep -i thinkpad
[ 76.750801] systemd[1]: Hostname set to <thinkpad>.
[ 77.362294] thinkpad_acpi: ThinkPad ACPI Extras v0.26
[ 77.362298] thinkpad_acpi: http://ibm-acpi.sf.net/
[ 77.362299] thinkpad_acpi: ThinkPad BIOS 83ET82WW (1.52 ), EC unknown
[ 77.362301] thinkpad_acpi: Lenovo ThinkPad T420, model 4236N4G
[ 77.372068] thinkpad_acpi: radio switch found; radios are enabled
[ 77.372233] thinkpad_acpi: This ThinkPad has standard ACPI backlight brightness control, supported by the ACPI video driver
[ 77.372234] thinkpad_acpi: Disabling thinkpad-acpi brightness events by default...
[ 77.376625] thinkpad_acpi: Standard ACPI backlight interface available, not loading native one
[ 77.399444] thinkpad_acpi: battery 1 registered (start 0, stop 100)
[ 77.399458] ACPI: battery: new extension: ThinkPad Battery Extension
[ 77.399534] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input21
[ 88.668227] audit: type=1100 audit(1628696289.802:59): pid=704 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication grantors=pam_securetty,pam_shells,pam_faillock,pam_permit,pam_faillock acct="user" exe="/usr/bin/login" hostname=thinkpad addr=? terminal=/dev/tty1 res=success'
[ 88.680110] audit: type=1101 audit(1628696289.812:60): pid=704 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:accounting grantors=pam_access,pam_unix,pam_permit,pam_time acct="user" exe="/usr/bin/login" hostname=thinkpad addr=? terminal=/dev/tty1 res=success'
[ 88.683411] audit: type=1103 audit(1628696289.815:61): pid=704 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:setcred grantors=pam_securetty,pam_shells,pam_faillock,pam_permit,pam_faillock acct="user" exe="/usr/bin/login" hostname=thinkpad addr=? terminal=/dev/tty1 res=success'If that defect is the case, getting the external dongle to work would probably be the best option
Yes, I think so too. Since I am using a docking station most of the time, I have no lack of usb ports anyway...
Have you by any chance any idea how to make the bluetooth dongle work?
Last edited by goldmund (2021-08-11 20:07:02)
Offline
There seem to be a couple of people struggling with that particular device type:
Offline
Thanks, Bevan! I'll look into that and if it's not working, I'll try and get another dongle.
Offline
I didn't manage to get this bluetooth dongle working, so I bought a different one, which works just out of the box (Asus USB-BT400).
Thanks, Bevan! Although the bluetooth daughter still doesn't work (probably due to a hardware failure), I am marking this thread as solved.
Offline