Using I2C Devices on SMBus interface
If you take some time and poke around Wikipedia you'll find a page describing the differences between I2C and SMBus; the one that's probably getting you is the packet checksumming or PEC; this is not required for I2C transfers but SMBus devices want it. It's not difficult to calculate and append to the transfer, so you might want to start there.

Obviously if you have a logic analyzer it'd be prudent to throw that on first and see if that really is what's causing your troubles before going to the effort of writing the code. :-) You can also probably lift the PEC generation code from the linux kernel, as it has I2C and SMBus drivers and the places like the Linux Cross Reference are excellent at helping you find out where the code you're interested is hiding.

Good luck!