Установка стека Bluetooth BlueZ

Добрый день!

Пытаюсь настроить 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 написал(а): а чем плохи

Theli написал(а):
а чем плохи программы типа blueman, kbluetooth или гномовский графический клиент? :)

Упомянутые Вами программы может и не плохи, да вот только гном и кеды как таковые, используют далеко не все пользователи линукс.

Ну и по поводу "некропостера" ... Считаю что сказать человеку спасибо никогда не поздно. Вы не согласны? :)

blueman не привязан к DE ;) а

blueman не привязан к DE ;) а на счет "спасибо" конечно никогда непоздно ;) а разве я про это что-то говорил?

Да, голубой мужик показался

Да, голубой мужик показался мне самой выгодной альтернативой

Ubuntu is an African Word that means "Gentoo is too hard for me"

Theli написал(а): blueman не

Theli написал(а):
blueman не привязан к DE ;) а на счет "спасибо" конечно никогда непоздно ;) а разве я про это что-то говорил?

Да, даром что пол гнома тянет, да просмотр неработает, а так не привязан и всё в порядке.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".