diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiConstants.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiConstants.java
index 2e255e6c4..c822b9808 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiConstants.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiConstants.java
@@ -62,6 +62,7 @@ public final class HuaweiConstants {
public static final String HU_TALKBANDB6_NAME = "huawei b6-";
public static final String HU_BAND7_NAME = "huawei band 7-";
public static final String HU_BAND8_NAME = "huawei band 8-";
+ public static final String HU_BAND9_NAME = "huawei band 9-";
public static final String HU_WATCHGT3_NAME = "huawei watch gt 3-";
public static final String HU_WATCHGT3PRO_NAME = "huawei watch gt 3 pro-";
public static final String HU_WATCHGT4_NAME = "huawei watch gt 4-";
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband9/HuaweiBand9Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband9/HuaweiBand9Coordinator.java
new file mode 100644
index 000000000..951d81d0f
--- /dev/null
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband9/HuaweiBand9Coordinator.java
@@ -0,0 +1,71 @@
+/* Copyright (C) 2024 Damien Gaignon, Martin.JM
+
+ This file is part of Gadgetbridge.
+
+ Gadgetbridge is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Gadgetbridge is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see . */
+package nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiband9;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.regex.Pattern;
+
+import nodomain.freeyourgadget.gadgetbridge.R;
+import nodomain.freeyourgadget.gadgetbridge.devices.TimeSampleProvider;
+import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
+import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
+import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiSpo2SampleProvider;
+import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
+import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
+import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.model.Spo2Sample;
+
+public class HuaweiBand9Coordinator extends HuaweiLECoordinator {
+ private static final Logger LOG = LoggerFactory.getLogger(HuaweiBand9Coordinator.class);
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public DeviceType getDeviceType() {
+ return DeviceType.HUAWEIBAND9;
+ }
+
+ @Override
+ protected Pattern getSupportedDeviceName() {
+ return Pattern.compile(HuaweiConstants.HU_BAND9_NAME + ".*", Pattern.CASE_INSENSITIVE);
+ }
+
+ @Override
+ public boolean supportsHeartRateMeasurement(GBDevice device) {
+ return true;
+ }
+
+ @Override
+ public boolean supportsSpo2() {
+ return true;
+ }
+
+ @Override
+ public TimeSampleProvider extends Spo2Sample> getSpo2SampleProvider(GBDevice device, DaoSession session) {
+ return new HuaweiSpo2SampleProvider(device, session);
+ }
+
+ @Override
+ public int getDeviceNameResource() {
+ return R.string.devicetype_huawei_band8;
+ }
+}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java
index 0f2126309..ee20b2d8f 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java
@@ -116,6 +116,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiband4pro.Huawei
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiband6.HuaweiBand6Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiband7.HuaweiBand7Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiband8.HuaweiBand8Coordinator;
+import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiband9.HuaweiBand9Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweibandaw70.HuaweiBandAw70Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweitalkbandb6.HuaweiTalkBandB6Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiwatch4pro.HuaweiWatch4ProCoordinator;
@@ -370,6 +371,7 @@ public enum DeviceType {
HUAWEIWATCHGT3(HuaweiWatchGT3Coordinator.class),
HUAWEIWATCHGT4(HuaweiWatchGT4Coordinator.class),
HUAWEIBAND8(HuaweiBand8Coordinator.class),
+ HUAWEIBAND9(HuaweiBand9Coordinator.class),
HUAWEIWATCHFIT(HuaweiWatchFitCoordinator.class),
HUAWEIWATCHFIT2(HuaweiWatchFit2Coordinator.class),
HUAWEIWATCHFIT3(HuaweiWatchFit3Coordinator.class),
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d63d58377..a8e2c00af 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1549,6 +1549,7 @@
Huawei Band 6
Huawei Band 7
Huawei Band 8
+ Huawei Band 9
Huawei Watch GT
Huawei Band 4 (Pro)
Huawei Watch GT 2 (Pro)