Install AKD1500 on Raspberry Pi 5 — the path that actually works
Reproduced twice: August 2026 and the full September rebuild.
0. OS
Use Raspberry Pi OS Bookworm 64-bit, not Trixie, for the Akida 2.19.3 / Python 3.11 stack reproduced here. Test the camera before anything else.
vcgencmd version
python3 -c "from picamera2 import Picamera2; print(Picamera2.global_camera_info())"1. System packages
sudo apt update && sudo apt full-upgrade -y
sudo apt install -y git python3-venv python3-pip python3-picamera2 python3-opencv dkms
sudo reboot2. PCIe driver — two patches on kernel 6.12
The public Brainchip-Inc/akida_dw_edma installer rejects this kernel. setup_akida_treiber.sh removes BUILD_EXCLUSIVE_KERNEL from dkms.conf, replaces the Makefile abort above 6.9 with the 6.9 branch, installs through DKMS and registers the module in /etc/modules-load.d/akida-pcie.conf.
bash setup_akida_treiber.sh
lspci | grep -i -c brainchip
lsmod | grep akida
ls -l /dev/akd1500_*3. Runtime environment — no TensorFlow
python3 -m venv ~/akida-env --system-site-packages
source ~/akida-env/bin/activate
pip install --upgrade pip
pip install akida==2.19.3
pip install "numpy<2" opencv-python pyserial
python3 -c "import akida,cv2,numpy; from picamera2 import Picamera2; print(akida.devices(), numpy.__version__)"Why numpy<2: numpy 2 caused simplejpeg: numpy.dtype size changed and broke the camera path. Do not install tensorflow/cnn2snn in this environment.
4. Training environment
bash setup_m3_train.sh
~/m3-train-env/bin/python -c "import numpy,cv2,tensorflow,cnn2snn,akida; print('train-env ok', numpy.__version__)"The server calls training as a subprocess and loads the resulting .fbz itself.
5. Run
python3 tools/run_web.py --synthetisch --port 8080sudo cp vorsa.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now vorsa6. Transfer the project
git clone https://github.com/<org>/vorsa-inspect ~/vorsa-m3 # once public; until then: scp of the project folder
chmod +x ~/vorsa-m3/start.shWhat start.sh sets — VORSA_BAND=relais (12 V relay on GPIO 18; sim runs the belt in simulation, echt = L298N driver, VORSA_BAND_PIN changes the pin) and VORSA_ARM=uno (RAMPS/Arduino on /dev/ttyACM0; VORSA_ARM_PORT changes the port; VORSA_ARM_URL=http://<pi4>:8000 uses an external arm server instead). Without belt and arm, comment both lines out.
Service file — edit User= and the two /home/<user>/vorsa-m3 paths in vorsa.service before copying it.
PCIe reset button without password (sudo visudo):
<user> ALL=(root) NOPASSWD: /usr/bin/tee /sys/bus/pci/devices/*/remove, /usr/bin/tee /sys/bus/pci/rescanprobed (akd1500_N) in dmesg).