These docs are public and open source.Edit on GitHub
SOFTWARE / OS & IMAGE

THE PRE-FLASHED IMAGE.

Every NeoRacer ships with an image on its SSD that boots straight to JetPack 6.2.1, Ubuntu 22.04.5 LTS, Python 3.10.12, ROS 2 Humble, and JupyterLab running as a . So you can power on, SSH in, install the neoracer_ros2_driver, and start writing code on the same day it arrives.

Pre-flashed at the factoryJetPack 6.2.1Ubuntu 22.04.5 LTSROS 2 HumblePython 3.10.12Jetson Orin Nano
FIG. A / WHAT'S ON THE IMAGE
YOUR CODE
/home/racecar/*.py
YOU LIVE HERE
neoracer_ros2_driver
teleop launch · run manually
racecar-neo-library
Python · rc.* namespace
ROS 2 Humble
topics · services · params · TF
Ubuntu 22.04 LTS
rootfs · apt · users · network
Jetson Linux BSP
kernel · CUDA · TensorRT · drivers
Bottom to top. Everything below your code is read-only by default. Your code lives in /home/racecar/jupyter_ws.
01 / WHAT'S RUNNING AT BOOT

WHAT RUNS AT BOOT.

Four services auto-start at boot once the neoracer_ros2_driver is installed: the robot stack itself (neoracer-teleop), the watchdog that restarts failed nodes, the health dashboard on port 8080, and JupyterLab on port 8888. Every on the ROS 2 driver page is live from power-on, with no terminal involved.

// racecar service status
neoracer-teleop · neoracer-watchdog · neoracer-dashboard · neoracer-jupyter  # all active, all enabled at boot

// for interactive debugging, the same stack in the foreground
racecar teleop  # wraps: ros2 launch neoracer_ros2_driver teleop.launch.py (stop the service first)
  # brings up controller, gamepad_node, mux_node,
  # throttle_node, camera, led_matrix, lakibeam1
  • racecar teleop brings up the full driver stack: the controller node owns the ESP32 serial link (publishes /imu, /odom, /joy and subscribes to /motor), plus gamepad_node, mux_node, throttle_node, camera, led_matrix, and the Lakibeam .
  • The watchdog supervises every node and restarts a dead one. The web dashboard at http://neoracer.local:8080 shows per-node liveness, topic rates, and Jetson temperature.
  • JupyterLab logs route through journalctl -u neoracer-jupyter -f, no separate log directory to track.
FIG. B / RE-FLASH FROM SCRATCH
1
Download
J401 base image
2
Ubuntu host
USB-C recovery
3
Flash NVMe
Seeed's guide
4
Power on
Boot to login
5
racecar setup
driver + networks
An x86 Linux host, the Jetson's USB-C recovery port, and five steps: base image, then driver setup on top.
02 / FLASH A FRESH CARD

FLASH A FRESH CARD.

The car ships flashed. You'll only re-flash to bring one back to a known-good state, and it is a two-stage job: the base system image first, then the driver setup on top.

bash
# 1. Flash the base system. The car boots from its NVMe SSD, and the base # image is Seeed's reComputer J401 build of JetPack 6 (Ubuntu 22.04). # Follow Seeed's reComputer J401 flashing guide, which runs from a Linux # host over the Jetson's USB-C recovery port. # 2. On first boot, follow Getting Started from the top: # console + internet, clone neoracer_ros2_driver, bash scripts/setup_all.sh # That installs ROS 2, the services, JupyterLab, and the student library. # 3. racecar setup networking gives the fresh car its networks back.
03 / FIRST BOOT, THE DEFAULTS

FIRST-BOOT DEFAULTS.

01

Hostname

neoracer
The car answers at 192.168.10.100 on the cudy router, or 10.42.0.1 on its own access point.
ssh racecar@192.168.10.100
02

Default user

racecar
Password is neobotics. If the car will share a classroom space, it's worth setting a new one on day one.
passwd # change me
03

Time + locale

UTC, NTP synced
NTP locks within the first 5 s of Wi-Fi association. ROS 2 timestamps line up with your laptop without any extra config.
timedatectl status
04

Wi-Fi access point

neoracer-[Car ID]
The car is its own access point. Join its network from your laptop (Car 1 broadcasts neoracer-1), then SSH in or open JupyterLab. See Networking.
ssid: neoracer-1 · pw: neobotics
04 / SSH IN, VERIFY EVERYTHING

SSH IN AND VERIFY.

bash
# 1. Confirm you're in (after joining the car's neoracer-[Car ID] network). ssh racecar@192.168.10.100 # or: 10.42.0.1 on the access point # racecar@neoracer:~$ # 2. JupyterLab service is healthy? racecar service status # all four active # 3. ROS 2 graph is up? (run "teleop" first) ros2 topic list # /camera /scan /imu /odom /battery /joy /drive # 4. Try a single LiDAR scan. ros2 topic echo /scan --once | head -20
05 / WHEN IT WON'T BOOT

RECOVERY AND RE-FLASH.

Recovery is a re-flash of the NVMe over the Jetson's USB-C recovery port, the same two-stage flow as section 02: base image first, then the driver setup on top. Your calibration files live on the MCU (microcontroller unit)'s flash, not on the SSD, so the car is ready to drive the moment it boots.

  • Boot loops usually point at a corrupted image on the NVMe rather than a Jetson fault, so a re-flash is the first thing to try.
  • AP not coming up after re-flash? Connect an ethernet cable, SSH via racecar@neoracer, run racecar setup networking to rebuild the access point.
  • Lost the password? A re-flash is the way back in. The password lives on the NVMe, so a fresh image gives you the default again.
  • Calibration gone? It's not. The motor trim and servo center live on the MCU. Re-flashing the NVMe does not touch them. See Motor trim.