I had perfectly good code addressing an I2C device, then it start raising the "OSError: [Errno 19] ENODEV". After pulling this code asunder I eventually discovered that my I2C device wasn't responding or had come off the I2C bus. Reconnecting it solved the problem. I seems that this error is thrown when you use i2c.writeto with a non-existent address. Having Googled it, it appears that any number of other things can raise the error as well... not very useful.
Just my attempt to protect the sanity of micropython hackers!
[SOLVED] OSError: [Errno 19] ENODEV
[SOLVED] OSError: [Errno 19] ENODEV
Paul Mulvey