/sys/class/power_supply/battery
和/sys/class/power_supply/usb
中找到了一系列有趣的文件,这些文件可能是要实现USB充电禁用的正确修改文件(例如/sys/class/power_supply/usb/present 0/1
)。 是否有人尝试过类似的操作(通过软件控制USB充电并修改此类系统文件)?修改这些系统文件的最佳方法是哪种?我应该使用adb shell还是其他工具?
我尝试使用“ root Explore”应用程序来修改这些文件,但是当我修改文件(更改其权限后)时,该文件会自动保留回到原始值。
#1 楼
我刚刚尝试过,发现您需要修改文件:sys/class/power_supply/usb/device/charge
其默认内容为“ 1”,这意味着“启用充电”
您需要将其设置为“ 0”至“禁用充电”。
$ su
$ echo 0 > /sys/class/power_supply/usb/device/charge
我在Nexus 4上进行了测试,并且工作正常。
评论
我可以确认在具有CM11的Sony Z1 Compact上,echo 0> / sys / class / power_supply / battery / charging_enabled对我有用。非常感谢! :)
–seanlano
2015年10月5日,下午2:58
请注意,/ sys接口是虚拟的,不会持续重启
–kevinf
18 Mar 7 '18 at 7:32
#2 楼
adb shell dumpsys battery set ac 0; dumpsys battery set usb 0;
评论
这些命令很有趣,但是它们并没有真正影响充电!您也可以将dumpsys电池设置为42级,而无论实际电池状态如何,Android都会认为它的电量是42%。进行dumpsys电池重置以恢复正常。
– EvgEnZh
20 Nov 14'9:20
此外,这些虚假更改会冻结报告的电池状态,并记录在电池统计信息中,这可能会使它们混乱并导致错误的“剩余时间”预测。
– EvgEnZh
20-11-14在9:30
#3 楼
我不确定它是否可以与您的特定手机的充电器配合使用,但是通常使用既可以传输电源又可以传输数据的电缆,电缆内部有单独的电源线和数据线。对撕开手机充电器以确认我的想法并不特别感兴趣,但是您可以尝试剥去电缆的一部分,识别并切断电缆内的电源线,然后用胶带将其包起来。
可能有一种更简单的方法可以执行此操作,但我不知道。
评论
USB中通常有4个引脚-2个用于5v电源,2个用于数据。
– NoBugs
2014年7月12日15:32
如果您切断了Vbus并将其接地,也会使数据线停止工作。从电源检测到USB电缆连接(请参阅A连接器,电源引脚稍长一些,因此它们将首先连接)。
– diidu
17年2月28日在10:10
#4 楼
我敢肯定,这不是您可以更改的软件,因为插入计算机USB端口后手机会充电。您可能需要弄脏双手,并在手机本身上短接一两个连接。评论
是的,也可以通过软件来完成。在此应用中查看扎根的Nexus 4 stopCharge
– STiLLeN
2014年6月11日20:00
#5 楼
您可以使用usb 0; //用于禁用USB充电和adb shell dumpsys电池组usb 1; //用于启用USB充电
评论
这很容易,但是不幸的是它不会禁用充电。它只会使其看起来像被禁用。
– diidu
17年2月28日在9:26
#6 楼
您可以通过修改micro-USB连接器侧的引脚来解决硬件问题。一种明显的方法是不连接Pin#1(VBUS),另一种方法是将Pin#4(ID)接地以假装您的主机(PC)是OTG设备。如果这样做,则必须断开Pin#1(VBUS)的连接,否则将烧毁其中一个(如果不是两个)设备。对于命令行解决方案,您只需要找到可以播放的正确(取决于设备)
/sys/...
文件即可。但是,正如已经提到的那样,您需要写访问权限和root权限才能更改它们,而您所做的任何操作都只会持续到下一次重新启动或更改USB外设为止。评论
建议的硬件解决方案不正确。几乎所有的Android手机都配有一个USB设备,该设备可以从USB主机(例如笔记本电脑)获取电源,因此可以在“附件”模式下工作。如果切断VBUS线路,则USB数据通信将停止。我自己对此进行了测试。即使我没有测试,我也会以其他方式(ID引脚)说同样的话。您对软件解决方案的看法是正确的,但是并不是所有的Android手机都具有/ sys / ...文件(Nexus 4是,Nexus 5是)。另一个解决方案应该是将计费驱动程序的行为更改为内核。
– STiLLeN
2014年6月11日19:58
#7 楼
与op相似,通过USB连接的Host也作为虚拟电池连接。不能简单地使用USB电缆并且没有电池,android无法启动,usb也不能提供足够的电流。您无法在软件中修复此问题,因为Android会在引导过程中使用Vbus。除非您也想破解引导加载程序代码。
需要修改充电电路以避免USB充电与电池电压环路的冲突。
我在Galaxy S3上确认它需要5V总线才能启用数据(d + d-), USB标准的一部分。
OTG可以用电气解决问题,但是主机客户端规则不正确。另外,这款手机还可以OTG充电(我使用y电缆+游戏手柄)
编辑参考:https://forum.xda-developers.com/showthread.php?t=1863303
评论
一旦我发现充电电路发生变化,就会更新
–kevinf
18 Mar 7 '18 at 7:14
#8 楼
我问了我的电池驱动专家的同事。在我们的Nut Pro 2(内核版本为4.4.21)上,用于打开/关闭电池充电的节点是:/sys/class/power_supply/battery/input_suspend
。#9 楼
您总是可以在针脚1之间使用散装二极管,其阻挡面朝附件。这样一来,插脚会收到5v信号,因此通信正常,但不会有电流从配件流向您的手机。或者,如果您需要,也可以将二极管放在不同的方向。#10 楼
不,在尚未植根的设备上是不可能的。它使用带有ADB_ENABLED的Settings.System,但是ADB_ENABLED是一个安全系统设置,应用程序无法更改。是的,可以在有根电话上完成。
需要添加权限android.permission.WRITE_SECURE_SETTINGS。
我知道您会问我该怎么做:
以下是类似应用程序的链接:https:// play。 google.com/store/apps/details?id=com.jim2&hl=zh-CN
评论
ADB_ENABLED与USB充电有什么关系?您链接的应用是否允许禁用USB充电?
–丹·赫尔姆
2014年5月12日上午10:54
应用程序kinda允许您在更改写入安全设置后禁用USB充电。
– Ravindra Sahay
2014年5月12日16:30
“金田”?遵循哪些步骤?
–丹·赫尔姆
2014年5月12日16:39
评论
尽管这可能会或可能不会助长问题,但我很好奇您为什么要禁用USB充电。我在这里拥有的东西与嵌入式系统更相似:通过USB连接的电话(USB ACCESSORY)和硬件(USB HOST)。手机电池通过特定的连接(Vdd)为连接的硬件供电。但是,USB HOST应该通过USB的VBUS线为手机供电(或充电)。我要避免的是电话与所连接硬件之间的收费循环。尽管连接的硬件是主机,但提供整个系统的是Android手机。希望我的解释对您清楚。
/ sys是一个虚拟文件系统,内核在其中公开旋钮和开关以更改和查找内核配置。您无法更改文件权限。我猜您的连结手机已解锁并已扎根。充电电路可能基于可配置的Maxim芯片。有可用的已更改内核,它们可以覆盖充电检测。相反也应该是可能的。但是,您可能需要修补并重新编译内核。
nexus 4的Franco Kernel允许快速充电,有可用的信号源。也许您可以看一下并弄清楚如何将其关闭:github.com/franciscofranco
这是驱动程序:github.com/franciscofranco/mako/blob/nightlies-4.3-JWR/drivers / ...