O Samsung Fast Charger, também conhecido como Quick Charger ou Adaptive Fast Charger, tem seu funcionamento, carregar a bateria em menor tempo, utilizando uma maior potência aumentando a tensão de saída. O carregador AFC da Samsung tem duas opções de tensão e corrente: 5v até 2A ou 9V até 1.67A.
Sendo que quando o smartphone está com o fast charger funcionando o carregador entrega 9V até 1.67A, tendo uma potência máxima de 15W. Agora e se quisermos utilizar esse carregador da Samsung como uma fonte USB, vamos ter duas opções de tensão certo? Não! Nesse artigo vamos explorar esse carregador para tentar hackear esse modo de tensão adaptativo do carregador Fast Charger da Samsung 💀
Verificando Tensão
Para o hack desse artigo modifiquei um cabo USB type C: cortei ele no meio, adicionei jumpers nos GND, VCC, Data-, Data+ e por fim soldei novamente com a outra ponta. Assim posso analisar os dados e tensão que trafegam entre o smartphone e o carregador.
Se analisarmos a tensão padrão de saída do carregador ela é 5V. E o carregador não tem nenhuma forma de switch, botão ou afins para trocar seu modo de tensão.
A mudança de tensão só ocorre quando conectamos o carregador, por um cabo USB, com um smartphone compatível com o Fast Charger:
Assim podemos chegar a conclusão que esse modo 9V é habilitado por uma comunicação entre o smartphone e o carregador. Todo smartphone tem um chip especialista chamado PMIC (power management integrated circuit). O PMIC que controla os modos de carregamento, nível de carga e etc. E provavelmente esse chip que tenta se comunicar com o controlador do carregador para realizar a mudança de modo. Então vamos tentar fazer a vez do PMIC aqui.
Verificando Sinais USB
O próximo passo agora é tentar entender que comunicação ocorre e tentar “clonar” isso para poder ativar o modo 9V sem precisar do smartphone. Com o meu cabo USB modificado podemos analisar os dados que estão passando pelo cabo. Conectei os jumpers que correspondem ao Data+ e Data- do cabo USB à um Arduino Pro Mini nas portas analógicas A0 e A1. Conectando o smarphone temos o seguinte gráfico dos sinais de Data+ e Data-:
Analisando os sinais podemos notar que, após a conexão do smartphone, Data+ e Data- estão aproximadamente em 0.6V. Acontecem alguns picos que chegam até ~2.2V em Data- que após isso vai à 0V e Data+ tem um pequeno aumento para ~0.7V. Depois desses eventos o carregador está entregando 9V de tensão.
Hacking
Baseando-se nos resultados das analises a minha primeira tentativa, para realizar a troca de tensão do carregador fast charger foi: manter Data+ em aproximadamente 0.6V, com um potenciômetro variável, e executar picos de 2V, com um divisor de tensão, em Data- para testar o comportamento do carregador. Com esse teste o carregador chegava a realizar a troca de tensão para 9V, enquanto Data- estava no pico, mas assim que Data- voltava a 0V, a tensão não se mantinha em 9V e voltava ao default de 5V.
Montei um circuito e programa com Arduino para o hack:
Coloquei o output de um potenciômetro digital no pino Data+ e uma saída digital do Arduino em um divisor de tensão, para baixar 5V para aproximadamente 2V, conectado no pino Data-. Assim posso controlar o sinal de Data+ entre os valores analisados de 0.6V e 0.7V. Com o pino digital eu posso controlar Data-, quando esse pino terá os picos de 2V.
Eu não consegui chegar ao mesmo resultado da analise, Data- volta a 0V após os picos e o modo de tensão de saída se mantem em 9V, mas não me preocupei em reproduzir com fidelidade, já que mantendo Data- em 2V a troca de modo de tensão para 9V é realizada e se mantem.
Também adicionei um botão para executar a troca de modo de tensão sob demanda. O programa do Arduino começa mantendo o carregador no modo 5V. Quando o botão é pressionado ele gera uma interrupção e escreve HIGH no pino digital do Data- e troca o modo do carregador para 9V. Se o botão for pressionado novamente o contrário ocorre escrevendo LOW em Data-, o carregador volta para o modo 5V. O programa completo utilizado está no meu Github.
Pronto agora temos uma fonte USB com dois modos de tensão para utilizar em projetos.
Conclusão
Primeiramente pensei que o protocolo de comunicação entre o carregador e o smartphone fosse algo de trocas de pacotes USB. Mas pelos resultados obtidos começo a pensar que, na verdade, o controlador de gerenciamento do carregador só fica esperando por tensões pre definidas em Data+ e Data-. Mas ainda há algum detalhe faltando, para manter a tensão em 9V sem manter o sinal Data- em 2V. Pode ser que ocorra alguma comunicação mais “fina” entre o gerenciador de energia do smartphone e o carregador.
Outra coisa que descobri é que além do carregador AFC da Samsung ter seu “próprio protocolo”, ele também segue o padrão Quick Charger da Qualcomm. O que me leva a acreditar que os smartphones da Samsung também funcionam com os carregadores, que vão até 20V, com padrão Quick Charger. E também vice-versa, os carregadores da Samsung entregam fast charger para smartphones que seguem o padrão Quick Charger. Mas esses testes vão ficar pra um outro artigo.
Abraços, me liga!