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.

MSP-EXP430F5529LP and DLP-7970ABP

Other Parts Discussed in Thread: MSP430F5529, TRF7970A

Hello,

I'm using  MSP-EXP430F5529LP + DLP-7970ABP + Stollman NFCPlayer ( version 1.0.153.5 ) combination to communicate with a 14443 B  tag.

After START R/W  and retrieve of the Detected Device ID (PUPI)  I want to send the ATTB command to the tag but I can't locate any information regarding the structure of the PDU command for the Stollman NFCPlayer software.

Can anyone tell me what is the PDU command structure to be entered into the PDU field of the NFCPlayer so I can communicate further with the 14443-B tag

  • Hi Arian,

    All you need to do is provide the raw bytes of the PDU(s) you want to exchange with the ISO14443B tag by typing them within the PDU box. You then send the command using the "Exch. PDU" button. You can also add a Description and then hit Save PDU in order to save certain PDU's for easy re-use via the "Command" drop down menu.

    For example: 

    The above image shows the transmission of an ISO14443B ATTRIB command, and the reply from the ISO14443B tag.

  • Ralph

    Encouraging is the fact that I need to enter raw data into the PDU field.

    Not seeing full REQB response makes it difficult to see the Protocol  1, 2 and 3 of the 14443-B tag.

    I followed  your advice and used raw data to transmit the ATTRIB command but the 14443-b tag seems to not respond same as when TRF7970AEVM was used.

    I'm using a valid 14443 B PayPass Debit card

    Below I copied the script of the ATTRIB command transmit but the response shows protocol error.

                  Transmitted PDU size: 9 bytes, data:

                  1D 53 89 90 00 00 08 01 00

                  Received PDU size: 2 bytes, data:

                   67 00

    I'm going to verify it but  I think the  < 67 00 >  represent protocol error

    And now I know how to paste a capture. LOL

  • "67 00" represent wrong length
  • Hi Arian,

    If you are getting a 67 00, then it would seem the tag has already successfully exchanged an ATTRIB with NFCLink Standalone. The tag I was testing with, I could issue an ATTRIB successfully, but it seems the one you have is expecting Layer 4 commands (following ISO7816-4 protocol) already - which makes sense if it is a PayPass card.

    At this point, the tag is activated in terms of the RFID technology, and now is ready for commands specific to it's payment protocol. Since it won't be NDEF formatted, this is why NFCLink displays the Legacy tab for you. With that tab, you can issue ISO7816-4 commands using the same method as I described for the ATTRIB in order to further communicate with the paypass card.
  • Hi Ralph,
    I anticipated the successful exchange of the ATTRIB and I issued a Select PPSE command but I get the same response 67 00.
    Do you have any detail information on how to implement the ISO7816-4 commands?
  • Hi Arian,

    Unfortunately, I do not have knowledge of the ISO7816-4 commands for Payment cards like that. I'm only familiar with the commands that are used for the NDEF standard. However, I will check with the rest of the team to see if anyone else can comment on that.
  • Ralph,
    Thank you! I did send an email to Josh Wyatt and hopefully he will get back to me soon.
  • Arian -
    thanks for reaching out on the Forum, too. Sorry for the delay.

    the Stollmann Player doesn't need your help to activate and select the tag, other than you clicking start RW. If non-NDEF ISO card is presented, it will flip to the R/W:Legacy screen
    so it depends on the card now which command will be next in the layer 4. The card readers will be looping through lots of them.
    one example (to send using the Stollmann GUI) is:
    00A404000E325041592E5359532E4444463031
    and expect a response from the card like:
    6F 4D 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46
    30 31 A5 3B BF 0C 38 61 1A 4F 07 A0 00 00 00 03
    10 10 87 01 01 9F 2A 01 03 42 03 46 50 81 5F 55
    02 55 53 61 1A 4F 07 A0 00 00 00 98 08 40 87 01
    02 9F 2A 01 03 42 03 46 50 81 5F 55 02 55 53 90
    00

    if you have specific one you are trying to read, please advise.
    there will be more commands after that, this is just an Application Select Command
  • Josh,

    Thank you for your reply!

    Your instruction was helpful and a good start but required the Lc byte to work properly. I copied the responses below

    Transmitted PDU size: 19 bytes, data:

    00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44

    46 30 31

    Received PDU size: 2 bytes, data:

    67 00

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    Transmitted PDU size: 19 bytes, data:

    00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44

    46 30 31

    Received PDU size: 2 bytes, data:

    67 00

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    Transmitted PDU size: 20 bytes, data:

    00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44

    46 30 31 00

    Received PDU size: 39 bytes, data:

    6F 23 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46

    30 31 A5 11 BF 0C 0E 61 0C 4F 07 A0 00 00 00 04

    10 10 87 01 01 90 00

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    Thank you again! I'll be testing toward the reach of my destination and will contact you if I need some help

  • here are some more strings

    this is from a MC, using same tools

    Payment Service Received PPSE select

    Transmitted PDU size: 20 bytes, data:
    00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44
    46 30 31 00
    Received PDU size: 39 bytes, data:
    6F 23 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46
    30 31 A5 11 BF 0C 0E 61 0C 4F 07 A0 00 00 00 04
    10 10 87 01 01 90 00
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    Payment Service Received MC-MSD
    Transmitted PDU size: 13 bytes, data:
    00 A4 04 00 07 A0 00 00 00 04 10 10 00
    Received PDU size: 27 bytes, data:
    6F 17 84 07 A0 00 00 00 04 10 10 A5 0C 50 0A 4D
    61 73 74 65 72 43 61 72 64 90 00
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    Payment Service Received GPO
    Transmitted PDU size: 8 bytes, data:
    80 A8 00 00 02 83 00 00
    Received PDU size: 14 bytes, data:
    77 0A 82 02 00 00 94 04 08 01 01 00 90 00
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------
    Payment Service Received Read Record

    Transmitted PDU size: 5 bytes, data:
    00 B2 01 0C 00
    Received PDU size: 147 bytes, data:
    70 81 8E 9F 6C 02 00 01 56 3C 42 35 34 31 33 31
    32 33 34 35 36 37 38 34 38 30 38 5E 53 4D 49 54
    48 2F 4A 4F 48 4E 5E 30 35 30 38 31 30 31 33 33
    30 30 30 33 33 33 30 30 30 32 32 32 32 32 30 30
    30 31 31 31 31 30 9F 64 01 03 9F 62 06 00 00 00
    38 00 00 9F 63 06 00 00 00 00 E0 E0 9F 65 02 00
    0E 9F 66 02 0E 70 9F 6B 13 54 13 12 34 56 78 48
    08 D0 50 81 01 90 00 99 00 00 00 0F 9F 67 01 03
    9F 68 0E 00 00 00 00 00 00 00 00 5E 03 42 03 1F
    03 90 00
    ----------------------------------------------------------------------

    here in this last string is hex for SMITH/JOHN, with a card #, as this is test card
  • Josh
    Thank you! It worked fine and I'm able now to implement application level commands.
    I got questions regarding the card emulation mode.
    When activating FeliCa card emulation mode the Stollman GUI displays some byte exchanges while when activating card emulation mode for 14443 a or B the GUI doesn't display anything, so the question is;
    Is the card emulation mode for 14443 A &B controlled by the MSP430F5529 microprocessor or it is hosted by the TRF7970A chip?
    Can I have access to and control/manage the response (ATQB, ATTRIB response) to the commands (REQB, ATTRIB)?
    Thank you in advance!
  • Hi Arian,

    The Card Emulation mode is primarily handled by the MSP430F5529. The TRF7970A handles the air interface, modulation, CRC checking etc, but the data and commands being sent out is driven from the MSP430 side.

    The NFCLink NCI solution you are working with does not offer much in the way of customization for Card Emulation after activation. You can modify the NDEF contents which are being emulated with the provided options in the GUI interface, but that is all. As far as the ATQB and ATTRIB responses go, you can modify these by going to the RFID.cpp file. ATQB starts at line 564, and ATTRIB response is right below it.

    If you want to modify the data being emulated to be something other than NDEF - I would recommend looking at our Standalone NFCLink solution. The latest firmware for this can be found at: http://www.ti.com/lit/zip/sloa227 and our Application Note for Card Emulation can be read at: http://www.ti.com/lit/an/sloa208/sloa208.pdf This firmware would give you the ability to fully customize your emulated data content, and also still provide the ability to customize the ATQB and ATTRIB response as well.

  • cool resource for those who want online detail on the APDUs

    www.openscdp.org/.../sda.html
  • Josh,

    Thanks for the link!

    Can you help me with the select AID command response as pasted below from the Stollman

    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    Transmitted PDU size: 20 bytes, data:

    00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44

    46 30 31 00

    Received PDU size: 110 bytes, data:

    6F 6A 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46

    30 31 A5 58 BF 0C 55 61 26 4F 07 A0 00 00 00 03

    10 10 50 0A 56 69 73 61 20 44 65 62 69 74 87 01

    01 9F 2A 01 03 42 03 40 95 04 5F 55 02 55 53 61

    2B 4F 07 A0 00 00 00 98 08 40 50 0F 55 53 20 43

    6F 6D 6D 6F 6E 20 44 65 62 69 74 87 01 02 9F 2A

    01 03 42 03 40 95 04 5F 55 02 55 53 90 00

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    Transmitted PDU size: 13 bytes, data:

    00 A4 04 00 07 A0 00 00 00 03 10 10 00

    Received PDU size: 2 bytes, data:

    69 85

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    Why the device respond with "69 85 - Error: Condition of use not satisfied" when I try to select the AID=A0 00 00 00 03 10 10 ?

     

  • hey Guys,
    I'm going to need some help here since that I'm new to the CCS.
    I'm trying to create a project for the RW_P2P_CE_1 and RW_P2P_CE_2 using CCS6.1.2.
    I have collected all *.h files into one workspace folder and instruct the CCS to include its path.
    When I "Build all" I get these errors;
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>
    #1965 cannot open source file "inc/hw_memmap.h" .ccsproject /RW_P2P_CE_1 line 32, external ..................
    #1965 cannot open source file "USB_API/USB_CDC_API/UsbCdc.h" UsbIsr.c
    #1965 cannot open source file "USB_config/descriptors.h" host_interface.cpp
    >>>>>>>>>>>>>>>>>>>>>>>>>>>
    First - I can't locate the file "inc/hw_memmap.h" and the "USB_config/descriptors.h"
    Second - Even if I have located the file UsbCdc.h and stored it to the include folder on the workspace it still declares an error.When I click Go To on the error it sends me to this declaration <USB_API/USB_CDC_API/UsbCdc.h>. Why < file > and not "file "?
    Over all can you guys give any tip or trick how to build the project.
  • Hi Arian,

    Check the include paths and linked which are used for the original project and make sure all of those paths exist or are properly linked to for your new project. Also paths which don't exist will give errors as well so you may need to edit any paths to point to the correct locations if that is the case.

    The Include paths can be found by going to Project Properties -> Build -> MSP430 Compiler -> Include Options
    The linked paths can be found by going to Project Properties -> Build -> MSP430 Linker -> File Search Path

    See if that helps.
  • Hi Ralph J.
    I was able to compile the RW_P2P_CE_1 project!
    Touring the source code I noticed that the source code for the Application class is not provided.
    Is the source code, for Application class, available?
    Thanks in advance!
  • Hi Arian,

    The only source code available for this particular firmware solution is what we have released. We cannot release any other source code such as what is used to make the nfclinklib.

    If you need a solution with full source code available - again I would mention our NFCLink Standalone solution. The NFCLink Standalone firmware does not include NCI handling like what you are using now, and the GUI does not support the sending of APDU's as you describe on it's own. However, as you will have full source code, you can make your own custom applications to handle this in the firmware yourself, which would also then automate the process when programmed correctly.

    Again, the firmware can be found at www.ti.com/.../sloa227 and the app note which describes the Reader/Writer part of the firmware in more detail can be found at: www.ti.com/.../sloa227.pdf