c9ac17c9f5
The problem occurs in the following succession of events: * Emit commands returning an answer larger than 16 bytes * Re-enumerate USB devices without power cycle, e.g. a warm reboot of the PC The bug can be reproduced for testing purposes with usbreset.c from https://askubuntu.com/questions/645/how-do-you-reset-a-usb-device-from-the-command-line#661 $ lsusb|grep NFC Bus 001 Device 010: ID 04e6:5591 SCM Microsystems, Inc. SCL3711-NFC&RW $ sudo ./usbreset /dev/bus/usb/001/010 Resetting USB device /dev/bus/usb/001/010 Reset successful $ echo -e "4a 01 00\n423000" |pn53x-tamashell $ sudo ./usbreset /dev/bus/usb/001/010 Resetting USB device /dev/bus/usb/001/010 Error in ioctl: No such device $ lsusb|grep NFC ... device disappeared In the example above, reading 4 pages of a MFUL corrupted one single byte. The entire buffer can be corrupted e.g. with fast-reading a MFUL EV1: $ echo -e "4a 01 00\n423a0013"|pn53x-tamashell |
||
---|---|---|
.. | ||
buses | ||
chips | ||
drivers | ||
additional-pages.dox | ||
CMakeLists.txt | ||
conf.c | ||
conf.h | ||
drivers.h | ||
iso7816.h | ||
iso14443-subr.c | ||
log-internal.c | ||
log-internal.h | ||
log.c | ||
log.h | ||
Makefile.am | ||
mirror-subr.c | ||
mirror-subr.h | ||
nfc-device.c | ||
nfc-emulation.c | ||
nfc-internal.c | ||
nfc-internal.h | ||
nfc.c | ||
target-subr.c | ||
target-subr.h |