The stock kernel runs the I2C bus exposed on the BeagleBoard’s expansion header (bus 2) at 400KHz (‘Fast’ mode). This is fine for most I2C slaves, however it seems to be too fast for slaves running on ATTiny and ATMega microcontrollers, even when running with an 8MHz clock. For me this was resulting in intermittent bus lock-ups when attempting to access the slave.
The I2C bus speed is set in the kernel in /arch/arm/mach-omap2/board-omap3beagle.c on this line:
omap_register_i2c_bus(2, 400, beagle_i2c2_boardinfo, ARRAY_SIZE(beagle_i2c2_boardinfo));
A bus speed of 100KHz seems to work reliably with the ATTiny2313. If you’re using Ubuntu you can use the instructions at the end of this article to rebuild a BeagleBoard-specific kernel.