我最近安装了 Ubuntu 14.04,除了蓝牙之外一切运行良好。
我有 Ralink 3290 蓝牙。尝试使用所述方法安装驱动程序这里。代码无法编译,并给出 2 个错误。甚至更改也 os/linux/pci_main_dev.c
不起作用。
更新:现在我关注了关联稍微修改了一些文件后,我成功编译并安装了该驱动程序。我确信 Ubuntu 最终找到了蓝牙适配器,现在我正在使用蓝牙:
rfkill list all
0: phy0: Wireless LAN
Soft blocked: yes
Hard blocked: no
1: hci0: Bluetooth
Soft blocked: yes
Hard blocked: no
但是现在Bluetooth is disabled
显示错误,并且输出
dmesg | grep Blue
[ 17.378741] Bluetooth: Core ver 2.17
[ 17.378778] Bluetooth: HCI device and connection manager initialized
[ 17.378788] Bluetooth: HCI socket layer initialized
[ 17.378792] Bluetooth: L2CAP socket layer initialized
[ 17.378799] Bluetooth: SCO socket layer initialized
[ 17.809313] Bluetooth: hci0 sending frame failed
[ 20.507392] Bluetooth: RFCOMM TTY layer initialized
[ 20.507420] Bluetooth: RFCOMM socket layer initialized
[ 20.507440] Bluetooth: RFCOMM ver 1.11
[ 20.669232] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 20.669237] Bluetooth: BNEP filters: protocol multicast
[ 20.669249] Bluetooth: BNEP socket layer initialized
来了。
答案1
我让蓝牙工作了!
首先下载源代码从这里并将其提取到
Home
。之后,打开
rtbth_core_bluez.c
文件,然后转到第 86 行并将其从以下内容更改为:int rtbt_hci_dev_send(struct sk_buff *skb) { struct hci_dev *hdev = (struct hci_dev *)skb->dev;
到:
int rtbt_hci_dev_send(struct hci_dev *hdev, struct sk_buff *skb) { //struct hci_dev *hdev = (struct hci_dev *)skb->dev;
转到第 216 行并将其从:
status = hci_recv_frame(skb);
到:
status = hci_recv_frame(hdev,skb);
然后转到第 406 行并将其从:
hdev->ioctl = rtbt_hci_dev_ioctl;
到:
//hdev->ioctl = rtbt_hci_dev_ioctl;
保存,然后打开
rtbth_hlpr_linux.c
并转到第 575 行。将其从://daemonize((PSTRING)&pOSTask->taskName[0]);
到
(PSTRING)&pOSTask->taskName[0];
现在您可以开始编译了。在终端中通过以下方式进行编译:
cd rtbth-3.9.3 make sudo make install
- 重新启动。此外,您还可以按照此 PDF 文件压缩以防蓝牙仍然无法工作。
答案2
这被报告为 LP 上的错误:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1189721
截至目前,尚无可用的驱动程序。如果您有 LP 帐户,我建议您将该错误标记为影响您,并订阅评论的电子邮件通知。
答案3
根据shihiro 的评论在错误报告中,有一个维护良好的蓝牙驱动程序 PPA:
在终端中使用
sudo add-apt-repository ppa:blaze/rtbth-dkms sudo apt-get update sudo apt-get install rtbth-dkms
或加载并安装从启动板第一个链接是GitHub 页面。
README.md
您可以阅读:# Init sudo modprobe rtbth sudo rfkill unblock bluetooth hcitool dev # check
我在终端中输入它并且一切正常。
在 Ubuntu 17.10 以及更早的版本中,该模块可能会自动被列入黑名单。如果你遇到这种情况
- 添加,
rtbth
/etc/modules
- 打开
/etc/modprobe.d/dkms-rtbth.conf
并注释掉或删除以下行blacklist rtbth
: - 重新启动系统。
答案4
DKMS 和 systemd 解决方案适用于我的 HP ProBook 455 G1 笔记本电脑,其配备:
网络控制器:Ralink corp. RT3290 Wireless 802.11n 1T/1R PCIe 及其混合型。
具有内置蓝牙:Ralink corp. RT3290 Bluetooth。
我被要求检查该指令是否适用于 Ubuntu。
编写一个操作系统和内核 Linux 版本,例如:
测试环境:
操作系统:Fedora 27,带 gnome shell。
内核 Linux:4.13.12-300.fc27.x86_64
Copy source from:
https://github.com/loimu/rtbth-dkms
DKMS Build Instruction:
http://xmodulo.com/build-kernel-module-dkms-linux.html
复制文件:
cp 49rtbt to /usr/lib64/pm-utils/sleep.d
cp rtbt to one of this folder /bin or /usr/local/bin or /usr/bin
创建新文件名 bluetooth-setup.sh 并复制:
#!/bin/bash
sudo mknod /dev/rtbth c 192 0
sudo rtbt
按照此说明进行自动启动。
将脚本添加到 systemd :
https://linuxconfig.org/how-to-automatically-execute-shell-script-at-startup-boot-on-systemd-linux