Saltar al contenido

Conexión en caliente Thunderbolt en Ubuntu Linux

Solución:

Thunderbolt es básicamente un bus PCIe expuesto en forma de una interfaz conectable y fácil de usar. Como puede imaginar, la conexión en caliente de una tarjeta PCIe en cualquier máquina no es algo que pueda esperar hacer de manera constante sin problemas, a menos que los fabricantes del host y los dispositivos extraíbles, así como los desarrolladores de la placa base, hayan tenido sumo cuidado. firmware, firmware de dispositivo, kernel del sistema operativo y controladores de dispositivo.

Todo lo que quiere decir, hay un enorme superficie de posibles errores y problemas que evitarían que este hot-plug funcione como quisiéramos. Mi recomendación sería usar un kernel de depuración e intentar ingresar al depurador cuando se congele; si puede, entonces probablemente no sea un problema de hardware o firmware. Las instrucciones sobre cómo hacerlo probablemente estén un poco más allá del alcance de la pregunta o de mi respuesta aquí, pero hay recursos disponibles en línea que facilitan un poco esto.

Ahora, si quieres un medio por el cual puedas a mano expulsar el dispositivo antes de tirar de él, puede intentar lo siguiente:

Después de identificar la dirección del dispositivo en el sistema en la salida de lspci comando, donde DDDD: BB: DD.F es el Dominio: Bus: Dispositivo Función del periférico Thunderbolt en cuestión:

05:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:03.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:04.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:05.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:06.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
07:00.0 System peripheral: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
08:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Controller [Cactus Ridge]
09:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Controller [Cactus Ridge]

puede ejecutar lo siguiente:

echo "1" | sudo tee /sys/bus/pci/devices/DDDD:BB:DD.F/remove > /dev/null

Cuales deberían active las rutinas de descarga en el kernel y el controlador (y posiblemente incluso en el firmware del dispositivo), después de lo cual es posible que pueda expulsarlo de manera más segura. (A grep en un subshell obviamente puede tomar el lugar de DDDD: BB: DD.F para facilitar su uso en el futuro).

Al volver a conectar el dispositivo, es posible que sea necesario volver a escanear manualmente:

echo "1" | sudo tee /sys/bus/pci/rescan > /dev/null

(O puede que no sea necesario).

No he usado Linux en un tiempo ya que soy casi exclusivamente FreeBSD y OS X en estos días, así que por favor perdóname si estoy fuera de lugar en algo aquí.

parece que si lspci -vt obtiene un diagrama de árbol que hace que sea mucho más fácil detectar el controlador Thunderbolt.

aquí está mi salida

[email protected]:~$ lspci -vt

-[0000:00]-+-00.0  Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller
       +-01.0-[02-03]----00.0  NVIDIA Corporation GK107GLM [Quadro K1100M]
       +-02.0  Intel Corporation 4th Gen Core Processor Integrated Graphics Controller
       +-03.0  Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller
       +-04.0  Intel Corporation Device 0c03
       +-14.0  Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI
       +-16.0  Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1
       +-1a.0  Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2
       +-1b.0  Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller
       +-1c.0-[04]--
       +-1c.2-[06]----00.0  Intel Corporation Wireless 7260
       +-1c.3-[07]----00.0  Realtek Semiconductor Co., Ltd. RTS5249 PCI Express Card Reader
       +-1c.4-[08-40]----00.0-[09-40]--+-00.0-[0a]----00.0  Intel Corporation Device 157d
       |                               -01.0-[0b-40]----00.0-[0c-40]--+-00.0-[0d]----00.0  Fresco Logic FL1100 USB 3.0 Host Controller
       |                                                               +-01.0-[0e]----00.0  Intel Corporation I210 Gigabit Network Connection
       |                                                               +-02.0-[0f]----00.0  Fresco Logic FL1100 USB 3.0 Host Controller
       |                                                               +-03.0-[10]----00.0  LSI Corporation FW643 [TrueFire] PCIe 1394b Controller
       |                                                               +-04.0-[11]--
       |                                                               -05.0-[12-40]--
       +-1d.0  Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1
       +-1f.0  Intel Corporation HM87 Express LPC Controller
       +-1f.2  Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
       +-1f.3  Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller
       -1f.6  Intel Corporation 8 Series Chipset Family Thermal Management Controller

esto me permitió encontrar 1c.4 que parece ser mi controlador Thunderbolt.

Luego utilicé la sugerencia de mahmoud para presionar el nodo de eliminación, esto pareció desconectar mi base Thunderbolt limpiamente, sin embargo, cuando lo reinserté bloqueado con fuerza. Esto sugeriría que otros conductores no están tan contentos con el hotplugging o necesitaría reiniciar el dispositivo Thunderbolt.

De cualquier manera, era peor que simplemente sacarlo.

Supongo que por ahora solo necesito asegurarme de que todo esté guardado antes de desacoplarlo. Agradecería más sugerencias si las hubiera.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *