HAL, PolicyKit и сопряжение устойств bluetooth.

Вчера обновил HAL из extra до версии 0.5.13-3, эта версия скомпилирована без поддержки PolicyKit.

Через некоторое время после обновления обнаружил неприятную проблему с bluetooth: “спаренные” давным-давно телефон с нетбуком вдруг перестали узнавать друг друга и начали требовать PIN. После ввода PIN'а (я использовал консольный bluez-simple-agent) устройства соединяются нормально, но при повторном соединении история повторяется снова.

Раньше после “спаривания” устройств ключи сохранялись в файле /var/lib/bluetooth/мак-адрес/linkkeys (и этот факт описан в man bluetoothd) и действовали неограниченно долго, теперь этот файл пустой, и если удалить его - заново он не создается. Файл пустой даже когда устройства фактически сопряжены и работа через bluetooth производится.

Проблема не только у меня, ее наличие подтвердил еще один человек (спасибо, bosha!). Решения я не нагуглил. Что скажет уважаемое комьюнити?

P.S. Применил один не описанный в man'е хак: /var/lib/bluetooth/мак-адрес/pincodes где записал мак телефона и дефолтный пин - теперь пин не приходится вводить хотя бы на стороне компьютера, хотя телефон по-прежнему видит каждый раз подклчюение нового устройства и требует вводить ПИН. Неудобно и непонятно.
Может и не в тему, но выскажусь.
Тоже испытал проблемы с новым hal. В xfce стали неактивны кнопки выключения и перезагрузки для обычного пользователя, а также перестал отмонтироваться cdrom (ругаясь на какую-то хрень в hal). Среда - xfce.
Не долго думая глянул в /etc/dbus-1/system.d/hal.conf, а там епрст, все эти действия регламентированы только для рута или для выполнения из консоли :)
Вернул, нафиг, конфиг к виду 0.5.13.2, объединив все действия в группу default (для всех юзеров). Все стало нормально, как и прежде.
Там не то чтобы из консоли, в смысле, не консольными командами, вводимыми вручную. Там использование ConsoleKit подразумевается, а его еще никто вроде не отменял. Подробнее смотри тут: http://archlinux.org.ru/node/149 . Сделай в терминале ck-list-sessions и если оно тебе ничего не напишет - у тебя именно эта проблема.

И, да, это все-таки не в тему. У меня проблемы именно с bluetooth, а с монтированием и перезагрузкой вроде бы все в порядке.
Подробнее смотри тут…
Пасибки. Занес в закладки.
Но у меня настроен автологин через inittab:
# Login automaticaly and start XFCE
x:5:once:/bin/su sunstroke -l -c "/bin/bash --login -c startxfce4 >/dev/null 2>&1"
и если изменить на:
x:5:once:/bin/su sunstroke -l -c "/bin/bash --login -c ck-launch-session startxfce4 >/dev/null 2>&1"
то автологин не отрабатывает и в текущую консоль уже не залогиниться, пришлось переключиться в другую и вернуть все назад.
Ты вроде бы вторые кавычки забыл:
x:5:once:/bin/su sunstroke -l -c "/bin/bash –login -c "ck-launch-session startxfce4" >/dev/null 2>&1"
Нашел способ не решить, но обойти проблему с bluetooth - поставил себе blueman (все вместе - почти 40 Мб, помимо прочего он тянет за собой policykit-gnome) и соединил устройства с его помощью, после чего снова снес его ко всем чертям. При соединении через blueman вожделенный файлик linkkyes все-таки создается, я его забекапил на будущее.

По-видимому, в bluez в очередной раз навертели что-то с безопасностью. С сожалением вынужден констатировать, что полноценная работа с bluetooth из консоли, без установки (хотя бы временной) дополнительных графических утилит пока невозможна.
Muu
полноценная работа с bluetooth из консоли, без установки (хотя бы временной) дополнительных графических утилит пока невозможна.
О как! То есть вот так: viewtopic.php?f=8&t=2545 – уже не работает?
(да, правда, это делалось с выключенным HAL…)
Ну почему, работает. Правда, с одним маленьким исключением: вводить пин на обоих устройствах придется при каждом новом соединении. Особенно весело когда у тебя pppd периодически теряет коннект…
Проблема решена. Все оказалось совсем не так сумрачно, как мне представлялось.

Итак, как я производил “спаривание” устройств:
1) запускал в терминале bluez-simple-agent, видел в ответ “Agent registered”;
2) из второго терминала запускал что-нибудь обращающееся к телефону: obexfs, ppp - не важно. Телефон предлагал ввести пин, я вводил;
3) bluez-simple-agent сообщал об отловленном запросе пина, я вводил тот же пин в терминале.
Собственно, все так, как описано у OldMan'a здесь: viewtopic.php?f=8&t=2545 .
Устройства при этом соединялись и работали, но файл /var/lib/bluetooth/blablabla/linkkeys не создавался и, соответственно, при следующем обращении к телефону пин требовалось вводить снова.

А вот как производить “спаривание” правильно:
1) запускаем в терминале bluez-simple-agent hci0 XX:XX:XX:XX:XX:XX (вместо XX, разумеется, адрес телефона, полученный через hcitool scan). Следует немедленный запрос пина, ввожу и тут же получаю запрос пина на телефоне. Ввожу тот же пин и вижу в терминале “Release. New device (/org/bluez/15143/hci0/dev_XX_XX_XX_XX_XX_XX)”.
Собственно, все. Файл linkkyes на диске создается. Пин больше не требуется.

Что интересно: bluez-simple-agent хелпа или мана не имеет, в man bluetoothd про него тоже ничего не говорится, и как им пользоваться - можно узнать только в интернетах или прочитав содержимое самого bluez-simple-agent (это скрипт на питоне, которого я, к сожалению, не разумею).

P.S. Огромное спасибо [email protected] , который навел меня на разгадку.

P.P.S. Я теперь не вполне уверен, что произошедшее связано с HAL или PolicyKit, хотя ведь с чего-то у меня пропало сопряжение устройств, которое работало безотказно около года?
Muu
так, как описано у OldMan'a … А вот как производить “спаривание” правильно:
Это было 05 окт 2009, bluez 4.39-1. Прошло чуть больше месяца – в репе уже bluez 4.57-1. Чувствуется, люди работают! Скоро ещё чего-нибудь переделают…
Muu
Что интересно: bluez-simple-agent хелпа или мана не имеет, в man bluetoothd про него тоже ничего не говорится, и как им пользоваться - можно узнать только в интернетах или прочитав содержимое самого bluez-simple-agent
Вот такие они, современные технологии :( А “узнать только в интернетах” – тоже не катит, т.к. обычно пишут, как делать, но не пишут, для какой версии это действительно :(
Muu
P.P.S. Я теперь не вполне уверен, что произошедшее связано с HAL или PolicyKit, хотя ведь с чего-то у меня пропало сопряжение устройств, которое работало безотказно около года?
Видимо, это можно проверить, если временно отключить HAL (да, /etc/rc.d/hal stop)…
 
Зарегистрироваться или войдите чтобы оставить сообщение.