From ea5eb880514621437d478c0a554662e3bc57a95c Mon Sep 17 00:00:00 2001 From: Nadeem Khedr Date: Sun, 26 Apr 2026 17:59:16 +0300 Subject: [PATCH 1/2] Allow opening device with empty USB product-string filter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Newer MSI gaming monitors no longer report "MSI Gaming Controller" as their USB product string — for example the MPG 274URDFW E16M reports "MSI Monitor MPG 274URDFW E16M". The hardcoded equality check in phid.h's open path causes mondev_t to fail to open the device on those panels, even though hid_enumerate has already filtered by VID/PID 0x1462:0x3fa4. Relax the check to skip when the requested product string is empty, matching the existing behaviour for the serial-number filter, and pass an empty string from the two call sites in main(). Existing monitors that report "MSI Gaming Controller" continue to work — the VID/PID filter on hid_enumerate still selects them, and the strict product-string compare is only bypassed when no product is requested. --- src/msigd.cpp | 4 ++-- src/phid.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/msigd.cpp b/src/msigd.cpp index d59cefd..7638484 100644 --- a/src/msigd.cpp +++ b/src/msigd.cpp @@ -1673,14 +1673,14 @@ int main (int argc, char **argv) int idx = 1; for (auto &e : monitor_list) { - mondev_t mon(logger, e, "MSI Gaming Controller", ""); + mondev_t mon(logger, e, "", ""); pprintf("%d,%s,%s,%s,%s\n", idx, mon.serial(), mon.manufacturer(), mon.product(), e.path); idx ++; } //return E_OK; } - mondev_t usb(logger, monitor_list[monitor ? monitor - 1 : 0], "MSI Gaming Controller", serial); + mondev_t usb(logger, monitor_list[monitor ? monitor - 1 : 0], "", serial); if (usb) { diff --git a/src/phid.h b/src/phid.h index a4d0b6a..5c9e1dc 100644 --- a/src/phid.h +++ b/src/phid.h @@ -249,7 +249,7 @@ class usbdev_t m_vendor_id = info.idVendor; m_product_id = info.idProduct; - if (sProduct != m_product) + if (!sProduct.empty() && sProduct != m_product) { m_log(DEBUG, "Product Id <%s> does not match requested <%s>", m_product, sProduct); return 1; From 3fadd8afbcb57bd24d6ade1952dfb31d1614caf5 Mon Sep 17 00:00:00 2001 From: Nadeem Khedr Date: Sun, 26 Apr 2026 17:59:46 +0300 Subject: [PATCH 2/2] Add support for MPG 274URDFW E16M MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This 27" 4K dual-mode QD-OLED gaming monitor (USB VID 0x1462 PID 0x3fa4) identifies itself as s140="00\xb4", s150="V21" — values not matched by any existing entry in known_models, which left users on the QUERYONLY fallback with write access disabled. Map the new (s140, s150) pair to the existing MAG274QRX series profile. The two panels share the same input set (hdmi1/hdmi2/dp/usbc at register 00500), KVM, smart_crosshair, and broadly the same OSD layout, so reusing MAG274QRX's settings table is the lowest-risk option (the read-only MAG274QRX gate is dropped on this entry, matching the MPG271QX additions in PR #64). Verified on macOS / Apple Silicon, firmware V21: $ msigd --info Vendor Id: 0x1462 Product Id: 0x3fa4 Product: MSI Monitor MPG 274URDFW E16M Serial: A02025040703 Monitor Series: MPG 274URDFW E16M LED support: MysticOptix $ msigd -q -f brightness,contrast,input,frequency,kvm,auto_scan frequency : 120 brightness : 44 contrast : 70 input : usbc kvm : type_c auto_scan : on $ msigd --input usbc # no-op write to current value, exit 0, # subsequent read still returns "usbc" The reported brightness/contrast values match the on-screen OSD exactly, and the input read-back tracks the actual displayed source through hardware OSD switching, confirming register 00500 maps correctly on this panel. --- src/msigd.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/msigd.cpp b/src/msigd.cpp index 7638484..100ac95 100644 --- a/src/msigd.cpp +++ b/src/msigd.cpp @@ -150,6 +150,7 @@ static std::vector known_models = { PS341WU, "00?", "V06", "PS341WU", LT_NONE }, { MAG274QRX, "00|", "V43", "MAG274QRX", LT_MYSTIC_OPTIX, true }, { MD272QP, "00\x85", "V51", "MD272QP", LT_NONE }, // MAG274QRF-QD FW.011 + { MAG274QRX, "00\xb4", "V21", "MPG 274URDFW E16M", LT_MYSTIC_OPTIX }, // MPG 274URDFW E16M (4K dual-mode QD-OLED, mapped to MAG274QRX) }; enum encoding_t