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 . The neoracer_ros2_driver is installed on top of it once, on the first boot. Every boot after that comes up ready on its own. This page is what is on the image, and how to put it back if you ever need to.
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.
neoracer-teleopis the driver stack. Thecontrollernode owns the ESP32 serial link (publishes /imu/fused, /odom, /joy and subscribes to /motor), alongsidegamepad_node,mux_node, andthrottle_node. Four more come up alongside them and each can be switched off on its own:lidar,camera,led_matrix, andinference.- The watchdog supervises every node and restarts a dead one. The web dashboard at
http://neoracer.local:8080shows per-node liveness, topic rates, and Jetson temperature. - JupyterLab logs route through
journalctl -u neoracer-jupyter -f, no separate log directory to track. - Autonomy is not among them. The transform tree, the twist bridge and the EKF live in a fifth unit that setup deliberately does not install, so mapping and navigation start that layer by hand. See the racecar CLI.
FLASH A FRESH SSD
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. The five steps below are the five in FIG. B.
bash# 1. Download the base image. It is Seeed's reComputer J401 build of # JetPack 6 (Ubuntu 22.04). The car boots from its NVMe SSD, not an # SD card. # 2. Get to an x86 Ubuntu host. The flashing tool only runs on Linux, and # it talks to the car over the Jetson's USB-C recovery port. # 3. Flash the NVMe. Follow Seeed's reComputer J401 flashing guide. # 4. Power on and log in as racecar. You now have a bare Ubuntu with no # driver on it. # 5. Run the driver setup: console + internet, clone neoracer_ros2_driver, # bash scripts/setup_all.sh. That installs ROS 2, the four services, # JupyterLab, and the student library. Finish with # racecar setup networking to give the car its networks back.
FIRST-BOOT DEFAULTS
Hostname
192.168.10.100 on the cudy router, or 10.42.0.1 on its own access point.Default user
neobotics. If the car will share a classroom space, it's worth setting a new one on day one.Time + locale
Wi-Fi access point
SSH IN AND VERIFY
bash# 1. Confirm you're in. ssh racecar@192.168.10.100 # or: 10.42.0.1 on the access point # racecar@neoracer:~$ # 2. Are the services healthy? racecar service status # all four active # 3. Is the ROS 2 graph up? It already is; nothing to start. ros2 topic list # /scan /camera/color /imu/fused /odom /drive ... # 4. Try a single LiDAR scan. ros2 topic echo /scan --once | head -20
WHEN TO RE-FLASH
Four situations where the five steps above are the answer. A re-flashed car needs the driver installed again before it will drive, but your calibration is safe: motor trim and servo centre live on the MCU (microcontroller unit), not on the SSD.
- 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, runracecar setup networkingto 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 centre live on the MCU. Re-flashing the NVMe does not touch them.

