This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BQ34110: Unable to unseal

Part Number: BQ34110
Other Parts Discussed in Thread: BQSTUDIO

Hello, I am controlling the BQ34110 with a MCU through Arduino. In general I could successfully communicate via i2c. I have been successful in reading voltage, temperature, etc, through the main commands, and I have also been successful in using the sub commands. Where I am currently stuck is in unsealing the device. Initially I read the security keys and received 0xFFFF 0xFFFF 0x3672 0x0414. So from this I deduced that my security key for unsealing is 0x0414 0x3672. To test the sealing and unsealing functionality, I sealed the device using the 0x30 command. Then I read the operation status register and confirmed that both SEC1 and SEC0 were set to 1. So for the past few hours i have been trying to unseal the device but have not had any luck. 

Here is some code to show how I am attempting to unseal it:

void unseal(){
    Wire.beginTransmission(BQ34110_ADDRESS);
    Wire.write(0x00); // Control
    Wire.write(0x04);
    Wire.write(0x14);
    Wire.endTransmission();
    
    Wire.beginTransmission(BQ34110_ADDRESS);
    Wire.write(0x00); // Control
    Wire.write(0x36);
    Wire.write(0x73);
    Wire.endTransmission();

}

I have also tried to mix the order in which i send the bytes but i do not see a change in the operation status register.

Additionally here is what a logic analyzer sees when I send the command.

Any guidance here would be greatly appreciated.

  • Hi Rohaan,

    I notice the data in your capture has '0x73' instead of '0x72'. I recommend first trying the unseal in BQStudio and capturing the process on the logic analyzer to make sure your steps are identical.

    Best regards,

    Matt

  • Apologies, I must have typed 3 accidentally. I double checked my code and i have been using 0x72.  At the moment i don't have access to BQ Studio, I only have the MCU and the logic analyzer. Is my procedure correct though? Or am i missing something fundamental in the i2c communication. 

  • Hi Rohaan,

    Maybe this thread will be helpful: https://e2e.ti.com/support/power-management/f/power-management-forum/877582/bq34110-security_keys-write-format

    The byte order appears to be reversed in your capture.

    Regards,

    Matt

  • So that link was actually helpful thank you, This particular statement was what helped me  From that I got the the sequence i needed to send the keys in but it was still not working. I randomly decided to put a 10 ms delay between the two words and that allowed me to unseal. The delay seems to be crucial as I tried it without and it would not work. I have not tested higher delays than 10ms.

    For anyone interested, Here is the code that worked to unseal the chip

     

    void unseal(){

        Wire.beginTransmission(BQ34110_ADDRESS);
        Wire.write(0x00); // Control
        Wire.write(0x14);
        Wire.write(0x04);
        Wire.endTransmission();
        delay(10); 
       
        Wire.beginTransmission(BQ34110_ADDRESS);
        Wire.write(0x00); // Control
        Wire.write(0x72);
        Wire.write(0x36);
        
        Wire.endTransmission();
    }