SLB9670 Returning Bad Data

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
agreenbhm
Level 1
Level 1
First question asked Welcome!

I am working with an SLB9670 on a module built to be plugged into an ASRock motherboard.  I'm using the module on a Raspberry Pi (I've manually wired the module to the GPIO on the Pi).  I had success doing this about 6 months ago, but now I am unable to perform any TPM functions.

The wiring is definitely correct (I've checked and re-wired about 20 times), but it seems that the data returned is bad.  Linux is unable to initialize the device when using the Pi's tpm-slb9670 overlay, and manual interaction with the device never seems to return proper data.  I seem to get the bytes "0x00 0x00 0x00 0x01 0x81 0x40 0x00 0x 00 0x01 0x3f", followed by "0xff" repeating until the response length matches the input length, no matter what TPM command I send. I've done power-cycles of the TPM and grounded the reset pin between attempts and no matter what, nothing seems to change.  This has been tested on 3 different host devices with different SPI adapters since the problem started, all with the same results.  See below for examples of different commands and the output.  

It seems like the device is stuck in some bad state or is malfunctioning somehow, but that's just a guess.  I only found one other reference online where someone was getting a similar result (https://www.wolfssl.com/forums/topic1760-wolftpmspigenodeintegration.html) but no solution was provided that addresses my situation.  Any ideas on what's going on and how to remedy? 

 

 

>>> #get_capabilities
>>> "".join("%02x " % i for i in spi.xfer(b"\x80\x01\x00\x00\x00\x16\x00\x00\x01\x7a\x00\x00\x00\x06\x00\x00\x01\x02\x00\x00\x00\x01"))
'00 00 00 01 81 40 00 00 01 3f ff ff ff ff ff ff ff ff ff ff ff ff '
>>> #startup
>>> "".join("%02x " % i for i in spi.xfer(b"\x80\x01\x00\x00\x00\x0c\x00\x00\x01\x44\x00\x00"))
'00 00 00 01 81 40 00 00 01 3f ff ff '
>>> #shutdown
>>> "".join("%02x " % i for i in spi.xfer(b"\x80\x01\x00\x00\x00\x0c\x00\x00\x01\x45\x00\x00"))
'00 00 00 01 81 40 00 00 01 3f ff ff '
>>> #clear
>>> "".join("%02x " % i for i in spi.xfer(b"\x80\x02\x00\x00\x00\x1b\x00\x00\x01\x26\x40\x00\x00\x0c\x00\x00\x80\x02\x00\x00\x00\x1b\x00\x00\x01\x26\x40\x00\x00\x0c\x00\x00"))
'00 00 00 01 81 40 00 00 01 3f ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff '

 

  

0 Likes
2 Replies
Sneha_P
Moderator
Moderator
Moderator
250 replies posted 250 sign-ins First comment on blog

Hi @agreenbhm ,

Please let us know what FW of TPM and Linux kernel version you are working with. Could you also provide a schematic with all pins you have connected from the TPM to the host board. 

 

0 Likes
Sneha_P
Moderator
Moderator
Moderator
250 replies posted 250 sign-ins First comment on blog

Please let us know if your query was resolved. We will lock the thread in 2 days. In case your issue is not resolved, please create a new thread and we will be happy to help.

0 Likes