The InterfaceProvider passed to Device.start_link is used to initialize the interfaces to a known state, but from there it should be possible to allow adding/removing interfaces dynamically to the Device (that should resend its introspection everytime one of these changes happen).