Ubuntu 14.04 上的 Ralink RT 3290 蓝牙问题

Ubuntu 14.04 上的 Ralink RT 3290 蓝牙问题

我最近安装了 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

我让蓝牙工作了!

  1. 首先下载源代码从这里并将其提取到Home

  2. 之后,打开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;
    
  3. 转到第 216 行并将其从:

        status = hci_recv_frame(skb);
    

    到:

        status = hci_recv_frame(hdev,skb);
    
  4. 然后转到第 406 行并将其从:

    hdev->ioctl = rtbt_hci_dev_ioctl;
    

    到:

    //hdev->ioctl = rtbt_hci_dev_ioctl;
    
  5. 保存,然后打开rtbth_hlpr_linux.c并转到第 575 行。将其从:

    //daemonize((PSTRING)&pOSTask->taskName[0]);
    

    (PSTRING)&pOSTask->taskName[0];
    
  6. 现在您可以开始编译了。在终端中通过以下方式进行编译:

    cd rtbth-3.9.3
    make
    sudo make install
    
  7. 重新启动。此外,您还可以按照此 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 以及更早的版本中,该模块可能会自动被列入黑名单。如果你遇到这种情况

  1. 添加,rtbth/etc/modules
  2. 打开/etc/modprobe.d/dkms-rtbth.conf并注释掉或删除以下行blacklist rtbth
  3. 重新启动系统。

答案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 

相关内容