Raspberry Pi 2 i2c doesn't seem to work

Ian Lepore ian at freebsd.org
Mon Sep 11 21:58:49 UTC 2017


On Sun, 2017-09-10 at 20:05 +0000, Maxim Filimonov wrote:
> Hello everyone,
> 
> I understand something has been discussed on this matter, however
> Google doesn't say anything.
> I have a Raspberry Pi 2, and currently I installed FreeBSD 11.1-
> STABLE on it.
> Works fine, but when I try to detect i2c devices (using `i2c -s -f
> /dev/iic1`), it shows nothing.
> ktrace/kdump show it has "Device not configured" on every address.
> On Linux, the device (address 0x77) detects just fine.
> What am I missing? Do I have to configure GPIO pins separately?
> Thanks in advance.
> 

As a followup for future searches... the discussion on this moved to
irc, and what eventually shook out was that the device was on the i2c
bus and working fine.  The problem was in the i2c(8) program: "i2c -s"
didn't work on some types of i2c controllers.  There was no indication
that maybe i2c(8) was the problem... when used with a "complete
transfers only" i2c controller it just silently claimed no devices were
on the bus.

So I fixed all that, as best I could.

In r323465 I added some code to i2c(8) to use a fallback scan method
with controllers that can't do a START/STOP scan.  Instead it tries to
read a single byte from each device address.  This isn't quite as
reliable, some devices don't respond to a read that wasn't preceeded by
a write of the register address, but writing isn't safe for probing.
 At least now it tells you it's using a less-reliable fallback scan, so
you've got some clue that the problem may be i2c(8) if it doesn't find
your device.  And most i2c devices do respond to a bare read, so it
makes scanning work for most common devices.

-- Ian



More information about the freebsd-arm mailing list