Metadata-Version: 2.5
Name: dreamscale-pyrealsense2
Version: 2.58.4
Summary: pyrealsense2 for Linux aarch64 (Jetson), built from unmodified librealsense with its RSUSB backend.
Project-URL: Homepage, https://app.dreamscalelabs.com
Project-URL: Source, https://github.com/IntelRealSense/librealsense
Author: Dreamscale Labs
License-Expression: Apache-2.0
License-File: LICENSE
License-File: NOTICE.md
Keywords: aarch64,jetson,realsense,robotics,rsusb
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: <3.15,>=3.11
Description-Content-Type: text/markdown

# dreamscale-pyrealsense2

`pyrealsense2` for Linux aarch64 (NVIDIA Jetson and other arm64 boards), built
with librealsense's RSUSB backend. Install it and `import pyrealsense2` as usual.

The official aarch64 wheels use the V4L backend, which needs a kernel patched for
RealSense cameras. Stock Jetson kernels are not patched. RSUSB talks to the cameras
over USB with libusb instead, so it works on an unpatched kernel.

This is the Python module from unmodified librealsense source, built by Dreamscale
Labs for the `dreamscale` SDK, which installs it on aarch64 Linux. It is not
affiliated with or endorsed by RealSense or Intel. librealsense is Apache-2.0
licensed; its `LICENSE` and `NOTICE.md` ship in this wheel.

| | |
|---|---|
| librealsense | 2.58.4, pinned to its release commit |
| Backend | RSUSB (libusb, linked in statically) |
| Platform | Linux aarch64, glibc 2.28 or newer (manylinux_2_28) |
| Python | 3.11 to 3.14 |
| Modules | `pyrealsense2` only |

Do not install it alongside the official `pyrealsense2` package; both provide the
same module.

## USB access

RSUSB opens cameras through `/dev/bus/usb`, which needs RealSense's udev rules. The
rules ship inside the package. Install them once per machine, then replug the
cameras:

```bash
RULES="$(python -c 'import pathlib, pyrealsense2; print(pathlib.Path(pyrealsense2.__file__).with_name("99-realsense-libusb.rules"))')"
sudo cp "$RULES" /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger
```

## Building and releasing

These notes are for maintainers of `Dreamscale-Labs/mvp`, where the package lives
in `mvp/realsense-wheel/`.

`build.sh` builds one wheel inside a `quay.io/pypa/manylinux_2_28_<arch>` container
and smokes it in a clean environment:

```bash
docker run --rm -v "$PWD/mvp/realsense-wheel:/work:ro" -v "$PWD/dist:/out" \
  quay.io/pypa/manylinux_2_28_aarch64 /work/build.sh 3.12 /out
```

The same script also builds on x86_64 with the x86_64 image, which tests a change
without an arm64 machine; only aarch64 wheels are published.

The `realsense-wheel` workflow builds and smokes all four wheels on pull requests
that touch this directory. To release:

1. Set `version` in `pyproject.toml`. A new librealsense release also updates
   `librealsense-tag` and `librealsense-commit`; a rebuild of the same release uses
   a post-release (`2.58.4.post1`).
2. Merge to `main`, then push the tag `realsense-v<version>`. The workflow
   publishes through PyPI trusted publishing, from the `pypi-realsense`
   environment.
3. Point the SDK's `realsense` extra at the new version.
