Acabamos de lanzar. El sitio y el servicio aún se están puliendo: le pedimos disculpas de antemano por posibles imprecisiones o fallos. ¿Ha visto un error o algo no funciona como esperaba? Escríbanos y lo corregiremos enseguida.

← Todos los proyectos
ES
Más allá de TAKT

qemu-thunderbolt

Una rama de QEMU que añade una capa de conexión en caliente PCIe al estilo Thunderbolt. Los dispositivos detrás de ella siguen siendo dispositivos PCI normales de QEMU; la capa controla si el invitado los ve conectados y envía las notificaciones de conexión en caliente.

  • QEMU
  • Thunderbolt
  • PCIe
  • macOS
Estado
Experimental: cinco commits sobre el master de QEMU de julio de 2026, en la rama tb-bus. Validado con invitados macOS: detección y retirada de la pantalla, conexión y desconexión en caliente de NVMe, montaje, escritura, expulsión y reconexión de almacenamiento USB con los datos intactos.
Licencia
GPL-2.0-or-later, como QEMU; thunderbolt-vga.c conserva la licencia MIT del código stdvga del que deriva.
Plataformas
QEMU qemu-system-x86_64 con la máquina q35; invitados macOS.

Qué resuelve

Algunos invitados no pueden usar la conexión en caliente PCIe directa para un dispositivo. macOS es el principal objetivo de validación: ve el dispositivo a través de una capa Thunderbolt visible para el invitado, aun cuando la conexión en caliente PCIe directa del mismo endpoint no es utilizable. Así se pueden añadir y quitar dispositivos reales y virtuales en un invitado en ejecución.

Funciones principales

  • thunderbolt-root-port: un puerto raíz PCIe con su propio thunderbolt-bus; su propiedad connected desconecta y vuelve a conectar el puerto completo.
  • thunderbolt-pcie-pci-bridge: un puente PCIe-PCI para endpoints PCI tunelizados, con propiedades ACPI relacionadas con Thunderbolt.
  • thunderbolt-vga: una pantalla compatible con stdvga que admite conexión en caliente; el dispositivo VGA normal no cambia y sigue sin admitirla.
  • Ejemplos para una pantalla, almacenamiento USB detrás de un controlador xHCI y una unidad NVMe, todo desde el monitor de QEMU.
  • Un qtest para la conexión en caliente de pantalla y documentación en docs/specs.

Cómo funciona

El invitado arranca en una máquina q35 con su pantalla de arranque normal y un thunderbolt-root-port vacío. En el monitor de QEMU, device_add coloca un endpoint en el bus del puerto y device_del lo retira; qom-set … connected false y true desconectan y vuelven a conectar el puerto completo. El puerto raíz aporta la descripción ACPI y la señalización de conexión en caliente PCIe que ve el invitado; los modelos de los dispositivos endpoint no cambian.

(qemu) device_add thunderbolt-vga,id=tbvga0,bus=tbrp0,addr=0x00
(qemu) device_del tbvga0
(qemu) qom-set /machine/peripheral/tbrp0 connected false

Requisitos

  • QEMU compilado desde la rama tb-bus del repositorio.
  • El tipo de máquina q35; los ejemplos usan qemu-system-x86_64.
  • La pantalla de arranque sigue siendo un VGA normal; una pantalla Thunderbolt se añade después del arranque.

Esta página resume el README y la documentación del repositorio a octubre de 2026. La fuente de referencia es el propio repositorio.