То, что я пытаюсь сделать, по идее просто: сделать компьютер Linux подчиненным устройством Bluetooth, которое автоматически принимает соединения (с телефона). Общая цель — автоматически подключаться и передавать данные из приложения телефона в Python на компьютере Linux. Вот шаги, которые, по моему мнению, необходимы:
Сначала я настроил адаптер Bluetooth с помощью hciconfig:
sudo hciconfig hci0 noauth
sudo hciconfig hci0 name thisdevice
sudo hciconfig hci0 lm SLAVE
sudo hciconfig hci0 lm ACCEPT
sudo hciconfig hci0 sspmode 1
sudo hciconfig hci0 reset
sudo hciconfig hci0 piscan
Затем мне нужен агент Bluetooth, использующий Bluetoothctl для выполнения аутентификации:
bluetoothctl
discoverable on
pairable on
agent NoInputNoOutput
Затем мне нужно подключиться с помощью телефона. Однако, чтобы подключиться, мне все равно нужно ввести YES в терминале в bluetoothctl. (он просит подтвердить правильный Pin). Это проблема, которая сводит на нет весь смысл настройки NoInputNoOutput.
Затем я могу запустить свою программу Python, которая использует Pybluez и функцию advertise_service. Затем я могу подключиться к этой службе из приложения для телефона.
Это правильный порядок событий? Как сделать так, чтобы bluetooth автоматически аутентифицировался? (изменить код агента в bluez?)
Спасибо
решение1
Я ни в коем случае не эксперт в этой теме, я бы сказал, что я едва выжил, пытаясь сделать то же самое в течение 3 дней. Теперь я сдаюсь и бросаю свой raspberry pi в кучу всех других незаконченных проектов.
Однако я думаю, что мой тур по этому аду может быть вам полезен. Попробуйте ввести agent off
перед регистрацией нового агента:
bluetoothctl
agent off
agent NoInputNoOutput
discoverable on
pairable on
Запуск btmon
второго терминала при вводе этих команд должен показать регистрацию нового агента NoInputNoOutput.
решение2
попробуй это:
bt-agent -c NoInputNoOutput -d