【问题标题】:Is there a way to find out which Bluetooth device is plugged into which USB port?有没有办法找出哪个蓝牙设备插入了哪个 USB 端口?
【发布时间】:2017-10-06 22:30:49
【问题描述】:

我在 BlueZ 上使用了两个蓝牙适配器,它们是同一个设备,但天线类型不同,有什么方法可以找出 BlueZ 上的标识符 (hci0/hci1) 指的是哪个 USB 端口?

我可以通过 hcitool dev 发现设备的 MAC 地址,所以如果有办法发现具有该 MAC 地址的适配器连接到哪个 USB 端口,那也可以解决我的问题。

由于两个适配器型号相同,lsusb 不提供我可以使用的任何识别信息。

使用 Ubuntu 16.04。我正在寻找任何形式的解决方案,无论是 shell 命令还是 java/C/python/等。

【问题讨论】:

  • 这是一个丑陋的解决方法:将您的手机或某些设备连接到其中一个蓝牙适配器,然后将图片/文件复制到计算机并使用在线工具追踪文件/图片的来源。
  • 不幸的是,我正在尝试找到一种自动执行此操作的方法,因为每次断开适配器时都需要重做。感谢您的建议

标签: linux ubuntu bluetooth ubuntu-16.04 bluez


【解决方案1】:

我不知道这是否是您需要的,但您应该通过以下命令找到有关连接设备的详细信息:-

hciconfig -a

这将为您提供足够的详细信息来识别特定设备。您可以在 shell 脚本中添加它,并使用一些字符串操作和条件来找出您的设备。

就我而言,我连接了一个 BT 加密狗,运行 hciconfig -a 会给出以下输出:-

hci0:   Type: BR/EDR  Bus: USB
    BD Address: 00:16:A4:06:AC:E6  ACL MTU: 310:10  SCO MTU: 64:8
    UP RUNNING 
    RX bytes:670 acl:0 sco:0 events:46 errors:0
    TX bytes:2495 acl:0 sco:0 commands:46 errors:0
    Features: 0xff 0xff 0xcf 0xfe 0xdb 0xff 0x5b 0x87
    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
    Link policy: RSWITCH HOLD SNIFF PARK 
    Link mode: SLAVE ACCEPT 
    Name: 'youssif'
    Class: 0x0c0000
    Service Classes: Rendering, Capturing
    Device Class: Miscellaneous, 
    HCI Version: 4.0 (0x6)  Revision: 0x22bb
    LMP Version: 4.0 (0x6)  Subversion: 0x22bb
    Manufacturer: Cambridge Silicon Radio (10)

如果这还不够,您还可以使用lsusbhciconfig 命令的组合来确定哪个设备连接到哪个端口。

【讨论】:

    【解决方案2】:

    此答案应该为您指明正确的方向,但并未为您提供完整的解决方案。

    你应该可以使用/sys/class/bluetooth下的“sys”文件系统的内容:

    $ ls -lA /sys/class/bluetooth/
    total 0
    lrwxrwxrwx  1 root root 0 Dec  8 09:35 hci0 -> ../../devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/bluetooth/hci0
    lrwxrwxrwx  1 root root 0 Dec  8 09:35 hci1 -> ../../devices/platform/soc/3f201000.serial/tty/ttyAMA0/hci1
    

    这来自我的 Raspberry Pi,在 /dev/ttyAMA0 UART 接口上有一个内置适配器,在 USB 上添加了一个蓝牙适配器。符号链接目标中的信息从技术上告诉您适配器插入了哪个物理端口。

    如果您不熟悉 USB 设备编号约定(形成节点树,因为一个端口可以有一个带有多个附加端口的 USB 集线器等),请查看 /sys/bus/usb/devices ,并将其与“lsusb”输出相匹配,您应该弄清楚。就我而言,“lsusb”将该适配器显示为“Bus 001 Device 004: ID 0a5c:21e8 Broadcom Corp. BCM20702A0 Bluetooth 4.0”,如果我记得对应于 /sys/class/bluetooth 中的“1-3”内容路径(不幸的是,总线值使用索引原点 1,而设备号使用索引原点 0,因此 4 变成了 3)。

    如果您尝试将 USB 适配器移动到不同的物理端口,您应该能够找出模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 2015-07-24
      • 2021-07-09
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多