hdc\_std \(OpenHarmony Device Connector\) is a command line tool provided by OpenHarmony for debugging. With this tool, you can interact with real devices or simulators from a Windows or Linux OS.
This section describes how to set up the hdc\_std environment and use its common commands.
OpenHarmony Device Connector (hdc_std) is a command-line tool used for debugging. You can use it on a Windows, Linux, or macOS system to interact with real devices or simulators.
The following describes how to obtain and use hdc_std.
Obtain **hdc\_std** from the **prebuilt** directory at [developtools\_hdc\_standard](https://gitee.com/openharmony/developtools_hdc_standard).
**Example:**
## How to Obtain
To obtain hdc\_std on Windows, obtain the executable file **hdc\_std.exe** from **prebuilt/windows** and place it in a directory on the disk.
Obtain hdc_std from the **toolchains** directory of the OpenHarmony SDK.
## Important Notes<a name="section19543134915210"></a>
**Example**
- If an exception occurs when you are using hdc\_std, run the **hdc\_std kill** command to kill the hdc\_std service or run the **hdc\_std start -r** command to restart the service process.
- If no device information is obtained after **hdc\_std list targets** is executed, use the task manager to check whether the **hdc.exe** process exists. If it exists, kill the process.
If you use hdc_std on Windows, obtain the SDK for Windows and copy **hdc_std.exe** from **toolchains** to a directory on the disk.
- If an exception occurs when you are using hdc_std, run the **hdc_std kill** command to terminate the hdc_std service or run the **hdc_std start -r** command to restart the service process.
- If no device information is obtained after **hdc_std list targets** is executed, check whether the hdc_std process exists in the **Task Manager**. If yes, terminate it.
| Required information | hdc help or version information. |
| Required information| hdc_std help or version information.|
Example:
```
hdc_std -h / hdc_std help
```
```
hdc_std -v / hdc_std version
```
Examples:
hdc\_std -h / hdc\_std help
-**-l 0-5**
hdc\_std -v / hdc\_std version
Sets the levels of the logs generated during the running of the tool. The default value is **LOG_INFO**.
### -t key<a name="section1180555115159"></a>
**Table 2** Command description
Connects to a device with a specified key.
| Parameter| Description|
| -------- | -------- |
| 0 | LOG_OFF |
| 1 | LOG_FATAL|
| 2 | LOG_WARN |
| 3 | LOG_INFO |
| 4 | LOG_DEBUG|
| 5 | LOG_ALL |
Example:
```
hdc_std -l5 start
```
-**-t key**
Connects to a device based on the specified key.
**Table 2** Command description
**Table 3** Command description
| Parameter | Description |
| Parameter| Description|
| -------- | -------- |
| key | Key that identifies the device. The value is in the *IP address:Port* format or is a USB serial number. |
| key | Key that identifies the device to connect. The value can be in the *IP address:port number* format or be a USB serial number.|
| **Return Value** | **Description** |
| 1. error: device '***' not found<br/>2. Nothing to do... | 1. The device does not exist<br>2. The command appended to **-t key** does not exist. |
| 1. error: device '\*\*\*' not found<br>2. Nothing to do ..| 1. The device does not exist.<br>2. The command appended to **-t key** does not exist.|
Examples:
Example:
This option must be used together with a specific operation command. The following uses the shell command as an example:
**-t key** must be used with a command. The following uses **shell** as an example:
**hdc\_std list targets**\(obtain device information\)
**hdc_std list targets** (obtain device information)
**hdc\_std -t _key_ shell**\(replace _key_ with the device information obtained\)
**hdc_std -t *key* shell** (replace *key* with the device identifier obtained)
>You can connect to multiple devices from the device you use for development. Each device has a unique key. The key can be _IP address:Port number_ for a device connected through a network or the serial number for a device connected through USB.
> **NOTE**<br>
> You can connect to multiple devices from the device you use for development. Each device has a unique key. The key can be *IP address:port number* for a device to be connected over the network or the serial number for a device to be connected through USB. A specific command must be used with this command.
## Querying the Device List<a name="section174891132104218"></a>
-**checkserver**
Obtains the client and server version information.
**Table 4** Command description
| Return Value| Description|
| -------- | -------- |
| Client version: server version: | Client and server version information.|
The following command is used to query the device list:
Example:
### list targets\[-v\]<a name="section12911142313168"></a>
```
hdc_std checkserver
```
Displays all the connected devices.
**Table 3** Command description
## Displaying Device Information
| Parameter | Description |
Run the following command to display all connected devices:
```
list targets[-v]
```
**Table 5** Command description
| Parameter| Description|
| -------- | -------- |
| -v | Prints detailed device information. |
| **Return Value** | **Description** |
| 1. Device information<br/>2. [Empty] | 1. A list of connected devices.<br/>2. No device information is found. |
| -v | Displays detailed device information.|
| **Return Value** | **Description**|
| 1. Device information<br>2. [Empty]| 1. A list of connected devices.<br>2. No device information is found.|
Examples:
hdc\_std list targets
Example:
```
hdc_std list targets
```
hdc\_std list targets -v
```
hdc_std list targets -v
```
## Service Process Commands<a name="section680531510497"></a>
Mounts a partition, such as **/system**, with the read and write permissions.
Mounts the **/system** partition in read/write mode.
**Table 4** Command description
**Table 6** Command description
| Parameter | Description |
| Parameter| Description|
| -------- | -------- |
| None | None |
| **Return Value** | **Description** |
| 1. Mount finish<br/>2. Returned information | 1. Information returned when the operation is successful.<br/>2. Information returned when the operation fails. |
| –| –|
| **Return Value**| **Description**|
| 1. Mount finish<br>2. Error information| 1. The operation is successful.<br>2. The operation fails.|
Connects to a device with a specified IP address and port number.
-**tconn host[:port][-remove]**
**Table 7** Command description
Connects to a device with the specified IP address and port number.
| Parameter | Description |
**Table 9** Command description
| Parameter| Description|
| -------- | -------- |
| host[:port] | IP address and port number of the device to be connected. |
| -remove | Disconnects from the specified device. |
| **Return Value** | **Description** |
| 1. Error information<br/>2. None | 1. The operation fails.<br/>2. The operation is successful. |
| host[:port] | IP address and port number for the device to connect.|
| -remove | Disconnects from the specified device.|
| **Return Value**| **Description**|
| 1. Error information<br>2. –| 1. The operation fails.<br>2. The operation is successful.|
Example:
Example:
```
hdc_std tconn 192.168.0.100:8710
```
hdc\_std tconn 192.168.0.100:8710
### tmode usb<a name="section17840182562015"></a>
Restarts the daemon process and connects to the device using USB.
-**tmode usb**
**Table 8** Command description
Restarts the daemon process and connects to the device using USB preferentially.
| Parameter | Description |
**Table 10** Command description
| Parameter| Description|
| -------- | -------- |
| None | None |
| **Return Value** | **Description** |
| 1. Error information<br/>2. None | 1. The operation fails.<br/>2. The operation is successful. |
| –| –|
| **Return Value**| **Description**|
| 1. Error information<br>2. –| 1. The operation fails.<br>2. The operation is successful.|
Example:
```
hdc_std tmode usb
```
Example:
hdc\_std tmode usb
### tmode port _port-number_<a name="section101113462113"></a>
-**tmode port port-number**
Restarts the daemon process and connects to the device over TCP.
Restarts the daemon process and connects to the device over TCP preferentially. If the TCP connection fails, a USB connection will be initiated.
**Table 9** Command description
**Table 11** Command description
| Parameter | Description |
| Parameter| Description|
| -------- | -------- |
| port-number | Port number used to connect to the device. |
| **Return Value** | **Description** |
| 1. Error information<br/>2. None | 1. The operation fails.<br/>2. The operation is successful. |
| port-number | Port used to connect to the device.|
| **Return Value**| **Description**|
| 1. Error information<br>2. –| 1. The operation fails.<br>2. The operation is successful.|
Example:
Example:
```
hdc_std tmode port 8710
```
> **NOTE**<br>
> After this command is executed, the remote daemon process exits and restarts, and a TCP connection is set up by default. If the port number is not specified in the command, a random port will be used to connect to the device.
>After this command is executed, the remote daemon process exits and restarts, and the TCP connection is enabled by default. If you do not include **port-number** in this command, a random port will be used to connect to the device.
### hdc\_std Fails to Connect to a Device<a name="section74019384588"></a>
## FAQs
### Failed to Connect to a Device from hdc_std
-**Symptom**
**\[Empty\]** is displayed in the output after the **hdc\_std list targets** command is executed.
After the **hdc_std list targets** command is executed, **[Empty]** is displayed.
-**Solutions**
1. The device cannot be identified.
-**Solution**
Check whether **HDC Device** exists in the universal serial bus device of the device manager. If **HDC Device** does not exist, the device cannot be connected. In this case, remove and then insert the device or burn the latest image for the device.
- The device cannot be identified.
2. hdc\_std works improperly.
Check whether **HDC Device** exists under the **Universal Serial Bus controllers** in the **Device Manager**. If **HDC Device** does not exist, the device cannot be connected. In this case, disconnect and then reconnect the USB connection between the test PC and the OpenHarmony device, or burn the latest image.
Run the **hdc kill** or **hdc start -r** command to kill or restart the hdc service. Then, run the **hdc list targets** command to check whether device information can be obtained.
- hdc_std works improperly.
3. hdc\_std does not match the device.
Run the **hdc kill** command to terminate the hdc_std process or run the **hdc start -r** command to restart the hdc service. Then, run the **hdc list targets** command to check whether device information can be obtained.
If the latest image is burnt on the device, the latest hdc\_std version must be used. As hdc\_std is updated continuously, obtain hdc\_std of the latest version from the **developtools\_hdc\_standard** repository in the **prebuilt** directory.
- hdc_std does not match the device.
If the latest image is burnt on the device, the latest hdc_std version must be used.
## hdc\_std Fails to Run<a name="section6825095917"></a>
### hdc_std Fails to Run
-**Symptom**
The **hdc\_std.exe** file does not run after being clicked.
After you click **hdc_std.exe**, the file fails to execute.
-**Solution**
**hdc_std.exe** requires no installation. You can use it after placing it to a local directory or adding the tool path to environment variables. Run the **cmd** command and then run the **hdc_std** command to start the tool.
### Accessing a Server from the Client
1. Run the **kill** command to stop the local server.
2. Run the **-s [ip:]port -m** command to start the remote server.
Example:
```
hdc_std -s severIP:8710 -m
```
3. Run **-s [ip:]port***command* to execute a command on the remote server.
Example:
```
hdc_std -s severIP:8710 list targets
```
-**Solutions**
**hdc\_std.exe** requires no installation. It can be directly used on a disk or added to environment variables. Open the cmd window and run the **hdc\_std** command to use **hdc\_std.exe**.