Hello everyone,
I am working on a vision project with the NanoPC-T6 LTS (RK3588) and am trying to connect an Arducam IMX296 global shutter camera module (1.58MP, color) via the MIPI-CSI0 interface.
### My Setup
* **Board:** NanoPC-T6 LTS
* **OS:** Ubuntu 24.04
* **Kernel:** 6.1.141
* **Camera:** Arducam IMX296 (global shutter, color) on UC-717 board
* **Cable:** Arducam UC-376 (15-pin to 22-pin adapter cable)
* **Connection:** MIPI-CSI0
### The Problem
I have been experiencing persistent I2C timeout errors on the I2C3 bus when the camera is connected.
I have also observed the following:
* GPIO148 and GPIO149 are pulled LOW when the camera is connected, while they remain HIGH when the camera is disconnected.
* The IMX415 driver probe fails with `"Unexpected sensor id(000000)"`.
* `i2cdetect -y 3` results in timeout errors on all addresses.
* `i2cdetect -y 7` shows a device at `0x12`, which appears to be related to the touchscreen/audio codec rather than the camera.
* Interestingly, I2C3 works normally when the camera is disconnected and only starts timing out after the camera is connected.
### My Research So Far
According to the official NanoPC-T6 Wiki:
https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T6
the MIPI-CSI interface appears to use a 1.8V logic level. In particular, the I2C lines are pulled up to 1.8V[reference:7], and the documentation mentions a `"1.8V Power output"` for certain CSI pins[reference:8].
However, the Arducam IMX296 module, like many Raspberry Pi-compatible MIPI camera modules, appears to use 3.3V for some of its control/interface signals.
I am therefore wondering whether there may be an electrical/voltage compatibility issue between the camera and the NanoPC-T6. I do not want to assume that this is definitely the cause, so I would appreciate any advice from people familiar with the board's camera interface.
### My Questions to the Community
**1. Voltage Level**
Has anyone successfully used a 3.3V MIPI camera (especially a global shutter sensor such as the IMX296 or a similar sensor) with the NanoPC-T6?
If so, how did you handle the 1.8V vs. 3.3V interface?
**2. Level Shifter**
If a level shifter is required, do you have any recommendations for a specific level-shifter circuit or module that works well with the NanoPC-T6?
Any reference designs or wiring diagrams would be greatly appreciated.
**3. IMX296 Support**
Has anyone successfully ported the IMX296 driver to the NanoPC-T6 kernel (6.1.141)?
The IMX415 driver is present in my kernel (built-in), but I have not found an IMX296 driver.
I would be very interested to hear about any experience with adding IMX296 support, including the required driver, Device Tree configuration, or other changes.
**4. Global Shutter Sensors**
More broadly, has anyone successfully used any global shutter MIPI-CSI sensor with the NanoPC-T6?
I am open to other sensor models if there are known working configurations.
**5. USB Cameras**
As an alternative, I am also considering using a USB camera (webcam or industrial USB camera) for this project.
If anyone has experience with USB cameras on the NanoPC-T6, I would particularly appreciate information about:
* Which USB camera models work well
* Typical performance (frame rate, latency, and resolution)
* Any challenges or limitations you encountered
### Additional Context
I have already tried the following:
* Creating and applying Device Tree overlays for IMX415, including the appropriate regulator and clock settings
* Testing different I2C addresses (`0x1a`, `0x10`, `0x21`, `0x36`)
* Testing with the camera disconnected — I2C3 works normally without timeout errors when the camera is disconnected
* Checking the available regulator voltages — 1.2V, 1.8V, and 3.3V are all present on the board
The fact that I2C3 works normally when the camera is disconnected, but starts timing out when the camera is connected, makes me suspect that there may be a hardware/electrical issue involved rather than only a software or Device Tree configuration problem.
The 1.8V vs. 3.3V difference is one possibility I am currently investigating, but I would appreciate any advice on whether this is actually relevant to the NanoPC-T6 camera interface.
### My Goal
I would like to either:
1. Successfully connect the IMX296 to the NanoPC-T6 with any required hardware modifications, such as an appropriate level shifter, or
2. Find an alternative MIPI or USB camera solution that is known to work reliably with this board.
Any insights, previous experience, working configurations, or relevant references would be extremely helpful.
I am also happy to provide additional logs, Device Tree files, schematics, or test results if they would help with troubleshooting.
Thank you in advance for your help!
Best regards.
I am working on a vision project with the NanoPC-T6 LTS (RK3588) and am trying to connect an Arducam IMX296 global shutter camera module (1.58MP, color) via the MIPI-CSI0 interface.
### My Setup
* **Board:** NanoPC-T6 LTS
* **OS:** Ubuntu 24.04
* **Kernel:** 6.1.141
* **Camera:** Arducam IMX296 (global shutter, color) on UC-717 board
* **Cable:** Arducam UC-376 (15-pin to 22-pin adapter cable)
* **Connection:** MIPI-CSI0
### The Problem
I have been experiencing persistent I2C timeout errors on the I2C3 bus when the camera is connected.
I have also observed the following:
* GPIO148 and GPIO149 are pulled LOW when the camera is connected, while they remain HIGH when the camera is disconnected.
* The IMX415 driver probe fails with `"Unexpected sensor id(000000)"`.
* `i2cdetect -y 3` results in timeout errors on all addresses.
* `i2cdetect -y 7` shows a device at `0x12`, which appears to be related to the touchscreen/audio codec rather than the camera.
* Interestingly, I2C3 works normally when the camera is disconnected and only starts timing out after the camera is connected.
### My Research So Far
According to the official NanoPC-T6 Wiki:
https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T6
the MIPI-CSI interface appears to use a 1.8V logic level. In particular, the I2C lines are pulled up to 1.8V[reference:7], and the documentation mentions a `"1.8V Power output"` for certain CSI pins[reference:8].
However, the Arducam IMX296 module, like many Raspberry Pi-compatible MIPI camera modules, appears to use 3.3V for some of its control/interface signals.
I am therefore wondering whether there may be an electrical/voltage compatibility issue between the camera and the NanoPC-T6. I do not want to assume that this is definitely the cause, so I would appreciate any advice from people familiar with the board's camera interface.
### My Questions to the Community
**1. Voltage Level**
Has anyone successfully used a 3.3V MIPI camera (especially a global shutter sensor such as the IMX296 or a similar sensor) with the NanoPC-T6?
If so, how did you handle the 1.8V vs. 3.3V interface?
**2. Level Shifter**
If a level shifter is required, do you have any recommendations for a specific level-shifter circuit or module that works well with the NanoPC-T6?
Any reference designs or wiring diagrams would be greatly appreciated.
**3. IMX296 Support**
Has anyone successfully ported the IMX296 driver to the NanoPC-T6 kernel (6.1.141)?
The IMX415 driver is present in my kernel (built-in), but I have not found an IMX296 driver.
I would be very interested to hear about any experience with adding IMX296 support, including the required driver, Device Tree configuration, or other changes.
**4. Global Shutter Sensors**
More broadly, has anyone successfully used any global shutter MIPI-CSI sensor with the NanoPC-T6?
I am open to other sensor models if there are known working configurations.
**5. USB Cameras**
As an alternative, I am also considering using a USB camera (webcam or industrial USB camera) for this project.
If anyone has experience with USB cameras on the NanoPC-T6, I would particularly appreciate information about:
* Which USB camera models work well
* Typical performance (frame rate, latency, and resolution)
* Any challenges or limitations you encountered
### Additional Context
I have already tried the following:
* Creating and applying Device Tree overlays for IMX415, including the appropriate regulator and clock settings
* Testing different I2C addresses (`0x1a`, `0x10`, `0x21`, `0x36`)
* Testing with the camera disconnected — I2C3 works normally without timeout errors when the camera is disconnected
* Checking the available regulator voltages — 1.2V, 1.8V, and 3.3V are all present on the board
The fact that I2C3 works normally when the camera is disconnected, but starts timing out when the camera is connected, makes me suspect that there may be a hardware/electrical issue involved rather than only a software or Device Tree configuration problem.
The 1.8V vs. 3.3V difference is one possibility I am currently investigating, but I would appreciate any advice on whether this is actually relevant to the NanoPC-T6 camera interface.
### My Goal
I would like to either:
1. Successfully connect the IMX296 to the NanoPC-T6 with any required hardware modifications, such as an appropriate level shifter, or
2. Find an alternative MIPI or USB camera solution that is known to work reliably with this board.
Any insights, previous experience, working configurations, or relevant references would be extremely helpful.
I am also happy to provide additional logs, Device Tree files, schematics, or test results if they would help with troubleshooting.
Thank you in advance for your help!
Best regards.