Android 8.0骁龙626非ROOT设备通过sys节点给外设供电的权限问题
Hey there, let's break down your problem step by step to figure out how to control that peripheral power port from your app.
First: Fix the "not found" error in the console
The error you're seeing might not be about permissions yet—let's clarify the correct command first. The path /sys/class/ext_dev/function/ext_dev_5v_enable isn't an executable command, it's a sysfs node file. To toggle the power, you need to write a value to it using echo, like this:
echo 1 > /sys/class/ext_dev/function/ext_dev_5v_enable
If you still get an error after using this syntax, then we can look into permission or node existence issues.
Next: What you're up against with an unrooted Android 8.0 device
On unrooted Android devices, the sandbox and SELinux policies lock down access to system-level hardware nodes like this one pretty tightly. Here's what you need to know:
1. Regular Android permissions won't work here
Permissions like WRITE_EXTERNAL_STORAGE or other standard app permissions don't grant access to the /sys directory. This is a system partition, and Android's security model blocks regular apps from tinkering with hardware-related sysfs nodes directly—even if you request every permission in the book.
2. Your realistic options to make this work
Ask the device manufacturer for system-level access
Custom hardware nodes like this are almost always controlled by the device maker's custom system setup. You'll need to reach out to them to get either:- A system signature for your app (so it runs with system-level privileges)
- A custom permission (e.g.,
com.yourdevice.vendor.permission.CONTROL_EXT_POWER) paired with adjusted SELinux policies that let your app write to those nodes. This is the most reliable path since Android 8.0 enforces strict system partition protections.
Check if there's a vendor SDK/API
Many manufacturers provide dedicated SDKs or hidden system APIs for controlling their custom hardware. Reach out to the device's support or dev team to see if they have a pre-built way to toggle that 5V/3.3V port—this would avoid messing with sysfs entirely.Verify the node's file permissions (for troubleshooting)
If you can access the console, runls -l /sys/class/ext_dev/function/ext_dev_5v_enableto check the file's owner/group and permissions. If it's owned by thesystemgroup or a custom vendor group, a regular app can't join that group without manufacturer assistance on an unrooted device.
A final heads-up
Android 8.0 uses enforced SELinux mode, which means even if you somehow bypass file permissions, SELinux will block your app from accessing those hardware nodes. Forget about using root exploits—they're against Google's policies, risky, and won't work on a properly secured unrooted device.
内容的提问来源于stack exchange,提问作者Jacek

