[英]Is there a way to find out which Bluetooth device is plugged into which USB port?
我在 BlueZ 上使用了兩個藍牙適配器,兩者都是相同的設備,但天線類型不同,有什么方法可以找出 BlueZ (hci0/hci1) 上的標識符指的是哪個 USB 端口?
我可以通過 hcitool dev 發現設備的 MAC 地址,所以如果有辦法發現具有該 MAC 地址的適配器連接到哪個 USB 端口,那也可以解決我的問題。
由於兩個適配器的型號相同,因此 lsusb 不提供我可以使用的任何識別信息。
使用 Ubuntu 16.04。 我正在尋找任何形式的解決方案,無論是 shell 命令還是 java/C/python/etc。
我不知道這是否是您所需要的,但是您應該可以通過以下命令找到有關所連接設備的詳細信息:-
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)
如果這還不夠,您還可以使用lsusb
和hciconfig
命令的組合來確定哪個設備連接到哪個端口。
該答案應該為您指明正確的方向,但並未為您提供完整的解決方案。
您應該能夠使用/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 適配器移動到不同的物理端口,您應該能夠計算出該模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.