From 72d4917a0f2f007d094e5a9ff3064aacd323d99b Mon Sep 17 00:00:00 2001 From: Michael McMaster Date: Sat, 8 May 2021 16:29:37 +1000 Subject: [PATCH] Improve detection of 2021 boards and firmware updates in scsi2sd-util --- src/firmware/hwversion.c | 7 +++++++ src/scsi2sd-util6/SCSI2SD_HID.cc | 17 +++++++++++------ src/scsi2sd-util6/scsi2sd-util.cc | 6 ++++++ 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/firmware/hwversion.c b/src/firmware/hwversion.c index eba4be6b..201a5314 100755 --- a/src/firmware/hwversion.c +++ b/src/firmware/hwversion.c @@ -82,6 +82,13 @@ checkHwSensePins() while (1) {} } #endif +#ifdef REV_2021 + if ((DBGMCU->IDCODE & 0x00000FFF) != 0x0421) + { + // Oh dear, wrong cpu. Do not pass go. + while (1) {} + } +#endif } void diff --git a/src/scsi2sd-util6/SCSI2SD_HID.cc b/src/scsi2sd-util6/SCSI2SD_HID.cc index 163cbed6..4d5aa5d2 100644 --- a/src/scsi2sd-util6/SCSI2SD_HID.cc +++ b/src/scsi2sd-util6/SCSI2SD_HID.cc @@ -401,11 +401,16 @@ HID::getSerialNumber() bool HID::isCorrectFirmware(const std::string& path) { + if (path.rfind(".dfu") != path.size() - 4) + { + return false; + } + if (myFirmwareVersion < 0x0630) { // Definitely the older hardware. - return path.rfind("firmware.V6.revF.dfu") != std::string::npos || - path.rfind("firmware.dfu") != std::string::npos; + return path.rfind("firmware.V6.revF") != std::string::npos || + path.rfind("firmware") != std::string::npos; } else if (myFirmwareVersion == 0x0630) { @@ -426,17 +431,17 @@ HID::isCorrectFirmware(const std::string& path) if (prodStr.find(L"2020") != std::string::npos) { // Definitely the 2020c or newer hardware. - return path.rfind("firmware.V6.2020.dfu") != std::string::npos; + return path.rfind("firmware.V6.2020") != std::string::npos; } else if (prodStr.find(L"2021") != std::string::npos) { // Definitely the 2020c or newer hardware. - return path.rfind("firmware.V6.2021.dfu") != std::string::npos; + return path.rfind("firmware.V6.2021") != std::string::npos; } else { - return path.rfind("firmware.V6.revF.dfu") != std::string::npos || - path.rfind("firmware.dfu") != std::string::npos; + return path.rfind("firmware.V6.revF") != std::string::npos || + path.rfind("firmware") != std::string::npos; } } } diff --git a/src/scsi2sd-util6/scsi2sd-util.cc b/src/scsi2sd-util6/scsi2sd-util.cc index 60102fe9..b7d57942 100644 --- a/src/scsi2sd-util6/scsi2sd-util.cc +++ b/src/scsi2sd-util6/scsi2sd-util.cc @@ -599,6 +599,7 @@ private: wxOK | wxICON_ERROR); return false; } + file.Close(); wxRemoveFile(tmpFile); uint32_t value = @@ -612,6 +613,11 @@ private: wxLogMessage("OTP Hardware version not set. Ignoring."); return true; } + else if (value == 0x06002021) + { + wxLogMessage("Found V6 2021 hardware marker"); + return firmware.rfind("firmware.V6.2021.dfu") != std::string::npos; + } else if (value == 0x06002020) { wxLogMessage("Found V6 2020 hardware marker"); -- 2.38.5