Features Support three 18650 batteries (not included), 7800mAh large capacity, up to 12.6V output, stronger motor power. On-board S-8254AA + AO4407A Li-ion battery protection circuit, with anti-overcharge, anti-over-discharge, anti-over-current and short-circuit protection functions. Onboard APW7313 voltage regulator chip, which can provide stable 5V voltage to Jetson Nano. Onboard TB6612FNG dual H-bridge motor driver chip can drive the left and right two motor work. Onboard 0.91" 128×32 resolution OLED, real-time display of car IP address, memory, power, and other conditions. Onboard INA219 acquisition chip, convenient for real-time monitoring of battery voltage.
IMX219 (v2 camera) is supported by the legacy camera stack, as are OV5647 (v1) and IMX477 (HQ) cameras.
IMX708 (v3) and IMX296 (Global Shutter) are NOT supported, nor are ANY cameras on a Pi5. It's libcamera only for those options.
I'd boot Raspberry Pi OS properly and check "vcgencmd get_camera" to ensure that your camera is detected properly. With Bullseye you should be able to run the old raspistill app to confirm that it all works. Only once you've validated that would I move on to trying your bare metal approach.
$ apt-cache search jstest joystick - set of testing and calibration tools for joysticks jstest-gtk - joystick testing and configuration tool
$ jstest
Usage: jstest [<mode>] <device>
Modes: --normal One-line mode showing immediate status --old Same as --normal, using 0.x interface --event Prints events as they come in --nonblock Same as --event, in nonblocking mode --select Same as --event, using select() call