System designTroubleshooting

MIPI camera not detected: I2C bus and device tree checks

A MIPI camera that is not detected leaves no probe in dmesg and no sensor address on any I2C bus: fix the carrier board's device tree, not the driver.

LumaSpec Vision11 min read Share on LinkedIn

On this page 9 sections
  1. 01The signature: a clean install and total silence
  2. 02Read the scan correctly
  3. 03Silence or errors: two different failures
  4. 04Prove the module is alive first
  5. 05Likely causes, in order of probability
  6. 06Why reinstalling the driver cannot help
  7. 07The decision: documented overlay or a different interface
  8. 08Before the next carrier: four checks that prevent this
  9. 09Questions

You installed the camera vendor's driver package on your carrier board, the script finished cleanly, and then nothing happened: no video device nodes, no probe line in the boot log, and no sensor address on any I2C bus you scan. That combination is not a configuration mistake you can reinstall away. It is the signature of a camera the kernel has never been told exists, because the carrier's device tree never declares the sensor, its I2C address or its CSI lane mapping. This guide is for engineers bringing MIPI camera modules onto system-on-module carrier boards. In ten minutes you will be able to tell a dead flex from a missing power rail, a bus-number mismatch from a missing device-tree node, and decide whether to obtain the carrier's camera overlay or move the camera to USB3 or GigE.

The signature: a clean install and total silence

Work the evidence in this order:

  1. The install exits 0. The script copied driver files and rebuilt modules. That is all it did; an installer cannot prove hardware exists.
  2. No video nodes appear. A bound sensor driver creates V4L2 video nodes under /dev/video*. An unchanged list means nothing bound.
  3. The boot log is silent. Filter dmesg for the sensor's part name. A healthy boot prints a probe line naming the I2C bus and the address. Silence means the kernel had no node to probe, so no attempt was ever made.
  4. Every I2C bus scan comes back empty. Not one address anywhere, not even a wrong one.

Points 3 and 4 together are the fork that matters. A broken link or an unpowered sensor on a carrier whose camera support is published still produces probe attempts that fail with timeouts or a wrong chip ID. Total silence is a different failure: the description of the camera never reached the kernel, so there is nothing for a driver to fail against.

Read the scan correctly

i2cdetect probes a bus address by address and prints what answers. Three outcomes per cell: an address such as 34 means a device acknowledged there; UU means a bound driver has already claimed it; -- means nothing answered. Scan the bus your camera connector is wired to, and when in doubt scan all of them in one pass:

for b in /dev/i2c-*; do i2cdetect -y -r ${b#/dev/i2c-}; done

The ${b#/dev/i2c-} strips each path down to the bus number i2cdetect expects. Run the scan twice, module unplugged and then plugged in: the address that appears is your sensor.

Silence or errors: two different failures

The fork decides where to spend your time.

  • Probe attempts with errors. The tree declares the sensor and the driver is talking, but answers never arrive: repeated timeouts, an I2C error -121 (remote I/O failure) on the probe, or a chip ID that reads all zeros. The physical link or the power is broken. Work the seating, flex and rail checks in I2C error -121 on a camera sensor probe: fix the physical link, then the identification checks in MIPI camera sensor ID mismatch: diagnose the wrong I2C probe.
  • No probe attempt at all. The kernel has no node describing the sensor, so no driver is ever matched to it. This is the failure this article is about, and no amount of driver work repairs it.

The same fork prices the repair: a link error on a carrier with published camera support is minutes of bench work; a carrier with no camera documentation is a design problem measured in weeks. Once an address does answer and the node binds, downstream failures have their own guide — start with MIPI sensor detected but streaming fails: power, clocks, device tree when no frames arrive.

Prove the module is alive first

Put the same module, the same flex and the same driver package on a host that is known to support it: the SoM vendor's development kit, or the carrier the camera kit is validated against. If it enumerates there, the module is good, and everything after this point concerns your carrier's device tree.

If no second host exists, measure. Most sensor modules run from a 2.8 V analog rail and 1.8 V digital rails; the carrier schematic lists which connector pin carries which. With the module removed and the system booted, probe each supply pin. A rail stuck at 0 V means the enable GPIO never fired — a device-tree regulator problem, not a camera problem. A scope on the master-clock pin should show the clock frequency the overlay requests; a dead clock leaves the sensor unable to answer even a correct scan.

Reseat the flex in both connectors before any of this. A half-seated flat flex produces exactly this silence, and eliminating it costs nothing.

Likely causes, in order of probability

With a clean install, a silent log and empty scans, test the causes in this order:

# Evidence Cause Test Fix
1 No probe line; no address on any bus The carrier's device tree has no node for this sensor on this bus Compare the camera nodes in your tree with the working host's Install the carrier vendor's camera overlay
2 Empty scan on the bus you assumed, a hit on another The connector sits on a different bus number, or behind an I2C mux the tree never enables Difference scan across all buses, module in versus out Overlay that enables the mux and the sensor node
3 Supply pin at the connector reads 0 V Regulator or enable GPIO never fires Measure rails with the module removed, boot logged Overlay must describe the regulator and its enable GPIO
4 Same silence on the known-good host Dead module, flex or connector Swap the flex, then the module Replace the failing part

Two refinements. If a probe line exists but names a different driver than you expect, node and driver disagree — that is a binding problem with its own diagnostics in camera driver device tree mismatch: diagnose missing DTBs and camera loads the wrong sensor driver: read dmesg, fix the overlay. Probe errors that do appear are worked step by step in camera I2C communication failure: diagnose sensor probe errors.

Why reinstalling the driver cannot help

On a device-tree platform a driver never hunts for cameras. At boot, the kernel matches each node's compatible string against each driver's table; a match instantiates the device and calls the driver's probe function. No node means no match means no probe call, however many times you reinstall or rebuild. That is why the vendor script completes and changes nothing: it delivered software for a device the kernel has never been introduced to.

The sensor's I2C address is not the driver's to guess either. It lives in the reg property of the node, next to the lane mapping, the master clock and the power GPIOs. Manually loading the module hits the same wall: the driver waits for a device that never appears. The repair is a node — an overlay from the carrier vendor that describes the sensor, its address, its lanes, its clock and its GPIOs. Nothing else creates that description.

The decision: documented overlay or a different interface

Commit to one of three paths, based on what the carrier vendor can put in front of you:

  1. The carrier documents your camera kit and ships an overlay. Install it as written and re-check the three evidence points. Expect a probe line within one boot. Done — stop modifying vendor files.
  2. The carrier has the connector but no overlay for your sensor. Ask the vendor for one before writing anything yourself. If it arrives, timebox a day to validate. If it will not, you are on path 3.
  3. The carrier never declared camera support. Do not hand-build the tree for a machine that has to ship. A correct node needs the schematic's lane mapping, the enable GPIO numbers, the clock wiring and a driver matched to the sensor's register set — typically weeks of bring-up, with a real chance of over-powering the sensor on the first attempt. Change the interface instead.

Changing the interface removes the whole class of failure. A USB3 or GigE board camera is handled by the host's standard vision stack: enumerate, calibrate, run. No overlay, no lane mapping, no sensor node. If the MIPI modules are already bought and must stay, a converter is the middle road — read MIPI CSI to USB UVC bridge: what a converter board must include before ordering one.

Board-level cameras3.1 MP USB3 board-level camera, IMX252, 1/1.8" global shutter, 120 fps (LS-BCM-0003)LS-BCM-0003
Sensor format
1/1.8"
Lens mount
C-mount
Interface
USB3
Resolution
5 MP
$690.00View partBuild a system with it

The board-level cameras range covers both interfaces. The LS-BCM-0003 delivers 3.1 MP at 120 fps with a global shutter on USB3, so it also handles moving parts. The MV-CB060-10UM-B is a 6 MP bare-board module for tight spaces, and the LS-BCM-0020 covers distance: 6.3 MP rolling shutter in a CS-mount on GigE. For reach, GigE runs to 100 m on standard cabling; USB3 is a desk-length interface of a few metres.

Board-level camerasHikrobot MV-CB060-10UM-B 6 MP Board Level Camera, USB3, IMX178, Mono, Bare Board, V4MV-CB060-10UM-B
Sensor format
1/1.8"
Interface
USB3
$239.00View part
Board-level cameras6.3 MP board-level camera, IMX178, 1/1.8" rolling shutter, 18 fps (LS-BCM-0020)LS-BCM-0020
Sensor format
1/1.8"
Lens mount
CS-mount
$290.00View part

Size the rest of the chain in the camera finder or start the camera configurator to match lens and cable in one pass. The full selection method is in board level camera selection for embedded vision machines.

Before the next carrier: four checks that prevent this

  1. Ask for the overlay before you buy. A vendor who supports cameras can name the I2C bus and the address your sensor will appear on. If they cannot name both, the camera will be invisible — this article, seen in advance.
  2. Check the sensor against the SoM vendor's supported list. The driver must exist before any overlay can reference it.
  3. Count the CSI lanes per connector. Modules come in 2-lane and 4-lane versions, and a connector wired for two lanes will not carry a 4-lane module as built. What a lane budget does to frame rate is quantified in MIPI camera lane bandwidth: what limits frame rate.
  4. Run the difference scan at first boot. Prove the sensor answers on day one, before the mechanical build hides the connector.

The complete verification list is in CSI camera carrier board compatibility: what to verify, and the board camera evaluation checklist for inspection systems extends it to optics, lighting and throughput.

If your carrier cannot produce an overlay, send its documentation through the contact page and we will confirm whether camera support exists before you spend a day on it. If the answer is to change interface, in-stock items ship within one business day.

Questions

Can a driver package install cleanly and still do nothing?

Yes. An install script copies driver files and rebuilds modules; its exit code says nothing about binding. Binding happens at boot when the kernel matches a device-tree node to a driver. If the tree has no node for your sensor, the driver loads as software but never meets a device, so you get no video nodes and no probe line. The install log proves delivery, not detection.

Which I2C addresses can a camera sensor occupy?

A 7-bit bus offers 128 addresses from 0x00 to 0x7F. The I2C specification reserves 0x00-0x07 for general-call and other protocol purposes and 0x78-0x7F for 10-bit addressing and device IDs, leaving 112 usable addresses. Sensors commonly sit between 0x08 and 0x4F, but the only number that matters is the one in the module's data sheet: i2cdetect must show that exact value on the bus the camera connector is wired to.

The scan shows extra addresses with no camera connected. Why?

The camera connector is not the only thing on its bus. Real-time clocks, EEPROMs, fan controllers and I2C muxes also answer a scan, and host-side devices appear regardless of what you plug in. That is why the meaningful test is a difference scan: run i2cdetect with the module unplugged, then plugged, and treat the new address as the camera. An address that vanishes when the module is removed is your sensor.

Is writing my own device tree node worth it?

Only when you own the board design. A correct sensor node needs the connector's I2C bus and address, the lane mapping into the CSI receiver, the master-clock wiring and the GPIO lines that sequence power and reset, all from the carrier's schematic. Without documentation of those nets you are guessing, and a guess that over-powers a sensor destroys it. On a purchased carrier with no published camera support, an interface swap is faster and safer.

How many CSI lanes does a multi-camera rig need?

MIPI CSI-2 modules come in 2-lane and 4-lane versions, and a 4-lane module consumes four receiver lanes wherever it connects. A carrier with two fully wired 4-lane connectors therefore carries two 4-lane modules and no more; four cameras on that board means 2-lane modules. Check the lane budget in the carrier's device tree before purchase: lane count is the second thing, after the sensor's I2C address, that a missing overlay leaves undefined.