Thunderbolt-Hotplugging in Ubuntu Linux

9856
Amias

Ich habe ein Dell Precision M3800 und ein OWC Thunderbolt 2 Dock. Beide arbeiten wunderbar zusammen und alles scheint einfach zu funktionieren. Ich habe FireWire noch nicht ausprobiert, aber Ethernet, USB3, DisplayPort und Sound funktionieren hervorragend.

Mein System ist nicht völlig zufrieden damit, das Thunderbolt-Kabel herauszuziehen, und hängt gelegentlich, wenn ich das Dock entfernt habe. Zu anderen Zeiten war es gut. Ich würde gerne einen sichereren Weg finden und hoffte, dass es möglicherweise einen Mechanismus gibt, mit dem ich meinem System sagen kann, dass ich zuerst die Schnittstellen trennen und die Schnittstellen vorsichtig abnehmen würde.

Ich habe versucht, nach Paketen und Informationen zum Thunderbolt-Support in Linux zu suchen. Ich habe nur den Blog von Greg KH gefunden, der besagt, dass dies funktionieren wird, aber keine Tools erwähnt.

Ich habe in den Ubuntu-Repos für meine 15.10-Installation keine Thunderbolt-bezogenen Pakete gefunden.

Gibt es Werkzeuge oder / proc- oder / sys-Knoten, die ich dafür verwenden könnte?

4
Firewire funktioniert einwandfrei und kann Soundkarten mit sehr geringer Latenz ausführen Amias vor 5 Jahren 0

3 Antworten auf die Frage

3
Mahmoud Al-Qudsi

Thunderbolt ist im Grunde ein PCIe-Bus, der in Form einer benutzerfreundlichen, steckbaren Schnittstelle verfügbar ist. Wie Sie sich vorstellen können, ist das Hot-Plug-In einer PCIe-Karte in einem beliebigen Rechner nicht unbedingt ein Problem ohne Konsequenzen - es sei denn, die Hersteller der Host- und Wechselmediengeräte sowie die Entwickler des Mainboards haben äußerste Sorgfalt angewandt Firmware, Gerätefirmware, Betriebssystemkernel und Gerätetreiber.

Das heißt, es gibt eine riesige Oberfläche von potenziellen Fehlern und Problemen, die verhindern würden, dass dieser Hot-Plug so funktioniert, wie wir es uns gewünscht hätten. Meine Empfehlung wäre, einen Debug-Kernel zu verwenden und zu versuchen, in den Debugger einzudringen, wenn er einfriert. Wenn Sie können, ist dies wahrscheinlich kein Hardware- oder Firmware-Problem. Anweisungen dazu liegen wahrscheinlich etwas außerhalb des Rahmens der Frage oder meiner Antwort hier, aber online stehen Ressourcen zur Verfügung, die dies etwas erleichtern.

Wenn Sie nun ein Mittel wünschen, mit dem Sie das Gerät vor dem Ziehen manuell auswerfen können, können Sie Folgendes versuchen:

Nach der Identifizierung der lspciGeräteadresse im System in der Befehlsausgabe, wobei DDDD: BB: DD.F die Domäne: Bus: Device.Funktion des betreffenden Thunderbolt-Peripheriegeräts ist:

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] 

Sie können Folgendes ausführen:

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

Welches sollte die Entladeroutinen im Kernel und den Treiber (und möglicherweise sogar in der Gerätefirmware) auslösen, wonach Sie es möglicherweise sicherer auswerfen können. (A grepin einer Subshell kann natürlich die Stelle von DDDD: BB: DD.F für eine zukünftige Benutzerfreundlichkeit annehmen).

Beim erneuten Einstecken des Geräts kann es erforderlich sein, den Scan erneut manuell durchzuführen:

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

(Oder es wird nicht benötigt.)

Ich habe Linux seit einiger Zeit nicht mehr verwendet, da ich in diesen Tagen fast ausschließlich FreeBSD und OS X bin. Vergib mir bitte, wenn ich hier irgendetwas falsch finde.

Danke für die Zeiger, es scheint, dass mein System seine Donnerblitzteile anders zeigt, nicht sicher, was der Donnerblitz ist? amias @ rom: ~ $ lspci 00: 01.0 PCI-Brücke: Intel Corporation Xeon E3-1200 v3 / 4. Gen-Kernprozessor PCI Express x16-Controller (Version 06) 00: 1c.0 PCI-Brücke: Intel Corporation 8er / C220-Chipset 08 : 00.0 PCI-Brücke: Intel Corporation-Gerät 157e 0a: 00.0 Systemperipherie: Intel Corporation-Gerät 157d 0b: 00.0 PCI-Brücke: Intel Corporation-Gerät 156d 0c: 00.0 PCI-Brücke: Intel Corporation-Gerät 156d Amias vor 8 Jahren 0
Die Deviceid-Datenbank des Anbieters finden Sie hier: https://pci-ids.ucw.cz/read/PC/8086 - Sie haben viele übereinstimmende Thunderbolt-Ergebnisse. Mahmoud Al-Qudsi vor 8 Jahren 0
Mit dem Linux-Kernel 4.13 hat sich die Situation um Thunderbolt (3) etwas verbessert. Zum Beispiel ist das Lenovo Thunderbolt 3 Dock nun nach dem Suspend / Resume des aktuellen Debian 10 Buster (Testing) wieder online, im Gegensatz zum Verhalten von Debian 9 Stretch mit Kernel 4.9. Bei der Deinstallation / Fehlerbehebung sind noch Probleme aufgetreten AdamKalisz vor 6 Jahren 1
Zweitens: Der Mainline 4.13-Kernel bietet eine wirklich starke Thunderbolt-Unterstützung für Displays, die mit anderen Peripheriegeräten und verdrahteten Netzwerken noch kein großes Glück haben. Brandon Bertelsen vor 6 Jahren 0
2
Amias

es scheint, dass wenn Sie lspci -vt erhalten, ein Baumdiagramm, das es viel einfacher macht, den Thunderbolt-Controller zu erkennen.

Hier ist meine Ausgabe

amias@rome:~$ 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 

Dies ermöglichte es mir, 1c.4 zu finden, der anscheinend mein Thunderbolt-Controller ist.

Ich habe dann den Vorschlag von mahmoud verwendet, um den Entfernungsknoten zu treffen. Dies schien mein Donnerschlag-Dock sauber zu trennen, aber als ich es wieder einfügte, war es fest verriegelt. Dies deutet darauf hin, dass andere Treiber mit dem Hotplugging nicht so zufrieden sind, oder ich müsste das Blitzgerät zurücksetzen.

So oder so war es schlimmer, als es nur herauszuziehen.

Ich denke, jetzt muss ich nur sicherstellen, dass vor dem Abdocken alles gerettet ist. Ich würde mich über weitere Vorschläge freuen.

1
tolvanea

Sie können versuchen, Ihr System in den Arbeitsspeicher zu versetzen und dann das Kabel herauszuziehen. Dies scheint die einzige Möglichkeit zu sein, mein Lenovo Thunderbolt 3-Dock ohne Neustart vom Computer zu trennen.