Как мы можем получить значения RSSI от маяков Bluetooth (оценка будет конкретной) в Linux?

Мне нужно получить расстояние от нескольких маяков Bluetooth для триангуляции, чтобы я мог делать внутреннее позиционирование. Я попытался дать как можно больше актуальных деталей. Этот проект предназначен для RPi, но в настоящее время я пытаюсь протестировать его через свой ноутбук. Я пробовал большую часть того, что я могу найти в интернете:

. Лучший способ найти значения rssi - hcitool rssi

Отсюда https: // stackoverflow.com/questions/24417017/bluetooth-le-signal-strength-linux

Чтобы проверить это, я сначала попытался получить его для своего мобильного телефона. Он показал «Not Connected». Я думал, что мне нужно сначала подключиться, поэтому я попробовал много способов подключить свой мобильный телефон:

a) hcittol cc

b) gatttool -b

-t random --interactive

c ) rfcomm connect 0

10

В каждом случае, когда я нажал пару на своем мобильном телефоне, соединение прекратилось.

Затем я спарил свой мобильный обычным способом из меню bluetooth, а затем попытался hcitool rssi

, который затем окончательно вернул значение -8.

Теперь, когда я получил его для своего мобильного телефона, я теперь перешел к маякам.

Затем я попробовал то же самое для своих маяков , На этот раз мне пришлось сначала выполнить hcitool lescan, чтобы получить адреса доступных маяков, затем подключиться к одному из маяков, используя команду hcitool lecc

, которая вернула ошибку Could not create connection: Connection timed out. Итак, я снова попытался подключиться двумя другими способами: ! d11]

rfcomm connect 0

10, который возвратил ошибку Can't connect RFCOMM socket: Host is down, когда я уверен, что hci0 встал.

Затем я попытался с sudo gatttool -b F1:15:A7:E3:17:63 --interactive, после чего открылся интерактивный режим, и я дал команду [F16]. Это дало разные ошибки после Attempting to connect to

, главным образом connect error : Connection timed out и Error: connect error: Connection refused (111)

Затем я прочитал, что мне нужно использовать -t random из https://stackoverflow.com/questions/24417017/ bluetooth-le-signal-strength-linux , https://ubuntuforums.org/showthread.php?t=2204808 и еще один источник, который я не могу найти прямо сейчас.

So Я ввел sudo gatttool -b F1:15:A7:E3:17:63 -t random --interactive, в котором, когда я дал команду connect, я получил ошибку Error: connect error: Device or resource busy (16), а иногда и Error: connect error: Input/Output Error

, тогда я прочитал, что мне, возможно, нужно перезапустить hci0 на hciconfig hci0 down и затем hciconfig hci0 up, который сделал трюк, маяк теперь подключился.

Но затем он быстро отключился после того, как сказал «GLib-WARNING **: Недопустимый дескриптор файла.

`Я читал здесь https://ubuntuforums.org/showthread.php?t=2204808 , что это из-за плохих соединений. Я попытался держать маяки ближе, но он сделал то же самое.

Итак, я попытался хотя бы получить хотя бы одно значение rssi в течение короткой продолжительности его подключения. Но, даже когда он был таким образом связан, я сделал hcitool rssi

, что ошибка возникла следующим образом:

hcitool rssi F1:15:A7:E3:17:63 Get connection info failed: No such file or directory

, к которому я еще не нашел правильного решения.

Я попробовал другой способ прочитать значение rssi, которое дало следующее:

hcidump -R HCI sniffer - Bluetooth packet analyzer ver 5.37 device: hci0 snap_len: 1500 filter: 0xffffffffffffffff > 04 0E 04 01 0B 20 00 > 04 0E 04 01 0C 20 00 > 04 0E 04 01 0C 20 00 > 04 0F 04 00 01 0D 20 > 04 0F 04 00 01 16 20 > 04 0F 04 00 01 13 20

Это было до того, как он отключился. Я читаю здесь https://stackoverflow.com/questions/37073114/obtain-rssi-with-hcidump, который сказал, чтобы прочитать 14-й байт. так как все они представляли собой шестнадцатеричные числа, это означало бы, что каждое число равно 1 байт. Но таким образом, у меня всего 7 чисел в строке, как я могу прочитать 14-й байт?

Получение расстояния от маяков беспокоило меня много, и я потратил много времени. Пожалуйста, помогите мне в этом вопросе. Если вы можете помочь мне найти ресурс, который поможет мне сделать это, я буду благодарен за помощь.

2
задан 23 May 2017 в 15:39

6 ответов

Возможно, ваши маяки активно отказываются от вашего соединения, чтобы экономить электроэнергию, а просто читать уровень сигнала, который вам не нужно подключать, поскольку они должны передавать эту информацию в любом случае.

Я не мог получить hcidump, чтобы дать мне информацию, которую я искал, вместо этого я использовал btmon и имел большой успех, получая RSSI от моих маяков BLE:

btmon & hcitool lescan --duplicates
1
ответ дан 18 July 2018 в 15:19

Я тестировал sudo btmgmt find и получил значения RSSI.

Редуцированный выход:

hci0 dev_found: xx:xx:xx:xx:xx:xx type BR/EDR rssi -86 flags 0x0003 eir_len 5

(xx заменены на меня)

Проверено на raspi нуль w

Возможно, это то, что вы ищете.

1
ответ дан 18 July 2018 в 15:19

Возможно, ваши маяки активно отказываются от вашего соединения, чтобы экономить электроэнергию, а просто читать уровень сигнала, который вам не нужно подключать, поскольку они должны передавать эту информацию в любом случае.

Я не мог получить hcidump, чтобы дать мне информацию, которую я искал, вместо этого я использовал btmon и имел большой успех, получая RSSI от моих маяков BLE:

btmon & hcitool lescan --duplicates
1
ответ дан 24 July 2018 в 20:37

Я тестировал sudo btmgmt find и получил значения RSSI.

Редуцированный выход:

hci0 dev_found: xx:xx:xx:xx:xx:xx type BR/EDR rssi -86 flags 0x0003 eir_len 5

(xx заменены на меня)

Проверено на raspi нуль w

Возможно, это то, что вы ищете.

1
ответ дан 24 July 2018 в 20:37

Возможно, ваши маяки активно отказываются от вашего соединения, чтобы экономить электроэнергию, а просто читать уровень сигнала, который вам не нужно подключать, поскольку они должны передавать эту информацию в любом случае.

Я не мог получить hcidump, чтобы дать мне информацию, которую я искал, вместо этого я использовал btmon и имел большой успех, получая RSSI от моих маяков BLE:

btmon & hcitool lescan --duplicates
1
ответ дан 31 July 2018 в 23:38

Я тестировал sudo btmgmt find и получил значения RSSI.

Редуцированный выход:

hci0 dev_found: xx:xx:xx:xx:xx:xx type BR/EDR rssi -86 flags 0x0003 eir_len 5

(xx заменены на меня)

Проверено на raspi нуль w

Возможно, это то, что вы ищете.

1
ответ дан 31 July 2018 в 23:38

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

Похожие вопросы: