Перейти к основному содержимому

Bluetooth

3DV-EdgeAI-32 поддерживает беспроводное подключение по Bluetooth при наличии соответствующего модуля. Для отображения информации об устройствах Bluetooth выполните следующую команду:

root@Airbox:/tmp# hciconfig -a

Пример вывода:

hci0:   Type: Primary  Bus: USB
BD Address: 64:82:14:70:8C:2B ACL MTU: 1021:6 SCO MTU: 255:12
UP RUNNING
RX bytes:1401 acl:0 sco:0 events:91 errors:0
TX bytes:2411 acl:0 sco:0 commands:91 errors:0
Features: 0xff 0xff 0xff 0xfe 0xdb 0xfd 0x7b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'Airbox'
Class: 0x000000
Service Classes: Unspecified
Device Class: Miscellaneous
HCI Version: (0xb) Revision: 0xb
LMP Version: (0xb) Subversion: 0x8852
Manufacturer: Realtek Semiconductor Corporation (93)

Если при выполнении команды появляется ошибка,

Can't open HCI socket.: Address family not supported by protocol

то возможны проблемы с зависимостями загружаемых модулей. В этом случае выполните следующие команды:

sudo -i
depmod -a
reboot
Проверка режима работы устройства

Определите, является ли устройство ведущим (master) или ведомым (slave):

root@Airbox:/tmp# hciconfig hci0 lm
hci0: Type: Primary Bus: USB
BD Address: 64:82:14:70:8C:2B ACL MTU: 1021:6 SCO MTU: 255:12
Link mode: SLAVE ACCEPT

Запустите сервер PulseAudio как медиаустройство:

admin@Airbox:~$ pulseaudio --start --log-target=syslog

Подключение Bluetooth-устройства

1. Запустите инструмент управления Bluetooth:

root@Airbox:/tmp# bluetoothctl

Вывод:

Agent registered
[CHG] Controller 64:82:14:70:8C:2B Pairable: yes

2. Включите Bluetooth-контроллер:

admin@Airbox:~$ bluetoothctl

Вывод:

Agent registered
[bluetooth]# power on
Changing power on succeeded
[bluetooth]#

3. Установите Bluetooth-агент по умолчанию:

[bluetooth]# agent on
Agent is already registered
[bluetooth]# default-agent
Default agent request successful
[bluetooth]#

4. Разрешите обнаружение устройства другими устройствами:

[bluetooth]# discoverable on

Вывод:

Changing discoverable on succeeded
[CHG] Controller 64:82:14:70:8C:2B Discoverable: yes

5. Найдите устройство 3DV-EdgeAI-32 на смартфоне и выполните сопряжение:

[NEW] Device A4:90:CE:DF:64:4F iQOO Neo6 SE
[CHG] Device A4:90:CE:DF:64:4F Modalias: bluetooth:v001Dp1200d1436
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 00001105-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 0000110a-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 00001112-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 00001115-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 00001116-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 0000111f-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 0000112d-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 0000112f-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 00001132-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 00001200-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 00001800-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 00001801-0000-1000-8000-00805f9b34fb
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 2c042b0a-7f57-4c0a-afcf-1762af70257c
[CHG] Device A4:90:CE:DF:64:4F UUIDs: 8fa9c715-bd1f-596c-a1b0-13162b15c892
[CHG] Device A4:90:CE:DF:64:4F ServicesResolved: yes
[CHG] Device A4:90:CE:DF:64:4F Paired: yes
[CHG] Device A4:90:CE:DF:64:4F ServicesResolved: no
[CHG] Device A4:90:CE:DF:64:4F Connected: no
[CHG] Controller 20:57:9E:BA:7C:EC Discoverable: no

6. Подключите мобильное устройство:

[bluetooth]# connect A4:90:CE:DF:64:4F

Вывод:

Attempting to connect to A4:90:CE:DF:64:4F
[CHG] Device A4:90:CE:DF:64:4F Connected: yes
Connection successful
[CHG] Device A4:90:CE:DF:64:4F ServicesResolved: yes
[iQOO Neo6 SE]#

7. Установите доверие с мобильным устройством:

[iQOO Neo6 SE]# trust A4:90:CE:DF:64:4F
[CHG] Device A4:90:CE:DF:64:4F Trusted: yes
Changing A4:90:CE:DF:64:4F trust succeeded

Подключение Bluetooth-аудио

3DV-EdgeAI-32 поддерживает Bluetooth-аудио с использованием утилиты bluez-alsa.

Установка bluez-alsa 1.3.0

(1) Загрузите пакет https://github.com/Arkq/bluez-alsa/releases/tag/v1.3.0

(2) Установите зависимости:

sudo apt install -y libasound2-dev libbluetooth-dev libglib2.0-dev libsbc-dev libfdk-aac-dev pkgconf

(3) Разархивируйте и установите:

tar xzvf bluez-alsa-1.3.0.tar.gz
cd bluez-alsa-1.3.0
autoreconf --install
mkdir build && cd build
../configure --enable-aac --enable-debug
make && make install

Тестирование аудио

(1) Установите Bluetooth-контроллер в режим master:

sudo hciconfig hci0 lm master

(2) Остановите процесс PulseAudio (bluez-alsa и PulseAudio несовместимы):

killall pulseaudio

(3) Запустите службу bluez-alsa:

bluealsa -p a2dp-source -p hsp-ag &

(4) Подключите Bluetooth-гарнитуру:

[bluetooth]# connect 0C:AE:BD:9B:BB:5C
Attempting to connect to 0C:AE:BD:9B:BB:5C
[CHG] Device 0C:AE:BD:9B:BB:5C Connected: yes
Connection successful
[CHG] Device 0C:AE:BD:9B:BB:5C ServicesResolved: yes
[EDIFIER LolliPods 2022]#

(5) Откройте терминал и выполните следующую команду для воспроизведения аудио:

aplay -D bluealsa:HCI=hci0,DEV=0C:AE:BD:9B:BB:5C,PROFILE=a2dp example.wav

После выполнения этих шагов Bluetooth-аудио будет готово к использованию.

Для получения дополнительной информации о bluez-alsa, пожалуйста, ознакомьтесь с репозиторием исходного кода: https://github.com/Arkq/bluez-alsa/tree/v1.3.0.

Отправка и получение файлов

Bluetooth для отправки и получения файлов использует протокол OBEX, который инкапсулирует информацию с помощью объектной модели и передает приложения с использованием спецификации протокола сессий.

Для использования сервиса Obex в Linux необходимо выполнить несколько шагов. Сначала подключите устройство 3DV-EdgeAI-32 к Bluetooth устройству согласно предыдущим шагам, затем запустите Obex daemon и установите директорию для получения файлов в /home/linaro/:

/usr/lib/bluetooth/obexd -r /home/linaro -a -d &

Использование сервиса Obex Push

(1) Настройте Bluetooth в режиме мастер-устройства:

sudo hciconfig hci0 lm master

(2) Найдите канал для сервиса Obex Push на вашем мобильном устройстве (в данном случае указан канал 12):

linaro@bm1684:~$ sdptool search --bdaddr A4:90:CE:DF:64:4F OPUSH
Searching for OPUSH on A4:90:CE:DF:64:4F ...
Service Name: OBEX Object Push
Service RecHandle: 0x1000d
Service Class ID List:
"OBEX Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 12
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX Object Push" (0x1105)
Version: 0x0102
Searching for OPUSH on A4:90:CE:DF:64:4F ...
Service Search failed: Invalid argument

(3) Отправьте файл на телефон:

linaro@bm1684:~$ obexftp --nopath --noconn --uuid none --bluetooth A4:90:CE:DF:64:4F --channel 12 --put sn.txt
Suppressing FBS.
Connecting..done
Sending "sn.txt"...done
Disconnecting..done

На мобильном устройстве появится окно с запросом на получение файла.

Использование команды obexctl

Ниже приведены шаги для получения файлов на устройстве 3DV-EdgeAI-32:

(1) Запустите сервис obex на устройстве (слейв-устройство):

root@firefly:~# systemctl --user start obex

(2) Введите команду для запуска интерактивного режима:

root@firefly:~# obexctl
[NEW] Client /org/bluez/obex

(3) Подключите устройство 3DV-EdgeAI-32 (мастер-устройство):

[obex]# connect 20:57:9E:BA:7C:EC
Attempting to connect to 20:57:9E:BA:7C:EC
...
[NEW] Session /org/bluez/obex/client/session2 [default]
[NEW] ObjectPush /org/bluez/obex/client/session2

(4) Отправьте файл:

[20:57:9E:BA:7C:EC]# send /root/test.txt
Attempting to send /root/test.txt to /org/bluez/obex/client/session1
[NEW] Transfer /org/bluez/obex/client/session1/transfer1
Transfer /org/bluez/obex/client/session1/transfer1
Status: queued
Name: test.txt
Size: 0
Filename: /root/test.txt
Session: /org/bluez/obex/client/session1
[CHG] Transfer /org/bluez/obex/client/session1/transfer1 Status: complete

(5) Проверьте файл test.txt в директории /home/admin/ устройства 3DV-EdgeAI-32:

admin@Airbox:~$ ls -l test.txt
-rw------- 1 linaro linaro 0 Nov 25 15:49 test.txt