• Saltar al contenido principal
  • Saltar a la barra lateral principal
  • Blog
  • Sistemas Operativos
    • Todos los sistemas operativos del Raspberry Pi Imager en 2026
  • Tipos de Raspberry Pi
    • Selector interactivo de Raspberry Pi
    • Raspberry Pi: rivales y alternativas SBC en 2026 con Armbian y DietPi
  • Glosario
  • FAQ
  • Contacto
  • Cookies y RGPD
  • Acerca de

Raspberry para torpes

Blog sobre Raspberry Pi en español desde 2013. Guías de configuración, hardware, sistemas operativos y proyectos para todos los niveles.

whatcable en Raspberry Pi

WhatCable para Linux: inspecciona tus puertos USB en Raspberry Pi OS

6 mayo, 2026 by manuti Deja un comentario

Todo empezó con un post de Microsiervos sobre WhatCable, una pequeña utilidad para macOS que lee los cables USB-C conectados y explica exactamente qué capacidades tiene cada uno. Velocidad real, potencia máxima, si el cable lleva e-marker o no. Todo lo que el conector no cuenta por sí mismo. La app es de darrylmorley y funciona sobre la API IOKit de Apple, así que en principio era solo para Mac.

Sin embargo, buscando un poco más, apareció en Hacker News un port para KDE Plasma hecho por Zetaphor. Está escrito en C++ con QML y requiere KDE Frameworks 6. Y luego, buscando más, apareció otro port de nedrichards, este específicamente para GNOME: Python, GTK4 y libadwaita. Orientado a Flatpak y con cara de acabar en Flathub en algún momento. Es este último el que he probado en Raspberry Pi OS Bookworm.

whatcable en el escritorio de Raspberry Pi OS

Qué hace WhatCable por dentro

En Linux, la información sobre puertos y cables USB-C llega a través del kernel, concretamente de la clase typec, que expone sus datos en /sys/class/typec/. Si el driver del controlador USB-C del sistema registra el puerto correctamente en esa clase, ahí aparece todo: velocidad del cable, PDOs de carga, identidad del cable si lleva e-marker, modo alternativo si lo hay. Además, la información de dispositivos conectados a puertos USB-A viaja por /sys/bus/usb/devices/, que es el sysfs USB estándar de toda la vida.

El port de nedrichards lee ambas fuentes. También lee /sys/kernel/debug/usb/devices para datos adicionales de topología. No necesita root para nada de esto. En teoría, debería funcionar igual en cualquier distribución Linux moderna, incluido Raspberry Pi OS.

El problema con el USB-C de la Raspberry Pi

Aquí viene la parte que no es obvia. Tanto la Raspberry Pi 4 como la Raspberry Pi 5 tienen puerto USB-C, pero ese puerto lo gestiona el firmware del bootloader, no un driver de kernel. La negociación de USB-C Power Delivery —qué PDOs pide la placa, qué corriente puede entregar la fuente— ocurre antes de que el sistema operativo ni siquiera haya arrancado. El propio Raspberry Pi Ltd lo confirma en su white paper sobre USB PD: la Pi 5 solo pide PDOs a 5V y esa lógica vive en el EEPROM del bootloader.

Como resultado, /sys/class/typec/ está vacío en ambas placas. No hay driver UCSI, no hay TCPM, no hay nada que registre el puerto USB-C como typec_port en el kernel. WhatCable arranca sin problema, pero el apartado de puertos USB-C aparece vacío. No es un bug de la app: es una limitación arquitectónica de estas placas que no tiene solución desde userspace.

Lo que sí funciona: los cuatro puertos USB-A

Por otro lado, los puertos USB-A sí exponen toda su información. Y en el contexto de una Raspberry Pi, eso es bastante útil. Tanto la Pi 4 como la Pi 5 tienen un presupuesto de corriente limitado para los periféricos USB. Los problemas de alimentación USB en Raspberry Pi vienen de lejos, y poder ver de un vistazo cuánta corriente declara consumir cada dispositivo conectado ayuda a detectar situaciones comprometidas antes de que empiecen los problemas.

Por cada dispositivo conectado, WhatCable muestra el fabricante y nombre de producto, la velocidad negociada (12, 480 o 5000 Mbps según el puerto), la versión USB, el consumo declarado en el descriptor del dispositivo, la clase de dispositivo y el driver de kernel activo. Además, expone la topología completa: en la Pi 4, por ejemplo, aparece el hub VL805 de VIA Labs como hub raíz del bus USB 3.0, con los dispositivos conectados colgando de él como ramas. En la Pi 5, el mismo papel lo hace el chip RP1.

Eso sí, el consumo que muestra es el bMaxPower del descriptor USB, no el consumo real en ese momento. Es lo que el dispositivo dice que puede necesitar, no lo que está usando. Para consumo real hace falta un vatímetro USB en serie. Aun así, como referencia para dimensionar qué cabe dentro del presupuesto de la placa, es un dato útil.

Amazon Basics Cable de carga rápida con adaptador USB-C a USB-A 3.1 Gen 2, alta velocidad de 10 Gbps

Amazon Basics Cable de carga rápida con adaptador USB-C a USB-A 3.1 Gen 2, alta velocidad de 10 Gbps

5,77€

Comprar en Amazon

Como Asociado de Amazon, gano por compras calificadas. Este enlace es un enlace de afiliado, lo que significa que puedo ganar una comisión si realizas una compra a través de estos enlaces, sin costo adicional para ti.

Instalación en Raspberry Pi OS Bookworm

Raspberry Pi OS Bookworm es Debian 12. Tiene GTK4 y libadwaita en repos, así que el software corre sin problemas. El único obstáculo es que el paquete meson del sistema es la versión 1.0.1, y el proyecto exige >= 1.2.0. Se resuelve instalando meson desde pip.

Primero, las dependencias:

sudo apt install git ninja-build python3-pip \
    python3-gi python3-gi-cairo \
    gir1.2-gtk-4.0 gir1.2-adw-1
whatcable ninja install

Después, meson actualizado:

pip3 install meson --break-system-packages
meson --version

La versión debe ser 1.2.0 o superior. A continuación, clonar e instalar:

git clone https://github.com/nedrichards/whatcable-linux.git
cd whatcable-linux
meson setup build --prefix="$HOME/.local"
meson install -C build
whatcable meson setup

Los ajustes necesarios para que funcione bien

Meson instala el módulo Python en ~/.local/lib/python3/dist-packages/, que es la ruta de Debian pero no está en el sys.path por defecto. Sin ese path, el ejecutable falla con un ModuleNotFoundError. La solución es añadirlo al .bashrc:

echo 'export PYTHONPATH="$HOME/.local/lib/python3/dist-packages:$PYTHONPATH"' >> ~/.bashrc
source ~/.bashrc

Con eso, el CLI funciona desde terminal. Sin embargo, las aplicaciones lanzadas desde el escritorio no cargan el .bashrc, así que el menú de inicio sigue sin arrancar la app. La solución más limpia es reemplazar el ejecutable por un wrapper que lleve el entorno incorporado:

cat > ~/.local/bin/whatcable-linux << 'EOF'
#!/bin/bash
export PYTHONPATH="$HOME/.local/lib/python3/dist-packages:$PYTHONPATH"
export GTK_A11Y=none
exec python3 -m whatcable_linux "$@"
EOF
chmod +x ~/.local/bin/whatcable-linux

La variable GTK_A11Y=none silencia un warning inofensivo sobre el bus de accesibilidad, que no está disponible en Raspberry Pi OS por defecto.

Por último, el archivo .desktop que crea meson usa el nombre del comando sin ruta absoluta. En el entorno gráfico eso falla porque ~/.local/bin no siempre está en el PATH de la sesión. Se corrige así:

sed -i \
    "s|Exec=whatcable-linux|Exec=/home/$USER/.local/bin/whatcable-linux|" \
    ~/.local/share/applications/com.nedrichards.WhatCable.desktop

update-desktop-database ~/.local/share/applications/

Después de esto, la app arranca tanto desde terminal como desde el menú de aplicaciones.

Un ejemplo real de salida

Con los ajustes hechos, esto es lo que muestra WhatCable en la Raspberry Pi 4 con tres periféricos conectados: el hub interno VL805 del chip USB 3.0, un adaptador USB con tarjeta SD dentro y el receptor Logitech Unifying del teclado y ratón inalámbrico.

WhatCable con el USB2.0 Hub seleccionado en el panel izquierdo. El panel derecho muestra el hub interno VIA Labs VL805 (2109:3431): 480 Mbps, USB 2.10, 100 mA declarados, 1 interfaz. Es el dispositivo 1-1, la raíz del bus desde la que cuelgan el resto.

El primer dispositivo que aparece en la lista es el hub USB 2.0 interno (2109:3431). Es el VIA Labs VL805, el controlador que gestiona los cuatro puertos USB-A de la Pi 4. Aparece a 480 Mbps y con 100 mA declarados, lo esperable en un hub de bus alimentado por la propia placa.

WhatCable con la Generic USB2.0 card seleccionada. Panel derecho: Silicon Motion 090c:6200, 480 Mbps, USB 2.00, 500 mA declarados, 1 interfaz, driver usb-storage, dispositivo 1-1.2.

El segundo es el adaptador USB con tarjeta SD (090c:6200, Silicon Motion). Esta Pi 4 tiene el slot microSD dañado, así que el almacenamiento principal va por USB mediante un adaptador. WhatCable lo identifica correctamente como dispositivo de almacenamiento con driver usb-storage, 480 Mbps y 500 mA declarados. Esos 500 mA son el máximo que el adaptador dice que puede necesitar; en la práctica consume bastante menos.

WhatCable con el USB Receiver de Logitech seleccionado. Panel derecho: 046d:c52b, 12 Mbps, USB 2.00, 98 mA, 3 interfaces (teclado, ratón y canal de datos del protocolo Unifying), dispositivo 1-1.3.

El tercero es el receptor Logitech Unifying (046d:c52b). Negocia a 12 Mbps, que es Full Speed, lo normal para dispositivos HID. Lo interesante aquí son las tres interfaces: una para el teclado, otra para el ratón y una tercera para el canal de datos del protocolo Unifying. Todo visible en el panel de detalle. Consume 98 mA declarados.

El apartado typec_ports llega vacío en los tres casos, exactamente como se esperaba. La app muestra 8 dispositivos en total porque también cuenta el hub raíz del bus USB 3.0 y los nodos internos del xHCI, que aparecen en la sección Advanced Sources.

La app tiene menos de dos semanas de vida y ya es funcional en Raspberry Pi OS con cuatro ajustes concretos. Para lo que cuesta instalarlo, ver de un vistazo el consumo declarado de cada periférico USB conectado a la Pi vale la pena, especialmente si tienes un disco externo, un hub o varios dispositivos enchufados a la vez y quieres saber si estás cerca del límite de los 600 mA que da la placa con una fuente de 3A. También me ha servido para ver que algunos cables USB que tenía eran bastante malos en cuestión de velocidad, así que compré un par de Amazon Basics que realmente funcionan y ha sido un descubrimiento.

Amazon Basics Cable de carga rápida con adaptador USB-C a USB-A 3.1 Gen 2, alta velocidad de 10 Gbps

Amazon Basics Cable de carga rápida con adaptador USB-C a USB-A 3.1 Gen 2, alta velocidad de 10 Gbps

5,77€

Comprar en Amazon

Como Asociado de Amazon, gano por compras calificadas. Este enlace es un enlace de afiliado, lo que significa que puedo ganar una comisión si realizas una compra a través de estos enlaces, sin costo adicional para ti.

El repositorio del port GNOME está en github.com/nedrichards/whatcable-linux. El port para KDE Plasma 6 en github.com/Zetaphor/whatcable-linux. Y la app original para macOS en github.com/darrylmorley/whatcable.

Artículos relacionados:

  • DSC_0688_thumb.jpg
    Opinión D-Link Hi-Speed USB 2.0 4-Port Hub
  • orange-pi-pc2-header
    Rivales Raspberry Pi: Orange Pi PC 2
  • odroid u3 sin disipador nacked
    ODROID-U3 vs ODROID-U2
  • cozyswan_mk809_ii
    Opinión Android mini PC COZYSWAN MK809 II TV stick

Publicado en: Proyectos Etiquetado como: whatcable

Barra lateral principal

Categorías

  • Cajas (9)
  • comandos (21)
  • Compras (116)
  • dudas (41)
  • Empezando (55)
  • Hardware (106)
  • Instalacion (64)
  • Media Center (56)
  • Negocios (5)
  • Proyectos (44)
  • Rivales (113)
  • Sistemas Operativos (68)
  • sorteo (2)
Raspberry Pi 5 - 4GB RAM
Raspberry Pi 5 - 4GB RAM
Ver precio en Amazon →
Raspberry Pi Zero 2W
Raspberry Pi Zero 2W
Ver precio en Amazon →

Por si te lo perdiste

Radxa Cubie A7S

Radxa Cubie A7S: rival compacta de Raspberry Pi

beagleplay

BeaglePlay: rival industrial de la Raspberry Pi con GPU PowerVR

gemma-4-12b-raspberry pi 5

Gemma 4 12B en Raspberry Pi 5: probamos el LLM multimodal en local

Raspberry Pi 5 - 8GB RAM
Raspberry Pi 5 - 8GB RAM
Ver precio en Amazon →

Visita la tienda Raspberry Pi en Amazon - enlace afiliado
© 2013–2026

Cookie y RGPD | Aviso Legal
Este sitio web usa cookies para mejorar su experiencia como usuario ► Aceptar Rechazar ◘ Si necesita Política de cookies
Política de Cookies

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR