Как заставить bluez 5 принимать фиксированный пин-код?

Я не могу найти ничего о том, как это сделать. Я программирую Intel Edison на C и телефон Android на Java. Я хочу соединить Edison с телефоном Android. Я думаю, что простое сопряжение (sspmode 1) будет работать, но я получаю сообщение об ошибке по телефону о неправильном выводе, где ни один вывод не был запрошен. С sspmode 0 меня спрашивают пароль, но я понятия не имею, что это, так как он генерируется случайным образом в моем EdIn NoInputNoOutput. У нас все остальное работает. Если мы подключимся к Edison вручную, остальная часть кода сможет подключаться и отправлять сообщения Bluetooth от Edison к телефону и обратно. Но соединение Эдисона с любым случайным телефоном, проходящим мимо, недопустимо. Я думаю, что это называется Bluejacking.

Я видел несколько сообщений об использовании simple-agent, но, честно говоря, я понимаю, что безопасность BlueZ настолько изменилась между 4 и 5, что почти все, что я вижу, не работает. Я также вижу, что переход с 4 на 5 сломал много систем, поэтому я не чувствую себя одиноким. Я бы попробовал, но simple-agent отсутствует в Edison, и я не нашел процедуры для его установки. И поскольку я не знаю, относится ли то, что я могу найти, к 5-й версии, так как все это относится к 4-й версии, я чувствую себя немного растерянным.

Кто-нибудь может указать мне в правильном направлении что-то, что будет работать на BlueZ 5? Я на 5.18.

2 ответа

Решение

Решение, представленное в последнем посте этой статьи, действительно работает http://www.linuxquestions.org/questions/linux-wireless-networking-41/setting-up-bluez-with-a-passkey-pin-to-be-used-as-headset-for-iphone-816003/

Отредактируйте simple-agent, поместите его куда-нибудь, сделайте его исполняемым, поместите отсутствующие файлы в тот же каталог и запустите его. Он должен продолжать работать, чтобы быть активным.

В моем случае отсутствующим файлом был bluezutils.py.

Сначала запустите hciconfig hci0 sspmode 0

Pl использовать Bluz5.30. Изначально было очень трудно подключить Bluetooth с помощью Bluez 5. Кажется, с Bluez 4. все в порядке. Я пробовал разные версии Bluez 5 на моей сборке LFS. Даже до Bluez 5.28 это не было удовлетворительным. Теперь это Bluz5.30, с этим, LFS Doc и много следов, я мог бы справиться. Я чувствую, что Bluez является одним из самых плохо документированных недружественных пользователей программ. Я также чувствую, что это очень глючит. Это может повесить машины, заставляющие жестко загрузить систему. Я видел, как Bluetooth заставляет телефон Android перезагрузиться. Поэтому важно получить последнюю версию программного обеспечения. Но чтобы заставить работать bluetooth-динамик, нужен Pulseaudio. Лучше получить последнюю версию; здесь также документация LFS была в порядке. Итак, процесс подключения динамика был с помощью bluetoothctl следующим образом;

>> power on
>> scan on
>> pairable on
>> pair <device>

>> agent on
>> default-agent

Теперь актуальный звук. Здесь pactl и pacmd полезны. paplay -d может проверить устройства. использование pacmd с командой 'list-sinks' может показать устройства.

pacmd -> list-modules может показать загруженные модули.

Как автоматически изменить аудиовыход на динамик bluetooth при его подключении?

Для меня на одной машине это работало нормально, с идентичной LFS на другой машине это не работало. Наконец он был идентифицирован как отсутствующий модуль module-device-manager с arg do_routing=1.

После загрузки все было в порядке. Этот конкретный модуль не был показан в импульсных конфигурациях. Так что я должен найти это и загрузить, pacmd

load-module module-device-manager do_routing = 1 Можно добавить строку в файле конфигурации по умолчанию, доступном в /etc/pulse.или также можно добавить ее в файле конфигурации пользователя. Теперь, чтобы новый динамик bluetooth использовался для играть звук. Для этого введите команду 'move-sink-input ', используя pacmd. Вы можете найти имена приемников, выполнив команду list-sink. Если ваш динамик не подключен, возможно, он уже подключен в другом месте. Если это не так, удалите устройство; сканирование включено; пара; и подключиться с помощью bluetoothctl. Я волновался, как сделать передачу файлов с помощью Bluetooth (Bluez5). На самом деле очень мало информации доступно в документации LFS или вообще в сети. Это очень верно и неудачно в отношении Блуза в целом. Они не предоставляют никаких реальных пользовательских документов или ничего не доступно в сети. Итак, шаги следующие: Вам необходимо установить библиотеку OBEX. Затем вы строите Bluez5 (если это еще не сделано). Он установит obexd. После установки вы можете найти obexd в $PREFIX/libexec/bluetooth/obexd. Здесь вы также найдете bluetoothd. Один обычно делает ссылку для bluetoothd в /usr/sbin. Аналогичная ссылка может быть сделана и для obexd. Как только вы запустите bluetoothd и obexd, вы сможете найти профили передачи объектов в bluetoothctl->show. Если вам нужен телефон для передачи объектов на компьютер, вам нужно запустить obexd с опциями '-a' и '-r '. если "-a" не указано, телефон не сможет отправить файл. Теперь, как перенести файл с компьютера на телефон. Для этого вам нужен obexctl, я не думаю, что это законченный инструмент, и он не будет установлен, пока мы собираем Bluez 5. Я видел его в дереве исходных текстов и скопировал в /usr/bin/. Он должен использоваться для подключения телефона, и когда соединение установлено, можно "отправить", и вы должны принять запрос в телефоне.

Запуск obexd как демона был проблемой. Когда obexd пробовали на текстовом терминале (init 3), было невозможно запустить, так как ему нужен сеанс dbus, который, в свою очередь, требует отображения X. Это означает, что нужно войти в X-сессию, прежде чем запускать obexd. Если вы отключите X при сборке DBUS (--without-x), то оконные менеджеры не будут работать. Но есть решение с помощью 'dus-run-session [args]'. Это означает, что вы можете запустить службу obexd (например, bluetoothd) при запуске системы. Поэтому, просто включив компьютер (если ранее было выполнено сопряжение, доверие и т. Д.), Можно передавать файлы с телефона на компьютер.

>> connect <device>

Второй раз вперед просто связь в порядке. Возможно, вы можете доверять устройству.

>> trust <device>
Другие вопросы по тегам