# Thunderbolt support [Working]

## Faraclas

Hey guys, now that Thunderbolt support is in the kernel, I was just wondering how much is working and what is not.  I know that hotplugging is not supported, but is everything else?

I'm getting ready to get a new computer and this time I would like to run Gentoo as the primary OS with Windows running in a VM (for the few work related windows apps).

Currently I have a macbook with a thunderbolt monitor (Gigabit ethernet into the monitor --> computer, sound on the monitor, USB hub on the monitor) and I would like to continue using the monitor (cause it was $$$ and works great).

The options are between a new MacBook Pro and one of those new Dell m3800 workstations.  It seems that the hardware (in general) would be easier to support on the Dell [ships with Ubuntu as an option].  However, what about the thunderbolt support?  Does the linux kernel treat Apple Thunderbolt and non-Apple thunderbolt differently?  Which works better?

Thanks!Last edited by Faraclas on Sat Mar 21, 2015 7:10 am; edited 3 times in total

----------

## asturm

 *Faraclas wrote:*   

> Does the linux kernel treat Apple Thunderbolt and non-Apple thunderbolt differently?  Which works better?

 

Last time I read about it, Apple Thunderbolt would not work on Linux (except for the Displayport part) because contrary to specs, they have major parts of it handled by the OS instead of EFI.

That might have changed though... http://www.phoronix.com/scan.php?page=news_item&px=MTcwMDU

OK, Apple Thunderbolt support should work (to some extent) since 3.17

----------

## Faraclas

Thanks for the link. That information is a little outdated, but seems to confirm that thunderbolt is handles differently on Macbooks. Is there any confirmation that the thunderbolt 2 on the Dell m3800 will be fully functional?

The Dell is released with an Ubuntu that lacks the thunderbolt support in the kernel, so the Dell people don't know (no surprise here). I'm thinking (read: hoping) the answer is yes but want some confirmation before I she'll out the $$.

I also assume that I can get the Nvidia drivers working for the m3800 dual Intel and Nvidia quadro combination.

Thanks again.

----------

## Roman_Gruber

hmm.

you need to know the used chipset there. it does not matter of the brand. and even when you know the brand they could have several different mainboards as some dell had in the past for example.

----------

## Faraclas

the dell m3800 has a Mobile Intel HM87 Express for the Thunderbolt2 support.

----------

## Faraclas

Ok, so I went ahead and pulled the trigger on the m3800. It should arrive in a couple of weeks and then will be converted to a Gentoo system.  I'm not sure if there is anything I need to configure in the kernel to support the thunderbolt.  Is all of the thunderbolt support (for Intel chipset) on the motherboard hardware? (i.e. I don't need to enable thunderbolt support like on the Macbooks?)  Is there anything else I need to configure in ACPI settings, or other to get this working?  

I'm super nervous to be taking the plunge on my main production system, but super excited too! Thanks for the help y'all.

----------

## s0be

I've been following the linux ACPI and linux PCI mailing lists for a few years and read a lot of the thunderbolt discussions.  The biggest topic of contention as far as support has been the fact that, on Macs, the EFI/BIOS stuff doesn't correctly setup the thunderbolt hardware in cases where it doesn't detect Darwin.  In the non-darwin OS case, device hotplug/surprise removal caused all sorts of problems.  Devices that were plugged in on startup seemed to work fine (as expected, as thunderbolt is really just PCI-E on a wire).  

Based on what I've read, thunderbolt should 'just work' in the ways Express Card 'just works', aka, it might or might not, depending on how the system is wired up and what the bios/efi layer does during hotplug and removal.  Fortunately (like expresscard), you should be able to make it work with a combination of module parameters and blacklisting if it doesn't work out of the box.  Will you have any thunderbolt devices when you receive the laptop?

----------

## Faraclas

Ok, now I am really nervous. I have a thunderbolt monitor which I will be using as a) the main display and b) gigabit ethernet and USB hub.  I also have a stand-alone thunderbolt ether net adapter (apple).

I have a MacBook Air also, which I could try and do the thunderbolt ad hoc networking as well.

Dell claims that (in windows) the thunderbolt port is confirmed to work with the thunderbolt monitor. If thunderbolt is handles by the bios, it should work in Linux as well. Dell can't yet comment on the Linux support as they are shipping it with the current Ubuntu which does not yet have thunderbolt support in the kernel.

Dell also told me I would not be able to pass the ethernet in through the thunderbolt port. I think (hope?) they are wrong. In my understanding (which is not the best) if thunderbolt is working, then it is working and everything will work.  We will find out.

----------

## s0be

 *Faraclas wrote:*   

> Ok, now I am really nervous. I have a thunderbolt monitor which I will be using as a) the main display and b) gigabit ethernet and USB hub.  I also have a stand-alone thunderbolt ether net adapter (apple).
> 
> I have a MacBook Air also, which I could try and do the thunderbolt ad hoc networking as well.
> 
> Dell claims that (in windows) the thunderbolt port is confirmed to work with the thunderbolt monitor. If thunderbolt is handles by the bios, it should work in Linux as well. Dell can't yet comment on the Linux support as they are shipping it with the current Ubuntu which does not yet have thunderbolt support in the kernel.
> ...

 

Don't be nervous, if you have it plugged in at bootup, it's almost guaranteed to just work(thunderbolt is enumerated during bootup, just like the devices are built into the system).  If you have any problems, there are people actively working on the thunderbolt support, and if you provide details on the development mailing lists, it's almost guaranteed that they can work out the problems.  The only areas that there might be issues is hotplugging and unplugging.  If this is a relatively new system (as far as, it's 'base' design), there may not be enough information available to the people working on thunderbolt to have patched over the system quirks.  Usually a dmidecode from the system is enough for them to make a patch or two for you to try, and within a day or two, it will likely all work.

----------

## Faraclas

Hey s0be, thanks for the encouragement.  I guess I need help getting pointed in the right direction to engage the right people for this type of support.  So far, posting on these forums is all I know how to do  :Wink: 

----------

## s0be

Did you receive the laptop?  Does hotplug/unplug work?  Determining there IS a problem is the first step  :Wink: 

----------

## Faraclas

Not yet. Its being built and scheduled to arrive March 13th.  When I get it I will do the following:

a) Write down everything I can about the system (kernel modules, discoverable hardware, etc) from the Ubuntu system it is shipping with.  Thunderbolt is not supported at all for this version of Ubuntu.

b) Make a backup clone of the Ubuntu drive using Clonezilla

c) Wipe the drive and install Windows 8.1 (I will need it later to run in a VMWare VM and possible dual boot).  I should be able to test the thunderbolt support of the hardware here.  Right now I am working on a MacBook Air booted into Windows 8.1 and the Thunderbolt monitor / thunderbolt ethernet / thunberbolt USB hub works perfectly. [Note hotplug is not working in Windows though]  This is Apple drivers on Apple hardware, but I am expecting Windows on this new laptop to work just as well.

d) Install gentoo [blah, blah long list to get base system up.]

   * I run Xfce on my existing Gentoo system, and it makes that old set of hardware work AWESOME

   * For the new system, I think I will do gnome [then try plasma 5 when it releases eventually]

   * I've never done systemd yet, so that will be fun.

e) Make sure all of the hardware is working in Gentoo

   * use the list of kernel modules and supporting information from the Ubuntu system to build the right kernel stuffs

   * Get nvidia drivers working (Quadro / Intel HD combo)

   * Thunderbolt support

So I have got my work cut out for me.  I have two weeks to get it all running acceptably before I would need to send it back to Dell for any reason.

I will post back with more info when I have it and will keep detailed notes on what makes what work here so an m3800 wiki page can be made from it.

----------

## Faraclas

Update:

I got the laptop and everything (minus the thunderbolt) runs really nicely in Ubuntu.  The nvidia drivers took a few hoops to jump through [basically pointing Ubuntu to a new repo, updating and then choosing the nvidia binary driver again.]

Note that there is no option in the bios to disable or specify or do anything relative to the dual GPUs [nvidia quadro and intel onboard].  I am not using the nvidia-prime option in Ubuntu, rather only the nvidia binary.  So I am hoping that for the gentoo install it will be that simple...

Next up is the wipe of the hard drive and the Windows EFI installation.

----------

## Faraclas

I will address the thunderbolt issues here once they arise.  To keep things clean, I started another thread for the general bringup of this laptop here: https://forums.gentoo.org/viewtopic-p-7712840.html#7712840

----------

## Faraclas

So windows is installed now and Thunderbolt seems to be working with the hardware.  I tested first with the Apple Thunderbolt to Gigabit Ethernet dongle: it works, hotplugs, and gives gigabit speeds. Next I tested the Apple Thunderbolt monitor.  The display works and the peripherals attached to it (USB Mouse and Gigabit Ethernet via the monitor hub) also work.  It hotplugged as well.

I will start the Gentoo installation shortly.

----------

## Faraclas

A lot of it is now working running Gentoo w/ Gnome 3.12

Thunderbolt Ethernet Adapter: works

Thunderbolt monitor:

* Display: works

* Gigabit Ethernet: works

* Sound: works

* USB HUB: works

* Webcam: not working

   * Shows up in lsusb as 

```

Bus 005 Device 004: ID 05ac:1112 Apple, Inc. FaceTime HD Camera (Display)

```

but crashes Cheese when selected.

Hotplugging:

* The monitor hotplugs

* the rest of the connected devices do not hotplug.

Full lsusb

lsusb

```
Bus 004 Device 002: ID 8087:8000 Intel Corp. 

Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 005 Device 005: ID 05ac:9227 Apple, Inc. Thunderbolt Display

Bus 005 Device 004: ID 05ac:1112 Apple, Inc. FaceTime HD Camera (Display)

Bus 005 Device 003: ID 05ac:1107 Apple, Inc. Thunderbolt Display Audio

Bus 005 Device 006: ID 04d9:fa50 Holtek Semiconductor, Inc. 

Bus 005 Device 002: ID 05ac:9127 Apple, Inc. Hub in Thunderbolt Display

Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 003 Device 002: ID 8087:8008 Intel Corp. 

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 002: ID 0bda:8153 Realtek Semiconductor Corp. 

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 001 Device 003: ID 0a5c:216f Broadcom Corp. 

Bus 001 Device 002: ID 06cb:2ac3 Synaptics, Inc. 

Bus 001 Device 004: ID 0bda:573c Realtek Semiconductor Corp. 

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
```

full lspci

```
lspci

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller (rev 06)

00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06)

00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)

00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)

00:04.0 Signal processing controller: Intel Corporation Device 0c03 (rev 06)

00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)

00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)

00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)

00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)

00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)

00:1c.2 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5)

00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 (rev d5)

00:1c.4 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #5 (rev d5)

00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)

00:1f.0 ISA bridge: Intel Corporation HM87 Express LPC Controller (rev 05)

00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)

00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)

00:1f.6 Signal processing controller: Intel Corporation 8 Series Chipset Family Thermal Management Controller (rev 05)

02:00.0 3D controller: NVIDIA Corporation GK107GLM [Quadro K1100M] (rev a1)

06:00.0 Network controller: Broadcom Corporation BCM4352 802.11ac Wireless Network Adapter (rev 03)

07:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5249 PCI Express Card Reader (rev 01)

08:00.0 PCI bridge: Intel Corporation Device 157e

09:00.0 PCI bridge: Intel Corporation Device 157e

09:01.0 PCI bridge: Intel Corporation Device 157e

0a:00.0 System peripheral: Intel Corporation Device 157d

0b:00.0 PCI bridge: Intel Corporation Device 1513

0c:00.0 PCI bridge: Intel Corporation Device 1513

0c:01.0 PCI bridge: Intel Corporation Device 1513

0c:02.0 PCI bridge: Intel Corporation Device 1513

0c:03.0 PCI bridge: Intel Corporation Device 1513

0c:04.0 PCI bridge: Intel Corporation Device 1513

0c:05.0 PCI bridge: Intel Corporation Device 1513

0d:00.0 PCI bridge: Pericom Semiconductor Device 400c (rev 02)

0e:03.0 PCI bridge: Pericom Semiconductor Device 400c (rev 02)

0f:00.0 USB controller: Pericom Semiconductor PI7C9X442SL USB OHCI Controller (rev 01)

0f:00.1 USB controller: Pericom Semiconductor PI7C9X442SL USB OHCI Controller (rev 01)

0f:00.2 USB controller: Pericom Semiconductor PI7C9X442SL USB EHCI Controller (rev 01)

10:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM57761 Gigabit Ethernet PCIe (rev 10)

11:00.0 FireWire (IEEE 1394): LSI Corporation FW643 [TrueFire] PCIe 1394b Controller (rev 08)
```

----------

## ferreirafm

 *Faraclas wrote:*   

> A lot of it is now working running Gentoo w/ Gnome 3.12

 

Hi Faraclas, 

A laboratory's friend bought a Apple Thunderbolt display and didn't like it. As my mother board (Asus X99-Deluxe) has a thunderbolt port, he gave me all the pack for free, including mouse and keyboard. Am I luck or will it be a nightmare to make all this things work?  

Could you please possibly provide additional information like kernel version and special options, boot mode (systemd/not?), shortcuts and possible pitfalls?

Is there any chances that I make the mouse and keyboard work too?

Any helpful information will be much welcomed.

Best,

----------

