NEORACER DOCS
These docs are public and open source.Edit on GitHub

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.

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.

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
  • neoracer-teleop is the driver stack. The controller node owns the ESP32 serial link (publishes /imu/fused, /odom, /joy and subscribes to /motor), alongside gamepad_node, mux_node, and throttle_node. Four more come up alongside them and each can be switched off on its own: lidar, camera, led_matrix, and inference.
  • 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.
  • 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.
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: the base image first, then the driver setup on top.

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

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

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, 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 centre live on the MCU. Re-flashing the NVMe does not touch them.