#bluetooth-lowenergy #bluez
#bluetooth-низкое энергопотребление #bluez
Вопрос:
Для приложения, считывающего блок данных (9000 байт) с устройства BLE, мне нужно изменить интервал подключения, чтобы он был как можно быстрее.
Я использую BlueZ stack 4.101 с ядром Linux = 3.14.43
В настоящее время я могу сделать это с помощью «hcitool lecup» после подключения устройства, но это означает, что сначала нужно «подключиться», затем получить дескриптор подключения с помощью «hcitool con» и, наконец, «hcitool lecup» с минимальным значением = 6 (минимальное значение = 7,5 мс).
Это работает нормально, но «hcitool lecup» занимает около 600 мс после «подключения», которое занимает несколько сотен мс. Параметры подключения сбрасываются при отключении устройства, что означает, что эта последовательность должна выполняться при каждом подключении.
С помощью BlueZ tools (hcitool и gatttool) возможно ли передавать параметры подключения непосредственно в процессе подключения или обязательно сначала подключиться, а затем изменить параметры подключения на втором этапе.
Большое спасибо
Ответ №1:
Вы можете установить интервал подключения через интерфейс файловой системы ядра hci перед началом подключения:
echo 6 > /sys/kernel/debug/bluetooth/hci0/conn_min_interval
echo 20 > /sys/kernel/debug/bluetooth/hci0/conn_max_interval
(в единицах измерения 1,25 мс)
Ответ №2:
Я искал ответ на тот же вопрос и смог решить проблему в прошивке устройства (я использовал esp32 с nimble stack). Устройство выполняло в этом случае роль центра BLE. И кажется, что bluez попытается принять, какое устройство ведет переговоры, поэтому не было необходимости указывать это дополнительно (путем записи в dev). В итоге я выполнил вызов API ble_gap_update_params на встроенной стороне, при этом интервал подключения min и max были установлены на минимальное значение, таким образом, это было согласовано и подтверждено bluez stack.