If you keep getting this error, due to interference or long distance.. This is how I resolved it.
assert(len(cmd) <= 31) while True: try: self.bus.write_i2c_block_data(self.addr, self.cmd_mode, list(cmd)) break except: pass
for i in range(0, len(data), 31): while True: try: self.bus.write_i2c_block_data(self.addr, self.data_mode, list(data[i:i+31])) break except: pass