From 58fb35a9bbbf3c693f7666e62379d8e704641b6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Bauer?= Date: Thu, 9 Apr 2026 15:09:55 +0000 Subject: [PATCH] Fix MSI Mystic Light 185 for Common PID boards (0x0DB0:0x0076) --- .../MSIMysticLight185Controller.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Controllers/MSIMysticLightController/MSIMysticLight185Controller/MSIMysticLight185Controller.cpp b/Controllers/MSIMysticLightController/MSIMysticLight185Controller/MSIMysticLight185Controller.cpp index 3a5031df0..af1f1f06c 100644 --- a/Controllers/MSIMysticLightController/MSIMysticLight185Controller/MSIMysticLight185Controller.cpp +++ b/Controllers/MSIMysticLightController/MSIMysticLight185Controller/MSIMysticLight185Controller.cpp @@ -345,6 +345,7 @@ static const mystic_light_185_config board_configs[] = { 0x7E09, 0, 0, 0, 0, &zones_set19, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // B650M PROJECT ZERO { 0x7E10, 0, 6, 0, 2, &zones_set17, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MPG B650 EDGE WIFI { 0x7E12, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG X670E TOMAHAWK WIFI + { 0x0076, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // MAG X670E TOMAHAWK WIFI (Common PID) { 0x7E16, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // X670E GAMING PLUS WIFI { 0x7E24, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // B650M GAMING PLUS WIFI { 0x7E26, 0, 0, 0, 2, &zones_set13, MSIMysticLight185Controller::DIRECT_MODE_PER_LED }, // B650 GAMING PLUS WIFI @@ -717,6 +718,19 @@ bool MSIMysticLight185Controller::Update } else { + /*-----------------------------------------------------*\ + | Save new state, read current state from board, | + | send old state first, then new state. | + | Windows Mystic Light sends two consecutive reports. | + \*-----------------------------------------------------*/ + FeaturePacket_185 new_data; + std::memcpy(&new_data, &data, sizeof(data)); + + ReadSettings(); + data.save_data = save; + hid_send_feature_report(dev, (unsigned char*)&data, sizeof(data)); + + std::memcpy(&data, &new_data, sizeof(data)); data.save_data = save; return (hid_send_feature_report(dev, (unsigned char*)&data, sizeof(data)) == sizeof(data)); }