Bluetooth dongle not working on startup

So, i’ve recently bought a new bluetooth adapter (baseus wireless adapter BA04 to be more specific) and i works fine, but, when i restart or turn off and on my pc its stops working and i need to plug and unplug the adapter for it to work again, any ideas on how to fix it?
ah, and i forgot to mention, i had an older bluetooth adapter that worked just fine

here whats lsusb gives:

Bus 001 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

dmesg | grep Blue:

Summary
[    8.214483] Bluetooth: Core ver 2.22
[    8.214503] Bluetooth: HCI device and connection manager initialized
[    8.214508] Bluetooth: HCI socket layer initialized
[    8.214510] Bluetooth: L2CAP socket layer initialized
[    8.214514] Bluetooth: SCO socket layer initialized
[    8.267429] Bluetooth: hci0: CSR: Setting up dongle with HCI ver=10 rev=0089; LMP ver=10 subver=0089; manufacturer=2279
[    8.267433] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[    8.267440] Bluetooth: hci0: CSR: Couldn't suspend the device for our Barrot 8041a02 receive-issue workaround
[    8.267445] Bluetooth: hci0: HCI Delete Stored Link Key command is advertised, but not supported.
[    8.267446] Bluetooth: hci0: HCI Read Default Erroneous Data Reporting command is advertised, but not supported.
[    8.267447] Bluetooth: hci0: HCI Set Event Filter command not supported.
[   11.047206] Bluetooth: hci0: Opcode 0x1005 failed: -110
[   11.047208] Bluetooth: hci0: command 0x1005 tx timeout
[   14.727642] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   14.727646] Bluetooth: BNEP filters: protocol multicast
[   14.727649] Bluetooth: BNEP socket layer initialized

btmon:

Summary
Bluetooth monitor ver 5.70
= Note: Linux version 6.1.63-1-lts (x86_64)                                                                                                                                                                                    0.815362
= Note: Bluetooth subsystem version 2.22                                                                                                                                                                                       0.815365
= New Index: 04:7F:0E:44:21:5E (Primary,USB,hci0)                                                                                                                                                                       [hci0] 0.815368
@ MGMT Open: bluetoothd (privileged) version 1.22                                                                                                                                                                     {0x0001} 0.815370

Hi,

Can you run the following command to share more information about your computer configuration:

inxi -b

I was doing a little searching for the Baseus BA04 Bluetooth USB and was not able to find any compatibility information on the chipset or a firmware update.

Two suggestions:

  1. Do you have any other usb wireless devices … example mouse with a wireless dongle? I wonder if you could plug that in and do a cold boot. The reason I ask is I wonder if power management is suspending the usb ports.

  2. I also noticed you are using the LTS Kernel. What if you use the regular or ZEN Kernel? Just in case the issue is driver related.

inxi -b:

Summary
System:
  Host: php-a320ms2h Kernel: 6.1.63-1-lts arch: x86_64 bits: 64 Desktop: i3
    v: 4.23 Distro: EndeavourOS
Machine:
  Type: Desktop System: Gigabyte product: A320M-S2H v: N/A
    serial: <superuser required>
  Mobo: Gigabyte model: A320M-S2H-CF serial: <superuser required>
    BIOS: American Megatrends LLC. v: F56b date: 02/09/2023
CPU:
  Info: 8-core AMD Ryzen 7 1800X [MT MCP] speed (MHz): avg: 2305
    min/max: 2200/3600
Graphics:
  Device-1: AMD Navi 23 [Radeon RX 6600/6600 XT/6600M] driver: amdgpu
    v: kernel
  Display: x11 server: X.Org v: 21.1.9 driver: X: loaded: amdgpu
    unloaded: modesetting,radeon dri: radeonsi gpu: amdgpu resolution:
    1: 1920x1080~60Hz 2: N/A
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 23.2.1-arch1.2
    renderer: AMD Radeon RX 6600 (navi23 LLVM 16.0.6 DRM 3.49 6.1.63-1-lts)
Network:
  Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
    driver: r8169
Drives:
  Local Storage: total: 2.06 TiB used: 818.53 GiB (38.8%)
Info:
  Processes: 341 Uptime: 2h 41m Memory: total: 16 GiB available: 15.54 GiB
  used: 3.58 GiB (23.1%) Shell: Bash inxi: 3.3.31

1: i tested it with one with a keyboard with a wireless dongle, rebooted the pc and it worked normally

2: same problem with the regular kernel (and the wireless keybard also works on the regular kernel too)

Edit: i acedentally didn’t do a cold reboot, and when i dit in the normal kernel the bluetooth dongle and the wireless keyboard worked normally, no need to connect and reconnect the usb

Thanks for sharing. Since you have a desktop computer it is less likely to be shutting off the USB ports (not like a laptop).

You could use ‘powertop’ to see if something powerwise is going on with the usb port. I’m suggesting this because technically keyboards and mouses can be whitelisted in power manangement.

Example of my Powertop screen:

I’m on a dock right now … so my system is not suspending much.

firts question, i use powertop on the LTS kernel or the normal one?
second question, for what am i looking for with powertop?

i’m looking for the bluetooth dongle in powertop for about 40 minutes and can’t seem to find it, can you help me?

here is the screenshot of it:


So suggesting you look at the autosuspend part of the wiki:

https://wiki.archlinux.org/title/Power_management

I can see in some cases (screen shots) autosuspend is ON for usb devices. But notice your keyboard and mouse are whitelisted?

oh yeah true, i’m gonna look into it, thanks for your help :‌)

ok, i managed to make the bluetooth dongle be active after booting up, but, when i try to connect to my headphones it gives me the error “br-connection-adapter-not-powered”, and it its only fixable by removing and reconnecting the usb

Thanks for the update. So I am reading here:

https://wiki.archlinux.org/title/Bluetooth

  1. Did you disable your built in bluetooth radio in your bios? If yes, what does the full list show when you run “lsusb”?

  2. Can you share the contents of the /etc/bluetooth/main.conf file?

  3. Did you unregister your headphones and then register using the usb dongle?

  1. i didn’t make any changes regarding bluetooth in my bios.
Summary
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 258a:1007 SINOWEALTH Game Mouse
Bus 003 Device 003: ID 0a67:8c01 Medeli Electronics Co., Ltd USB LCS AUDIO
Bus 003 Device 004: ID 258a:0049 BY Tech Gaming Keyboard
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
  1. Yes.
Summary
[General]

# Default adapter name
# Defaults to 'BlueZ X.YZ'
#Name = BlueZ

# Default device class. Only the major and minor device class bits are
# considered. Defaults to '0x000000'.
#Class = 0x000100

# How long to stay in discoverable mode before going back to non-discoverable
# The value is in seconds. Default is 180, i.e. 3 minutes.
# 0 = disable timer, i.e. stay discoverable forever
#DiscoverableTimeout = 0

# Always allow pairing even if there are no agent registered
# Possible values: true, false
# Default: false
#AlwaysPairable = false

# How long to stay in pairable mode before going back to non-discoverable
# The value is in seconds. Default is 0.
# 0 = disable timer, i.e. stay pairable forever
#PairableTimeout = 0

# Use vendor id source (assigner), vendor, product and version information for
# DID profile support. The values are separated by ":" and assigner, VID, PID
# and version.
# Possible vendor id source values: bluetooth, usb (default) or false (disabled)
#DeviceID = bluetooth:1234:5678:abcd

# Do reverse service discovery for previously unknown devices that connect to
# us. For BR/EDR this option is really only needed for qualification since the
# BITE tester doesn't like us doing reverse SDP for some test cases, for LE
# this disables the GATT client functionally so it can be used in system which
# can only operate as peripheral.
# Defaults to 'true'.
#ReverseServiceDiscovery = true

# Enable name resolving after inquiry. Set it to 'false' if you don't need
# remote devices name and want shorter discovery cycle. Defaults to 'true'.
#NameResolving = true

# Enable runtime persistency of debug link keys. Default is false which
# makes debug link keys valid only for the duration of the connection
# that they were created for.
#DebugKeys = false

# Restricts all controllers to the specified transport. Default value
# is "dual", i.e. both BR/EDR and LE enabled (when supported by the HW).
# Possible values: "dual", "bredr", "le"
#ControllerMode = dual

# Maximum number of controllers allowed to be exposed to the system.
# Default=0 (unlimited)
#MaxControllers=0

# Enables Multi Profile Specification support. This allows to specify if
# system supports only Multiple Profiles Single Device (MPSD) configuration
# or both Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple
# Devices (MPMD) configurations.
# Possible values: "off", "single", "multiple"
#MultiProfile = off

# Permanently enables the Fast Connectable setting for adapters that
# support it. When enabled other devices can connect faster to us,
# however the tradeoff is increased power consumptions. This feature
# will fully work only on kernel version 4.1 and newer. Defaults to
# 'false'.
#FastConnectable = false

# Default privacy setting.
# Enables use of private address.
# Possible values for LE mode: "off", "network/on", "device"
# Possible values for Dual mode: "off", "network/on", "device",
# "limited-network", "limited-device"
#
# - off: Local privacy disabled.
#
# - network/on: A device will only accept advertising packets from peer
# devices that contain private addresses. It may not be compatible with some
# legacy devices since it requires the use of RPA(s) all the time.
#
# - device: A device in device privacy mode is only concerned about the
# privacy of the device and will accept advertising packets from peer devices
# that contain their Identity Address as well as ones that contain a private
# address, even if the peer device has distributed its IRK in the past.

# - limited-network: Apply Limited Discoverable Mode to advertising, which
# follows the same policy as to BR/EDR that publishes the identity address when
# discoverable, and Network Privacy Mode for scanning.
#
# - limited-device: Apply Limited Discoverable Mode to advertising, which
# follows the same policy as to BR/EDR that publishes the identity address when
# discoverable, and Device Privacy Mode for scanning.
#
# Defaults to "off"
#Privacy = off

# Specify the policy to the JUST-WORKS repairing initiated by peer
# Possible values: "never", "confirm", "always"
# Defaults to "never"
#JustWorksRepairing = never

# How long to keep temporary devices around
# The value is in seconds. Default is 30.
# 0 = disable timer, i.e. never keep temporary devices
#TemporaryTimeout = 30

# Enables the device to issue an SDP request to update known services when
# profile is connected. Defaults to true.
#RefreshDiscovery = true

# Default Secure Connections setting.
# Enables the Secure Connections setting for adapters that support it. It
# provides better crypto algorithms for BT links and also enables CTKD (cross
# transport key derivation) during pairing on any link.
# Possible values: "off", "on", "only"
# - "off": Secure Connections are disabled
# - "on": Secure Connections are enabled when peer device supports them
# - "only": we allow only Secure Connections
# Defaults to "on"
#SecureConnections = on

# Enables D-Bus experimental interfaces
# Possible values: true or false
#Experimental = false

# Enables kernel experimental features, alternatively a list of UUIDs
# can be given.
# Possible values: true,false,<UUID List>
# Possible UUIDS:
# d4992530-b9ec-469f-ab01-6c481c47da1c (BlueZ Experimental Debug)
# 671b10b5-42c0-4696-9227-eb28d1b049d6 (BlueZ Experimental Simultaneous Central and Peripheral)
# 15c0a148-c273-11ea-b3de-0242ac130004 (BlueZ Experimental LL privacy)
# 330859bc-7506-492d-9370-9a6f0614037f (BlueZ Experimental Bluetooth Quality Report)
# a6695ace-ee7f-4fb9-881a-5fac66c629af (BlueZ Experimental Offload Codecs)
# 6fbaf188-05e0-496a-9885-d6ddfdb4e03e (BlueZ Experimental ISO socket)
# Defaults to false.
#KernelExperimental = false

# The duration to avoid retrying to resolve a peer's name, if the previous
# try failed.
# The value is in seconds. Default is 300, i.e. 5 minutes.
#RemoteNameRequestRetryDelay = 300

[BR]
# The following values are used to load default adapter parameters for BR/EDR.
# BlueZ loads the values into the kernel before the adapter is powered if the
# kernel supports the MGMT_LOAD_DEFAULT_PARAMETERS command. If a value isn't
# provided, the kernel will be initialized to it's default value.  The actual
# value will vary based on the kernel version and thus aren't provided here.
# The Bluetooth Core Specification should be consulted for the meaning and valid
# domain of each of these values.

# BR/EDR Page scan activity configuration
#PageScanType=
#PageScanInterval=
#PageScanWindow=

# BR/EDR Inquiry scan activity configuration
#InquiryScanType=
#InquiryScanInterval=
#InquiryScanWindow=

# BR/EDR Link supervision timeout
#LinkSupervisionTimeout=

# BR/EDR Page Timeout
#PageTimeout=

# BR/EDR Sniff Intervals
#MinSniffInterval=
#MaxSniffInterval=

[LE]
# The following values are used to load default adapter parameters for LE.
# BlueZ loads the values into the kernel before the adapter is powered if the
# kernel supports the MGMT_LOAD_DEFAULT_PARAMETERS command. If a value isn't
# provided, the kernel will be initialized to it's default value.  The actual
# value will vary based on the kernel version and thus aren't provided here.
# The Bluetooth Core Specification should be consulted for the meaning and valid
# domain of each of these values.
# LE advertisement interval (used for legacy advertisement interface only)
#MinAdvertisementInterval=
#MaxAdvertisementInterval=
#MultiAdvertisementRotationInterval=

# LE scanning parameters used for passive scanning supporting auto connect
# scenarios
#ScanIntervalAutoConnect=
#ScanWindowAutoConnect=

# LE scanning parameters used for passive scanning supporting wake from suspend
# scenarios
#ScanIntervalSuspend=
#ScanWindowSuspend=

# LE scanning parameters used for active scanning supporting discovery
# proceedure
#ScanIntervalDiscovery=
#ScanWindowDiscovery=

# LE scanning parameters used for passive scanning supporting the advertisement
# monitor Apis
#ScanIntervalAdvMonitor=
#ScanWindowAdvMonitor=

# LE scanning parameters used for connection establishment.
#ScanIntervalConnect=
#ScanWindowConnect=

# LE default connection parameters.  These values are superceeded by any
# specific values provided via the Load Connection Parameters interface
#MinConnectionInterval=
#MaxConnectionInterval=
#ConnectionLatency=
#ConnectionSupervisionTimeout=
#Autoconnecttimeout=

# Scan duration during interleaving scan. Only used when scanning for ADV
# monitors. The units are msec.
# Default: 300
#AdvMonAllowlistScanDuration=
# Default: 500
#AdvMonNoFilterScanDuration=

# Enable/Disable Advertisement Monitor interleave scan for power saving.
# 0: disable
# 1: enable
# Defaults to 1
#EnableAdvMonInterleaveScan=

[GATT]
# GATT attribute cache.
# Possible values:
# always: Always cache attributes even for devices not paired, this is
# recommended as it is best for interoperability, with more consistent
# reconnection times and enables proper tracking of notifications for all
# devices.
# yes: Only cache attributes of paired devices.
# no: Never cache attributes
# Default: always
#Cache = always

# Minimum required Encryption Key Size for accessing secured characteristics.
# Possible values: 0 and 7-16. 0 means don't care.
# Defaults to 0
#KeySize = 0

# Exchange MTU size.
# Possible values: 23-517
# Defaults to 517
#ExchangeMTU = 517

# Number of ATT channels
# Possible values: 1-5 (1 disables EATT)
# Default to 1
#Channels = 1

[CSIS]
# SIRK - Set Identification Resolution Key which is common for all the
# sets. They SIRK key is used to identify its sets. This can be any
# 128 bit value or a string value (e.g. product name) which is then hashed.
# Possible Values:
# 16 byte hexadecimal value: 861FAE703ED681F0C50B34155B6434FB
# String value: "My Product Name"
# Defaults to none
#SIRK =

# SIRK Encryption
# Possible values:
# true: Encrypt SIRK when read
# false: Do not encrypt SIRK when read. (plaintext)
# Defaults to true
#Encryption = true

# Total no of sets belongs to this Profile
# Defaults to 0
#Size = 0

# Rank for the device
# Defaults to 0
#Rank = 0

[AVDTP]
# AVDTP L2CAP Signalling Channel Mode.
# Possible values:
# basic: Use L2CAP Basic Mode
# ertm: Use L2CAP Enhanced Retransmission Mode
#SessionMode = basic

# AVDTP L2CAP Transport Channel Mode.
# Possible values:
# basic: Use L2CAP Basic Mode
# streaming: Use L2CAP Streaming Mode
#StreamMode = basic

[Policy]
#
# The ReconnectUUIDs defines the set of remote services that should try
# to be reconnected to in case of a link loss (link supervision
# timeout). The policy plugin should contain a sane set of values by
# default, but this list can be overridden here. By setting the list to
# empty the reconnection feature gets disabled.
#ReconnectUUIDs=00001112-0000-1000-8000-00805f9b34fb,0000111f-0000-1000-8000-00805f9b34fb,0000110a-0000-1000-8000-00805f9b34fb,0000110b-0000-1000-8000-00805f9b34fb

# ReconnectAttempts define the number of attempts to reconnect after a link
# lost. Setting the value to 0 disables reconnecting feature.
#ReconnectAttempts=7

# ReconnectIntervals define the set of intervals in seconds to use in between
# attempts.
# If the number of attempts defined in ReconnectAttempts is bigger than the
# set of intervals the last interval is repeated until the last attempt.
#ReconnectIntervals=1,2,4,8,16,32,64

# AutoEnable defines option to enable all controllers when they are found.
# This includes adapters present on start as well as adapters that are plugged
# in later on. Defaults to 'true'.
#AutoEnable=true

# Audio devices that were disconnected due to suspend will be reconnected on
# resume. ResumeDelay determines the delay between when the controller
# resumes from suspend and a connection attempt is made. A longer delay is
# better for better co-existence with Wi-Fi.
# The value is in seconds.
# Default: 2
#ResumeDelay = 2

[AdvMon]
# Default RSSI Sampling Period. This is used when a client registers an
# advertisement monitor and leaves the RSSISamplingPeriod unset.
# Possible values:
# 0x00       Report all advertisements
# N = 0xXX   Report advertisements every N x 100 msec (range: 0x01 to 0xFE)
# 0xFF       Report only one advertisement per device during monitoring period
# Default: 0xFF
#RSSISamplingPeriod=0xFF
  1. yep, tried to unregister them and rebooting but when do “bluetoothctl scan on” it gives me “Failed to start discovery: org.bluez.Error.NotReady” and tried to unresgister and register again on the same boot and them reboot, same problem.

And i wold like to add that the dongle only works after a cold boot (meaning that i have to wait a little bit to start my computer), if i to a normal reboot or i turn my pc off and on again fairly quick it doesn’t wok. i don’t know if it is a problem with my earlier steps or something else, but that’s was the only way i manage to make it work,

So i’ve think i tacked down the problem, looking into the Bluetooth article on the arch wiki i fund this bug with my bluetooth dongle https://bugzilla.kernel.org/show_bug.cgi?id=60824 that it’s only solution for now is to downgrade my kernel to 5.17, but i’m scared of doing that because i could potentially break my system. For now i will just resort to using the normal linux kernel until it’s patch on the LTS kernel.

Thanks for all the help i have gave me, and if you find any solution for this problem if you could please share it with me i wold be very thankful :‌)

udo dmesg | grep Bluetooth
[sudo] password for cunny:
Sorry, try again.
[sudo] password for cunny:
[ 74.410078] Bluetooth: Core ver 2.22
[ 74.410722] Bluetooth: HCI device and connection manager initialized
[ 74.410728] Bluetooth: HCI socket layer initialized
[ 74.410731] Bluetooth: L2CAP socket layer initialized
[ 74.410739] Bluetooth: SCO socket layer initialized
[ 74.541535] Bluetooth: hci0: CSR: Setting up dongle with HCI ver=10 rev=0089
[ 74.541550] Bluetooth: hci0: LMP ver=10 subver=0089; manufacturer=2279
[ 74.541553] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once…
[ 74.541557] Bluetooth: hci0: CSR: Couldn’t suspend the device for our Barrot 8041a02 receive-issue workaround
[ 74.541566] Bluetooth: hci0: HCI Delete Stored Link Key command is advertised, but not supported.
[ 74.541568] Bluetooth: hci0: HCI Read Default Erroneous Data Reporting command is advertised, but not supported.
[ 74.541570] Bluetooth: hci0: HCI Set Event Filter command not supported.
[ 77.023041] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 77.023046] Bluetooth: BNEP filters: protocol multicast
[ 77.023050] Bluetooth: BNEP socket layer initialized
[ 77.024020] Bluetooth: MGMT ver 1.22
[ 106.710121] Bluetooth: RFCOMM TTY layer initialized
[ 106.710132] Bluetooth: RFCOMM socket layer initialized
[ 106.710138] Bluetooth: RFCOMM ver 1.11
[ 5836.908814] Bluetooth: hci0: CSR: Setting up dongle with HCI ver=9 rev=0001
[ 5836.908821] Bluetooth: hci0: LMP ver=9 subver=0001; manufacturer=2279
[ 5836.908823] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once…
[ 5836.908828] Bluetooth: hci0: CSR: Couldn’t suspend the device for our Barrot 8041a02 receive-issue workaround
[ 5836.908836] Bluetooth: hci0: HCI Delete Stored Link Key command is advertised, but not supported.
[ 5836.908839] Bluetooth: hci0: HCI Read Default Erroneous Data Reporting command is advertised, but not supported.
[ 5836.908840] Bluetooth: hci0: HCI Set Event Filter command not supported.
[ 5837.704900] Bluetooth: MGMT ver 1.22

mine wont work