Sadly still trying to get this working. If i'm reading everything correctly
On the IO-BASE-B V4 it seems like it may connect using BSCO just like in the "Designing for Raspberry Pi Compute Modules and cameras" datasheet for the CM4,
CSI1 connects to ID_SC
Pin 35 - ID_SCL - CM4: GPIO 1 - CM5 GPIO 1
Pin 36 - ID_SDA - CM4: GPIO 0 - CM5: GPIO 1
CS2 connects to SCL0/SDA0
Pin 80 - SCL0 - CM4: GPIO45 - CM5: GPIO39
Pin 82 - SDA0 - CM4: GPIO44 - CM5: GPIO38
which corresponds to i2c_csi_dsi and i2c_csi_dsi0 once you realize the pins used for gpio 44 and 45 are 38 and 39 on the pi 5.
But, on page 39 of the datasheet it says
CAM1 signals become dual-purpose and can be used for either a CSI camera or a DSI display.
DSI1 signals become dual-purpose and can be used for either a CSI camera or a DSI display.
The port labelled CAM0 on CM4 now is a USB 3.0 Port
While i've tried CAM0 and CAM1; most of the time i've been trying things on CAM0, which is now a usb port?
So i should be using DSI1? and CAM1 for the camera not cam0 and cam1?
May have to test the camera on another system later to make sure the camera is still okay, hopefully plugging it into CAM0 didn't do any damage.
But so far still no luck, i've tried all of the following with overly i2c_csi_dsi and i2c_csi_dsi0 on CAM1 and still nothing detected. I did findReferences:
The "Designing for Raspberry Pi Compute Modules and cameras" datasheet shows:
![Image]()
Schematic for IO-BASE-B V4:
![Image]()
Github Overlays Readme:CM4 Datasheet:CM5 Data sheet:Compute Module hardware documentation
On the IO-BASE-B V4 it seems like it may connect using BSCO just like in the "Designing for Raspberry Pi Compute Modules and cameras" datasheet for the CM4,
CSI1 connects to ID_SC
Pin 35 - ID_SCL - CM4: GPIO 1 - CM5 GPIO 1
Pin 36 - ID_SDA - CM4: GPIO 0 - CM5: GPIO 1
CS2 connects to SCL0/SDA0
Pin 80 - SCL0 - CM4: GPIO45 - CM5: GPIO39
Pin 82 - SDA0 - CM4: GPIO44 - CM5: GPIO38
which corresponds to i2c_csi_dsi and i2c_csi_dsi0 once you realize the pins used for gpio 44 and 45 are 38 and 39 on the pi 5.
But, on page 39 of the datasheet it says
CAM1 signals become dual-purpose and can be used for either a CSI camera or a DSI display.
DSI1 signals become dual-purpose and can be used for either a CSI camera or a DSI display.
The port labelled CAM0 on CM4 now is a USB 3.0 Port
While i've tried CAM0 and CAM1; most of the time i've been trying things on CAM0, which is now a usb port?
So i should be using DSI1? and CAM1 for the camera not cam0 and cam1?
May have to test the camera on another system later to make sure the camera is still okay, hopefully plugging it into CAM0 didn't do any damage.
But so far still no luck, i've tried all of the following with overly i2c_csi_dsi and i2c_csi_dsi0 on CAM1 and still nothing detected. I did find
Code:
[cm5]dtoverlay=i2c_csi_dsi, i2c_csi_dsi0dtoverlay=imx500-pi5,cam1dtoverlay=dwc2,dr_mode=host[cm5]dtoverlay=i2c_csi_dsi, i2c_csi_dsi0dtoverlay=imx500-pi5dtoverlay=dwc2,dr_mode=host[cm5]dtoverlay=i2c_csi_dsi, i2c_csi_dsi0dtoverlay=imx500,cam1dtoverlay=dwc2,dr_mode=host[cm5]dtoverlay=i2c_csi_dsi, i2c_csi_dsi0dtoverlay=imx500dtoverlay=dwc2,dr_mode=host[cm5]dtoverlay=i2c_csi_dsi, i2c_csi_dsi0dtoverlay=imx500,cam0dtoverlay=dwc2,dr_mode=host
The "Designing for Raspberry Pi Compute Modules and cameras" datasheet shows:

Schematic for IO-BASE-B V4:

Github Overlays Readme:
Code:
i2c_csi_dsi Set to "on" to enable the i2c_csi_dsi interface The I2C bus and GPIOs are platform specific: B rev 1: i2c-1 on 2 & 3 B rev 2, B+, CM, Zero, Zero W, 2B, CM2, CM3, CM4S: i2c-0 on 28 & 29 3B, 3B+, Zero 2W, 4B, 400, CM4: i2c-0 on 44 & 45 5, 500: i2c-11/i2c-4 on 40 & 41 CM5 on CM5IO: i2c-0 on 0 & 1 CM5 on CM4IO: i2c-10/i2c-6 on 38 & 39 i2c_csi_dsi0 Set to "on" to enable the i2c_csi_dsi0 interface The I2C bus and GPIOs are platform specific: B rev 1 & 2, B+, CM, Zero, Zero W, 2B, CM2, CM3, CM4S, 3B, 3B+, Zero 2W, 4B, 400, CM4, CM5 on CM4IO: i2c-0 on 0 & 1 5, 500, CM5 on CM5IO: i2c-10/i2c-6 on 38 & 39
Code:
2.9. I2C (SDA0 SCL0)This internal I2C bus is normally allocated to the CSI1 and DSI1, as these devices are controlled by the firmware. It canbe used as a general I2C bus if the CSI1 ad DSI1 interfaces aren’t being used, or are being controlled by the firmware.For example libcamera runs on the ARM and doesn’t use the firmware, so in this case you may use CSI1 and this I2Cbus. SDA0 is connected to GPIO44 on the BCM2711 and SCL0 is connected to GPIO45.2.10. I2C (ID_SD ID_SC)This I2C bus is normally used for identifying HATs and controlling CSI0 and DSI0 devices. If the firmware isn’t using theI2C bus e.g. CSI0 and DSI0 aren’t being used then these pins may be used as GPIO 0 and GPIO 1 if required.NOTE: If these pins are used as GPIO pins, then to prevent the firmware from checking to see if there is a HAT EEPROMavailable, add force_eeprom_read=0 and disable_poe_fan=1 to the config.txt file.
Code:
2.9. MIPI (DSI / CSI-2)The CM5 supports two 4-lane MIPI interfaces. Each MIPI interface can either be DSI (Display) or CSI (Camera). The MIPIsignals should be routed as 100Ω differential pairs. Each signal within a pair should ideally be matched to better than0.15mm.The documentation around the CSI interface can be found in the Raspberry Pi documentation. CM5 supports DSIdisplays supported by the official Raspberry Pi firmware or the Linux kernel tree; for other DSI displays, you mustprovide a custom driver.NOTE: The official Raspberry Pi firmware supports the OmniVision OV5647, Sony IMX219, Sony IMX296, Sony IMX477 andSony IMX708 camera sensors. No security device is required on Compute Module devices in order to use thesecamera sensors.NOTE: You can also add displays using the parallel DPI interface, available as a GPIO alternative function. CM5 supports upto three displays of any type (HDMI, DSI, DPI) at any one time.2.10. CAM_GPIO (CAM_GPIO0 CAM_GPIO1)CAM_GPIO0 is typically routed to pin 17 on the camera connector to turn the power on and off on a camera module.CAM_GPIO1 is a new signal not present on previous compute modules. It is recommend to route this to pin 18 on thecamera connector for future expansion. These pins are actually GPIO pins on RP1, CAM_GPIO0 is GPIO34 and CAM_GPIO1 isGPIO352.11. I2C (SDA0 SCL0)This internal I2C bus is normally allocated to MIPI0. It can be used as a general I2C bus if MIPI0 interface isn’t beingused. SDA0 is connected to GPIO38 on the RP1 and SCL0 is connected to GPIO39.2.12. I2C (ID_SD ID_SC)This I2C bus is normally used for identifying HATs and controlling CSI0 and DSI0 devices. If the firmware isn’t using theI2C bus e.g. MIPI1 isn’t being used then these pins may be used as GPIO 0 and GPIO 1 if required.NOTE: If these pins are used as GPIO pins, then to prevent the firmware from checking to see if there is a HAT EEPROMavailable, add force_eeprom_read=0 and disable_poe_fan=1 to the config.txt file.The connectors have changed brand and have been tested to higher currents to support CM5.CAM1 signals become dual-purpose and can be used for either a CSI camera or a DSI display.DSI1 signals become dual-purpose and can be used for either a CSI camera or a DSI display.The CM4 has extra ESD protection on the HDMI, SDA, SCL, HPD and CEC signals. This is removed from the Raspberry PiCompute Module 5.The port labelled CAM0 on CM4 now is a USB 3.0 Port. The port labelled DSI0 now is a USB 3.0 port. The original CM4VDAC_COMP pin is now a VBUS enable pin for the two USB 3 ports and is active high.
Code:
To connect a camera to the CM1, CM3, CM3+ and CM4S I/O Board, add the following directive to /boot/firmware/config.txt to accommodate the swapped pin assignment:dtoverlay=cm-swap-i2c0Alternative boards may use other pin assignments. Check the documentation for your board and use the following alternate overrides depending on your layout:Swap OverrideUse GPIOs 0,1 for i2c0 = i2c0-gpio0Use GPIOs 28,29 for i2c0 (default) = i2c0-gpio28Use GPIOs 44&45 for i2c0 = i2c0-gpio44Use GPIOs 0&1 for i2c10 (default) = i2c10-gpio0Use GPIOs 28&29 for i2c10 = i2c10-gpio28Use GPIOs 44&45 for i2c10 = i2c10-gpio44
Statistics: Posted by korang — Sat Jan 18, 2025 1:00 am