Не удается подключить Bluetooth-пульт дистанционного управления к SBC под управлением Linux

Я запускаю сгенерированный builduot образ Linux (ядро 4.11.2) на плате NANOPI NEO Air, и я пытаюсь подключиться к своему пульту дистанционного управления ruwido.
Я вижу это, когда сканирую устройства с помощью hcitool:

# hcitool lescan
LE Scan ...
<snip>
5C:F8:21:85:8E:67 ruwido
<snip>

Но я не могу установить соединение (оно действует так, как будто удаленного здесь нет):

# hcitool cc 5C:F8:21:85:8E:67
Can't create connection: Input/output error

Единственное, что я могу сделать, это получить некоторую информацию об этом:

# hcitool leinfo 5C:F8:21:85:8E:67
Requesting information ...
        Handle: 64 (0x0040)
        LMP Version: 4.0 (0x6) LMP Subversion: 0x140
        Manufacturer: Texas Instruments Inc. (13)
        Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00

Я также не могу использовать bluetoothctl, так как он не обнаруживает мой интерфейс, хотя он инициализирован, bluetoothd работает и модули загружены:

# lsmod
Module                  Size  Used by
bnep                   20480  2
hci_uart               61440  1
btbcm                  16384  1 hci_uart
btqca                  16384  1 hci_uart
btintel                16384  1 hci_uart
bluetooth             348160  12 hci_uart,btintel,btqca,bnep,btbcm
brcmfmac              245760  0
brcmutil               16384  1 brcmfmac
sunxi_cir              16384  0
# ps -e | grep bluetooth
  553 root     /usr/sbin/bluetoothd
  731 root     grep bluetooth
# sudo hciconfig -a
hci0:   Type: Primary  Bus: UART
        BD Address: F7:93:3E:74:CF:62  ACL MTU: 1021:8  SCO MTU: 64:1
        UP RUNNING 
        RX bytes:12593 acl:7 sco:0 events:292 errors:0
        TX bytes:2050 acl:4 sco:0 commands:155 errors:0
        Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
        Link policy: RSWITCH SNIFF 
        Link mode: SLAVE ACCEPT 
        Name: 'NanoPi-NEO-Air'
        Class: 0x000000
        Service Classes: Unspecified
        Device Class: Miscellaneous, 
        HCI Version: 4.1 (0x7)  Revision: 0x0
        LMP Version: 4.1 (0x7)  Subversion: 0x2209
        Manufacturer: Broadcom Corporation (15)

# bluetoothctl 
Agent registered
[bluetooth]# power on
No default controller available

У меня вопрос, как мне подключить пульт и подключить его к плате? Неважно, через hcitool, bluetoothctl или другой инструмент.

Обновить

Благодаря комментарию Prabhakar Lad, bluetoothctl теперь обнаруживает интерфейс, однако проблема все еще остается, и проблема, похоже, сузилась:

# rfkill unblock all
# hciconfig hci0 up
# hciconfig -a
hci0:   Type: Primary  Bus: UART
        BD Address: AA:AA:AA:AA:AA:AA  ACL MTU: 1021:8  SCO MTU: 64:1
        UP RUNNING PSCAN 
        RX bytes:1930 acl:0 sco:0 events:101 errors:0
        TX bytes:1587 acl:0 sco:0 commands:103 errors:0
        Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
        Link policy: RSWITCH SNIFF 
        Link mode: SLAVE ACCEPT 
        Name: 'BlueZ 5.47'
        Class: 0x000000
        Service Classes: Unspecified
        Device Class: Miscellaneous, 
        HCI Version: 4.1 (0x7)  Revision: 0x0
        LMP Version: 4.1 (0x7)  Subversion: 0x2209
        Manufacturer: Broadcom Corporation (15)

# bluetoothctl
[NEW] Controller F7:93:3E:74:CF:62 BlueZ 5.47 [default]
[NEW] Device 5C:F8:21:85:8E:67 ruwido
Agent registered
[bluetooth]# agent on
Agent is already registered
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# scan on
Discovery started
[CHG] Controller F7:93:3E:74:CF:62 Discovering: yes
<snip>
[NEW] Device 5C:F8:21:85:8E:67 ruwido
<snip>
[bluetooth]# scan off
<snip>
[CHG] Device 5C:F8:21:85:8E:67 RSSI is nil
<snip>
[CHG] Controller F7:93:3E:74:CF:62 Discovering: no
Discovery stopped
[bluetooth]# pair 5C:F8:21:85:8E:67
Attempting to pair with 5C:F8:21:85:8E:67
[CHG] Device 5C:F8:21:85:8E:67 Connected: yes
[ruwido]# [  501.424858] Bluetooth: hci0 unexpected SMP command 0x0b from 5c:f8:21:85:8e:67
[CHG] Device 5C:F8:21:85:8E:67 Connected: no
[bluetooth]# pair 5C:F8:21:85:8E:67
Attempting to pair with 5C:F8:21:85:8E:67
Failed to pair: org.bluez.Error.ConnectionAttemptFailed

Ошибка SMP, похоже, связана с безопасностью Bluetooth с низким энергопотреблением, поэтому я должен использовать другой инструмент для сопряжения?

Дополнительная информация

Я фактически использую систему инициализации busybox с скриптами инициализации bluetooth, которые я нашел в образе производителя (это http://www.mediafire.com/file/8xr37t22qv8qf3p/nanopi-neo-air_FriendlyCore-Xenial_4.11.2_20171113.img.zip), и адаптировал их так, чтобы их можно было использовать с программой busybox init (система init на изображение systemd/upstart).
Итак, у меня есть два файла:

Я использую bluez 5.47 со следующими параметрами в buildroot 2017.08.1:

BR2_PACKAGE_BLUEZ_TOOLS=y
# BR2_PACKAGE_BLUEZ_UTILS is not set
BR2_PACKAGE_BLUEZ5_UTILS=y
BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y
BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED=y
# BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL is not set
# BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH is not set
# BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI is not set
# BR2_PACKAGE_BLUEZ5_PLUGINS_NFC is not set
# BR2_PACKAGE_BLUEZ5_PLUGINS_SAP is not set
BR2_PACKAGE_BLUEZ5_UTILS_TEST=y
# BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL is not set

1 ответ

Вы не просмотрели мой полный пост, вам нужно выполнить следующие шаги после того, как вы сделали с rfkill и перезапуском службы:

а] bluetoothctl

Start the tool, this should detect the controller

б] [bluetooth]# agent on

Turn on the pairing agent

с] [bluetooth]# scan on

Let bluez detect your device, look in my post it should print you baddr (5C:F8:21:85:8E:67)

д] [bluetooth]# scan off

Turn off scanning once your device is discovered

e] [блютуз]# пара 5C:F8:21:85:8E:67

Now pair to the device

Теперь должно быть в паре. Примечание: вы не можете выполнить сопряжение устройства, пока bluez не отсканирует его.

Другие вопросы по тегам