From 2bf378acb0180ec74c3717c0cf8d83b34a648701 Mon Sep 17 00:00:00 2001 From: Sachin Patel Date: Sat, 11 Apr 2026 16:28:21 +0100 Subject: [PATCH 1/5] add basic airpods max 2 support --- linux/ble/blemanager.cpp | 3 ++- linux/enums.h | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/linux/ble/blemanager.cpp b/linux/ble/blemanager.cpp index d75a2a62d..3741b122b 100644 --- a/linux/ble/blemanager.cpp +++ b/linux/ble/blemanager.cpp @@ -18,7 +18,8 @@ AirpodsTrayApp::Enums::AirPodsModel getModelName(quint16 modelId) {0x1F20, AirPodsModel::AirPodsMaxUSBC}, {0x0E20, AirPodsModel::AirPodsPro}, {0x1420, AirPodsModel::AirPodsPro2Lightning}, - {0x2420, AirPodsModel::AirPodsPro2USBC} + {0x2420, AirPodsModel::AirPodsPro2USBC}, + {0x1D08, AirPodsModel::AirPodsMax2}, }; return modelMap.value(modelId, AirPodsModel::Unknown); diff --git a/linux/enums.h b/linux/enums.h index 815415db4..b03785d39 100644 --- a/linux/enums.h +++ b/linux/enums.h @@ -33,7 +33,8 @@ namespace AirpodsTrayApp AirPodsMaxLightning, AirPodsMaxUSBC, AirPods4, - AirPods4ANC + AirPods4ANC, + AirPodsMax2, }; Q_ENUM_NS(AirPodsModel) @@ -63,7 +64,9 @@ namespace AirpodsTrayApp {"A3054", AirPodsModel::AirPods4}, {"A3056", AirPodsModel::AirPods4ANC}, {"A3055", AirPodsModel::AirPods4ANC}, - {"A3057", AirPodsModel::AirPods4ANC}}; + {"A3057", AirPodsModel::AirPods4ANC}, + {"A3454", AirPodsModel::AirPodsMax2}, + }; return modelNumberMap.value(modelNumber, AirPodsModel::Unknown); } @@ -85,6 +88,7 @@ namespace AirpodsTrayApp return {"podpro.png", "podpro_case.png"}; case AirPodsModel::AirPodsMaxLightning: case AirPodsModel::AirPodsMaxUSBC: + case AirPodsModel::AirPodsMax2: return {"podmax.png", "max_case.png"}; default: return {"pod.png", "pod_case.png"}; // Default icon for unknown models @@ -97,6 +101,7 @@ namespace AirpodsTrayApp switch (model) { case AirPodsModel::AirPodsMaxLightning: case AirPodsModel::AirPodsMaxUSBC: + case AirPodsModel::AirPodsMax2: return true; default: return false; From b92a80895b8db53eebfef67004baee914c59a3df Mon Sep 17 00:00:00 2001 From: Sachin Patel Date: Sat, 11 Apr 2026 17:07:20 +0100 Subject: [PATCH 2/5] fix BLE device model ID value, add value to readme --- Proximity Pairing Message.md | 1 + linux/ble/blemanager.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Proximity Pairing Message.md b/Proximity Pairing Message.md index 4f34b6169..68cef81d4 100644 --- a/Proximity Pairing Message.md +++ b/Proximity Pairing Message.md @@ -35,6 +35,7 @@ When scanning for BLE devices, the application looks for manufacturer data with | 0x1B20 | AirPods 4th Gen (ANC) | | 0x0A20 | AirPods Max | | 0x1F20 | AirPods Max (USB-C) | +| 0x2D20 | AirPods Max 2nd Gen | | 0x0E20 | AirPods Pro | | 0x1420 | AirPods Pro 2nd Gen | | 0x2420 | AirPods Pro 2nd Gen (USB-C) | diff --git a/linux/ble/blemanager.cpp b/linux/ble/blemanager.cpp index 3741b122b..27f446d35 100644 --- a/linux/ble/blemanager.cpp +++ b/linux/ble/blemanager.cpp @@ -19,9 +19,9 @@ AirpodsTrayApp::Enums::AirPodsModel getModelName(quint16 modelId) {0x0E20, AirPodsModel::AirPodsPro}, {0x1420, AirPodsModel::AirPodsPro2Lightning}, {0x2420, AirPodsModel::AirPodsPro2USBC}, - {0x1D08, AirPodsModel::AirPodsMax2}, + {0x2D20, AirPodsModel::AirPodsMax2}, }; - + return modelMap.value(modelId, AirPodsModel::Unknown); } From 6aac56bea5e6854a9025098cfce325d73d6b14b5 Mon Sep 17 00:00:00 2001 From: Sachin Patel Date: Sat, 11 Apr 2026 17:08:48 +0100 Subject: [PATCH 3/5] fix whitespace --- linux/ble/blemanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linux/ble/blemanager.cpp b/linux/ble/blemanager.cpp index 27f446d35..59e7b2c09 100644 --- a/linux/ble/blemanager.cpp +++ b/linux/ble/blemanager.cpp @@ -21,7 +21,7 @@ AirpodsTrayApp::Enums::AirPodsModel getModelName(quint16 modelId) {0x2420, AirPodsModel::AirPodsPro2USBC}, {0x2D20, AirPodsModel::AirPodsMax2}, }; - + return modelMap.value(modelId, AirPodsModel::Unknown); } From d1048b75ae0b01ac4940d06cc51c6b64cb25a524 Mon Sep 17 00:00:00 2001 From: Sachin Patel Date: Sat, 11 Apr 2026 17:12:55 +0100 Subject: [PATCH 4/5] sort ordering of enums --- linux/ble/blemanager.cpp | 4 ++-- linux/enums.h | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/linux/ble/blemanager.cpp b/linux/ble/blemanager.cpp index 59e7b2c09..3fe9aef96 100644 --- a/linux/ble/blemanager.cpp +++ b/linux/ble/blemanager.cpp @@ -16,10 +16,10 @@ AirpodsTrayApp::Enums::AirPodsModel getModelName(quint16 modelId) {0x1B20, AirPodsModel::AirPods4ANC}, {0x0A20, AirPodsModel::AirPodsMaxLightning}, {0x1F20, AirPodsModel::AirPodsMaxUSBC}, + {0x2D20, AirPodsModel::AirPodsMax2}, {0x0E20, AirPodsModel::AirPodsPro}, {0x1420, AirPodsModel::AirPodsPro2Lightning}, - {0x2420, AirPodsModel::AirPodsPro2USBC}, - {0x2D20, AirPodsModel::AirPodsMax2}, + {0x2420, AirPodsModel::AirPodsPro2USBC} }; return modelMap.value(modelId, AirPodsModel::Unknown); diff --git a/linux/enums.h b/linux/enums.h index b03785d39..18a22eb03 100644 --- a/linux/enums.h +++ b/linux/enums.h @@ -51,6 +51,7 @@ namespace AirpodsTrayApp {"A2083", AirPodsModel::AirPodsPro}, {"A2096", AirPodsModel::AirPodsMaxLightning}, {"A3184", AirPodsModel::AirPodsMaxUSBC}, + {"A3454", AirPodsModel::AirPodsMax2}, {"A2565", AirPodsModel::AirPods3}, {"A2564", AirPodsModel::AirPods3}, {"A3047", AirPodsModel::AirPodsPro2USBC}, @@ -64,9 +65,7 @@ namespace AirpodsTrayApp {"A3054", AirPodsModel::AirPods4}, {"A3056", AirPodsModel::AirPods4ANC}, {"A3055", AirPodsModel::AirPods4ANC}, - {"A3057", AirPodsModel::AirPods4ANC}, - {"A3454", AirPodsModel::AirPodsMax2}, - }; + {"A3057", AirPodsModel::AirPods4ANC}}; return modelNumberMap.value(modelNumber, AirPodsModel::Unknown); } From 150a728fac6cca56d510a8aa730f816bba79c412 Mon Sep 17 00:00:00 2001 From: Sachin Patel Date: Sat, 11 Apr 2026 17:13:43 +0100 Subject: [PATCH 5/5] fix --- linux/enums.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linux/enums.h b/linux/enums.h index 18a22eb03..54b274c23 100644 --- a/linux/enums.h +++ b/linux/enums.h @@ -32,9 +32,9 @@ namespace AirpodsTrayApp AirPodsPro2USBC, AirPodsMaxLightning, AirPodsMaxUSBC, - AirPods4, - AirPods4ANC, AirPodsMax2, + AirPods4, + AirPods4ANC }; Q_ENUM_NS(AirPodsModel)