From f1d39f7e53718951d9f7923c4a81ccd87c9f08a5 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 19 Oct 2020 15:48:45 +0200 Subject: [PATCH] fix support for waveshare 1.54 --- client/src/cmdhf14a.c | 10 ++++++++-- client/src/cmdhfwaveshare.c | 15 +++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index e9ddbf6c5..837311062 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -1681,10 +1681,16 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { } getTagLabel(card.uid[0], card.uid[1]); break; - case 0x57: // Qualcomm + case 0x46: + if (memcmp(card.uid, "FSTN10m", 7) == 0) { + isMifareClassic = false; + printTag("Waveshare NFC-Powered e-Paper 1.54\" (please disregard MANUFACTURER mapping above)"); + } + break; + case 0x57: if (memcmp(card.uid, "WSDZ10m", 7) == 0) { isMifareClassic = false; - printTag("Waveshare NFC-Powered e-Paper"); + printTag("Waveshare NFC-Powered e-Paper (please disregard MANUFACTURER mapping above)"); } break; default: diff --git a/client/src/cmdhfwaveshare.c b/client/src/cmdhfwaveshare.c index 4e5728e7f..1ea7013a1 100644 --- a/client/src/cmdhfwaveshare.c +++ b/client/src/cmdhfwaveshare.c @@ -693,11 +693,21 @@ static int start_drawing(uint8_t model_nr, uint8_t *black, uint8_t *red) { return PM3_ESOFT; } - if ((card.uidlen != 7) || (memcmp(card.uid, "WSDZ10m", 7) != 0)) { + if ((card.uidlen != 7) || ((memcmp(card.uid, "FSTN10m", 7) != 0) && (memcmp(card.uid, "WSDZ10m", 7) != 0))) { PrintAndLogEx(WARNING, "Card doesn't look like Waveshare tag"); DropField(); return PM3_ESOFT; } + if (((model_nr != M1in54B) && (memcmp(card.uid, "FSTN10m", 7) == 0))) { + PrintAndLogEx(WARNING, "Card is a Waveshare tag 1.54\", not %s", models[model_nr].desc); + DropField(); + return PM3_ESOFT; + } + if (((model_nr == M1in54B) && (memcmp(card.uid, "FSTN10m", 7) != 0))) { + PrintAndLogEx(WARNING, "Card is not a Waveshare tag 1.54\", check your model number"); + DropField(); + return PM3_ESOFT; + } PrintAndLogEx(DEBUG, "model_nr = %d", model_nr); int ret; PrintAndLogEx(DEBUG, "Step0"); @@ -921,6 +931,7 @@ static int start_drawing(uint8_t model_nr, uint8_t *black, uint8_t *red) { msleep(200); } PrintAndLogEx(DEBUG, "Step11: Wait tag to be ready"); + PrintAndLogEx(INPLACE, "E-paper Reflashing, Waiting"); if (model_nr == M2in13B || model_nr == M1in54B) { // Black, white and red screen refresh time is longer, wait first msleep(9000); } else if (model_nr == M7in5HD) { @@ -950,7 +961,7 @@ static int start_drawing(uint8_t model_nr, uint8_t *black, uint8_t *red) { } else { fail_num++; PrintAndLogEx(INPLACE, "E-paper Reflashing, Waiting"); - msleep(100); + msleep(400); } } }