From fa03c0384b735db50bfa4322899f5d46aeb78800 Mon Sep 17 00:00:00 2001 From: hmz007 Date: Wed, 9 Jul 2025 13:54:09 +0800 Subject: [PATCH] android: Allow wireless debugging over Ethernet Signed-off-by: hmz007 --- device/rockchip/common/sepolicy/private/property_contexts | 2 ++ .../java/com/android/server/adb/AdbDebuggingManager.java | 4 ++++ hardware/rockchip/usb/gadget/UsbGadget.cpp | 4 ++++ .../development/WirelessDebuggingPreferenceController.java | 7 +++++++ 4 files changed, 17 insertions(+) diff --git a/device/rockchip/common/sepolicy/private/property_contexts b/device/rockchip/common/sepolicy/private/property_contexts index 03083442638..cb7076baa50 100644 --- a/device/rockchip/common/sepolicy/private/property_contexts +++ b/device/rockchip/common/sepolicy/private/property_contexts @@ -71,3 +71,5 @@ ro.boot.log_battery u:object_r:vendor_system_public_prop:s0 ro.updater.next_device u:object_r:vendor_system_public_prop:s0 ro.product.version u:object_r:vendor_system_public_prop:s0 ro.product.releasetype u:object_r:vendor_system_public_prop:s0 + +persist.adb.ethernet.enable u:object_r:system_adbd_prop:s0 diff --git a/frameworks/base/services/core/java/com/android/server/adb/AdbDebuggingManager.java b/frameworks/base/services/core/java/com/android/server/adb/AdbDebuggingManager.java index 6794f750c82..e8b6e1327da 100644 --- a/frameworks/base/services/core/java/com/android/server/adb/AdbDebuggingManager.java +++ b/frameworks/base/services/core/java/com/android/server/adb/AdbDebuggingManager.java @@ -1371,6 +1371,10 @@ public class AdbDebuggingManager { WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); if (wifiInfo == null || wifiInfo.getNetworkId() == -1) { + if (SystemProperties.getBoolean("persist.adb.ethernet.enable", false)) { + return new AdbConnectionInfo("unspecified", "Ethernet"); + } + Slog.i(TAG, "Not connected to any wireless network. Not enabling adbwifi."); return null; } diff --git a/hardware/rockchip/usb/gadget/UsbGadget.cpp b/hardware/rockchip/usb/gadget/UsbGadget.cpp index d6fa0879850..e6fa16920ef 100644 --- a/hardware/rockchip/usb/gadget/UsbGadget.cpp +++ b/hardware/rockchip/usb/gadget/UsbGadget.cpp @@ -480,6 +480,10 @@ ScopedAStatus UsbGadget::setCurrentUsbFunctions(int64_t functions, goto error; } + // Notify adbd usb_ffs_open_thread() + static const char* kPropertyUsbDisabled = "sys.usb.adb.disabled"; + SetProperty(kPropertyUsbDisabled, (functions & GadgetFunction::ADB) ? "0" : "1"); + #if 0 /** * Check if we really need to bind irq to big core or medium core. diff --git a/packages/apps/Settings/src/com/android/settings/development/WirelessDebuggingPreferenceController.java b/packages/apps/Settings/src/com/android/settings/development/WirelessDebuggingPreferenceController.java index f637ae12e33..1f99f1966c9 100644 --- a/packages/apps/Settings/src/com/android/settings/development/WirelessDebuggingPreferenceController.java +++ b/packages/apps/Settings/src/com/android/settings/development/WirelessDebuggingPreferenceController.java @@ -25,6 +25,7 @@ import android.net.NetworkCapabilities; import android.net.Uri; import android.os.Handler; import android.os.Looper; +import android.os.SystemProperties; import android.os.RemoteException; import android.os.ServiceManager; import android.provider.Settings; @@ -145,6 +146,8 @@ public class WirelessDebuggingPreferenceController extends DeveloperOptionsPrefe if (cm == null) { return false; } + final boolean allowEthernet = SystemProperties.getBoolean( + "persist.adb.ethernet.enable", false); for (Network network : cm.getAllNetworks()) { final NetworkCapabilities nc = cm.getNetworkCapabilities(network); if (nc == null) { @@ -153,6 +156,10 @@ public class WirelessDebuggingPreferenceController extends DeveloperOptionsPrefe if (nc.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { return true; } + if (allowEthernet && nc.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) { + Log.d(TAG, "Enabling ADB over Ethernet"); + return true; + } } return false; }