Thanks to Ql_freak’s tutorial on debugging an sbasic function in another thread I’ve been able to confirm that the data I was sending exactly matches what i2c_io sends for the same command sequence
No idea what’s going on, will keep trying when I have time