FWIW I'm also seeing another issue (not using slave mode, although it may be playing a role) where the transmit FIFO seems to be getting out of sync, the values being returned by endTransmission()/requestFrom() end up being related to the previous transfer rather than the one given for the current call... I will continue investigating, but there's definitely an issue with larger transfers (8+ bytes).