/ zhongfu.li

Fixing Ethernet on the HP Thunderbolt 3 Dock

I got a HP Thunderbolt 3 Dock off Taobao the other day for around S$50. It’s a nice little dock, but with one little problem – Ethernet wouldn’t come up at all in Linux or Windows.

The Ethernet NIC in the dock was recognized as a “Broadcom NetXtreme BCM57786 Gigabit Ethernet PCIe” (it’s actually a BCM57762 though1), which uses the tg3 driver. I tried feeding the PCI ID of the BCM57762 in the dock (14e4:16a3) to the module, but that just wreaked havoc upon my iGPU and WiFi card for reasons unknown.

Windows didn’t give any promising results either – updating the dock firmware and installing the Broadcom drivers provided by HP didn’t help, or I wouldn’t be here writing this now.

I went back into Linux and recompiled tg3.ko, replacing the BCM57762 PCI ID defined in there with the PCI ID of the BCM57762 in my dock.2 It worked fine, but I would have to do that with every computer I wanted to use the dock with. Not a very optimal solution, really.

Luckily, it seemed like the PCI ID of the BCM57762 was stored in the NIC EEPROM, and ethtool lets you modify it:

With this, your bargain bin HP Thunderbolt 3 Dock should now have functional Ethernet without having to recompile kernel modules.

  1. lspci -vvv will tell you that the part number is BCM957762. The lspci dump in this bug report also shows that the proper PCI ID should be 14e4:1682 ↩︎

  2. This guy here also had a similar idea; he elaborates more on this issue ↩︎