Run openpilot's large driving models on a computer plugged into your comma. The comma keeps the cameras and vehicle control. It sends prepared camera images over USB, the other computer runs the model, and predictions come back 20 times per second.
Jetlink is experimental. It needs a zoompilot build with Jetlink built in. The
comma side lives on the zoompilot jetson-trt branch.
The small model you picked in sunnypilot keeps driving whenever the link is down. If the link
drops while engaged, the comma soft-disables and tells you to take over. See
status and known limitations.
Choose your computer: Mac · Jetson · CUDA laptop. Then follow the shared comma setup.
You need a comma 3X or comma 4, a USB 3 A-to-C data cable, and separate power for both devices. Charge-only cables will not work. Keep the comma online and stay parked for the first setup.
For Apple silicon, macOS 15 or later. 16 GB of memory is recommended. Mac is bench-tested; Jetson is the tested in-car setup.
- Download the Mac ZIP from Releases.
- Double-click the ZIP to unzip it, then drag Jetlink.app to Applications.
- Open Jetlink. The server starts automatically; Waiting for comma means it is ready to connect. Keep your Mac powered and awake.
- Follow comma setup below.
If macOS blocks an unsigned build, follow the release notes or the Mac install guide. No Python or Homebrew is needed for the app.
Developers: run from source
With Homebrew installed, run in Terminal:
brew install python libusb
git clone https://github.com/zoompilot/jetlink.git
cd jetlink
scripts/run-mac.shThe script installs its dependencies on first run. To build or work on the GUI, see macOS development.
See the Mac guide for model downloads, settings, and logs.
For Jetson Orin Nano Super (8 GB) with JetPack 6.2. Use a power supply
sized for 25 W mode and allow several GB of free space on /mnt/data.
Run these commands in a terminal on the Jetson:
sudo apt update
sudo apt install -y git docker.io nvidia-container
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
git clone https://github.com/zoompilot/jetlink.git
cd jetlinkFor a release install, copy the Jetson image reference from the
release notes. Set IMAGE to
that reference, replacing VERSION below with its version:
IMAGE=ghcr.io/zoompilot/jetlink:VERSION-jetson
sudo docker pull "$IMAGE"
sudo env IMAGE="$IMAGE" docker/run.sh --transport usbIf the release has no Jetson image, or you want to build from source, run
these commands instead from the jetlink folder:
sudo docker/build.sh
sudo docker/run.sh --transport usbLeave the terminal open and follow comma setup.
Once it works, use the Jetson guide to start
Jetlink automatically at boot. For a release image, use your image reference
in place of jetlink:latest in that guide's image-inspection command.
For a Linux laptop with an NVIDIA GPU, a working NVIDIA driver, and Python 3.10 or later. This setup is hardware-tested.
On Ubuntu or Debian, run in a terminal:
sudo apt update
sudo apt install -y git python3-venv libusb-1.0-0
git clone https://github.com/zoompilot/jetlink.git
cd jetlink
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -e ".[trt,usb,nvml]"
sudo install -m 644 scripts/99-jetlink-host.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
jetlink-server --backend trt --transport usbLeave the terminal open, keep the laptop powered and awake, then follow comma setup. If the comma was already plugged in, unplug and reconnect it so the USB permissions take effect.
Next time, open a terminal in jetlink and run:
source .venv/bin/activate
jetlink-server --backend trt --transport usbFor Docker or Windows with WSL2, see the platform guide. Windows USB setup is not validated; start with the guide's TCP bench test.
Do this once, whichever computer you chose.
- Install the Jetlink branch. On a comma already running zoompilot, open Settings > Software > Target Branch > Non-Prebuilt Branches and select jetson-trt. Let it update, reboot, and finish building. Coming from another fork? Start with zoompilot's installation instructions.
- Enable Jetlink. Open Settings > Models and turn on Accelerator Link. Leave Big Model on the default for your first run.
- Connect USB. With Jetlink running on your computer, connect its USB-A port to the comma's USB-C port using a USB 3 data cable. On a Mac, use a USB-A port on a hub, dock, or USB-C-to-A adapter. On Jetson, use a USB-A port, not its USB-C port. A plain C-to-C cable may not connect reliably.
- Wait for green. Stay parked with the comma online. Its home-button icon pulses while the model downloads, transfers, and prepares, then turns green when ready. No manual model download or SSH setup is needed.
The default model takes about 3 minutes to prepare on Jetson. On Mac, preparation takes about 10 seconds, with later loads around 2 seconds; download time is extra. The screenshots above show an earlier app build.
| Icon | Meaning |
|---|---|
| Pulsing | Downloading, transferring, or preparing the model. Keep waiting. |
| Green | Parked: ready. Driving: the large model is driving. |
| Green, dimmed | Driving: ready and waiting for a chance to switch. Stop with cruise off, or turn lateral control off. |
| Orange | Preparation failed. Read the alert on the home screen. |
| Back to normal a minute later | Only with --sleep-after: the comma let the link go so the computer can sleep. Otherwise it stays connected the whole time you are parked. |
- The small model drives while the server starts. On a computer that powers up with the car, the large model is prepared 65 to 96 seconds later.
- It takes over only when nothing is steering: at a stop with cruise off, or with lateral control off. Until then the icon is dimmed and the comma says Big Model Available at every stop. Disengaging alone is not enough on a car with lateral control always on.
- A Big Model Ready chime means it has taken over.
- Picking a new model needs the comma online once, while parked, to download it. After that it is prepared wherever you are: drive off in the middle and the small model drives, the panel counts the preparation down, and the large model joins at the first chance to switch.
- Big Model Lost while engaged is a soft disable. Take over. The small model drives, and Jetlink reconnects and switches back at the next chance.
To stop using Jetlink, turn off Settings > Models > Accelerator Link.
| Problem | Try |
|---|---|
| No Accelerator Link toggle | Check the branch in Settings > Software. |
| Toggle is on, nothing happens | Read the setup alert on the home screen. |
| Big Model list is empty | Connect the comma to the internet and use Refresh Model List. |
| Server keeps waiting, icon never pulses | Check the server is running, use a USB-A port, try another USB 3 data cable. |
| Orange icon | Read the alert, check the comma's internet, then toggle Accelerator Link off and on. |
| Model drops out repeatedly | Check the cable, separate power supplies, and cooling. |
Mac: an example of a server error
The Status screen shows the failure and recent output. Open Logs for more detail, then check the Mac troubleshooting guide.
The Jetson guide has more, including how to collect logs when reporting a problem.
- Jetlink for Mac, the app
- Jetson setup, boot service, troubleshooting, logs
- Mac, Linux, Windows, Docker, and testing without a comma
- Models, the model CLI, and the control channel
- Status, known limitations, and measured performance
- Updates and rollback
- Cables, networking, and power
- Backends and measurements, for developers
MIT.


