def run(self):
if self._main_loop:<EOL><INDENT>return<EOL><DEDENT>self._interface_added_signal = self._bus.add_signal_receiver(<EOL>self._interfaces_added,<EOL>dbus_interface='<STR_LIT>',<EOL>signal_name='<STR_LIT>')<EOL>self._properties_changed_signal = self._bus.add_signal_receiver(<EOL>self._properties_changed,<EOL>dbus_interface=dbus.PROPERTIES_IFACE,<EOL>signal_name='<STR_LIT>',<EOL>arg0='<STR_LIT>',<EOL>path_keyword='<STR_LIT:path>')<EOL>def disconnect_signals():<EOL><INDENT>for device in self._devices.values():<EOL><INDENT>device.invalidate()<EOL><DEDENT>self._properties_changed_signal.remove()<EOL>self._interface_added_signal.remove()<EOL><DEDENT>self._main_loop = GObject.MainLoop()<EOL>try:<EOL><INDENT>self._main_loop.run()<EOL>disconnect_signals()<EOL><DEDENT>except Exception:<EOL><INDENT>disconnect_signals()<EOL>raise<EOL><DEDENT>
Starts the main loop that is necessary to receive Bluetooth events from the Bluetooth adapter.

This call blocks until you call `stop()` to stop the main loop.