Disabilita la ricarica USB


22

Per alcuni motivi non legati alla durata della batteria, devo disabilitare la carica della batteria quando un host USB è collegato al mio telefono (un Nexus 4 con root). Dando un'occhiata su Internet ( link1 , link2 ), sembra che dovrei modificare un file di sistema. Ho trovato una serie di file interessanti situati in /sys/class/power_supply/batterye /sys/class/power_supply/usb, che potrebbero essere quelli giusti da modificare al fine di ottenere la disabilitazione della ricarica USB (ad es /sys/class/power_supply/usb/present 0/1.).

Qualcuno ha provato qualcosa del genere (controllare la ricarica USB tramite software e modificare tali file di sistema)? Qual è il modo migliore per modificare quei file di sistema? Dovrei usare la shell adb o un altro strumento?

Ho provato l'app "esplorazione root" per modificare quei file, tuttavia quando ho modificato un file (dopo aver cambiato le sue autorizzazioni), è stato automaticamente riportato al suo valore originale.


2
Sebbene ciò possa o meno contribuire alla domanda, sono curioso di sapere perché vuoi disabilitare la ricarica USB.
dotVezz,

Quello che ho qui è qualcosa di più simile a un sistema incorporato: un telefono (USB ACCESSORY) e un pezzo di hardware (USB HOST), collegati tramite USB. La batteria del telefono fornisce l'hardware collegato tramite una connessione specifica (Vdd). Tuttavia, l'HOST USB dovrebbe fornire (o caricare) il telefono attraverso la linea VBUS dell'USB. Quello che voglio evitare è un anello di carica tra telefono e hardware collegato. Nonostante l'hardware collegato sia l'HOST, è il telefono Android che fornisce l'intero sistema. Spero che la mia spiegazione sia stata chiara per te.
Soggiorno

2
/ sys è un file system virtuale in cui il kernel espone manopole e switch per modificare e cercare la configurazione del kernel. Non è possibile modificare le autorizzazioni del file. Suppongo che il tuo telefono Nexus sia sbloccato e rootato. Il circuito di ricarica si basa probabilmente su un chip Maxim che può essere configurato. Sono disponibili kernel modificati che consentono l'override del rilevamento per la ricarica. Il contrario dovrebbe anche essere possibile. Tuttavia, potrebbe essere necessario correggere e ricompilare il kernel.
Ce4,

1
Franco Kernel per Nexus 4 consente una ricarica rapida, sono disponibili fonti. forse puoi dare un'occhiata e capire come spegnerlo: github.com/franciscofranco
ce4

Risposte:


7

Ho appena provato e ho scoperto che è necessario modificare un file:
sys/class/power_supply/usb/device/charge

il suo contenuto predefinito è '1' che significa 'abilita la ricarica' è necessario impostarlo su '0' per 'disabilitare la ricarica'

$ su

$ echo 0 > /sys/class/power_supply/usb/device/charge

Ho testato su Nexus 4 e funziona correttamente.


Posso confermare che echo 0 > /sys/class/power_supply/battery/charging_enabledfunziona per me, su una Sony Z1 Compact con CM11. Grazie mille! :)
seanlano,

Si noti che l'interfaccia / sys è virtuale e non persiste il riavvio
kevinf

3
adb shell dumpsys battery set ac 0; dumpsys battery set usb 0;

2

Non sono sicuro che funzionerà con il caricatore del tuo particolare telefono, ma spesso con cavi che trasferiscono sia l'alimentazione che i dati, all'interno del cavo sono presenti cavi separati per l'alimentazione e i dati.

Non sono particolarmente interessato a strappare il caricabatterie del telefono per confermare la mia idea, ma potresti provare a spellare una parte del cavo, identificare e tagliare i cavi di alimentazione all'interno del cavo e avvolgerlo di nuovo con nastro isolante.

C'è probabilmente un modo molto più semplice per farlo, ma non ne sono consapevole.


Ci sono 4 pin in USB in genere - 2 per alimentazione 5v e 2 per dati.
NoBugs,

1
Se si taglia Vbus e Ground, le linee dati non funzioneranno più. La connessione del cavo USB viene rilevata dall'alimentazione (vedere il connettore A, i pin di alimentazione sono leggermente più lunghi, quindi si collegheranno per primi).
diidu,

1

Sono abbastanza sicuro che non è qualcosa che puoi cambiare nel software poiché il telefono si carica quando collegato a una porta USB del computer. Probabilmente avresti bisogno di sporcarti le mani e corto di connessione o due sul telefono stesso.


Sì, può essere fatto anche tramite software. Guarda questa app per il root Nexus 4 stopCharge
STILLeN

1

È possibile utilizzare la batteria adb shell dumpsys set usb 0; // per disabilitare la ricarica USB e

batteria adb shell dumpsys set usb 1; // per abilitare la ricarica USB


1
Questo è facile, ma sfortunatamente non disabilita la ricarica. Fa solo sembrare che sia disabilitato.
diidu,

0

È possibile risolvere il problema nell'hardware modificando i pin sul lato del connettore micro-USB. Un modo ovvio è non collegare il Pin n. 1 (VBUS) e l'altro è mettere a terra il Pin n. 4 (ID) per far finta che il tuo host (PC) sia un dispositivo OTG. Se lo fai, è necessario scollegare Pin # 1 (VBUS) altrimenti uno, se non entrambi, dei dispositivi avranno bruciato.

Per quanto riguarda la soluzione da riga di comando, devi solo trovare i file giusti (dipendenti dal dispositivo) /sys/...con cui giocare. Ma come già accennato, per modificarli è necessario l'accesso in scrittura e le autorizzazioni di root e qualunque cosa tu faccia durerà solo fino al prossimo riavvio o cambio di periferica USB.


2
La soluzione hardware suggerita non è corretta. Quasi tutti i telefoni Android in circolazione sono dotati di un dispositivo USB che riceve l'alimentazione dagli host USB (ad esempio laptop), funzionando quindi in modalità Accessorio. Se si taglia la linea VBUS, la comunicazione dati USB smette di funzionare. L'ho provato io stesso. Direi lo stesso per l'altro (pin ID) anche se non l'ho provato. Hai ragione sulla soluzione software, tuttavia non tutti i telefoni Android dispongono dei /sys/...file necessari per farlo (Nexus 4 sì, Nexus 5 no). Un'altra soluzione dovrebbe essere la modifica del comportamento del driver di caricamento nel kernel.
STILLeN

0

Simile all'op, anche il mio host collegato tramite USB è collegato come batteria fittizia. Non è possibile utilizzare semplicemente il cavo USB e nessuna batteria, Android non si avvia, né USB fornisce abbastanza corrente.

Non è possibile risolvere questo problema nel software in quanto Android utilizzerà Vbus durante l'avvio. A meno che tu non voglia anche hackerare il codice del bootloader.

Il circuito di ricarica deve essere modificato per evitare la ricarica USB rispetto al circuito di tensione della batteria.

Ho confermato su Galaxy S3 che richiede un bus 5V per abilitare i dati (d + d-) fa parte dello standard USB.

OTG potrebbe risolvere il problema elettricamente ma le regole del client host non sono corrette. Anche questo telefono è in grado di OTG e caricare (io uso y-cable + gamepad)

Modifica riferimento: https://forum.xda-developers.com/showthread.php?t=1863303


Si aggiorna una volta che ho scoperto i cambiamenti del circuito di ricarica
kevinf

0

Ho chiesto al mio collega, che è un esperto di driver della batteria. Sul nostro Dado Pro 2, la cui versione del kernel 4.4.21 è, il nodo per la ricarica della batteria on / off è: /sys/class/power_supply/battery/input_suspend.


0

puoi sempre usare un diodo lucido tra il pin 1 con il lato di blocco verso l'accessorio. in questo modo il pin uno riceve un segnale 5v in modo che la comunicazione funzioni, ma NON ci sarà NESSUN flusso di corrente dall'accessorio al telefono. o se lo vuoi nell'altro modo basta posizionare il diodo nella direzione diversa.


-1

No, non è possibile su dispositivi non ancora rootati. Utilizza Settings.System con ADB_ENABLED, ma ADB_ENABLED è un'impostazione di sistema sicura che non può essere modificata da un'applicazione.

Sì, può essere fatto sul telefono rootato.

È necessario aggiungere un'autorizzazione android.permission.WRITE_SECURE_SETTINGS. So che mi staresti chiedendo come posso farlo: ecco il link per un'app simile: https://play.google.com/store/apps/details?id=com.jim2&hl=en


1
Cosa ADB_ENABLEDc'entra con la ricarica USB? L'app che colleghi consente di disabilitare la ricarica USB?
Dan Hulme,

L'app in genere ti consente di disabilitare la ricarica USB dopo aver modificato le impostazioni di sicurezza della scrittura.
Ravindra Sahay,

"Tipo"? Quali sono i passaggi da seguire?
Dan Hulme,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.