Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Desfire commands #15

Open
minabf opened this issue Jul 20, 2021 · 6 comments
Open

Desfire commands #15

minabf opened this issue Jul 20, 2021 · 6 comments

Comments

@minabf
Copy link

minabf commented Jul 20, 2021

Hi all,

My RFID project is with CLRC663 using stm32l0. So far with the help of the code here I managed to get ATQA, UID, SAK, ATS and also read and write to Mifare classic card, work. However I can not get it work with desfire commands! I need to create application, select it, create file and so on but I could not get the native commands work, I even tried to wrap it with ISO 7816 but still no gain. Is their any library that i can download? Nxp's library is so complicated .
Many thanks in advance.

@alansbor
Copy link

@minabf
Copy link
Author

minabf commented Jul 21, 2021

Thanks for the help. However my problem is beyond this. No command works after ATS! I think I am not sending the commands right! So I got an array like Send_Re[4]= {0x5A, 0x01,0x01,0x01}; which th3 three byte 0x01 is my AID which is created using nxp app. Now I am trying to select this app so I write Send_Re into fifo and afterwards I transieve it and once the communication finished(IRQ0 clears) I read the fifo again. Is there anything wrong with this?

@minabf
Copy link
Author

minabf commented Jul 21, 2021

This is my ATS function which works fine.
uint64_t PICC_RequestATS(uint8_t* ats){
CLRC663_write_reg(CLRC663_REG_COMMAND,CLRC663_CMD_LOADPROTOCOL); //write_reg(0x00,0x0D);
CLRC663_flush_fifo(); // Flush_FiFo
CLRC663_write_reg(CLRC663_REG_TXCRCPRESET, 0x19);
CLRC663_write_reg(CLRC663_REG_RXCRCCON, 0x19); // CRC auto calculation is activated for CRC16

uint8_t Send_req1[]= {0xE0, 0x80};  
CLRC663_write_fifo(Send_req1, 2);          //RATS,E0
CLRC663_write_reg(CLRC663_REG_COMMAND, CLRC663_CMD_TRANSCEIVE);     //Start tranceive command
Clrc663_irq_wait(0x18, 0x2);  							            // Wait for irq0 to clear, showing the
uint8_t len = CLRC663_fifo_length();//read FIFO length
CLRC663_read_fifo((uint8_t*) &ats, len);   // Read FIFO,Expecting ATS,after receiving the ATS the PICC enters protocol 
return ats;

}

However for selecting the App I do exactly the same thing and got different response each time which is neither of the response specified in the AN. Here is my code:

uint8_t PICC_SelectApp(uint8_t* result){
CLRC663_write_reg(CLRC663_REG_COMMAND,CLRC663_CMD_LOADPROTOCOL); //write_reg(0x00,0x0D);
CLRC663_flush_fifo(); // Flush_FiFo
CLRC663_write_reg(CLRC663_REG_TXCRCPRESET, 0x19);
CLRC663_write_reg(CLRC663_REG_RXCRCCON, 0x19); // CRC auto calculation is activated for CRC16

uint8_t Send_req1[]= {0x5A, 0x01, 0x01, 0x01};  
CLRC663_write_fifo(Send_req1, 4);          //RATS,E0
CLRC663_write_reg(CLRC663_REG_COMMAND, CLRC663_CMD_TRANSCEIVE);     //Start tranceive command
Clrc663_irq_wait(0x18, 0x2);  							            // Wait for irq0 to clear, showing the
uint8_t len = CLRC663_fifo_length();//read FIFO length
CLRC663_read_fifo((uint8_t*) &result, len);   // Read FIFO,Expecting ATS,after receiving the ATS the PICC enters protocol 
return result;

}
I even tried sending {0x02, 0x5A, 0x01, 0x01, 0x01} or {0x90, 0x5A, 0x01, 0x01, 0x01} but still does not work. I do not know what the problem might be. Any help really appreciated.

@alansbor
Copy link

Ok.
AN11022 has a description for the Appids acquisition sequence
Fig 14. NFC Cockpit with CLEV6630A / CLEV6630B: Activation of a MIFARE DESFire EV1 card + Get Version
Compare with your algorithm of work.

@minabf
Copy link
Author

minabf commented Jul 27, 2021

Thanks alansbor, I got PPS and application select work . Now I am working on authentication . Is it exactly the same process?

@alansbor
Copy link

I was glad to help. Read all the manuals from the chip manufacturer and everything will be fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants