THE PRE-FLASHED IMAGE.
Every NeoRacer ships with a card that boots straight to JetPack 6.2, 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.
WHAT RUNS AT BOOT.
The only thing that auto-starts at boot is JupyterLab. The robot stack is not a systemd service: once you have installed the neoracer_ros2_driver, you bring every on the ROS 2 driver page up by running teleop yourself.
# brings up controller, gamepad_node, mux_node,
# throttle_node, camera, led_matrix, lakibeam1
racecar teleopbrings up the full driver stack: thecontrollernode owns the ESP32 serial link (publishes /imu, /odom, /joy and subscribes to /motor), plusgamepad_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:8080shows per-node liveness, topic rates, and Jetson temperature. - JupyterLab logs route through
journalctl -u neoracer-jupyter -f, no separate log directory to track.
FLASH A FRESH CARD.
You only need this if you broke something unrecoverable, or you want a clean classroom set. The car ships flashed.
bash# 1. Download the latest image (verify the SHA-256 against the release page). curl -LO https://images.neobotics.org/neoracer/neoracer-os-latest.img.xz sha256sum neoracer-os-latest.img.xz # 2. Open balenaEtcher. # Flash from file → pick the .img.xz (Etcher will decompress on the fly). # Insert the microSD. Pick it as the target. Flash. # 3. Eject the card, slide it into the Jetson SD slot under the chassis. # 4. Plug the battery in, flip the master switch. # 5. Wait ~30 s for first boot. The status LED ladder will turn solid red→green.
FIRST-BOOT DEFAULTS.
Hostname
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 (after joining the car's neoracer-[Car ID] network). ssh racecar@neoracer # or: ssh racecar@192.168.1.101 # racecar@neoracer:~$ # 2. JupyterLab service is healthy? systemctl is-active jupyterlab # active # 3. ROS 2 graph is up? (run "teleop" first) ros2 topic list # /camera /scan /imu /odom /joy /drive # 4. Try a single LiDAR scan. ros2 topic echo /scan --once | head -20
RECOVERY AND RE-FLASH.
Recovery here is just three steps: pull the SD card, re-flash it with balenaEtcher, and slide it back. There's no Recovery Mode UI to learn. Your calibration files live on the MCU (microcontroller unit)'s flash, not on the SD card, so the car is ready to drive the moment it boots.
- Boot loops usually point at a corrupt SD card, so a re-flash is the first thing to try, and it clears them up far more often than a Jetson fault does.
- AP not coming up after re-flash? Connect an ethernet cable, SSH via
racecar@neoracer, runsudo nmtuito rebuild the access point. - Lost the password? A re-flash is the way back in. The password lives in shadow on the SD card, 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 SD does not touch them. See Motor trim.
