Score:2

Bluetooth dongle with Realtek RTL8821CU chipset works, but not on Ubuntu

ca flag

My system recognizes my dongle as supporting Bluetooth, but I cannot actually use the thing in any of the Bluetooth control interfaces (bluetoothctl, btmgmt, the graphical Bluetooth settings, etc.).

I tested the device on a Windows machine, and it worked there but not when I put it back into my Ubuntu machine.

Among the error messages and conditions I get:

$ sudo btmgmt
# power on
Set Powered for hci0 failed with status 0x03 (Failed)
$ sudo bluetoothctl
# list
[no output]
# show
No default controller available

The dongle supports both Bluetooth and Wi-Fi, and the company says they are supposed to work simultaneously. The Wi-Fi on the dongle works on Ubuntu.

System information

$ uname --all
Linux odroid 4.9.337-31 […] aarch64 GNU/Linux

$ cat /etc/issue
Ubuntu 22.04.1 LTS \n \l

$ bluetoothctl --version
5.64

$ lsusb
[other devices]
Bus 001 Device 004: ID 0bda:c820 Realtek Semiconductor Corp. 802.11ac NIC
[other devices]

$ hciconfig -a
hci0:   Type: Primary  Bus: USB
    BD Address: 00:00:00:00:00:00  ACL MTU: 0:0  SCO MTU: 0:0
    DOWN 
    RX bytes:917 acl:0 sco:0 events:130 errors:0
    TX bytes:33030 acl:0 sco:0 commands:131 errors:0
    Features: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    Packet type: DM1 DH1 HV1 
    Link policy: 
    Link mode: PERIPHERAL ACCEPT

$ rfkill list
0: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
1: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no

$ lsmod
Module                  Size  Used by
[other modules]
btusb                  45056  0
btrtl                  16384  1 btusb
btbcm                  16384  1 btusb
btintel                24576  1 btusb
8821cu               2256896  0
bluetooth             479232  8 btrtl,btintel,bnep,btbcm,btusb
[other modules]

I also have the result of lsusb -v in case it helps.

Logs

When I run btmon and start bluetoothd manually, this is what I get from btmon (abridged):

= New Index: 00:00:00:00:00:00 (Primary,USB,hci0)
= bluetoothd: Bluetooth daemon 5.64
@ MGMT Open: bluetoothd (privileged) version 1.14
= bluetoothd: Starting SDP server
@ MGMT Command: Read Management Version Information (0x0001) plen 0
@ MGMT Event: Command Complete (0x0001) plen 6
      Read Management Version Information (0x0001) plen 3
        Status: Success (0x00)
        Version: 1.14

[a few other successful commands and events]

@ MGMT Command: Remove Advertisement Monitor (0x0053) plen 2
        Handle: 0
@ MGMT Event: Command Status (0x0002) plen 3
      Remove Advertisement Monitor (0x0053)
        Status: Unknown Command (0x01)
= bluetoothd: src/adapter.c:reset_adv_monitors_complete() Failed to reset Adv Monitors: Unknown Command (0x01)

Those last two lines get printed in red. Also note the mac address on the first line. The monitor continues:

@ MGMT Command: Read Controller Information (0x0004) plen 0
@ MGMT Event: Command Complete (0x0001) plen 283
      Read Controller Information (0x0004) plen 280
        Status: Success (0x00)
        Address: 00:00:00:00:00:00 (OUI 00-00-00)
        Version: Bluetooth 4.2 (0x08)
        Manufacturer: Realtek Semiconductor Corporation (93)
        Supported settings: 0x000010bf
          Powered
          Connectable
          Fast Connectable
          Discoverable
          Bondable
          Link Security
          BR/EDR
          Debug Keys
        Current settings: 0x00000080
          BR/EDR
        Class: 0x000000
          Major class: Miscellaneous
          Minor class: 0x00
        Name: 
        Short name: 
= bluetoothd: No Bluetooth address for index 0

That last line also gets printed in red.

I also have the output from bluetoothd -n -d.

If I try to run sudo hciconfig hci0 up, I get this:

Can't init device hci0: Cannot assign requested address (99)

Let me know if I am missing any pertinent logs or system information.


Edits

$ cat etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS"

I know that the problem is not with the Bluetooth devices to which I am trying to connect because:

  1. I can't even initiate a bluetoothctl session controlling the dongle, and
  2. When I plug the dongle into a Windows machine, it works and connects to the devices in question.

I asked AmeriDroid, the product distributor, for help. The extent of the help they provided was telling me the device should work and deferred to a relevant post on the ODROID forum.

That forum post does not include any tips that have yielded results for me, and I have posted there as well asking for help.

Hardkernel, the product manufacturer, does not provide technical services, according to their contact page, and links to the same forum AmeriDroid gave me.

Jeremy31 avatar
ke flag
What result for `cat /etc/lsb-release`
in flag
It looks like you're using HardKernel's ODROID kernel on their hardware, with their dongle, did you ask them how to get it working?
I sit in a Tesla and translated this thread with Ai:

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.