With Auto Read Response enabled, calling HidSmbus_AddressReadRequest() followed by HidSmbus_GetReadResponse() results in incorrect data. The response buffer will usually include the address of the target data. For example, if the bytes at address 0xAA are 0x04, 0x05, requesting an address read for this data and then calling GetReadResponse will result in the following data: 0xAA, 0x05.


This is a known issue with the CP2112. There is a small window of time between sending the last address byte of the Read Request and waiting for the restart to complete where the device could mistakenly send the SMB buffer containing the address bytes as a response.


The soultion, in this case, is to disable Auto Read Response, and instead use Force Read Response after every Address Read Request. The command flow would then be:




For more information, see this post.

  • USB Bridges
  • Knowledge Base Articles
  • Interface