System designTroubleshooting

I2C error -121 on a camera sensor probe: fix the physical link

Error -121 (EREMOTEIO) means the sensor never acknowledged an I2C register read. Decode the log line, then fix ribbon seating, orientation and cable damage.

LumaSpec Vision11 min read Share on LinkedIn

On this page 7 sections
  1. 01What error -121 actually says
  2. 02Worked example: the ov5647 probe line with error -121
  3. 03The likely causes, ranked
  4. 04Fix the link in this order
  5. 05When a correct, known-good link still fails
  6. 06Make the link survive the machine
  7. 07Questions

Your camera sensor driver fails at boot with probe... failed with error -121, and the line above it says the CSI controller found the subdevice. That pairing is actually useful: it means the driver and the device tree description matched, and the failure sits in the first I2C transaction to the sensor.

This guide decodes the log line, ranks the likely causes, and walks the physical checks in the order that finds the fault fastest — seating, orientation, cable damage, module power — before you touch overlays or order parts. Most -121 failures die at the ribbon cable, and the fix costs nothing. Everything here applies to any embedded Linux board that links a camera module over a flat ribbon to a CSI connector, and to the compact camera modules and locking cables in our catalog when you build machines of your own.

What error -121 actually says

Linux reports driver failures as negative errno values; 121 is EREMOTEIO, the kernel's remote-I/O error. The kernel's I2C fault-code documentation groups EREMOTEIO with the transmission errors: the adapter finished its own side of the transaction and the device never acknowledged it. In the kernel's own phrasing this usually means nothing is listening at that address — the transaction went out, and no device answered.

The line above it carries the other half of the diagnosis. found subdevice means the CSI controller matched a camera described in the device tree or firmware graph; the address on that line is the one your description assigns, not something the sensor reported. The interface-enable step — raspi-config on the common single-board family, an overlay or device tree setting elsewhere — is therefore already correct if you get this far: the description loaded and the driver bound far enough to attempt a probe.

Two nearby signatures mean different fault classes. A probe error with no found-subdevice line points at the description or at the driver the system picked — Camera loads the wrong sensor driver: read dmesg, fix the overlay sorts those out. A probe that succeeds but leaves no video node is a description-chain problem, covered in Sensor probes but no video node: fix the devicetree chain.

Error -121 is a physical-layer fault reported through a protocol error code, and that separation — physical first, protocol second — holds across industrial buses. For the same split worked through on a sensor bus, physical layer versus protocol fault-finding on RS485 links is a close parallel.

Worked example: the ov5647 probe line with error -121

Inputs — two lines from a failing boot, captured with dmesg | grep -i ov5647:

rp1-cfe 1f00128000.csi: found subdevice /axi/pcie@1000120000/rp1/i2c@80000/ov5647@36
ov5647 11-0036: probe with driver ov5647 failed with error -121

Rule: the kernel names an I2C device as bus-address in hexadecimal, and prints a failed probe as the negated errno. The device address comes from the camera description — the ov5647@36 node in the first line — never from a bus scan.

Arithmetic: 11-0036 splits into I2C bus 11 and device address 0x36. Converting the address: 0x36 = 3 × 16 + 6 = 54 decimal, an ordinary mid-range address on the 7-bit I2C bus, inside the usable span between the reserved blocks 0x00–0x07 and 0x78–0x7F. Converting the error: -121 is errno 121, EREMOTEIO.

Result: the driver name matches on both lines, the camera description is loaded, and the first register read at address 0x36 (54) on bus 11 drew no acknowledge from the sensor.

Decision: found-subdevice followed by an EREMOTEIO probe failure is a physical-link fault until proven otherwise. Reseat and re-orient both ends of a known-good cable before any software work. The threshold for moving on is a verified-correct, known-good cable that still returns -121: then the fault sits in the connector, the supply or the module, and only then do overlays and drivers come back into scope.

The likely causes, ranked

On the bench, probability runs in this order:

  1. Half-seated cable or an open latch at one end. A flat cable sitting a millimetre proud of the connector powers nothing reliably and clocks nothing at all. Test: power down, open both latches fully, reinsert square, close each latch flat.
  2. Cable flipped at one end. The classic -121: one end right, one end reversed. Test: compare contact sides at both ends — on the common single-board family the blue tab faces the Ethernet jack; camera-board connectors vary by module, so follow the silkscreen or drawing rather than a guess.
  3. Damaged cable. A crease across a conductor breaks SDA or SCL while the assembly still looks fine. Test: inspect both faces under good light, then run the swap test with a known-good spare.
  4. Wrong cable for the connector. Flat cables differ in conductor count and pitch; one that appears to seat can still land on the wrong pins. Test: match the cable to the module's specified interface — Camera module interface compatibility: what to verify lists what to check.
  5. Module unpowered. Many camera modules take their supply, usually 3.3 V, through the same ribbon; one broken power conductor leaves the sensor silent at every address. Test: measure the module's supply while the board is up.
  6. Address or identity conflict. Rarest when a found-subdevice line precedes the failure: the sensor ID reads back wrong, or a second device answers at the same address. Those signatures differ from a bare -121; MIPI camera sensor ID mismatch: diagnose the wrong I2C probe covers the identity case.
  1. Open both latches fully. Lift the collar straight up; a stiff latch means you are lifting from the wrong edge, not that it needs force.
  2. Withdraw the cable from each connector and inspect it under good light on both faces: creases, kinks, torn or tarnished conductors. Retire the cable if you find damage.
  3. Reinsert at the host end, square to the connector and fully home, contacts on the side the board's drawing shows, then close the latch flat.
  4. Repeat at the camera end.
  5. Fit a known-good spare instead if inspection found damage — the shortest cable that reaches.
  6. Reapply power, boot, and rerun dmesg | grep -i ov5647.
  7. Confirm end to end with the vendor's camera self-test utility — the same one that prints "No cameras available!" when enumeration fails. On the common single-board family the firmware can also report camera state before Linux loads; firmware camera-detection check shows what a healthy report looks like.

A clean result: the failed with error -121 line is gone, the driver registers, and the video device node appears. Capture one frame to close the case. If the probe passes but the preview stays black, the fault has moved downstream of the sensor — MIPI CSID lane0 FIFO overflow: sensor probes but preview is black picks it up there. If the node never appears, the description chain is the suspect and Camera driver device tree mismatch: diagnose missing DTBs is the next stop.

If a verified cable in a checked orientation still returns -121, the shortlist narrows. (If you are unsure of the contact convention, one powered-off flip test settles it: flip one end, boot once, compare the log, and do not leave a reversed cable powered.)

Flat ribbon links fail from rework and vibration, not from steady use. Route them away from edges and moving parts, clamp them with strain relief, and cap the reseat cycles — every open-and-close of a latch is a chance to crease a conductor. Once the camera goes into a machine that moves, vibrates or gets serviced, stop making the bare ribbon the plan and move the camera onto an interface that locks. That removes the -121 failure class entirely, and the catalog covers both halves of the swap: the camera and the cable.

For a compact global-shutter module, the MV-CB016-10GM-M-W pairs a 1.6 MP sensor with an M12 lens mount on a GigE link, so the cable you route is a locking network line rather than a bare ribbon.

Board-level camerasHikrobot MV-CB016-10GM-M-W 1.6 MP GigE board-level camera, IMX296, Mono, M12 lens mount, WTB GigE portMV-CB016-10GM-M-W
Sensor format
1/2.9"
Lens mount
M12
Interface
GigE
Resolution
Up to 3 MP
$559.00View partBuild a system with it

When the inspection needs more detail, the LS-BCM-0020 carries a 6.3 MP, 1/1.8" rolling-shutter sensor behind a CS-mount on GigE, streaming at 18 fps.

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
Resolution
6-10 MP
Shutter
Rolling
$290.00View partBuild a system with it

Both routes keep the cabling standard: the LS-CBL-0199 is a 3 m high-flex GigE camera cable with screw locks, built for drag-chain routing, and the LS-BCM-0003 is the USB3 option — a 3.1 MP, 1/1.8" global-shutter board camera that streams at 120 fps.

The decision per case: a compact machine that needs a global shutter and simple locking cabling takes the M12 GigE module; a detail inspection over GigE takes the 6.3 MP CS-mount module; a USB3-only host with high frame-rate demands takes the 3.1 MP global-shutter module with the drag-chain cable. Bring whichever you pick through the acceptance tests in Board camera evaluation checklist for inspection systems before it ships.

To pick the parts: the board-level cameras category filters by interface, mount and shutter, the cables category lists locking camera data and power/I/O cables, the camera finder and accessories finder narrow by spec, and the configurator's camera step assembles a matched set. For everything that surfaces in the log after the probe passes, the systems topic page collects the rest of the triage guides.

Questions

What exactly is I2C error -121 on a camera probe?

The kernel returns -121, EREMOTEIO, when an I2C transfer fails at the device end: the controller sent the transaction and no acknowledge came back. Because the address on the log line comes from your device tree entry, not from the sensor itself, the error says nothing about which device is wired wrong — it only says the transaction did not complete. That is why the fix starts with cables, not configuration.

Can a flipped camera ribbon cable damage the sensor board?

It can, on connectors whose pinout is not symmetric: turning the cable around puts supply and ground where signal pins sit. Not every module dies, but any cable found reversed — and any module that ran with one — goes on the suspect list until a verified-correct reseat produces a clean probe. If -121 survives a known-good cable in a checked orientation, test the module on a second board before buying parts.

Why does the log say found subdevice before the probe failure?

The two lines come from different layers. 'Found subdevice' is the CSI controller matching the camera description in the device tree — an entry in a data structure, not a measurement on the bus. The probe failure is the sensor driver's first live transaction, typically reading the chip's identification registers. Together they mean: description loaded, driver bound, bus silent — which is why the fault list starts with cables and connectors, not configuration.

How do I tell a broken cable from an I2C address conflict?

The signatures differ. A broken link fails the first register read, so the log stops at the -121 probe line and nothing after it changes. A conflict shows later or differently: the sensor ID reads back wrong, or a second device disappears when the camera comes up. If a known-good cable still gives -121, check what else shares the bus before replacing hardware — the address-conflict guide covers the bus options.

When should I replace the ribbon link with a locking interface?

As soon as the camera goes into a machine rather than staying on a bench: vibration, motion and service access eventually work a flat cable loose. A GigE or USB3 board-level camera with a locking, drag-chain-rated cable removes the failure class, and the same bring-up logic then applies to the network or USB link instead of the ribbon.

The probe now succeeds but the preview is black — is that still error -121?

No. Once the probe completes, I2C works and the -121 chapter is closed. A black preview behind a bound driver is a data-lane or pipeline problem: CSI lane wiring, format negotiation or a FIFO overflow downstream of the sensor. Follow the log lines after the probe — the CSID overflow guide is the usual next stop on that path.