FTM Firmware Upgrade Issue with FEIG MR102 Reader
- September 21, 2026
- 1 reply
- 15 views
I previously experimented with performing the FTM Demo (Firmware Upgrade) in ST25PC-NFC on an ST25DV Discovery board, using both the STEVAL-25R3916B and FEIG MR102 readers. The demo worked successfully with both readers, although there was some difference in transfer speed.
We are now looking to implement OTA firmware updates on our NFC-enabled product, which is based on a PIC microcontroller. We have integrated the ST middleware into our application and are currently testing the firmware upgrade functionality using FTM.
The firmware upgrade works correctly when using the STEVAL-25R3916B reader. I have attached the relevant logs below.
However, when using the FEIG MR102 reader, the firmware upgrade does not work correctly. After comparing the ST logs, it appears that there is a difference in the timing and behaviour of the writeMsg calls between the two readers.
With the FEIG MR102:
-
The first packet is always transferred successfully.
-
Almost all subsequent packets require a second attempt before they are transferred successfully.
-
This effectively doubles the transfer time.
-
There is also an additional delay between packets that does not appear when using the STEVAL-25R3916B.
I found that the ST middleware introduces this delay between packets. To test this, I added:
mFtmCommands.setMinTimeInMsBetweenSendCmds(0);
before calling:
mFtmCommands.sendCmdAndWaitForCompletion(...);
This removes the additional delay between packets. However, the main issue remains: subsequent packets still require multiple attempts to transfer successfully with the FEIG MR102.
For comparison, I have included logs below showing the packet transfer behaviour with both readers.
My questions
-
Is the inter-packet delay controlled by the ST25 SDK expected to be required for FTM communication, or is it safe to set
setMinTimeInMsBetweenSendCmds(0)? -
Is there any additional timing requirement or configuration that needs to be considered when using the FEIG MR102 reader for FTM?
-
Could the repeated
TAG_NOT_IN_THE_FIELD/ unsuccessful first attempts for subsequent packets be related to the FEIG reader's RF or ISO15693 timing? -
Is there anything specific that needs to be implemented or configured in the reader integration (
writeMsg) to support reliable FTM packet transfers?
I have included two packet-transfer examples from each reader below so that the timing and behaviour can be compared.
STEVAL-25R3916B:
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: sendFtmData: Data Size = 49409 Bytes
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: mState = PREPARE_PACKET
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: FTM Semaphore received
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: sendNextPacket
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: preparePacket
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: ==> Send Packet 0 (256 Bytes) from Segment 0
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: First Packet. TotalLengthField Present
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: Data : 04 00 00 ….. ff 4b 90
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: mState = SEND_PACKET
2026-09-21 12:27:17.51 writeMsg >> 22AA02438F33A2685002E0FF040000….FF4B90
2026-09-21 12:27:17.619 writeMsg << 0000
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: mState = PREPARE_PACKET
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: sendNextPacket
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: preparePacket
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: ==> Send Packet 1 (256 Bytes) from Segment 0
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: Middle Packet
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: Data : 08 10 00 …. 01 14 00
Sept 21, 2026 12:27:17 PM com.st.st25sdk.STLog i INFO: mState = SEND_PACKET
2026-09-21 12:27:17.62 writeMsg >> 22AA02438F33A2685002E0FF08100….011400
2026-09-21 12:27:17.731 writeMsg << 0000
FEIG MR-102 Reader:
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: sendFtmData: Data Size = 49409 Bytes
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: mState = PREPARE_PACKET
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: FTM Semaphore received
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: sendNextPacket
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: preparePacket
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: ==> Send Packet 0 (256 Bytes) from Segment 0
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: First Packet. TotalLengthField Present
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: Data : 04 00 00 …. ff 4b 90
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: mState = SEND_PACKET
2026-09-21 12:05:12.523 writeMsg >> 22AA02438F33A2685002E0FF040000…FF4B90
2026-09-21 12:05:12.61 writeMsg << 0078F0
writeMsg transceive returns: 00 - Reader status = OK
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: mState = PREPARE_PACKET
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: sleep 12 ms
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: sendNextPacket
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: preparePacket
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: ==> Send Packet 1 (256 Bytes) from Segment 0
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: Middle Packet
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: Data : 08 10 00 ... 01 14 00
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: mState = SEND_PACKET
2026-09-21 12:05:12.624 writeMsg >> 22AA02438F33A2685002E0FF081000...011400
2026-09-21 12:05:12.732 writeMsg <<
Reader status = No tag detected or no response from tag!
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog w WARNING: error during sendPacket: TAG_NOT_IN_THE_FIELD
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: ==> Send Packet 1 (resend)
2026-09-21 12:05:12.734 writeMsg >> 22AA02438F33A2685002E0FF081000...011400
2026-09-21 12:05:12.821 writeMsg << 0078F0
writeMsg transceive returns: 00 - Reader status = OK
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: mState = PREPARE_PACKET
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: sleep 13 ms
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: sendNextPacket
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: preparePacket
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: ==> Send Packet 2 (256 Bytes) from Segment 0
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: Middle Packet
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: Data : 08 8a 00 ... 25 01 14
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: mState = SEND_PACKET
2026-09-21 12:05:12.835 writeMsg >> 22AA02438F33A2685002E0FF088A00...250114
2026-09-21 12:05:12.942 writeMsg <<
Reader status = No tag detected or no response from tag!
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog w WARNING: error during sendPacket: TAG_NOT_IN_THE_FIELD
Sept 21, 2026 12:05:12 PM com.st.st25sdk.STLog i INFO: ==> Send Packet 2 (resend)
2026-09-21 12:05:12.942 writeMsg >> 22AA02438F33A2685002E0FF088A00...250114
2026-09-21 12:05:13.03 writeMsg << 0078F0
writeMsg transceive returns: 00 - Reader status = OK
