> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.stereolabs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.stereolabs.com/_mcp/server.

# Developing with ZED X on a PC

When working on projects for embedded platforms such as Jetsons, there may be situations where you prefer to perform development tasks on a Desktop machine. To assist you in this scenario, we have provided the following guidelines.

## ZED SDK Streaming

By streaming the data over the local network, **any ZED SDK application** can access a low-latency stream, allowing developers to work with the data as if it were a camera directly connected to their machine.

In this article, we will guide you through the steps required to set up and connect your machine for ZED SDK Streaming.

You can learn more about the ZED SDK Streaming and how it works [in the Local Streaming section](/docs/development/zed-sdk/modules/camera/local-network-streaming/).

### Prerequisites

Make sure that you have performed the following before starting this guide:

* Set up your NVIDIA® Jetson™ device for ZED X using [this guide](/docs/products/cameras/zedx/#setting-up-your-system-for-zed-x-zed-x-mini-and-zed-x-nano).
* Have access to the NVIDIA® Jetson™ device physically or remotely via SSH.
* Installed the ZED SDK on your **local machine** and on the **NVIDIA® Jetson™ device**.

### Setting up the NVIDIA® Jetson™ device for ZED SDK Streaming

To enable ZED SDK Streaming, the remote device must run an application that *streams* ZED data.

This application is provided in a sample from the ZED SDK. Navigate to the corresponding directory and run the application with the following commands:

**`C++`**

```bash C++
# On the NVIDIA® Jetson™ device
cd /usr/local/zed/samples/camera\ streaming/single_sender/cpp

mkdir build && cd build
cmake .. && make

./ZED_Streaming_Sender
```

**`Python`**

```bash Python
# On the NVIDIA® Jetson™ device
cd /usr/local/zed/samples/camera\ streaming/single_sender/python

python3 streaming_sender.py
```

The following log will be displayed, giving the port number that the device is streaming to:

```bash
[Sample] Streaming on port 30000 
[Streaming] Streaming is now running.... 
```

> **Note**
>
> Don't hesitate to take a look at the source code of the sample, which gives an example to run ZED SDK Streaming in your own applications.

### Connect to the stream on your local machine

Now that the device is streaming data, you can visualize it live using the ZED SDK tools. Let's run ZED\_Depth\_Viewer:

```bash
./ZED_Depth_Viewer
```

In the top left corner, click on the icon:

![Depth Viewer connect button](/_fern-img/1e1796d7ea73257ae8b90d6a95792a1c5d1b07e0b857ca0247b6a980ceff24d3.webp)

The following window will open. Enter the IP of the NVIDIA® Jetson™ device, as well as the port used by the sender (by default: 30000).

![Depth Viewer connect modal](/_fern-img/a96d2349d683e3c8d451da4c03cec2f81f2f6fc6dd2da93784c5988407f9ef90.webp)

After a few moments, you should have a live view of the ZED camera streaming from the device!

### Connect using the ZED SDK

Now that we have the stream up and running, let's use it in our ZED SDK application.

Say we have the following C++ application which retrieves images from a ZED camera connected physically to the host machine.

**`C++`**

```cpp C++
// Create a ZED camera object
Camera zed;

// Set init parameters as default
InitParameters init_parameters;

// Open the camera
auto err = zed.open(init_parameters);
if (err != ERROR_CODE::SUCCESS) {
    return EXIT_FAILURE;
}

// Capture ZED images forever
sl::Mat image;
while (true) {
    // Grab an image
    err = zed.grab();
    // A new image is available if grab() returns ERROR_CODE::SUCCESS
    if (err == ERROR_CODE::SUCCESS) {

        // Get the left image
        zed.retrieveImage(image, VIEW::LEFT);
    }
}

// Close the camera
zed.close();
return EXIT_SUCCESS;

```

To change the input to a ZED SDK stream, the only change required is to change the input in `initParameters`:

**`C++`**

```cpp C++
// Create a ZED camera object
Camera zed;

// Set init parameters as default
InitParameters init_parameters;
init_parameters.input.setFromStream("192.168.X.X", 30000); // Set device IP and port here

// Open the camera
auto err = zed.open(init_parameters);
if (err != ERROR_CODE::SUCCESS) {
    return EXIT_FAILURE;
}
[...]
```

Good job! You can now develop on your local PC while using a ZED camera on a remote device.