diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareInfo.java index b1ddc33ab..48bf42c9b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareInfo.java @@ -48,6 +48,8 @@ public abstract class HuamiFirmwareInfo { 0x4e, 0x45, 0x5a, 0x4b }; + protected static final int FONT_TYPE_OFFSET = 0x9; + private HuamiFirmwareType firmwareType = HuamiFirmwareType.FIRMWARE; public String toVersion(int crc16) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband2/Mi2FirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband2/Mi2FirmwareInfo.java index 8cccc9ceb..b9e842a03 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband2/Mi2FirmwareInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband2/Mi2FirmwareInfo.java @@ -78,8 +78,11 @@ public class Mi2FirmwareInfo extends HuamiFirmwareInfo { } protected HuamiFirmwareType determineFirmwareType(byte[] bytes) { - if (ArrayUtils.startsWith(bytes, HuamiFirmwareInfo.FT_HEADER)) { - return HuamiFirmwareType.FONT; + if (ArrayUtils.startsWith(bytes, FT_HEADER)) { + if (bytes[FONT_TYPE_OFFSET] == 0x00 || bytes[FONT_TYPE_OFFSET] == (byte) 0xff) { + return HuamiFirmwareType.FONT; + } + return HuamiFirmwareType.INVALID; } if (ArrayUtils.equals(bytes, FW_HEADER, FW_HEADER_OFFSET) && (bytes[FW_MAGIC_OFFSET] == FW_MAGIC)) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband3/MiBand3FirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband3/MiBand3FirmwareInfo.java index 2f5697fc0..fcfda8127 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband3/MiBand3FirmwareInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband3/MiBand3FirmwareInfo.java @@ -53,6 +53,12 @@ public class MiBand3FirmwareInfo extends HuamiFirmwareInfo { @Override protected HuamiFirmwareType determineFirmwareType(byte[] bytes) { + if (ArrayUtils.startsWith(bytes, FT_HEADER)) { + if (bytes[FONT_TYPE_OFFSET] == 0x03 || bytes[FONT_TYPE_OFFSET] == 0x04) { + return HuamiFirmwareType.FONT; + } + return HuamiFirmwareType.INVALID; + } if (ArrayUtils.startsWith(bytes, RES_HEADER)) { if (bytes.length > 100000) { // don't know how to distinguish from Bip/Cor .res return HuamiFirmwareType.INVALID;