As 6by9 pointed out earlier, you are trying to use SMBus to talk to an I2C device, the chip you linked to doesn't use SMBus so it shouldn't be expected that it follows the SMBus protocol.
From a quick look at what read_i2c_block_data(address, comm, count)
Code: Select all
Key to symbols
S (1 bit) : Start bit
P (1 bit) : Stop bit
Rd/Wr (1 bit) : Read/Write bit. Rd equals 1, Wr equals 0.
A, NA (1 bit) : Accept and reverse accept bit.
Addr (7 bits): I2C 7 bit address. Note that this can be expanded as usual to
get a 10 bit I2C address.
Comm (8 bits): Command byte, a data byte which often selects a register on
Data (8 bits): A plain data byte. Sometimes, I write DataLow, DataHigh
for 16 bit data.
Count (8 bits): A data byte containing the length of a block operation.
[..]: Data sent by I2C device, as opposed to data sent by the host adapter.
SMBus Block Read: i2c_smbus_read_block_data()
This command reads a block of up to 32 bytes from a device, from a
designated register that is specified through the Comm byte. The amount
of data is specified by the device in the Count byte.
S Addr Wr [A] Comm [A]
S Addr Rd [A] [Count] A [Data] A [Data] A ... A [Data] NA P
From that it says that the comm byte is first written to the device to tell the device which register it wants to read from, then the first byte received is how many more bytes the device is going to send, followed by the data.
According to the docs for your chip, when you send a command byte it expects to be sent two more bytes of data (and that 0 is not a valid command) and any responses to a command are either 1, 2 or 3 bytes (and it doesn't send a count byte first).
To just read the humidity and temperature you don't send a command each time, you just issue data fetches and by the looks of it SMBus only has one function that can read without sending a command and that only allows reading one byte.