# @ohos.driver.deviceManager (Peripheral Management) The **deviceManager** module provides APIs for managing peripheral devices, including querying the peripheral device list and binding or unbinding a peripheral device. > **NOTE** > > The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version. ## Modules to Import ```ts import deviceManager from "@ohos.driver.deviceManager"; ``` ## deviceManager.queryDevices queryDevices(busType?: number): Array<Readonly<Device>> Queries the list of peripheral devices. If the device has no peripheral device connected, an empty list is returned. **Required permissions**: ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER **System capability**: SystemCapability.Driver.ExternalDevice **Parameters** | Name | Type | Mandatory| Description | | ------- | ------ | ---- | ------------------------------------ | | busType | number | No | Bus type of the peripheral device. If this parameter is left blank, all types of peripheral devices are queried.| **Return value** | Type | Description | | ---------------------------------------------- | -------------- | | Array<Readonly<[Device](#device)>> | List of peripheral devices obtained.| **Error codes** | ID| Error Message | | -------- | ---------------------------------------- | | 401 | The parameter check failed. | | 22900001 | ExternalDeviceManager service exception. | **Example** ```ts import deviceManager from "@ohos.driver.deviceManager"; try { let devices : Array = deviceManager.queryDevices(deviceManager.BusType.USB); for (let item of devices) { let device : deviceManager.USBDevice = item as deviceManager.USBDevice; console.info(`Device id is ${device.deviceId}`) } } catch (error) { console.error(`Failed to query device. Code is ${error.code}, message is ${error.message}`); } ``` ## deviceManager.bindDevice bindDevice(deviceId: number, onDisconnect: AsyncCallback<number>, callback: AsyncCallback<{deviceId: number, remote: rpc.IRemoteObject}>): void; Binds a peripheral device based on the device information returned by **queryDevices()**. This API uses an asynchronous callback to return the result. You need to use [deviceManager.queryDevices](#devicemanagerquerydevices) to obtain the peripheral device information first. **Required permissions**: ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER **System capability**: SystemCapability.Driver.ExternalDevice **Parameters** | Name | Type | Mandatory| Description | | ------------ | ---------------------------------------------------------------------------------------------------- | ---- | -------------------------------------- | | deviceId | number | Yes | ID of the device to bind. It can be obtained by **queryDevices()**. | | onDisconnect | AsyncCallback<number> | Yes | Callback to be invoked when the bound peripheral device is disconnected. | | callback | AsyncCallback<{deviceId: number, remote: [rpc.IRemoteObject](./js-apis-rpc.md#iremoteobject)}> | Yes | Callback invoked to return the communication object of the peripheral device bound.| **Error codes** | ID| Error Message | | -------- | ---------------------------------------- | | 401 | The parameter check failed. | | 22900001 | ExternalDeviceManager service exception. | **Example** ```ts import deviceManager from "@ohos.driver.deviceManager"; import { BusinessError } from '@ohos.base'; import type rpc from '@ohos.rpc'; interface DataType { deviceId : number; remote : rpc.IRemoteObject; } try { // For example, deviceId is 12345678. You can use queryDevices() to obtain the deviceId. deviceManager.bindDevice(12345678, (error : BusinessError, data : number) => { console.error(`Device is disconnected`); }, (error : BusinessError, data : DataType) => { if (error) { console.error(`bindDevice async fail. Code is ${error.code}, message is ${error.message}`); return; } console.info(`bindDevice success`); }); } catch (error) { console.error(`bindDevice fail. Code is ${error.code}, message is ${error.message}`); } ``` ## deviceManager.bindDeviceDriver11+ bindDeviceDriver(deviceId: number, onDisconnect: AsyncCallback<number>, callback: AsyncCallback<RemoteDeviceDriver>): void; Binds a peripheral device based on the device information returned by **queryDevices()**. This API uses an asynchronous callback to return the result. You need to use [deviceManager.queryDevices](#devicemanagerquerydevices) to obtain the peripheral device information first. **Required permissions**: ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER **System capability**: SystemCapability.Driver.ExternalDevice **Parameters** | Name | Type | Mandatory| Description | | ------------ | --------------------------- | ---- | ---------------------------- | | deviceId | number | Yes | ID of the device to bind. It can be obtained by **queryDevices()**.| | onDisconnect | AsyncCallback<number> | Yes | Callback to be invoked when the bound peripheral device is disconnected. | | callback | AsyncCallback<RemoteDeviceDriver>| Yes| Binding result, including the device ID and remote object.| **Error codes** | ID| Error Message | | -------- | ---------------------------------------- | | 401 | The parameter check failed. | | 22900001 | ExternalDeviceManager service exception. | **Example** ```ts import deviceManager from "@ohos.driver.deviceManager"; import { BusinessError } from '@ohos.base'; import type rpc from '@ohos.rpc'; try { // For example, deviceId is 12345678. You can use queryDevices() to obtain the deviceId. deviceManager.bindDeviceDriver(12345678, (error : BusinessError, data : number) => { console.error(`Device is disconnected`); }, (error : BusinessError, data : deviceManager.RemoteDeviceDriver) => { if (error) { console.error(`bindDeviceDriver async fail. Code is ${error.code}, message is ${error.message}`); return; } console.info(`bindDeviceDriver success`); }); } catch (error) { console.error(`bindDeviceDriver fail. Code is ${error.code}, message is ${error.message}`); } ``` ## deviceManager.bindDevice bindDevice(deviceId: number, onDisconnect: AsyncCallback<number>): Promise<{deviceId: number, remote: rpc.IRemoteObject}>; Binds a peripheral device based on the device information returned by **queryDevices()**. This API uses a promise to return the result. You need to use [deviceManager.queryDevices](#devicemanagerquerydevices) to obtain the peripheral device information first. **Required permissions**: ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER **System capability**: SystemCapability.Driver.ExternalDevice **Parameters** | Name | Type | Mandatory| Description | | ------------ | --------------------------- | ---- | ---------------------------- | | deviceId | number | Yes | ID of the device to bind. It can be obtained by **queryDevices()**.| | onDisconnect | AsyncCallback<number> | Yes | Callback to be invoked when the bound peripheral device is disconnected. | **Return value** | Type | Description | | ---------------------------------------------------------------------------------------------- | -------------------------------------------- | | Promise<{deviceId: number, remote: [rpc.IRemoteObject](./js-apis-rpc.md#iremoteobject)}> | Promise used to return the device ID and **IRemoteObject** object.| **Error codes** | ID| Error Message | | -------- | ---------------------------------------- | | 401 | The parameter check failed. | | 22900001 | ExternalDeviceManager service exception. | **Example** ```ts import deviceManager from "@ohos.driver.deviceManager"; import { BusinessError } from '@ohos.base'; try { // For example, deviceId is 12345678. You can use queryDevices() to obtain the deviceId. deviceManager.bindDevice(12345678, (error : BusinessError, data : number) => { console.error(`Device is disconnected`); }).then(data => { console.info(`bindDevice success, Device_Id is ${data.deviceId}. remote is ${data.remote != null ? data.remote.getDescriptor() : "null"}`); }, (error: BusinessError) => { console.error(`bindDevice async fail. Code is ${error.code}, message is ${error.message}`); }); } catch (error) { console.error(`bindDevice fail. Code is ${error.code}, message is ${error.message}`); } ``` ## deviceManager.bindDeviceDriver11+ bindDeviceDriver(deviceId: number, onDisconnect: AsyncCallback<number>): Promise<RemoteDeviceDriver>; Binds a peripheral device based on the device information returned by **queryDevices()**. This API uses a promise to return the result. You need to use [deviceManager.queryDevices](#devicemanagerquerydevices) to obtain the peripheral device information first. **Required permissions**: ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER **System capability**: SystemCapability.Driver.ExternalDevice **Parameters** | Name | Type | Mandatory| Description | | ------------ | --------------------------- | ---- | ---------------------------- | | deviceId | number | Yes | ID of the device to bind. It can be obtained by **queryDevices()**.| | onDisconnect | AsyncCallback<number> | Yes | Callback to be invoked when the bound peripheral device is disconnected. | **Return value** | Type | Description | | --------------------------------- | -----------------------------------------| | Promise<RemoteDeviceDriver> | Promise used to return a **RemoteDeviceDriver** object.| **Error codes** | ID| Error Message | | -------- | ---------------------------------------- | | 401 | The parameter check failed. | | 22900001 | ExternalDeviceManager service exception. | **Example** ```ts import deviceManager from "@ohos.driver.deviceManager"; import { BusinessError } from '@ohos.base'; try { // For example, deviceId is 12345678. You can use queryDevices() to obtain the deviceId. deviceManager.bindDeviceDriver(12345678, (error : BusinessError, data : number) => { console.error(`Device is disconnected`); }).then((data: deviceManager.RemoteDeviceDriver) => { console.info(`bindDeviceDriver success, Device_Id is ${data.deviceId}. remote is ${data.remote != null ? data.remote.getDescriptor() : "null"}`); }, (error: BusinessError) => { console.error(`bindDeviceDriver async fail. Code is ${error.code}, message is ${error.message}`); }); } catch (error) { console.error(`bindDeviceDriver fail. Code is ${error.code}, message is ${error.message}`); } ``` ## deviceManager.unbindDevice unbindDevice(deviceId: number, callback: AsyncCallback<number>): void Unbinds a peripheral device. This API uses an asynchronous callback to return the result. **Required permissions**: ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER **System capability**: SystemCapability.Driver.ExternalDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | --------------------------- | ---- | ------------------------------ | | deviceId | number | Yes | ID of the device to unbind. It can be obtained by **queryDevices()**.| | callback | AsyncCallback<number> | Yes | Callback invoked to return the result. | **Error codes** | ID| Error Message | | -------- | ---------------------------------------- | | 401 | The parameter check failed. | | 22900001 | ExternalDeviceManager service exception. | **Example** ```ts import deviceManager from "@ohos.driver.deviceManager"; try { // For example, deviceId is 12345678. You can use queryDevices() to obtain the deviceId. deviceManager.unbindDevice(12345678, (error : BusinessError, data : number) => { if (error) { console.error(`unbindDevice async fail. Code is ${error.code}, message is ${error.message}`); return; } console.info(`unbindDevice success`); }); } catch (error) { console.error(`unbindDevice fail. Code is ${error.code}, message is ${error.message}`); } ``` ## deviceManager.unbindDevice unbindDevice(deviceId: number): Promise<number> Unbinds a peripheral device. This API uses a promise to return the result. **Required permissions**: ohos.permission.ACCESS_EXTENSIONAL_DEVICE_DRIVER **System capability**: SystemCapability.Driver.ExternalDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | ------ | ---- | ------------------------------ | | deviceId | number | Yes | ID of the device to unbind. It can be obtained by **queryDevices()**.| **Error codes** | ID| Error Message | | -------- | ---------------------------------------- | | 401 | The parameter check failed. | | 22900001 | ExternalDeviceManager service exception. | **Return value** | Type | Description | | --------------------- | ------------------------- | | Promise<number> | Promise used to return the device ID.| **Example** ```ts import deviceManager from "@ohos.driver.deviceManager"; import { BusinessError } from '@ohos.base'; try { // For example, deviceId is 12345678. You can use queryDevices() to obtain the deviceId. deviceManager.unbindDevice(12345678).then((data : number) => { console.info(`unbindDevice success, Device_Id is ${data}.`); }, (error : BusinessError) => { console.error(`unbindDevice async fail. Code is ${error.code}, message is ${error.message}`); }); } catch (error) { console.error(`unbindDevice fail. Code is ${error.code}, message is ${error.message}`); } ``` ## Device Represents the peripheral device information. **System capability**: SystemCapability.Driver.ExternalDevice | Name | Type | Mandatory| Description | | ----------- | ------------------- | ---- | ---------- | | busType | [BusType](#bustype) | Yes | Bus type.| | deviceId | number | Yes | ID of the peripheral device. | | description | string | Yes | Description of the peripheral device.| ## USBDevice Represents the USB device information. **System capability**: SystemCapability.Driver.ExternalDevice | Name | Type | Mandatory| Description | | --------- | ------ | ---- | ------------------- | | vendorId | number | Yes | Vendor ID of the USB device. | | productId | number | Yes | Product ID of the USB device.| ## BusType Enumerates the device bus types. **System capability**: SystemCapability.Driver.ExternalDevice | Name| Value | Description | | ---- | --- | ------------- | | USB | 1 | USB bus.| ## RemoteDeviceDriver11+ Represents information about a remote device driver. **System capability**: SystemCapability.Driver.ExternalDevice | Name | Type | Mandatory| Description | | --------- | ------ | ---- | ------------------- | | deviceId11+ | number | Yes | ID of the peripheral device. | | remote11+ | [rpc.IRemoteObject](./js-apis-rpc.md#iremoteobject) | Yes | Remote driver object.|