🛠 Caméra officielle sur le connecteur FPC CSI du CM1
Objectives
Use a camera on the CM1 via its FPC ribbon CSI connector. Unlike the open CSI ports on standard RPi boards, the CM1 uses a closed (flip-lock) connector: only the original ribbons from official camera modules fit, and the BCM2835 multimedia pipeline only accepts the two official sensors, OV5647 (v1) and IMX219 (v2). Activation is done by setting start_x=1 in config.txt, and capture is handled by GPU tools (raspistill) rather than V4L2.
Hardware
- A Compute Module 1 on an IO Board (the IO Board's CSI is exposed)
- An official camera module v1 (OV5647) or v2 (IMX219), with the FPC ribbon contacts facing the SoC side of the CSI connector
- No USB cameras or third-party sensors: not supported on this path
Full code
# Activer le port caméra dans /boot/config.txt
sudo tee -a /boot/config.txt <<'EOF'
start_x=1
gpu_mem=128
EOF
sudo reboot
# Vérifier la détection du capteur
camera_identify -p 0 # ov5647 ou imx219
# Capture fixe et vidéo
raspistill -o test.jpg -w 1280 -h 720
raspivid -o video.h264 -t 5000 -w 1280 -h 720
Expected verification
camera_identify displays the detected sensor model; raspistill writes a correct JPEG (white if the lens is covered, which is normal). vcgencmd get_camera returns supported=1 detected=1. If detected=0, it is the ribbon: the CM1's closed connector does not accept any replacement ribbon with a different pitch.
Common errors
- Plugging in a generic FPC ribbon or one from another module: the CM1's closed connector is strict, only the original ribbon engages correctly.
- Trying a third-party camera (IMX334, USB): the BCM2835 pipeline only knows OV5647 and IMX219.
- Ribbon mounted with contacts oriented incorrectly: permanent
detected=0, everything else is fine. - Forgetting
gpu_mem=128: the firmware has no memory for the camera pipeline, resulting in silent detection failure. - Looking for
/dev/video0and V4L2: on this GPU path, the tools are raspistill/raspivid; V4L2 does not expose the CM1's official camera.
Other tutorials for this board
- Flasher l'eMMC du CM1 avec rpiboot et le jumper J4
- Premier boot : Bullseye legacy, rails 3,3 V et ordre des alimentations
- Première LED sur GPIO17 : banques, courants et broches réservées
- Servo moteur sur PWM0 (GPIO18) : 50 Hz et 2,5 à 12,5 %
- BME280 sur I2C0 (GPIO2/3) : activer i2c_arm et lire l'ID 0x60
- Boot sans EEPROM : fallback USB et bootcode.bin sur eMMC
Code examples for this board
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash