3 from __future__ import absolute_import, print_function, unicode_literals
5 from gi.repository import GObject
8 import dbus.mainloop.glib
9 from optparse import OptionParser, make_option
11 def device_found(address, properties):
12 print("[ " + address + " ]")
14 for key in properties.keys():
15 value = properties[key]
16 if type(value) is dbus.String:
17 value = unicode(value).encode('ascii', 'replace')
19 print(" %s = 0x%06x" % (key, value))
21 print(" %s = %s" % (key, value))
25 def property_changed(name, value):
26 if (name == "Discovering" and not value):
29 if __name__ == '__main__':
30 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
32 bus = dbus.SystemBus()
33 manager = dbus.Interface(bus.get_object("org.bluez", "/"),
37 make_option("-i", "--device", action="store",
38 type="string", dest="dev_id"),
40 parser = OptionParser(option_list=option_list)
42 (options, args) = parser.parse_args()
45 adapter_path = manager.FindAdapter(options.dev_id)
47 adapter_path = manager.DefaultAdapter()
49 adapter = dbus.Interface(bus.get_object("org.bluez", adapter_path),
52 bus.add_signal_receiver(device_found,
53 dbus_interface = "org.bluez.Adapter",
54 signal_name = "DeviceFound")
56 bus.add_signal_receiver(property_changed,
57 dbus_interface = "org.bluez.Adapter",
58 signal_name = "PropertyChanged")
60 adapter.StartDiscovery()
62 mainloop = GObject.MainLoop()