rtl8821cu WiFi 蓝牙 USB 0bda:c820

rtl8821cu WiFi 蓝牙 USB 0bda:c820

我对 Linux 还不熟悉,这是我第一次真正安装驱动程序。Ubuntu 一直是一台服务器,从未真正将其用作桌面。我正在构建一个 openHAB 服务器,因此需要 wifi 和蓝牙。我没有多想,就订购了这款“Blueshadow USB WiFi 蓝牙 4.2 适配器 600Mbps - 双频无线网络外置接收器,适用于 PC/笔记本电脑/台式机的迷你 WiFi 加密狗,适用于所有 Windows 10 8.1 8 7 XP Vista (600M)”

https://www.amazon.com/gp/product/B08GSBG17K/ref=ppx_yo_dt_b_asin_title_o05_s00?ie=UTF8&psc=1

Ubuntu 18.04

uname -r
4.15.0-128-generic

lsusb
Bus 002 Device 003: ID 0bda:c820 Realtek Semiconductor Corp. 

https://github.com/andydvsn/rtl8821cu_wlan- 已安装 - 无线工作正常。

https://github.com/andydvsn/rtl8821cu_bt- 我无法安装蓝牙驱动程序

看起来很简单

git clone https://github.com/andydvsn/rtl8821cu_bt.git
Cloning into 'rtl8821cu_bt'...
remote: Enumerating objects: 44, done.
remote: Total 44 (delta 0), reused 0 (delta 0), pack-reused 44
Unpacking objects: 100% (44/44), done.
[16:58:49] root@linux1:~# cd rtl8821cu_bt
[16:59:00] root@linux1:~/rtl8821cu_bt# make
make -C 8821CU -s
Copy 8821CU firmware to /lib/firmware/rtl8821cu_fw
Copy 8821CU config to /lib/firmware/rtl8821cu_config
make -C ./bluetooth_usb_driver
make[1]: Entering directory '/root/rtl8821cu_bt/bluetooth_usb_driver'
make -C /lib/modules/4.15.0-128-generic/build M=/root/rtl8821cu_bt/bluetooth_usb_driver modules
make[2]: Entering directory '/usr/src/linux-headers-4.15.0-128-generic'
  CC [M]  /root/rtl8821cu_bt/bluetooth_usb_driver/rtk_coex.o
/root/rtl8821cu_bt/bluetooth_usb_driver/rtk_coex.c: In function ‘rtk_check_setup_timer’:
/root/rtl8821cu_bt/bluetooth_usb_driver/rtk_coex.c:544:3: error: implicit declaration of function ‘setup_timer’; did you mean ‘sk_stop_timer’? [-Werror=implicit-function-declaration]
   setup_timer(&(btrtl_coex.a2dp_count_timer),
   ^~~~~~~~~~~
   sk_stop_timer
/root/rtl8821cu_bt/bluetooth_usb_driver/rtk_coex.c: In function ‘rtk_btcoex_open’:
/root/rtl8821cu_bt/bluetooth_usb_driver/rtk_coex.c:2532:2: error: implicit declaration of function ‘init_timer’; did you mean ‘init_timers’? [-Werror=implicit-function-declaration]
  init_timer(&btrtl_coex.polling_timer);
  ^~~~~~~~~~
  init_timers
cc1: some warnings being treated as errors
scripts/Makefile.build:330: recipe for target '/root/rtl8821cu_bt/bluetooth_usb_driver/rtk_coex.o' failed
make[3]: *** [/root/rtl8821cu_bt/bluetooth_usb_driver/rtk_coex.o] Error 1
Makefile:1587: recipe for target '_module_/root/rtl8821cu_bt/bluetooth_usb_driver' failed
make[2]: *** [_module_/root/rtl8821cu_bt/bluetooth_usb_driver] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-4.15.0-128-generic'
Makefile:10: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/root/rtl8821cu_bt/bluetooth_usb_driver'
Makefile:10: recipe for target 'install' failed
make: *** [install] Error 2
[16:59:06] root@linux1:~/rtl8821cu_bt# 

我已尝试删除并重新开始,感谢您的阅读,如能提供任何帮助我将不胜感激。

编辑-1 - 删除 [github.com/andydvsn/rtl8821cu_wlan] 并使用 github.com/brektrou/rtl8821CU.git

wlan 正在工作,但蓝牙仍然看不到适配器。

ls /lib/modules/$(uname -r)/kernel/drivers/net/wireless/realtek/rtl8821cu
8821cu.ko



    >     T:  Bus=02 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#=  5 Spd=480 MxCh= 0
    >     D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    >     P:  Vendor=0bda ProdID=c820 Rev=02.00
    >     S:  Manufacturer=Realtek
    >     S:  Product=802.11ac NIC
    >     S:  SerialNumber=123456
    >     C:  #Ifs= 3 Cfg#= 1 Atr=a0 MxPwr=500mA
    >     I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    >     I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    >     I:  If#= 2 Alt= 0 #EPs= 5 Cls=ff(vend.) Sub=ff Prot=ff Driver=rtl8821cu

答案1

我买了一台 ACEPC T11 8/128Gb。我安装了 Ubuntu 20.04,除了 Wi-Fi 之外,一切都运行良好。我发现芯片组是 RTL8821CU,即使它以某种方式显示为 Broadcom。我尝试了很多修复方法,但没有结果。最后我解决了这个问题。

我修复了这个问题:

  1. git clone https://github.com/brektrou/rtl8821cu.git
  2. cd rtl8821cu
  3. sudo ./dkms-install.sh
  4. 重启

答案2

您链接的驱动程序存储库适用于较旧/不同的 Linux 内核。据我了解,该init_timer函数已被替换为timer_setup函数2017 年某个时候,这就是代码无法编译的原因。

您可以尝试打开 PR 或自行更改代码,或者尝试使用不同的蓝牙驱动程序。

我点了一个类似的 USB 设备似乎使用相同的芯片组。 另一位司机适用于 WiFi 部分,蓝牙只需与内核btusb驱动程序配合使用。

此设置的一个小麻烦是,WiFi 需要在启动后某个时间点处于活动状态,蓝牙才能工作。我不确定这是不是我的设置特有的问题,还是 WiFi+蓝牙设备组合的问题。

usb-devices在我的计算机上输出的相关部分如下所示:

P:  Vendor=0bda ProdID=c820 Rev=02.00
S:  Manufacturer=Realtek
S:  Product=802.11ac NIC
S:  SerialNumber=123456
C:  #Ifs= 3 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#=0x0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
I:  If#=0x1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
I:  If#=0x2 Alt= 0 #EPs= 5 Cls=ff(vend.) Sub=ff Prot=ff Driver=rtl8821cu

请注意,我使用的是较新的内核版本 ( 5.8.0-7630-generic),因此您的情况可能会有所不同。驱动程序 README 表示4.4.x支持更高版本。

祝你好运!

答案3

[13:55:56] root@linux1:~# bluetoothctl show
[NEW] Controller 00:13:EF:2F:0B:94 linux1 [default]
Agent registered
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:13:EF:2F:0B:94 Discovering: yes
[NEW] Device 3E:93:4A:78:96:CD 3E-93-4A-78-96-CD

经过几天的努力,我做了两个修改,usermod -aG lp $USER,然后找到了这篇文章 [bluetooth]# power on https://computingforgeeks.com/connect-to-bluetooth-device-from-linux-terminal/

我无法想象需要将 root 添加到组“lp”,但我不确定并且想记录下来。 power on似乎已经起作用了。

相关内容