we should really reuse `bt_device_init` here.