Установка стека Bluetooth BlueZ
Bodro 21 июня, 2009 - 12:26
Добрый день!
Пытаюсь настроить Bluetooth на компьютере для связи с телефоном. В ядре всё что необходимо для этого, включил. Осталось поставить стек BlueZ и необходимое ПО. Но вот при установке стека протоколов BlueZ возникли проблемы:
bodro bodro # emerge -av bluez
These are the packages that would be merged, in order:
Calculating dependencies... done!
emerge: there are no ebuilds built with USE flags to satisfy "sys-auth/pambase[consolekit]".
!!! One of the following packages is required to complete your request:
- sys-auth/pambase-20090515 (Change USE: +consolekit)
(dependency required by "net-wireless/bluez-4.39" [ebuild])
(dependency required by "bluez" [argument])
bodro bodro #
В чём дело и как мне поставить BlueZ?
»
- Для комментирования войдите или зарегистрируйтесь

собсно emerge сказал что
собсно emerge сказал что нужно сделать.
собрать pambase с use флагом consolekit
Да, спасибо! :) Поставил я
Да, спасибо! :)
Поставил я стек BlueZ, поставил прогрмму ObexFTP, но вот теперь не пойму как всё это дело настроить. Набираю команду:
bodro bluetooth # obexftp -b -c /
Scanning for (null) ...
Found: 00:0F:DE:A3:31:40
Browsing 00:0F:DE:A3:31:40 ...
Connecting...failed: connect
Tried to connect for 783ms
The user may have rejected the transfer: Connection refused
bodro bluetooth #
А на телефоне пишет что коды не совпадают. Пробовал добавлять коды сюда: echo "0000" > /var/lib/bluetooth/XX\:XX\:XX\:XX\:XX\:XX/pincodes и сюда: echo "0000" > /etc/bluetooth/pin.
Но всё равно не работает! Как же заставить их нормально связывться?
Пока BlueZ "не допилили" я
Пока BlueZ "не допилили" я пользуюсь скриптом, предложенным мне evadim'ом:
#!/usr/bin/python # -*- coding: utf-8 -*- import gobject import sys import dbus import dbus.service import dbus.mainloop.glib class Rejected(dbus.DBusException): _dbus_error_name = "org.bluez.Error.Rejected" class Agent(dbus.service.Object): exit_on_release = True def set_exit_on_release(self, exit_on_release): self.exit_on_release = exit_on_release @dbus.service.method("org.bluez.Agent", in_signature="", out_signature="") def Release(self): print "Release" if self.exit_on_release: mainloop.quit() @dbus.service.method("org.bluez.Agent", in_signature="os", out_signature="") def Authorize(self, device, uuid): print "Authorize (%s, %s)" % (device, uuid) @dbus.service.method("org.bluez.Agent", in_signature="o", out_signature="s") def RequestPinCode(self, device): print "RequestPinCode (%s)" % (device) return raw_input("Enter PIN Code: ") @dbus.service.method("org.bluez.Agent", in_signature="o", out_signature="u") def RequestPasskey(self, device): print "RequestPasskey (%s)" % (device) passkey = raw_input("Enter passkey: ") return dbus.UInt32(passkey) @dbus.service.method("org.bluez.Agent", in_signature="ou", out_signature="") def DisplayPasskey(self, device, passkey): print "DisplayPasskey (%s, %d)" % (device, passkey) @dbus.service.method("org.bluez.Agent", in_signature="ou", out_signature="") def RequestConfirmation(self, device, passkey): print "RequestConfirmation (%s, %d)" % (device, passkey) confirm = raw_input("Confirm passkey (yes/no): ") if (confirm == "yes"): return raise Rejected("Passkey doesn't match") @dbus.service.method("org.bluez.Agent", in_signature="s", out_signature="") def ConfirmModeChange(self, mode): print "ConfirmModeChange (%s)" % (mode) @dbus.service.method("org.bluez.Agent", in_signature="", out_signature="") def Cancel(self): print "Cancel" def create_device_reply(device): print "New device (%s)" % (device) mainloop.quit() def create_device_error(error): print "Creating device failed: %s" % (error) mainloop.quit() if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.bluez.Manager") if len(sys.argv) > 1: path = manager.FindAdapter(sys.argv[1]) else: path = manager.DefaultAdapter() adapter = dbus.Interface(bus.get_object("org.bluez", path), "org.bluez.Adapter") path = "/test/agent" agent = Agent(bus, path) mainloop = gobject.MainLoop() if len(sys.argv) > 2: if len(sys.argv) > 3: device = adapter.FindDevice(sys.argv[2]) adapter.RemoveDevice(device) agent.set_exit_on_release(False) adapter.CreatePairedDevice(sys.argv[2], path, "DisplayYesNo", reply_handler=create_device_reply, error_handler=create_device_error) else: adapter.RegisterAgent(path, "DisplayYesNo") print "Agent registered" mainloop.run() #adapter.UnregisterAgent(path) #print "Agent unregistered"Пользоваться следующим образом:
запускаете скрипт, с телефона сканируете доступные устройства, при запросе PIN-кода на телефоне вводите его, этот же код вводите в строку в скрипте.
P.S. Скрипт на Python'е, поэтому важны все отступы!
Я ♥ Gentoo & Funtoo
Спасибо за скрипт! Мне он
Спасибо за скрипт! Мне он очень помог. :)
а чем плохи программы типа
а чем плохи программы типа blueman, kbluetooth или гномовский графический клиент? :)
тем что тогда они ещё не
тем что тогда они ещё не поддерживали buez-4
блин, а вот на даты то я и не
блин, а вот на даты то я и не посмотрел :))) нашелся некропостер и я за ним :)))
Theli написал(а): а чем плохи
Упомянутые Вами программы может и не плохи, да вот только гном и кеды как таковые, используют далеко не все пользователи линукс.
Ну и по поводу "некропостера" ... Считаю что сказать человеку спасибо никогда не поздно. Вы не согласны? :)
blueman не привязан к DE ;) а
blueman не привязан к DE ;) а на счет "спасибо" конечно никогда непоздно ;) а разве я про это что-то говорил?
Да, голубой мужик показался
Да, голубой мужик показался мне самой выгодной альтернативой
Ubuntu is an African Word that means "Gentoo is too hard for me"
Theli написал(а): blueman не
Да, даром что пол гнома тянет, да просмотр неработает, а так не привязан и всё в порядке.