# 4. Software & OS Reference

### 4.1 dcs-deploy Quick Reference

The dcs-deploy Python tool handles all flashing operations. Key usage patterns:

<table><thead><tr><th width="313.42822265625">Task</th><th>Command</th></tr></thead><tbody><tr><td>Standard flash (Orin NX, 512 GB NVMe, DCS2)</td><td>python3 dcs_deploy.py flash orin_nx 512 2.0 nvme full</td></tr><tr><td>Standard flash (Orin NX, 512 GB NVMe, DCS1.2)</td><td>python3 dcs_deploy.py flash orin_nx 512 1.2 nvme full</td></tr><tr><td>Flash with custom rootfs</td><td>python3 dcs_deploy.py flash orin_nx 512 2.0 nvme full --rootfs ~/rootfs.tar.bz2</td></tr><tr><td>Flash with custom app partition size</td><td>python3 dcs_deploy.py flash ... --app_size 100</td></tr><tr><td>View all options</td><td>python3 dcs_deploy.py flash -h</td></tr></tbody></table>

{% hint style="info" %}
**Note:**

Allied Vision camera config is config\_7 (orin\_nx 512\_avt 2.0). Standard configs (config\_6) use OV9281/IMX477 device trees. Flashing the wrong config is the most common camera setup error — the AVT config loads the Allied Vision kernel module which will probe for Allied Vision cameras on CSI at boot.
{% endhint %}

***

### 4.2 Custom rootfs Workflow

When using --rootfs, dcs-deploy merges your custom rootfs archive with the mandatory NVIDIA JetPack base filesystem (linux-sample-root-filesystem-r3521aarch64tbz2). The merge automatically includes Airvolute overlay files (airvolute\_overlay, l4t, nv\_ota\_tools). You do not need to include these manually.

The base Airvolute workflow:

1. Start from the standard Airvolute rootfs (default flash without --rootfs)
2. Apply your customisations on the running device (install packages, copy configs)
3. Create a rootfs archive following the dcs-deploy readme (Preparing your own rootfs image)
4. Flash subsequent devices using --rootfs path/to/your.tar.bz2

{% hint style="warning" icon="circle-xmark" %}
**Common failure:**

'flock: cannot open lock file' or 'mount.nfs: Connection timed out' - reboot the host PC, ensure no stale dcs-deploy processes are running (ps aux | grep dcs), and check that the host firewall is not blocking NFS traffic. Temporarily disabling the firewall during flash resolves NFS timeouts.
{% endhint %}

***

### 4.3 JetPack Version Matrix

<table><thead><tr><th width="111.5714111328125">JetPack</th><th width="105.2852783203125">L4T</th><th width="106.285400390625">Ubuntu</th><th>Status</th></tr></thead><tbody><tr><td>5.1.2</td><td>R35.4.1</td><td>20.04</td><td>Production release — default dcs-deploy config</td></tr><tr><td>6.0 / 6.2</td><td>R36.x</td><td>22.04</td><td>Released April 2025 (DCS2); DCS1 support pending device tree overlay</td></tr></tbody></table>

JetPack 6.x includes Python 3.10+ on the Jetson device. JetPack 5.x ships with Python 3.9. The dcs-deploy host tool itself is compatible with Python 3.10+ on the host PC regardless of Jetson version.

For Patron FPV: JP6 has not been validated on Patron FPV hardware as of this writing. Flashing FPV units with JP6 is possible but unsupported.

***

### 4.4 SPI\_JET Pin Mapping to Orin GPIO

The SPI\_JET connector on the Adapter Default board maps to the following Jetson Orin NX GPIO lines. Use these values when creating device tree overlays (e.g. for PPS GPIO or custom SPI reconfiguration):

```
SPI0_SCK  →  PZ.03  (TEGRA234_MAIN_GPIO(Z, 3))
SPI0_MISO →  PZ.04
SPI0_MOSI →  PZ.05
SPI0_CS0  →  PZ.06
```

{% hint style="info" %}
**Note:**

The pps-gpio kernel driver contains a bug in JetPack 5 kernels that causes 'failed to request PPS GPIO' errors. Apply the patch from <https://www.spinics.net/lists/stable/msg547968.html> or use a kernel build that includes this fix.
{% endhint %}

***

### 4.5 Python Version and Upgrades

The Python version available on the Jetson device after flashing is determined by the JetPack version, not by dcs-deploy:

* JetPack 5.1.2 (Ubuntu 20.04): Python 3.9 — cannot be upgraded without upgrading JetPack
* JetPack 6.x (Ubuntu 22.04): Python 3.10+

Upgrading Python independently on JP5 devices is out of scope for Airvolute support. The recommended path is to upgrade to JP6 when available for your hardware.

***

### 4.6 OTA Update Tools

The dcs-deploy repository includes nv\_ota\_tools in its resources directory. These tools were added during early testing of Mender-based A/B partition OTA updates. They are not currently part of a supported deployment workflow. If you wish to explore OTA updates, refer to the Mender documentation (docs.mender.io) as a starting point.

***

### 4.7 Known Script Issues

dcs\_first\_boot.sh — spi group warning: On fresh installs the script attempts to add dcs\_user to a group named 'spi' which does not exist on the standard image. The error message is harmless but confusing:

```
usermod: group 'spi' does not exist
```

This line can be safely ignored. The issue will be corrected in a future dcs-deploy release.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.airvolute.com/hidden-wip/discord-export/4.-software-and-os-reference.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
