diff --git a/patches/personal/platform_device_phh_treble/0002-Add-Maintainer-Overlay.patch b/patches/personal/platform_device_phh_treble/0002-Add-Maintainer-Overlay.patch
index 876c5bc..e5e08a2 100644
--- a/patches/personal/platform_device_phh_treble/0002-Add-Maintainer-Overlay.patch
+++ b/patches/personal/platform_device_phh_treble/0002-Add-Maintainer-Overlay.patch
@@ -19,9 +19,9 @@ index 0000000..779c1a9
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
-+
++
+ http://www.apache.org/licenses/LICENSE-2.0
-+
++
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -32,7 +32,6 @@ index 0000000..779c1a9
+
+ chrisaw
+
-+
++
--
2.39.2
-
diff --git a/patches/trebledroid/platform_frameworks_base/0050-Try-catch-the-Xiaomi-calls.patch b/patches/trebledroid/platform_frameworks_base/0050-Try-catch-the-Xiaomi-calls.patch
new file mode 100644
index 0000000..cdd00de
--- /dev/null
+++ b/patches/trebledroid/platform_frameworks_base/0050-Try-catch-the-Xiaomi-calls.patch
@@ -0,0 +1,45 @@
+From 7b837155f74e2963175a6148489c9ef40fd8e4d2 Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson
+Date: Mon, 29 Jan 2024 17:06:34 -0500
+Subject: [PATCH 50/53] Try catch the Xiaomi calls
+
+---
+ .../src/com/android/systemui/biometrics/UdfpsView.kt | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt
+index 91053b2c5f8e..d47a7d2068fa 100644
+--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt
++++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt
+@@ -298,14 +298,16 @@ class UdfpsView(
+ Log.d("PHH-Enroll", "Xiaomi scenario in UdfpsView reached!")
+ mySurfaceView.setVisibility(INVISIBLE)
+
+- IXiaomiFingerprint.getService().extCmd(android.os.SystemProperties.getInt("persist.phh.xiaomi.fod.enrollment.id", 4), 1);
+- var res = ITouchFeature.getService().setTouchMode(0, 10, 1);
++ try {
++ IXiaomiFingerprint.getService().extCmd(android.os.SystemProperties.getInt("persist.phh.xiaomi.fod.enrollment.id", 4), 1);
++ } catch(t: Throwable) {}
++ var res = try { ITouchFeature.getService().setTouchMode(0, 10, 1) } catch(t: Throwable){ -1 }
+ if(res != 0){
+ Log.d("PHH-Enroll", "SetTouchMode 10,1 was NOT executed successfully. Res is " + res)
+ }
+
+ myHandler.postDelayed({
+- var ret200 = ITouchFeature.getService().setTouchMode(0, 10, 1);
++ var ret200 = try { ITouchFeature.getService().setTouchMode(0, 10, 1); } catch(t: Throwable) { -1 }
+
+ if(ret200 != 0){
+ Log.d("PHH-Enroll", "myHandler.postDelayed 200ms -SetTouchMode was NOT executed successfully. Ret is " + ret200)
+@@ -313,7 +315,7 @@ class UdfpsView(
+
+ myHandler.postDelayed({
+ Log.d("PHH-Enroll", "myHandler.postDelayed 600ms - line prior to setTouchMode 10,0")
+- var ret600 = ITouchFeature.getService().setTouchMode(0, 10, 0);
++ var ret600 = try { ITouchFeature.getService().setTouchMode(0, 10, 0); } catch(t: Throwable) { -1 }
+
+ if(ret600 != 0){
+ Log.d("PHH-Enroll", "myHandler.postDelayed 600ms -SetTouchMode 10,0 was NOT executed successfully. Ret is " + ret600)
+--
+2.25.1
+
diff --git a/patches/trebledroid/platform_frameworks_base/0051-Typo-in-observing-Samsung-brightness.patch b/patches/trebledroid/platform_frameworks_base/0051-Typo-in-observing-Samsung-brightness.patch
new file mode 100644
index 0000000..41712a3
--- /dev/null
+++ b/patches/trebledroid/platform_frameworks_base/0051-Typo-in-observing-Samsung-brightness.patch
@@ -0,0 +1,25 @@
+From cb0dae61b4e5ea7647d610fdb50aec324de17d45 Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson
+Date: Mon, 29 Jan 2024 17:06:45 -0500
+Subject: [PATCH 51/53] Typo in observing Samsung brightness
+
+---
+ .../SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt
+index d47a7d2068fa..9f1fde7f2e3f 100644
+--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt
++++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.kt
+@@ -353,7 +353,7 @@ class UdfpsView(
+ };
+ fodFileObserver?.startWatching();
+ } else if (hasSamsungMask) {
+- fodFileObserver = object: FileObserver(asusGhbmOnAchieved, FileObserver.MODIFY) {
++ fodFileObserver = object: FileObserver(samsungActualMaskBrightness, FileObserver.MODIFY) {
+ override fun onEvent(event: Int, path: String): Unit {
+ Log.d("PHH-Enroll", "samsung mask brightness event")
+ try {
+--
+2.25.1
+
diff --git a/patches/trebledroid/platform_frameworks_base/0052-Add-Samsung-sysinput.patch b/patches/trebledroid/platform_frameworks_base/0052-Add-Samsung-sysinput.patch
new file mode 100644
index 0000000..8d48206
--- /dev/null
+++ b/patches/trebledroid/platform_frameworks_base/0052-Add-Samsung-sysinput.patch
@@ -0,0 +1,24 @@
+From 45480ab609ba20cdc45e3b291bd160a06dee680d Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson
+Date: Mon, 29 Jan 2024 17:07:07 -0500
+Subject: [PATCH 52/53] Add Samsung sysinput
+
+---
+ services/core/Android.bp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/services/core/Android.bp b/services/core/Android.bp
+index 6cba27c50972..0e822cfd5abe 100644
+--- a/services/core/Android.bp
++++ b/services/core/Android.bp
+@@ -196,6 +196,7 @@ java_library_static {
+ "vendor.xiaomi.hardware.fingerprintextension-V1.0-java",
+
+ //AIDL
++ "vendor.samsung.hardware.sysinput-V1-java",
+ "vendor.samsung.hardware.biometrics.fingerprint-V1-java",
+ "vendor.samsung.hardware.light-V1-java",
+ ],
+--
+2.25.1
+
diff --git a/patches/trebledroid/platform_frameworks_base/0053-Bunch-of-FOD-stuff-commonize-refreshing-the-services.patch b/patches/trebledroid/platform_frameworks_base/0053-Bunch-of-FOD-stuff-commonize-refreshing-the-services.patch
new file mode 100644
index 0000000..b3c6887
--- /dev/null
+++ b/patches/trebledroid/platform_frameworks_base/0053-Bunch-of-FOD-stuff-commonize-refreshing-the-services.patch
@@ -0,0 +1,237 @@
+From 5a125ad01df3bd0010532499b790e69faf173874 Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson
+Date: Mon, 29 Jan 2024 17:15:38 -0500
+Subject: [PATCH 53/53] Bunch of FOD stuff -- commonize refreshing the
+ services, start supporting AIDL Samsung
+
+---
+ .../server/biometrics/AuthService.java | 157 +++++++++++++++---
+ 1 file changed, 138 insertions(+), 19 deletions(-)
+
+diff --git a/services/core/java/com/android/server/biometrics/AuthService.java b/services/core/java/com/android/server/biometrics/AuthService.java
+index dfc268c07d76..b13b8ec9c581 100644
+--- a/services/core/java/com/android/server/biometrics/AuthService.java
++++ b/services/core/java/com/android/server/biometrics/AuthService.java
+@@ -43,6 +43,7 @@ import android.hardware.biometrics.IAuthService;
+ import android.hardware.biometrics.IBiometricEnabledOnKeyguardCallback;
+ import android.hardware.biometrics.IBiometricService;
+ import android.hardware.biometrics.IBiometricServiceReceiver;
++import android.hardware.biometrics.fingerprint.IFingerprint;
+ import android.hardware.biometrics.IInvalidationCallback;
+ import android.hardware.biometrics.ITestSession;
+ import android.hardware.biometrics.ITestSessionCallback;
+@@ -92,6 +93,7 @@ import android.os.Build;
+ import vendor.samsung.hardware.biometrics.fingerprint.V3_0.ISehBiometricsFingerprint;
+ import vendor.goodix.hardware.biometrics.fingerprint.V2_1.IGoodixFingerprintDaemon;
+ import vendor.samsung.hardware.sysinput.V1_0.ISehSysInputDev;
++import vendor.samsung.hardware.biometrics.fingerprint.ISehFingerprint;
+
+ import vendor.xiaomi.hardware.fingerprintextension.V1_0.IXiaomiFingerprint;
+
+@@ -115,6 +117,8 @@ public class AuthService extends SystemService {
+
+ private FileObserver fodFileObserver = null;
+ private ISehBiometricsFingerprint mSamsungFingerprint = null;
++ private ISehFingerprint mSamsungFingerprintAidl = null;
++ private vendor.samsung.hardware.sysinput.ISehSysInputDev mSamsungSysinputAidl = null;
+
+ private IXiaomiFingerprint mXiaomiFingerprint = null;
+
+@@ -668,6 +672,101 @@ public class AuthService extends SystemService {
+ * └── for (s : p.sensors)
+ * └── BiometricService.registerAuthenticator(s)
+ */
++
++ private static void samsungSysinputCommand(String arg) {
++ try {
++ android.util.Log.e("PHH-Enroll", "SysinputCommand " + arg);
++ var name = "default";
++ var fqName = vendor.samsung.hardware.sysinput.ISehSysInputDev.DESCRIPTOR + "/" + name;
++ var b = android.os.Binder.allowBlocking(android.os.ServiceManager.waitForDeclaredService(fqName));
++ var samsungSysinputAidl = vendor.samsung.hardware.sysinput.ISehSysInputDev.Stub.asInterface(b);
++ Thread.sleep(100);
++ samsungSysinputAidl.setProperty(1 /*DEFAULT_TSP*/, 18, arg);
++ android.util.Log.e("PHH-Enroll", "Done SysinputCommand");
++ } catch(Throwable t) {
++ android.util.Log.e("PHH-Enroll", "SysinputCommand", t);
++ }
++ }
++
++ private void refreshVendorServices() {
++ try {
++ mSamsungFingerprint = ISehBiometricsFingerprint.getService();
++ android.util.Log.e("PHH", "Got samsung fingerprint HAL");
++ } catch(Exception e) {
++ if (e instanceof java.util.NoSuchElementException) {
++ android.util.Log.e("PHH", "Failed getting Samsung fingerprint HAL, doesn't exist");
++ } else {
++ android.util.Log.e("PHH", "Failed getting Samsung fingerprint HAL", e);
++ }
++ }
++
++ try {
++ final String name = "default";
++ final String fqName = IFingerprint.DESCRIPTOR + "/" + name;
++ final IBinder fpBinder = Binder.allowBlocking(ServiceManager.waitForDeclaredService(fqName));
++ //final IFingerprint fp = IFingerprint.Stub.asInterface(fpBinder);
++ mSamsungFingerprintAidl = ISehFingerprint.Stub.asInterface(fpBinder.getExtension());
++ } catch(Exception e) {
++ android.util.Log.e("PHH", "Failed getting Samsung fingerprint AIDL HAL", e);
++ }
++
++ try {
++ final String name = "default";
++ final String fqName = vendor.samsung.hardware.sysinput.ISehSysInputDev.DESCRIPTOR + "/" + name;
++ final IBinder b = Binder.allowBlocking(ServiceManager.waitForDeclaredService(fqName));
++ mSamsungSysinputAidl = vendor.samsung.hardware.sysinput.ISehSysInputDev.Stub.asInterface(b);
++ mSamsungSysinputAidl.registerCallback(new vendor.samsung.hardware.sysinput.ISehSysInputCallback.Stub() {
++ @Override
++ public void onReportInformation(int type, String data) {
++ android.util.Log.e("PHH", "Received Sysinput Report Information " +type + ", " + data);
++ }
++ @Override
++ public void onReportRawData(int type, int count, int[] data) {
++ android.util.Log.e("PHH", "Received Sysinput Report RawData " + type + ", " + count);
++ }
++
++ @Override
++ public int getInterfaceVersion() {
++ return this.VERSION;
++ }
++
++ @Override
++ public String getInterfaceHash() {
++ return this.HASH;
++ }
++ });
++ String res;
++ res = mSamsungSysinputAidl.getProperty(1, 1);
++ Thread.sleep(100);
++ android.util.Log.e("PHH", "Got Samsung sysinput aidl feature " + res);
++ res = mSamsungSysinputAidl.getProperty(1, 2);
++ Thread.sleep(100);
++ android.util.Log.e("PHH", "Got Samsung sysinput aidl cmd_list " + res);
++ res = mSamsungSysinputAidl.getProperty(1, 3);
++ Thread.sleep(100);
++ android.util.Log.e("PHH", "Got Samsung sysinput aidl scrub_pos " + res);
++ res = mSamsungSysinputAidl.getProperty(1, 4);
++ Thread.sleep(100);
++ android.util.Log.e("PHH", "Got Samsung sysinput aidl fod_info " + res);
++ res = mSamsungSysinputAidl.getProperty(1, 5);
++ Thread.sleep(100);
++ android.util.Log.e("PHH", "Got Samsung sysinput aidl fod_pos " + res);
++ } catch(Exception e) {
++ android.util.Log.e("PHH", "Failed getting Samsung fingerprint AIDL HAL", e);
++ }
++
++ try {
++ mXiaomiFingerprint = IXiaomiFingerprint.getService();
++ android.util.Log.e("PHH", "Got xiaomi fingerprint HAL");
++ } catch(Exception e) {
++ if (e instanceof java.util.NoSuchElementException) {
++ android.util.Log.e("PHH", "Failed getting xiaomi fingerprint HAL, doesn't exist");
++ } else {
++ android.util.Log.e("PHH", "Failed getting xiaomi fingerprint HAL", e);
++ }
++ }
++ }
++
+ @Override
+ public void onStart() {
+ mBiometricService = mInjector.getBiometricService();
+@@ -695,20 +794,11 @@ public class AuthService extends SystemService {
+ // Registers HIDL and AIDL authenticators, but only HIDL configs need to be provided.
+ registerAuthenticators(hidlConfigs);
+
++ refreshVendorServices();
++
+ mInjector.publishBinderService(this, mImpl);
+- try {
+- mSamsungFingerprint = ISehBiometricsFingerprint.getService();
+- android.util.Log.e("PHH", "Got samsung fingerprint HAL");
+- } catch(Exception e) {
+- android.util.Log.e("PHH", "Failed getting Samsung fingerprint HAL", e);
+- }
+- try {
+- mXiaomiFingerprint = IXiaomiFingerprint.getService();
+- android.util.Log.e("PHH", "Got xiaomi fingerprint HAL");
+- } catch(Exception e) {
+- android.util.Log.e("PHH", "Failed getting xiaomi fingerprint HAL", e);
+- }
+- if(samsungHasCmd("fod_enable") && mSamsungFingerprint != null) {
++ //samsungSysinputCommand("fod_icon_visible,1");
++ if(samsungHasCmd("fod_enable") && (mSamsungFingerprint != null || mSamsungFingerprintAidl != null)) {
+ samsungCmd("fod_enable,1,1,0");
+ String actualMaskBrightnessPath = "/sys/class/lcd/panel/actual_mask_brightness";
+ android.util.Log.e("PHH-Enroll", "Reading actual brightness file gives " + readFile(actualMaskBrightnessPath));
+@@ -716,9 +806,7 @@ public class AuthService extends SystemService {
+ @Override
+ public void onEvent(int event, String path) {
+ String actualMask = readFile(actualMaskBrightnessPath);
+- try {
+- mSamsungFingerprint = ISehBiometricsFingerprint.getService();
+- } catch(Exception e) {}
++ refreshVendorServices();
+ Slog.d("PHH-Enroll", "New actual mask brightness is " + actualMask);
+ try {
+ int eventReq = 0;
+@@ -963,22 +1051,53 @@ public class AuthService extends SystemService {
+ udfpsProps[2] = (int)mW;
+
+ try {
+- mSamsungFingerprint = ISehBiometricsFingerprint.getService();
++ ISehBiometricsFingerprint samsungFingerprint = null;
++ samsungFingerprint = ISehBiometricsFingerprint.getService();
+ Slog.d("PHH-Enroll", "Samsung ask for sensor status");
+- mSamsungFingerprint.sehRequest(6, 0, new java.util.ArrayList(), (int retval, java.util.ArrayList out) -> {
++ samsungFingerprint.sehRequest(6, 0, new java.util.ArrayList(), (int retval, java.util.ArrayList out) -> {
+ Slog.d("PHH-Enroll", "Result is " + retval);
+ for(int i=0; i out) -> {
++ samsungFingerprint.sehRequest(32, 0, new java.util.ArrayList(), (int retval, java.util.ArrayList out) -> {
+ Slog.d("PHH-Enroll", "Result is " + retval);
+ for(int i=0; i