我有一台 HP Envy H8-1437c 系统,蓝牙无法使用。我运行的是kubuntu-desktop
已安装的 Ubuntu 13.04。这是一个 UEFI 系统,但已开启传统启动。
我有 Ralink RT3290 无线和蓝牙卡,无线工作正常。当我进入 KDE 中的蓝牙设置时,系统提示未找到蓝牙适配器。
以下是输出的一部分lspci -v
:
03:00.1 蓝牙:Ralink corp. RT3290 蓝牙子系统:惠普公司设备 18ec 标志:快速 devsel,IRQ 11 内存位于 f7200000(32 位,不可预取)[已禁用] [大小=64K] 功能:
和rfkill list
:
0:phy0:无线局域网
Soft blocked: no Hard blocked: no
如您所见,蓝牙根本没有显示。我知道我的电脑可以使用蓝牙;在我清除 Windows 之前它可以工作,而且电脑包装盒上清楚地标明了这一点。
我尝试从http://downloads.zotac.com/mediadrivers/mb/download/NB087_Ubuntu.zip。当我按照这里,我在第一步就卡住了。这是make
我在 中的命令的输出~/Downloads/rtbth_v3.9.3/rtbth_v3.9.3
:
make -C /lib/modules/3.8.0-19-generic/build M=/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3 modules make(1): 进入目录
/usr/src/linux-headers-3.8.0-19-generic' CC [M] /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.o /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:38:44: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__devinitdata’ /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: In function ‘rtbt_pci_suspend’: /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:60:43: error: ‘struct hci_dev’ has no member named ‘driver_data’ /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: In function ‘rtbt_pci_resume’: /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:87:46: error: ‘struct hci_dev’ has no member named ‘driver_data’ /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: At top level: /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:101:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtbt_pci_probe’ /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:228:23: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rtbt_pci_remove’ /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:288:14: error: ‘rtbt_pci_ids’ undeclared here (not in a function) /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:290:11: error: ‘rtbt_pci_probe’ undeclared here (not in a function) /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:292:2: error: implicit declaration of function ‘__devexit_p’ [-Werror=implicit-function-declaration] /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:292:24: error: ‘rtbt_pci_remove’ undeclared here (not in a function) /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: In function ‘BthIsr’: /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:346:40: error: ‘struct hci_dev’ has no member named ‘driver_data’ /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c: At top level: /home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.c:42:1: error: ‘__mod_pci_device_table’ aliased to undefined symbol ‘rtbt_pci_ids’ cc1: some warnings being treated as errors make[2]: *** [/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3/rtbth_core_pci.o] Error 1 make[1]: *** [_module_/home/ashwin/Downloads/rtbth_v3.9.3/rtbth_v3.9.3] Error 2 make[1]: Leaving directory
/usr/src/linux-headers-3.8.0-19-generic' make: *** [all] 错误 2
我不知道为什么我无法构建该软件包。根据其他人的报告,驱动程序一旦构建就可以运行。我需要rtbth.ko
将文件放入/etc/Wireless/RT3290
。请帮助我使我的蓝牙正常工作...谢谢!
编辑:我刚刚读了另一篇关于此问题的 AskUbuntu 帖子,和我遇到了同样的问题。请参阅这里。我想知道我是否可以rtbth.ko
从某个地方下载该文件,因为这是我让蓝牙工作所需的全部内容……我很感激有关此主题的任何帮助。我知道我可以切换回 Ubuntu 12.04 LTS,但我真的不能,因为 Ubuntu 13.04 上有我工作所需的软件……再次感谢!
答案1
这个问题有一个解决办法,我将在这里解释(来源)
修改rtbth_core_bluez.c
第 406 行并注释掉这一行。
//hdev->ioctl = rtbt_hci_dev_ioctl;
然后更改rtbth_core_bluez.c
第 216 行并注释掉原来的行,将其替换为:
//status = hci_recv_frame(skb);
status = hci_recv_frame(hdev, skb);
之后,您需要rtbth_core_bluez.c
在第 86 行进行更改并进行这些更改(清楚吗?)
//int rtbt_hci_dev_send(struct sk_buff *skb)
int rtbt_hci_dev_send(struct hci_dev *hdev, struct sk_buff *skb)
{
//struct hci_dev *hdev = (struct hci_dev *)skb->dev;
进行这些更改后,您应该能够编译并添加您的 BT 设备,尽管我自己从未设法添加过设备。
顺便说一句,链接内提供的补丁不起作用,您必须自己做。