I — O que é uma porta de depuração?
Estamos estruturando no EBR um mapeamento prático das portas de depuração (UART, JTAG e SWD) em notebooks — principalmente MacBooks, Intel, T2 e Apple Silicon.
A maioria das placas possui um microcontrolador chamado EC (Embedded Controller) que fica ligado assim que a placa recebe 3,3 V ou 1,8 V always-on. Mesmo com a máquina “morta”, o EC já está rodando código e muitas vezes já envia mensagens por UART.
Em muitos notebooks, essas linhas UART não aparecem como um conector separado. Elas vêm misturadas no próprio conector JTAG / Debug ou até roteadas para o USB-C (SBU1/SBU2) quando a porta entra em modo de debug. Basta ligar no TX do EC ou do CPU para capturar mensagens de inicialização, erros de power, falhas de reset, etc.
Em resumo: boa parte das soluções modernas de debug combinam JTAG e UART no mesmo cabo, e muitas placas de notebook expõem o TX da UART do EC nesses conectores. Esse recurso, aliado ao fato de o EC ser energizado por uma LDO always-on, permite extrair logs úteis logo nos primeiros instantes de alimentação.
Isso transforma uma placa aparentemente morta em uma fonte de informação.
Além do JTAG, muitos MCUs implementam um pino opcional chamado SWO (Serial Wire Output) que fornece um “canal de printf” assíncrono para envio de mensagens. O SWO é unidirecional e pode transmitir logs semelhantes ao UART (por Manchester ou UART), mas não permite enviar comandos para a CPU. Em outras palavras, o SWO funciona como um “UART embutido” dentro da interface SWD/JTAG.
Dentro de todo notebook — inclusive MacBooks T2 (2018–2020) e Apple Silicon — existe uma “boca secreta” como TP_SOC_DEBUGPRT_TX / RX que a placa usa para falar.
Essa boca é chamada de porta de depuração.
Ela é usada para saber:
Se o processador acordou
Se a memória respondeu
Onde o notebook travou
Mesmo quando não liga, essa porta muitas vezes continua falando.
II- O que é UART?
UART é o idioma mais simples que a placa usa para falar.
Ele só precisa de:
TX → a placa falando
RX → o computador escutando
GND → terra (referência elétrica)
É como um walkie-talkie: um fio fala, o outro escuta.
III — Como a gente escuta a placa?
A partir daqui, a intenção não é só ligar um cabo:
é padronizar como o EBR captura, interpreta e compara esses sinais.
Usamos um adaptador USB → UART. O computador não entende direto o idioma da placa.
Então usamos um adaptador chamado USB → UART.
Alguns exemplos:
CH341A
USB-UART level selectable (1.8V / 2.5V / 3.3V / 5V)
Eles transformam:
USB do PC → sinais UART da placa
Ela vai dizer coisas como:
falha de ALL_SYSPWRGD
erro de memória RAM
falha de ME REGION
reset infinito
watchdog do EC
Isso permite saber se o defeito é elétrico, firmware ou lógico.
Se esses logs começarem a ser postados aqui, em pouco tempo teremos um mapa real de como as placas falham.
Isso é o que falta hoje na bancada: memória coletiva.
IV — Onde encontrar o UART na placa (T2, EC, JTAG e ARM Silicon USB-C)
Depois de entender o que é UART e por que ele existe, o próximo passo é simples:
Onde estão esses sinais na placa?
Na prática, quase todo notebook moderno possui pelo menos dois UARTs:
Um do EC (Embedded Controller);
Um do CPU / SoC;
E eles aparecem de muitas formas diferentes.
1) UART do EC (Embedded Controller)
Mesmo com a máquina sem vídeo, sem boot e sem BIOS, o EC já está tentando inicializar e vai mandar mensagens por esse TX.
O EC é o primeiro chip a ligar quando a placa recebe 1.8v ou 3,3v LDO. Antes do BIOS, antes do PCH, antes do CPU.
Por isso, o UART do EC é o mais importante para diagnóstico de placas mortas que ainda sussurram.
Nos esquemas ele aparece com nomes como:
EC_TX
EC_RX
KBC_TX
KBC_RX
SMC_DEBUG_TX
EC_DEBUG_TX
HOST_DEBUG_TX
e ETC.
Se você encontrar um ponto de teste escrito TX perto do EC, quase sempre é ele.
2) UART dentro do conector JTAG / Debug
Muita gente acha que JTAG serve só para programação. Na prática, a maioria dos conectores JTAG de notebook também carrega UART. Fabricantes fazem isso porque:
JTAG é usado para depurar o dispositivo via UART que é usado para ver logs então eles colocam tudo no mesmo conector
Por isso você encontra conectores com sinais como:
TMS
TCK
TDI
TDO
e também:
DEBUG_TX
Mesmo quando o conector não está populado, os pads na placa quase sempre existem.
Se você localizar o conector JTAG do EC, há grande chance de ali existir um TX de UART pronto para uso.
3) UART roteado pela USB-C (SBU1 / SBU2)
Nos notebooks ARM modernos mais novos (Apple Silicon M), o UART muitas vezes não sai em pads físicos.
Ele é roteado para a porta USB-C quando ela entra em modo de debug.
Nesse modo:
SBU1 vira UART TX
SBU2 vira UART RX
Isso é o mesmo UART do EC ou do CPU, apenas passando pela Type-C.
Com um cabo Type-C breakout ou um adaptador, dá para ligar um USB-UART nesses pinos e capturar os logs sem abrir a máquina.
V — Adaptação do CH341 com level shifter para UART seguro em 1.8 V e 3.3 V
Pessoal, conforme fui avançando nos testes de UART em placas de MacBook, T2, ficou claro um problema sério: os adaptadores USB-UART comuns (CH341, FT232, PL2303) trabalham em 5 V ou 3,3 V, enquanto a maioria dos SoCs, T2 e ECs modernos usam 1,8 V.
Ligar RX/TX direto nesses chips pode:
– não funcionar
– gerar ruído
– ou até danificar o SoC
Os adaptadores comuns trabalham em 5 V ou 3,3 V.
Mas EC, T2 e Apple Silicon usam 1,8 V.
Por isso estamos modificando o CH341 com level shifter interno.
Isso cria um padrão de hardware para o EBR.
CH341 (USB 5 V) → Level Shifter → Placa (1.8 / 3.3 V)
Por isso comecei a modificar o próprio CH341, adicionando internamente um level shifter (conversor de nível lógico) entre o CH341 e a placa.
Isso cria um padrão de hardware para o EBR. Isso permite capturar logs de: EC, PCH, T2, iBoot, BootROM e Apple Silicon sem risco.
Por que isso muda tudo?
Com isso o CH341 deixa de ser um “ Programador/cabo TTL barato” e vira uma interface de debug profissional.
Os principais benefícios:
• Permite ler UART de T2 e Apple Silicon sem risco
• Funciona tanto em 1,8 V quanto 3,3 V
• Evita back-power e latch-up no SoC
• Permite deixar o adaptador conectado durante boot, reset e falha
• Permite capturar logs de EC, iBoot, BootROM e kernel sem danificar a placa
Na prática, isso faz com que portas de aparelhos que parecem “bloqueadas” ou “mortas” simplesmente passem a funcionar, porque o problema real era elétrico, não lógico.
A ideia é simples:
CH341 (USB, 5 V) → Level Shifter → Placa (1,8 V ou 3,3 V)
O level shifter é alimentado pela mesma tensão da placa 820-00850 (por exemplo, P1V8SLPS2R_SW0 ou PP1V8_UPC_ vinda do Controlador PD, do EC do notebook ou de um Rail Always-On ou LDO). Assim ele só funciona quando a placa está viva e nunca injeta tensão mais alta no SoC.
Objetivo desse projeto no EBR
A ideia é que, com esse tipo de adaptador, a gente possa padronizar:
– Captura de logs e armazenamento; – Depuração de falhas de power G3 até S0;
– Análise de KBC EC, PCH, T2, Apple Silicon e outro;
– Desenvolver uso do UART via USB-C ou test points;
– Contribuir com pontos de teste, logs ou pinouts está ajudando a transformar tentativa-e-erro em engenharia de bancada;
– E usar isso para alimentar o banco de dados colaborativo do EBR sem fins lucrativos.
Quem já tentou UART direto e teve problemas, recomendo testar esse método.
Vocé vai precisar cortar o UART que sai do CI Ch341 de 5v para fazer a adaptação e tranformar nosso programador velho em uma ferramenta TLL de 1.65v a 5v
Continua