#!/usr/bin/python import gobject import dbus.mainloop.glib def create_device_reply(device): print "Pairing succeed!" mainloop.quit() def create_device_error(error): print "Pairing failed." mainloop.quit() if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) mainloop = gobject.MainLoop() bus = dbus.SystemBus() manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.bluez.Manager") adapter0_path = manager.FindAdapter("hci0") adapter1_path = manager.FindAdapter("hci1") adapter0 = dbus.Interface(bus.get_object("org.bluez", adapter0_path), "org.bluez.Adapter") adapter1 = dbus.Interface(bus.get_object("org.bluez", adapter1_path), "org.bluez.Adapter") adapter0_address = adapter0.GetProperties()["Address"] adapter1_address = adapter1.GetProperties()["Address"] print "Adapters:" print " hci0: " + adapter0_address print " hci1: " + adapter1_address print print "Removing any existing bond..." try: device = adapter0.FindDevice(adapter1_address) adapter0.RemoveDevice(device) except: pass try: device = adapter1.FindDevice(adapter0_address) adapter1.RemoveDevice(device) except: pass print "Done." print print "Reading local Out of Band data..." oob_adapter0 = dbus.Interface(bus.get_object("org.bluez", adapter0_path), "org.bluez.OutOfBand") oob_adapter1 = dbus.Interface(bus.get_object("org.bluez", adapter1_path), "org.bluez.OutOfBand") oob0 = oob_adapter0.ReadLocalData() oob1 = oob_adapter1.ReadLocalData() print "Done." print print "Exchanging Out of Band data..." oob_adapter0.AddRemoteData(adapter1_address, oob1[0], oob1[1]) oob_adapter1.AddRemoteData(adapter0_address, oob0[0], oob0[1]) print "Done." print print "Starting to pair." adapter1.CreatePairedDevice(adapter0_address, "/test/agent_oob", "DisplayYesNo", reply_handler=create_device_reply, error_handler=create_device_error) mainloop.run()