Сегодня впервые после долгого перерыва решил забекапить телефон через bluetooth. И получил шиш на постном масле - при попытке за-pair-ить телефон с ноутбуком hcid говорит в syslog "call_passkey_agent(): no agent registered" и соединение не устанавливается.
Танцы с бубном не помогли - ни с dbus_pin_helper, ни с "pin_helper /usr/bin/bluez-pin", ни с явно прописаным в hcid.conf пином счастья мне не было. А было все то же сообщение об ошибке.
Как ни странно, поиск в гугле по тексту ошибки не дал вообще ничего :( Похоже, что это лично у меня что-то поломано, или это мне так повезло.
Anyway, downgrade of bluez-utils from version 3.1 to version 2.25 has solved that
(последняя строка по-английски специально для иноязычных страдальцев, которые найдут мой пост в гугле. Навеяно попытками вчитаться в турецкие и японские blog-посты на тему bluetooth)
Угу. Нарвался на то же самое. Такое ощущение, что свежая версия hcid не понимает параметр pin_helper.
Однако. На другой машине оно таки заработало непонятным образом, а hcid версии 3.1 сказал Default passkey agent (:1.1, /org/bluez/passkey_agent_6632) registered
Как доберусь до первой машины, попробую сравнить настройки..
Ага! Вылез еще один баг: у меня с каких-то пор в /etc/bluetooth/passkey завелся лишний перевод строки, из-за этого не работал вариант с default passkey.
Судя по BTS, в последней версии bluez-utils это лечится в preinst скрипте.
У меня не было вылечено. Хотя я явно только что переставил bluez-utils, стерев в процессе /etc/bluetooth. Потом вручную сделал echo -n "1234" > /etc/bluetooth/passkeys/??:??:??:??:??:?? и перезапустил /etc/init.d/bluetooth
Вот тогда оно взлетело вместе с двумя дополнительными программами, которые, видимо, и работают в качестве passkey-agents: 9569 ? Ss 0:00 /usr/sbin/hcid 9571 ? Ss 0:00 /usr/sbin/sdpd 9581 pts/1 S 0:00 /usr/lib/bluetooth/add-passkey 00:0E:ED:??:??:?? 9583 pts/1 S 0:00 /usr/lib/bluetooth/add-passkey --default
После чего спаривание прошло успешно, все заработало, и вообще наступило вселенское счастье:
Aug 24 00:05:05 hcid[9569]: pin_code_request (sba=00:0B:5D:??:??:??, dba=00:0E:ED:??:??:??) Aug 24 00:05:05 hcid[9569]: Calling PasskeyAgent.Request: name=:1.12, path=/org/bluez/passkey_agent_9581 Aug 24 00:05:05 altair hcid[9569]: link_key_notify (sba=00:0B:5D:??:??:??, dba=00:0E:ED:??:??:??)
Отчего эти агенты раньше не запускались, я так и не понял.
сам 2 дня мучаюсь с такой-же проблемой, все-таки поборол. у меня bluez версии 3.2. так вот, как тут уже было сказано, поддержку /etc/bluetooth/pin и pin_helper убрали, но в составе bluez-utils появилась утилитка passkey_helper, запустив которую вроде ./passkey_helper pin macaddr все работает. прикол в том что при make_install эта утилита не устанавливается, а остается лежать в дереве с исходниками. но это не проблема. сейчас думаю как бы автоматизировать ее запуск при связи с телефоном, чтоб не руками запускать....
Так в последних пакетах из unstable все вроде как автоматизировано. И запуск утилиты, и место для прописывания ключей... Все в README аккуратно прописано.
echo -e "#!/bin/sh\necho 1234" > /usr/local/bin/bluez-pin && chmod 755 /usr/local/bin/bluez-pin