BBB as I2C Slave Device

Hi all,
First time posting, so forgive me if this is in the wrong category.

Me and a colleague are working on a system to solve a rubik’s cube.

Our planned setup for the vision system is to have one BBB and webcam per face.
These will perform basic image analysis to determine the color arrangement of each face, and then send the processed information (no more than 9 chars) to another, central BBB which will generate the solution.
So overall, six BBBs talking to another, central BBB.

Our opinion was that I2C would be the best place to start, because the six image processing BBBs are essentially slave devices.
The central BBB would behave as the master, reading 9 bytes from each slave BBB.
Also it would eliminate the need for routers or large numbers of cables. They could all be on one I2C network with different addresses.

However I have not yet found any forum posts or wiki pages about this (Probably just because I’m new and don’t know where to look!)

So, firstly, thanks for reading this far.

Secondly, I would like to ask/put up for discussion:

  • Is using I2C to communicate between BBBs in a master/slave manner possible?

  • If so, where can I find resources about configuring a BBB as a slave device?
    (Setting the I2C slave address, specifying register addresses and so on)
    Thanks in advance,


I do not believe the kernel drivers support a system running as a slave device on the bus. To do this you would have to create your own bit-banged version of an I2C slave using GPIO. You’d have to use memory mapped GPIO to manage most normal I2C clock speeds. I’m not sure if the I2C hardware on the ARM supports a slave mode but if it did you could go bare-metal and use that.