miércoles, 8 de abril de 2026

Cómo forzar actualizaciones de Firmware (UEFI dbx) en Fedora con batería agotada

¿Tu batería no carga y no puedes actualizar el firmware en Fedora? Aprende a solucionar el error 'System power is too low' forzando fwupdmgr para actualizar UEFI dbx y KEK CA de forma segura."


Si eres usuario de Fedora (o cualquier distro Linux que use fwupd) y tu laptop tiene la batería dañada o ya no carga, es muy probable que te hayas topado con este molesto error al intentar actualizar el sistema:
“System power is too low” o “La energía del sistema es demasiado baja”
Este mensaje suele aparecer específicamente al intentar actualizar la lista de firmas prohibidas de Secure Boot (dbx) o el KEK CA. El sistema bloquea la actualización por seguridad, para evitar que el equipo se apague en medio de un cambio crítico de firmware, lo que podría dejar tu computadora inservible.
Pero, ¿qué pasa si tu batería ya no funciona y siempre usas la corriente? Aquí te enseño cómo saltarte este bloqueo de forma manual.

Paso 1: El intento fallido con la terminal

Normalmente, intentaríamos forzarlo con el comando estándar:
sudo fwupdmgr update --force
Si el sistema sigue respondiendo que la energía es insuficiente, significa que el demonio interno de fwupd tiene una protección que ignora incluso el comando --force.

Paso 2: Modificar la configuración de fwupd

Para solucionar esto, debemos decirle al sistema que ignore el estado de la batería manualmente.
  1. Abre una terminal y edita el archivo de configuración global:
    sudo nano /etc/fwupd/fwupd.conf
    
  2. Busca la sección [fwupd] y localiza la línea que dice IgnorePower=false.
  3. Cambia el valor a true:
    IgnorePower=true
    
  4. Guarda los cambios (Ctrl + O, luego Enter) y sal (Ctrl + X).

Paso 3: Reiniciar el servicio y aplicar

Para que Fedora reconozca el cambio, reinicia el servicio y lanza la actualización de nuevo:
sudo systemctl restart fwupd
sudo fwupdmgr update
¡Listo! Ahora las actualizaciones de UEFI dbx y KEK CA deberían procesarse sin quejarse del nivel de carga.

Paso 4: ¿Cómo verificar si se aplicó correctamente?

Una vez que el proceso termine (y si el sistema te pidió reiniciar), puedes verificar que todo esté al día con este comando:
fwupdmgr get-updates
Si el sistema está parcheado correctamente, verás el mensaje: "Devices with no available firmware updates". También puedes listar los dispositivos actuales y sus versiones con:
fwupdmgr get-devices
Busca la sección UEFI dbx; debería mostrar la versión más reciente y no tener mensajes de error pendientes.

¿Por qué es importante esta actualización?

No la ignores. Estas actualizaciones corrigen vulnerabilidades críticas (como las de los bootloaders IGEL o SysReturn) que permiten a un atacante saltarse el Secure Boot. Mantener el "dbx" al día garantiza que tu equipo solo arranque software confiable y firmado digitalmente.
⚠️ Nota de seguridad: Una vez que termines, te recomiendo volver a ponerloIgnorePower=false en el archivo de configuración. Es una protección útil para evitar "brickear" (dejar inservible) tu main board (placa base) si llegaras a desconectar el cable por accidente en futuras actualizaciones de BIOS.

¿Te sirvió este truco? ¡Déjame un comentario si tuviste algún problema con tu modelo de laptop!


sábado, 14 de febrero de 2026

📝 Winget upgrade vs winget update: ¿cuál es la diferencia y cómo bloquear actualizaciones con pins?

Cuando administramos aplicaciones en Windows, WinGet se ha convertido en una herramienta fundamental para instalar, actualizar y mantener software desde la línea de comandos. Sin embargo, aún genera confusión la diferencia entre winget upgrade y winget update, así como el uso del comando winget pin para evitar que ciertos programas se actualicen automáticamente.

En esta entrada te explico estas diferencias y te muestro un ejemplo real de cómo bloquear un programa para que no se actualice, utilizando blocking pins.


🔄 ¿Cuál es la diferencia entre winget upgrade y winget update?

Según la documentación oficial, update no es un comando diferente, sino un alias de upgrade. Esto significa que:

➡️ winget update = winget upgrade\ Ambos realizan exactamente la misma acción: actualizar aplicaciones. [learn.microsoft.com], [github.com]

Por lo tanto, cualquier comando que ejecutes con upgrade funcionará igualmente con update, incluyendo parámetros como --all, --silent, --include-unknown, etc.


🔒 Cómo funciona el pinning en WinGet

WinGet permite “anclar” paquetes para controlar si pueden o no ser actualizados:

Tipos de pin:

  1. Pinning\ Excluye al paquete de winget upgrade --all, pero permite actualizarlo manualmente. [learn.microsoft.com]

  2. Blocking\ Bloquea completamente la actualización, incluso si se intenta actualizar el paquete directamente.\ Requiere eliminar el pin o usar --force para sobrescribirlo. [learn.microsoft.com]

  3. Gating\ Permite actualizaciones solo dentro de un rango de versiones definido. [learn.microsoft.com]

En este post nos enfocaremos en blocking, ideal cuando quieres impedir que un programa sea actualizado bajo cualquier circunstancia.


🛑 Ejemplo práctico: bloquear MobaXterm para que no se actualice

A continuación tienes un ejemplo real ejecutado con WinGet, usando un prompt tradicional tipo:

c:\WinUser>

📌 1. Ver qué paquetes están actualmente anclados (pins)

c:\WinUser> winget pin list
Nombre    Id                Versión        Origen Tipo de anclaje
-----------------------------------------------------------------
MobaXterm Mobatek.MobaXterm 25.0.0    winget Pinning

📌 2. Quitar el pin existente

c:\WinUser> winget pin remove Mobatek.MobaXterm
Encontrado MobaXterm [Mobatek.MobaXterm]
El anclaje se quitó correctamente

📌 3. Crear un pin blocking para impedir actualizaciones

c:\WinUser> winget pin add Mobatek.MobaXterm --blocking
Encontrado MobaXterm [Mobatek.MobaXterm]
Anclaje agregado correctamente

📌 4. Verificación final

c:\WinUser> winget pin list
Nombre    Id                Versión        Origen Tipo de anclaje
-----------------------------------------------------------------
MobaXterm Mobatek.MobaXterm 24.2.0.5220    winget Blocking

Ahora MobaXterm no se actualizará automáticamente, ni con winget upgrade --all ni con winget upgrade Mobatek.MobaXterm, a menos que lo fuerces manualmente o elimines el pin.


Conclusión

  • winget update y winget upgrade son lo mismo: update es solo un alias. [learn.microsoft.com]
  • Puedes usar winget pin para evitar que una aplicación se actualice.
  • El tipo blocking es útil para software corporativo, herramientas críticas o versiones específicas que deseas mantener estables. [learn.microsoft.com]