Ubuntu 14.04 上的 Ralink RT 3290 蓝牙问题

Adn*_*nan 14 bluetooth ralink 14.04

我最近安装了 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
Run Code Online (Sandbox Code Playgroud)

但是现在显示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
Run Code Online (Sandbox Code Playgroud)

来了。

Adn*_*nan 10

我让蓝牙工作!

  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;
    
    Run Code Online (Sandbox Code Playgroud)

    到:

    int rtbt_hci_dev_send(struct hci_dev *hdev, struct sk_buff *skb)
    {
        //struct hci_dev *hdev = (struct hci_dev *)skb->dev;
    
    Run Code Online (Sandbox Code Playgroud)
  3. 转到第 216 行并将其更改为:

        status = hci_recv_frame(skb);
    
    Run Code Online (Sandbox Code Playgroud)

    到:

        status = hci_recv_frame(hdev,skb);
    
    Run Code Online (Sandbox Code Playgroud)
  4. 然后转到第 406 行并将其更改为:

    hdev->ioctl = rtbt_hci_dev_ioctl;
    
    Run Code Online (Sandbox Code Playgroud)

    到:

    //hdev->ioctl = rtbt_hci_dev_ioctl;
    
    Run Code Online (Sandbox Code Playgroud)
  5. 保存,然后打开rtbth_hlpr_linux.c并转到第 575 行。将其更改为:

    //daemonize((PSTRING)&pOSTask->taskName[0]);
    
    Run Code Online (Sandbox Code Playgroud)

    (PSTRING)&pOSTask->taskName[0];
    
    Run Code Online (Sandbox Code Playgroud)
  6. 现在您已准备好编译。通过以下方式在终端中编译它:

    cd rtbth-3.9.3
    make
    sudo make install
    
    Run Code Online (Sandbox Code Playgroud)
  7. 重启。此外,如果蓝牙仍然无法正常工作,您可以按照此ZIP中包含的 PDF 文件进行操作。


int*_*_ua 6

这被报告为 LP 上的错误:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1189721

截至目前,没有工作驱动程序。如果您有 LP 帐户,我建议您将该错误标记为影响您并订阅有关评论的电子邮件通知。


Dav*_*ter 6

根据shihiro对错误报告的评论,蓝牙驱动程序有一个维护良好的 PPA:

在终端中使用

sudo add-apt-repository ppa:blaze/rtbth-dkms
sudo apt-get update
sudo apt-get install rtbth-dkms
Run Code Online (Sandbox Code Playgroud)

从 Launchpad加载并安装它。在第一个链接上有指向GitHub 页面的源链接。在README.md你可以阅读:

sudo add-apt-repository ppa:blaze/rtbth-dkms
sudo apt-get update
sudo apt-get install rtbth-dkms
Run Code Online (Sandbox Code Playgroud)

我在终端输入它,一切正常。

在 Ubuntu 17.10 以及可能的更早版本上,该模块可能会自动被列入黑名单。如果这发生在你身上

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