After a few hours of banging around, here are some breadcrumbs for the next soul who wanders this way:
-
The built-in routines only support 8 bit addressing. Full stop.
-
However, there's a smbus2.py library which can handle larger writes. I grabbed it from here and installed it in the python2.7 directory:
https://pypi.python.org/pypi/smbus2/0.2.0
- Then, these folks wrote simple read-eeprom16.py and write-eeprom16.py files, based on smbus which seem stable enough. The reference is halfway down the page:
I renamed 'smbus' as 'smbus2' in the two files like this:
import sys
import smbus2
import time
bus = smbus2.SMBus(1)
That said, as written it does not currently support page read / page write, merely 16 byte chunks. So it's very slow. I'll see what I can do to speed things up.