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; }