LEGO EV3 I2C Compatibility I'm having difficulties with communication between the EV3 and Arduino boards.  Does anyone know if the EV3 is really I2C compatible, or is it just close enough?  

Background: I can get the EV3 to send and receive I2C with an Arduino Uno, but not with MKR1000 or Adafruit Huzzah boards.  This is both with and without pull-up resisters, and also trying different values of pull-up resistors.  When I scope the SDA line, it look reasonable when communicating with the Uno.  When communicating with the MKR1000, the low logic level only reaches 1.6 V (with the 4.7k resistors desoldered from MKR1000 board, but looks worse with the pull-ups).  With the Huzzah board, the SDA line looks great for about 4-5 bits, but then also raises the logic low level to about 2 V.  The clock line looks clean no matter what it is connected to.
LEGO doesn't really follow I2C standards, so "close enough" is a good description.

The EV3 hardware developer kit (available for download at http://mindstorms.lego.com) has this to say:


  4.1 I2C communication
  
  The EV3 platform supports the same level of I2C communication as MINDSTORMS NXT. This means that
  system support a maximum of 9600 bit/s and maximum 32 bytes communication buffers. All I2C
  communication is running within software drivers. External devices are required to include pull-up
  resistors on both pin 5 and 6 on 82K ohm. If multiple sensors are used on the same bus the total
  impedance needs to be adjusted accordingly.


Most off-the-shelf I2C devices use 10k pullup resistors (although it looks like it might be 4.7k in your case). These must be removed and replaced with 82k resistors to be compatible with MINDSTORMS.