Negociación de USB Power Delivery en un Macbook

Introducción

Hace algunos años compré un cargador USB-C de 128 W para mi MacBook. Supuse que podía entregar los 128 W por un solo puerto, o repartir 65 W a cada uno de sus dos puertos cuando se usaran simultáneamente.

Con el tiempo noté una diferencia respecto al cargador original de Apple: cuando la batería se descargaba por completo, siempre tenía que esperar un rato con la laptop conectada antes de poder encenderla, mientras la batería recuperaba algo de carga. Eso me llevó a revisar cuánta potencia estaba recibiendo realmente el equipo.

Negociación USB Power Delivery

Al conectar el cable, el cargador (fuente) anuncia los perfiles de voltaje y corriente que puede ofrecer, y la laptop (consumidor) solicita uno de ellos. Este acuerdo, definido por el estándar USB Power Delivery (USB-PD), determina la potencia máxima que el cargador entregará.

Consultar la potencia negociada

macOS permite ver el resultado de esa negociación con el siguiente comando:

system_profiler SPPowerDataType | grep -A8 "AC Charger"

En mi caso, la salida fue:

AC Charger Information:
Connected: Yes
ID: 0x0000
Wattage (W): 65
Family: 0xe000400a
Charging: Yes

Consultar los detalles del adaptador y de la carga

Para obtener información más detallada se puede consultar el registro de I/O Kit:

ioreg -rw0 -c AppleSmartBattery | grep -E "AdapterDetails|AppleRawAdapterDetails|ChargerData"

Que en mi caso entregó:

"AdapterDetails" = {"IsWireless"=No,"AdapterID"=0,"AdapterVoltage"=20000,"FamilyCode"=18446744073172697098,"Watts"=65,"Current"=3250,"PMUConfiguration"=3144,"Description"="pd charger"}
"AppleRawAdapterDetails" = ({"IsWireless"=No,"AdapterID"=0,"AdapterVoltage"=20000,"FamilyCode"=18446744073172697098,"Watts"=65,"Current"=3250,"PMUConfiguration"=3144,"Description"="pd charger"})
"ChargerData" = {"ChargingCurrent"=3200,"NotChargingReason"=0,"ChargingVoltage"=12720,"VacVoltageLimit"=4240}

Los valores están expresados en mV y mA. De AdapterDetails se obtiene el contrato negociado con el cargador:

Potencia negociada (W):                                65
Voltaje negociado (V):                                 20
Corriente negociada (A):                               3.25
Límite de corriente de entrada configurado en el PMU (A): 3.144

El contrato es consistente: 20 V × 3.25 A = 65 W. El PMU limita la corriente de entrada a 3.144 A, aproximadamente un 3 % por debajo de lo negociado, como margen de seguridad.

De ChargerData se obtiene el estado de carga de la batería:

Corriente de carga (A):            3.2
Voltaje de carga (V):              12.72
Límite de voltaje por celda (V):   4.24

El voltaje de carga corresponde a una batería de tres celdas en serie (3 × 4.24 V = 12.72 V), y la potencia que se dirige a la batería es de unos 40.7 W (12.72 V × 3.2 A). El resto de los 65 W queda disponible para el funcionamiento del equipo y se pierde en parte en la conversión.

Conclusión

Al cambiar el cable USB-C de un puerto al otro del cargador, ambos negociaron la misma potencia máxima: 65 W. Es decir, los 128 W que anuncia el cargador corresponden a la capacidad total combinada de ambos puertos, no a lo que puede entregar un solo puerto.

Esto probablemente explica también la espera al encender con la batería agotada: si la potencia disponible por el puerto no alcanza a cubrir los picos de consumo del arranque, el equipo necesita recuperar un mínimo de carga en la batería antes de permitir el encendido, algo que no ocurre con un cargador que ofrece más potencia por puerto.