Z niektórych powodów niezwiązanych z żywotnością baterii muszę wyłączyć ładowanie baterii, gdy host USB jest podłączony do mojego telefonu (zrootowany Nexus 4). Rozglądając się po Internecie ( link1 , link2 ), wygląda na to, że powinienem zmodyfikować plik systemowy. Znalazłem szereg ciekawych plików znajdujących się w /sys/class/power_supply/battery
oraz /sys/class/power_supply/usb
, że może być słuszne zostać zmodyfikowane w celu osiągnięcia wyłączenie USB do ładowania (np /sys/class/power_supply/usb/present 0/1
).
Czy ktoś próbował czegoś takiego (kontrolować ładowanie USB za pomocą oprogramowania i modyfikować takie pliki systemowe)? Jaki jest najlepszy sposób modyfikacji tych plików systemowych? Czy powinienem używać powłoki adb lub innego narzędzia?
Próbowałem aplikacji „root explorer”, aby zmodyfikować te pliki, jednak kiedy zmodyfikowałem plik (po zmianie jego uprawnień), automatycznie przywrócono jego pierwotną wartość.
źródło
Odpowiedzi:
Właśnie próbowałem i okazało się, że musisz zmodyfikować plik:
sys/class/power_supply/usb/device/charge
jego domyślna zawartość to „1”, co oznacza „włącz ładowanie”, musisz ustawić ją na „0”, aby „wyłączyć ładowanie”
Testowałem na Nexusie 4 i działa z powodzeniem.
źródło
echo 0 > /sys/class/power_supply/battery/charging_enabled
działa dla mnie, na Sony Z1 Compact z CM11. Dzięki wielkie! :)źródło
Nie jestem pewien, czy będzie działać z ładowarką twojego telefonu, ale często z kablami, które przesyłają zarówno energię, jak i dane, wewnątrz kabla znajdują się osobne kable do zasilania i danych.
Nie jestem szczególnie zainteresowany podarciem ładowarki telefonu, aby potwierdzić mój pomysł, ale możesz spróbować zdjąć część kabla, zidentyfikować i przeciąć przewody zasilające wewnątrz kabla i owinąć go taśmą elektryczną.
Istnieje prawdopodobieństwo, że sposób łatwiejszy sposób na zrobienie tego, ale nie jestem tego świadomy.
źródło
Jestem pewien, że nie jest to coś, co można zmienić w oprogramowaniu, ponieważ telefon ładowałby się po podłączeniu do portu USB komputera. Prawdopodobnie będziesz musiał ubrudzić sobie ręce i zewrzeć połączenie lub dwa na samym telefonie.
źródło
Możesz użyć zestawu baterii adb shell dumpsys usb 0; // do wyłączenia ładowania USB i
adb shell zestaw zrzutu baterii usb 1; // do włączenia ładowania USB
źródło
Możesz rozwiązać problem sprzętowo, modyfikując styki po stronie złącza micro-USB. Jednym oczywistym sposobem jest nie podłączenie styku nr 1 (VBUS), a drugim sposobem jest uziemienie styku nr 4 (ID), aby udawać, że twój host (PC) jest urządzeniem OTG. Jeśli to zrobisz, możesz mieć do odłączenia Pin # 1 (VBUS) w przeciwnym wypadku jeden, jeśli nie oba, z urządzeń będzie sparzyć.
Jeśli chodzi o rozwiązanie z linii poleceń, musisz tylko znaleźć odpowiednie (zależne od urządzenia)
/sys/...
pliki do gry. Ale jak już wspomniano, potrzebujesz dostępu do zapisu i uprawnień roota, aby je zmienić, a cokolwiek zrobisz, będzie trwać tylko do następnego ponownego uruchomienia lub zmiany urządzeń peryferyjnych USB.źródło
/sys/...
niezbędne pliki (Nexus 4 tak, Nexus 5 nie). Innym rozwiązaniem powinna być zmiana zachowania sterownika ładowania na jądro.Podobnie jak w przypadku mojego hosta, który jest podłączony przez USB, jest również podłączony jako atrapa baterii. Nie można po prostu użyć kabla USB i bez baterii, Android nie uruchamia się, a USB nie zapewnia wystarczającej ilości prądu.
Nie można tego naprawić w oprogramowaniu, ponieważ Android będzie używał Vbus podczas rozruchu. Chyba że chcesz również zhakować kod programu ładującego.
Obwód ładowania należy zmodyfikować, aby uniknąć ładowania USB w stosunku do pętli napięcia akumulatora.
Potwierdziłem na Galaxy S3, że wymaga magistrali 5V, aby umożliwić przesyłanie danych (d + d-), to część standardu USB.
OTG może rozwiązać problem elektrycznie, ale wtedy reguły klienta hosta są nieprawidłowe. Również ten telefon może OTG i ładować (używam kabla Y + gamepad)
Edytuj odniesienie: https://forum.xda-developers.com/showthread.php?t=1863303
źródło
Zapytałem mojego kolegę, który jest ekspertem w dziedzinie sterowników akumulatorów. Na naszej Nut Pro 2, którego jądro jest w wersji 4.4.21, węzeł do ładowania akumulatora on / off jest:
/sys/class/power_supply/battery/input_suspend
.źródło
zawsze możesz użyć strzelającej diody między stykiem 1, stroną blokującą w stronę akcesorium. w ten sposób pin otrzymuje sygnał 5 V, więc komunikacja działa, ale z akcesoriów do Twojego telefonu nie będzie prądu. lub jeśli chcesz inaczej, po prostu umieść diodę w innym kierunku.
źródło
Nie, nie jest to możliwe na urządzeniach, które nie są jeszcze zrootowane. Używa Settings.System z ADB_ENABLED, ale ADB_ENABLED jest Bezpiecznym Ustawieniem Systemowym, którego aplikacja nie może zmienić.
Tak, można to zrobić na zrootowanym telefonie.
Konieczne jest dodanie uprawnienia android.permission.WRITE_SECURE_SETTINGS. Wiem, że pytasz, jak to zrobić: Oto link do podobnej aplikacji: https://play.google.com/store/apps/details?id=com.jim2&hl=pl
źródło
ADB_ENABLED
ma wspólnego z ładowaniem USB? Czy aplikacja, którą łączysz, pozwala wyłączyć ładowanie USB?