> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Devices

> Connect and manage Qualcomm® dev kits — activate, flash, and communicate via SSH.

## Connecting a Device

Devices connect to the extension over **SSH** — a network-based connection supported on both Qualcomm Linux and Ubuntu. Add any device by IP address, which is useful for headless setups or devices on the same network.

## Available Devices

When a device is plugged into the host, it appears in the **Available Devices** section along with metadata such as dev kit type, serial number, connection status, and mode (USB, WiFi, etc.).

<img src="https://mintcdn.com/qualcomm-prod/RietNfmN9gs2vaJw/Tools/QVSCE/images/devices_available.png?fit=max&auto=format&n=RietNfmN9gs2vaJw&q=85&s=86c20a8929cc42318d85393ed1b54212" alt="Available devices list" width="670" height="199" data-path="Tools/QVSCE/images/devices_available.png" />

## Activating a Device

1. Open the **Dashboard → Devices** section.
2. Locate your device in the **Available Devices** list.
3. Click **Activate**.

The activated device becomes the **Active Device** — the target for builds, deploys, flashes, and debug sessions. It shows connection mode (SSH or EDL) and available sample applications.

<img src="https://mintcdn.com/qualcomm-prod/RietNfmN9gs2vaJw/Tools/QVSCE/images/devices_active.png?fit=max&auto=format&n=RietNfmN9gs2vaJw&q=85&s=22d4796b9b434d0a565d33420f4fc6fa" alt="Active device pane" width="654" height="346" data-path="Tools/QVSCE/images/devices_active.png" />

<Note>
  Only one device can be active at a time. Switching the active device
  automatically retargets all build and deploy operations.
</Note>

## Device Connectivity — WiFi

To connect a device to WiFi, open the connectivity options menu from the active device pane.

<img src="https://mintcdn.com/qualcomm-prod/RietNfmN9gs2vaJw/Tools/QVSCE/images/devices_connectivity_option.png?fit=max&auto=format&n=RietNfmN9gs2vaJw&q=85&s=c090f14cf55dbe97615d00efed0b66c5" alt="Connectivity options menu" width="763" height="129" data-path="Tools/QVSCE/images/devices_connectivity_option.png" />

The extension lists available WiFi networks sorted by signal strength.

<img src="https://mintcdn.com/qualcomm-prod/RietNfmN9gs2vaJw/Tools/QVSCE/images/devices_available_networks.png?fit=max&auto=format&n=RietNfmN9gs2vaJw&q=85&s=012b6f89db1cc37ec23d33a004bb39db" alt="Available WiFi networks" width="449" height="273" data-path="Tools/QVSCE/images/devices_available_networks.png" />

Select a network and enter the credentials. Once connected, the connectivity status appears next to the device.

<img src="https://mintcdn.com/qualcomm-prod/RietNfmN9gs2vaJw/Tools/QVSCE/images/devices_wifi_connected.png?fit=max&auto=format&n=RietNfmN9gs2vaJw&q=85&s=6428f36d6112180f1290ff1b7a0fc5cb" alt="Device connected via WiFi" width="364" height="155" data-path="Tools/QVSCE/images/devices_wifi_connected.png" />

## Adding a Device by IP Address (SSH)

1. In the Devices section, click **Add Device**.
2. Enter the device IP address.
3. Select **SSH** as the connection method.
4. Click **Connect**.

## SSH Setup

SSH connections are supported for both Ubuntu and Qualcomm Linux devices. You will need:

* Target device powered on and accessible on the network
* SSH client installed on the host
* Both machines on the same network

### Device Setup

Get the device's IP address and username via a serial/UART console:

```bash theme={null}
ip addr show
```

Default usernames: **ubuntu** (Ubuntu OS) or **root** (Qualcomm Linux).

### Extension Configuration

Navigate to the Devices page and click the **Connect device via SSH** button to open the dialog.

<img src="https://mintcdn.com/qualcomm-prod/ajmq44Q1W0vLtUT4/Tools/QVSCE/images/ssh-setup-devices-page.png?fit=max&auto=format&n=ajmq44Q1W0vLtUT4&q=85&s=c35d8719441702988a082b51b0c0b393" alt="SSH setup — Devices page" width="650" height="507" data-path="Tools/QVSCE/images/ssh-setup-devices-page.png" />

There are two tabs:

<img src="https://mintcdn.com/qualcomm-prod/C3kDUdllcH5eq3jY/Tools/QVSCE/images/ssh-setup-generate-key.png?fit=max&auto=format&n=C3kDUdllcH5eq3jY&q=85&s=24ee86dd3fb9e1629cd9e1059b3e8562" alt="SSH setup — Generate New SSH Key tab" width="1822" height="992" data-path="Tools/QVSCE/images/ssh-setup-generate-key.png" />

**Generate New SSH Key** — creates a new key pair on the host:

* **SSH Key Name** — name for the generated key file
* **SSH Key Folder** — directory to save the key (defaults to `~/.ssh`)
* **Private SSH Key Passphrase** — optional passphrase
* **Device Identifier** — enter either an IP Address (e.g. `10.92.162.215`) or Device Name (e.g. `mydevice.local`)
* **Device Username** — username on the device (e.g. `ubuntu`)
* **Device Password** — device password (used to copy the public key)
* **Port** — `22` (default)

Click **Create and Connect** to generate the key, copy it to the device, and connect.

<img src="https://mintcdn.com/qualcomm-prod/C3kDUdllcH5eq3jY/Tools/QVSCE/images/ssh-setup-connection.png?fit=max&auto=format&n=C3kDUdllcH5eq3jY&q=85&s=3c603826c4b0a0c22ed3f82a8ca34a31" alt="SSH setup — Use Existing SSH Key tab" width="1842" height="1005" data-path="Tools/QVSCE/images/ssh-setup-connection.png" />

**Use Existing SSH Key** — connects with a key already on the host:

* **Private SSH Key File Path** — path to your existing private key (e.g. `~/.ssh/my-ssh`)
* **Private SSH Key Passphrase** — optional passphrase
* **Device Identifier** — IP Address or Device Name
* **Device Username** — username on the device
* **Device Password** — device password
* **Port** — `22` (default)

Click **Connect** to establish the SSH connection.

A successful connection looks like this:

<img src="https://mintcdn.com/qualcomm-prod/ajmq44Q1W0vLtUT4/Tools/QVSCE/images/ssh-setup-connection-successful.png?fit=max&auto=format&n=ajmq44Q1W0vLtUT4&q=85&s=5832e3874dfb26bf934b3779618e3be0" alt="SSH connection successful" width="577" height="650" data-path="Tools/QVSCE/images/ssh-setup-connection-successful.png" />

Activate the device to set it as the active target:

<img src="https://mintcdn.com/qualcomm-prod/RietNfmN9gs2vaJw/Tools/QVSCE/images/ssh-setup-active-device.png?fit=max&auto=format&n=RietNfmN9gs2vaJw&q=85&s=8b65e088039f1168af3aec4613f62ee7" alt="SSH device activated" width="650" height="504" data-path="Tools/QVSCE/images/ssh-setup-active-device.png" />

## Flashing Device Software

<Steps>
  <Step title="Navigate to Downloads">
    Go to **Dashboard → Downloads → Device Software tab**.
  </Step>

  <Step title="Select the image">
    Choose the firmware image that matches your dev kit and OS.
  </Step>

  <Step title="Click Flash">
    Click the **Flash** button next to the image.

    <Warning>
      **Do not disconnect the device during flashing.** An interrupted flash can destabilize the device. Recovery may require multiple power-cycle + manual EDL + reflash cycles.
    </Warning>
  </Step>

  <Step title="Verify EDL mode (if flash fails)">
    If flashing fails, verify the device is in EDL mode:

    ```bash theme={null}
    lsusb
    ```

    Look for:

    ```text theme={null}
    Bus 002 Device 002: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)
    ```
  </Step>
</Steps>

## Ubuntu Device Setup

For Rubik Pi and IQ-9075 EVK devices with Ubuntu OS, follow these steps after flashing:

1. From the Dashboard, navigate to the **Operating Systems** tab and click **Flash** to begin flashing the OS image. A dialog will direct you to EDL mode instructions.

<img src="https://mintcdn.com/qualcomm-prod/RietNfmN9gs2vaJw/Tools/QVSCE/images/dashboard-os-tab.png?fit=max&auto=format&n=RietNfmN9gs2vaJw&q=85&s=18cf0b12bbdc4fd43c22db6192598292" alt="Dashboard — Operating Systems tab" width="650" height="357" data-path="Tools/QVSCE/images/dashboard-os-tab.png" />

2. Once the device enters EDL mode, it appears in the Available Devices section. Activate it, then go back to Dashboard and click **Flash**.

<img src="https://mintcdn.com/qualcomm-prod/RietNfmN9gs2vaJw/Tools/QVSCE/images/flash-dialog.png?fit=max&auto=format&n=RietNfmN9gs2vaJw&q=85&s=34724c6c5b0402be0405beada756ff1f" alt="Flash dialog" width="598" height="172" data-path="Tools/QVSCE/images/flash-dialog.png" />

3. After flashing completes and the device shows as **Active**, click the **SDKs** tab in the Downloads section to configure the device with all required packages (approximately 15–20 minutes).

<img src="https://mintcdn.com/qualcomm-prod/RietNfmN9gs2vaJw/Tools/QVSCE/images/dashboard-sdk-tab.png?fit=max&auto=format&n=RietNfmN9gs2vaJw&q=85&s=72eab2e8f90b4ea6d21334a2368860ec" alt="Dashboard — SDK tab" width="650" height="268" data-path="Tools/QVSCE/images/dashboard-sdk-tab.png" />

<Warning>
  If flashing fails, the device may need to be recovered. Do not disconnect the
  device during flashing.
</Warning>

### UFS Provisioning

If you encounter UFS-related issues, consult the provisioning guide for your specific hardware:

<img src="https://mintcdn.com/qualcomm-prod/RietNfmN9gs2vaJw/Tools/QVSCE/images/UFS.png?fit=max&auto=format&n=RietNfmN9gs2vaJw&q=85&s=f8398cf49fb917c5ef726b881e3dc23f" alt="UFS provisioning" width="917" height="450" data-path="Tools/QVSCE/images/UFS.png" />

### CDT Configuration

Custom Device Tree (CDT) configuration may be required for some hardware setups:

<img src="https://mintcdn.com/qualcomm-prod/RietNfmN9gs2vaJw/Tools/QVSCE/images/CDT.png?fit=max&auto=format&n=RietNfmN9gs2vaJw&q=85&s=03eb09f46cd7ca8621a5aaccda521bab" alt="CDT configuration" width="917" height="451" data-path="Tools/QVSCE/images/CDT.png" />

## Change Overlay Configuration

The **Change Overlay Configuration** feature lets you switch the software overlay stack on your active device between Qualcomm Open Source and Qualcomm Proprietary implementations for individual hardware subsystems. This is useful when evaluating open-source drivers, testing proprietary optimized stacks, or reproducing issues specific to one software path.

<Note>
  Supported only on devices running **Qualcomm Linux 2.0**. Operates on the
  currently **active** device only. Ensure the correct device is set as active
  before applying changes. Applying a new configuration replaces the device's
  active overlay setup and **requires a restart**.
</Note>

### Accessing the Feature

<Steps>
  <Step title="Open the Dashboard">Locate the **Active Device** section.</Step>

  <Step title="Open the overflow menu">
    Click the **⋮** (More options) button on the active device card.
  </Step>

  <Step title="Select the feature">
    Choose **Change Overlay Configuration** from the dropdown.
  </Step>
</Steps>

<img src="https://mintcdn.com/qualcomm-prod/C3kDUdllcH5eq3jY/Tools/QVSCE/images/overlay_menu.png?fit=max&auto=format&n=C3kDUdllcH5eq3jY&q=85&s=3df5f3369f8313b0281ef19f76cff48c" alt="Active device card — ⋮ menu with Change Overlay Configuration option" width="1833" height="972" data-path="Tools/QVSCE/images/overlay_menu.png" />

### The Configuration Dialog

Each row lets you pick between the **Qualcomm Open Source** and **Qualcomm Proprietary** implementation of a subsystem. A green dot marks the overlay currently active on the device; selecting a different option labels the previous one **(active)** and enables **Apply Configuration**.

<Tabs>
  <Tab title="Default state">
    <Frame caption="Every overlay set to its open-source variant — no pending changes">
      <img src="https://mintcdn.com/qualcomm-prod/fI394-r7UzwPirkn/Tools/QVSCE/images/overlay_dialog.png?fit=max&auto=format&n=fI394-r7UzwPirkn&q=85&s=72c04a8f8dad9c3b47eb94d6cfe481cd" alt="Change Overlay Configuration dialog in the default all-open-source state" width="874" height="572" data-path="Tools/QVSCE/images/overlay_dialog.png" />
    </Frame>
  </Tab>

  <Tab title="Pending change">
    <Frame caption="Graphics and Audio switched to Qualcomm Proprietary; previous selections marked (active)">
      <img src="https://mintcdn.com/qualcomm-prod/fI394-r7UzwPirkn/Tools/QVSCE/images/overlay_dialog_pending.png?fit=max&auto=format&n=fI394-r7UzwPirkn&q=85&s=c50da0c35cf35997ee8f0a3154b22d30" alt="Change Overlay Configuration dialog with Graphics and Audio pending a switch to proprietary overlays" width="877" height="544" data-path="Tools/QVSCE/images/overlay_dialog_pending.png" />
    </Frame>
  </Tab>
</Tabs>

| Column                   | Description                                                       |
| ------------------------ | ----------------------------------------------------------------- |
| **Overlay**              | The hardware subsystem being configured                           |
| **Qualcomm Open Source** | Open-source driver/stack. **No overlay** means none is available. |
| **Qualcomm Proprietary** | Qualcomm-optimized proprietary stack.                             |

<AccordionGroup>
  <Accordion title="Graphics" icon="display">
    **Freedreno** (open-source Mesa/DRM) vs. **Adreno** (Qualcomm proprietary
    GPU driver)
  </Accordion>

  <Accordion title="Video" icon="video">
    Open-source vs. Qualcomm proprietary video stack
  </Accordion>

  <Accordion title="Camera" icon="camera">
    **Libcamera** (open-source) vs. **CamX** (Qualcomm proprietary pipeline)
  </Accordion>

  <Accordion title="Audio" icon="volume-high">
    **ASoC** (Linux ALSA/ASoC) vs. **AudioReach** (Qualcomm proprietary audio)
  </Accordion>

  <Accordion title="Sensors" icon="gauge">
    **No overlay** (no open-source option) vs. **Sensors** (Qualcomm
    proprietary)
  </Accordion>

  <Accordion title="Plugins" icon="plug">
    **No overlay** (no open-source option) vs. **GST Plugins** (Qualcomm
    proprietary GStreamer plugins)
  </Accordion>

  <Accordion title="Vision" icon="eye">
    **No overlay** (no open-source option) vs. **FastCV Vision** (Qualcomm
    proprietary computer vision)
  </Accordion>
</AccordionGroup>

Bulk selection shortcuts sit at the bottom of the table:

<CardGroup cols={2}>
  <Card title="All Open Source" icon="code-branch">
    Sets every configurable overlay to its open-source variant
  </Card>

  <Card title="All Proprietary" icon="shield">
    Sets every configurable overlay to its Qualcomm proprietary variant
  </Card>
</CardGroup>

### Applying the Configuration

After making your selections, click **Apply Configuration** in the bottom-right corner. The dialog closes and the extension begins applying the overlays to the device.

The active device card immediately shows a progress bar:

<img src="https://mintcdn.com/qualcomm-prod/C3kDUdllcH5eq3jY/Tools/QVSCE/images/overlay_refreshing.png?fit=max&auto=format&n=C3kDUdllcH5eq3jY&q=85&s=5e6cc8864b4e5f1974ad54029918f960" alt="Device card — refreshing package index" width="1847" height="1024" data-path="Tools/QVSCE/images/overlay_refreshing.png" />

<Warning>
  Do not disconnect the device or close VS Code while this step is in progress.
</Warning>

Depending on the number of overlays changed and network conditions, this may take several minutes.

### Post-Apply Status

**Success:** The device card shows **Overlay configuration applied successful** in green and returns to **Active – SSH** status. A notification confirms: *Overlay configuration applied successfully.*

<img src="https://mintcdn.com/qualcomm-prod/C3kDUdllcH5eq3jY/Tools/QVSCE/images/overlay_success.png?fit=max&auto=format&n=C3kDUdllcH5eq3jY&q=85&s=ce574dc0b5982cbe081f6db8176a922a" alt="Device card — overlay configuration applied successfully" width="1847" height="1060" data-path="Tools/QVSCE/images/overlay_success.png" />

<Tip>
  The device may reboot automatically after a successful overlay application. If
  it does, the device disappears from the Active Device card. Reconnect via SSH
  and reactivate it from the Available Devices section. To verify which overlays
  are applied, reopen the **Change Overlay Configuration** dialog from the ⋮
  menu.
</Tip>

**Failed application:** If the overlay could not be verified after installation, the device card shows **Overlay apply failed** in red:

<img src="https://mintcdn.com/qualcomm-prod/C3kDUdllcH5eq3jY/Tools/QVSCE/images/overlay_failed.png?fit=max&auto=format&n=C3kDUdllcH5eq3jY&q=85&s=9d5bbc91796b9acf41f21c71e9eef1c5" alt="Device card — overlay apply failed" width="1848" height="1050" data-path="Tools/QVSCE/images/overlay_failed.png" />

A notification toast provides additional detail: *Overlay installation successful! Failed to verify Overlay(s).*

## Verify Device in EDL mode

```bash theme={null}
lsusb
```

Expected output when in EDL / QDL mode:

```text theme={null}
Bus 002 Device 002: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)
```
