有没有办法找出哪个蓝牙设备插入哪个USB端口?

时间:2017-05-08 19:26:56

标签: linux ubuntu bluetooth ubuntu-16.04 bluez

我使用BlueZ的两个蓝牙适配器,两个都是相同的设备,但天线类型不同,有没有办法找出BlueZ(hci0 / hci1)上的标识符是指哪个usb端口?

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

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

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

2 个答案:

答案 0 :(得分: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命令的组合来确定哪个设备连接到哪个端口。

答案 1 :(得分:1)

此答案应为您指明正确的方向,尽管它并不能为您提供完整的解决方案。

您应该能够在/sys/class/bluetooth下使用“ sys”文件系统的内容:

$ ll -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上添加了一个蓝牙适配器。 symlink目标中的信息从技术上告诉您适配器插入的物理端口。

如果您不熟悉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适配器移动到不同的物理端口,则应该能够弄清楚模式。