Broadcom BCM5764M Gigabit Ethernet won't connect at Gigabit speed

I've got an HT Z600 with the intergrated ethernet 5764 PCIe LOM controller.

When I check advertised speed with sudo ethtool enp1s0 I can see advertised link modes of 10,100,1000baseT, half and full duplex.

When I plug in the cable, 'wired settings' shows an attempt to connect at 1000 MB/s, then shows 'cable disconnected' then another attempt to connect.

When using a different (older) router the same thing would happen, but after a number of attempts it would connect at 100 MB/s. With two newer switches it just attempts to connect at 1000 and never succeeds.

I can make it connect by only advertising 10,100 speeds using sudo ethtool -s enp1s0 advertise 0x004 and it will immediately connect at 100 MB/s.

When I search for similar problems, almost every time it was caused by a faulty cable. I've bought a switch with speed indicators and tested every cable is cat5e and shows as gigabit speed when both ends are plugged into that switch. I've also tested that the cable gives gigabit speed and the network behaves normally when plugged between two different switches. I've checked every port on both switches gives gigabit speeds.

Here's my attempt to gather info:

Ubuntu 18.04.2 LTS
> lspci | awk '/[Nn]et/ {print $1}' | xargs -i% lspci -ks %
01:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme BCM5764M Gigabit Ethernet PCIe (rev 10) Subsystem: Hewlett-Packard Company NetXtreme BCM5764M Gigabit Ethernet PCIe Kernel driver in use: tg3 Kernel modules: tg3
> lspci -nn -d 14e4:
01:00.0 Ethernet controller [0200]: Broadcom Inc. and subsidiaries NetXtreme BCM5764M Gigabit Ethernet PCIe [14e4:1684] (rev 10)
> sudo ethtool -i enp1s0
driver: tg3
version: 3.137
firmware-version: 5764m-v3.35
expansion-rom-version:
bus-info: 0000:01:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
> sudo ethtool enp1s0 (when I set advertised mode to 10/100)
Settings for enp1s0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 100baseT/Half Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Link partner advertised pause frame use: Symmetric Link partner advertised auto-negotiation: Yes Link partner advertised FEC modes: Not reported Speed: 100Mb/s Duplex: Half Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on MDI-X: off Supports Wake-on: g Wake-on: g Current message level: 0x000000ff (255) drv probe link timer ifdown ifup rx_err tx_err Link detected: yes
> sudo ethtool enp1s0 (when I set speed to 1000 with sudo ethtool -s enp1s0 speed 1000 duplex full)
Settings for enp1s0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 1000baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Speed: Unknown! Duplex: Unknown! (255) Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on MDI-X: Unknown Supports Wake-on: g Wake-on: g Current message level: 0x000000ff (255) drv probe link timer ifdown ifup rx_err tx_err Link detected: no
(offload features)
> sudo ethtool -k enp1s0
...
highdma: on
...
> sudo cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
> dmesg
[159771.985545] tg3 0000:01:00.0 enp1s0: Link is up at 1000 Mbps, full duplex
[159771.985554] tg3 0000:01:00.0 enp1s0: Flow control is on for TX and on for RX
[159773.152452] tg3 0000:01:00.0 enp1s0: Link is down
[159779.157332] tg3 0000:01:00.0 enp1s0: Link is up at 1000 Mbps, full duplex
[159779.157334] tg3 0000:01:00.0 enp1s0: Flow control is on for TX and on for RX
[159780.324591] tg3 0000:01:00.0 enp1s0: Link is down
[159783.204587] tg3 0000:01:00.0 enp1s0: Link is up at 1000 Mbps, full duplex
[159783.204599] tg3 0000:01:00.0 enp1s0: Flow control is on for TX and on for RX
[159784.367819] tg3 0000:01:00.0 enp1s0: Link is down
[159787.230882] tg3 0000:01:00.0 enp1s0: Link is up at 1000 Mbps, full duplex
[159787.230895] tg3 0000:01:00.0 enp1s0: Flow control is on for TX and on for RX
[159788.394290] tg3 0000:01:00.0 enp1s0: Link is down
...

And here's what I've attempted:

updated /etc/default/grub to add GRUP_CMDLINE_LINUX_DEFAULT="iommu=soft" then sudo update-grub and reboot.
No difference that I can see.
> sudo ethtool -s enp1s0 speed 100 duplex full
... works and immediately connects at 100.
> sudo ethtool -s enp1s0 speed 1000 duplex full
... switches between "connecting" and "cable disconnected", shows the "link is up/link is down" messages from the dmesg output above.
> sudo ethtool -K enp1s0 highdma (on/off)
No difference that I can see.

Any help is GREATLY appreciated!

Edit: I can confirm that it's a driver or hardware issue because when at 1000:

> ip link | grep enp
2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000

and when at 100

> ip link | grep enp
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000

(And this comment saying that NO-CARRIER is either driver or hardware: ) ... all of which confirms what Fabby is saying. I guess I'm out of luck.

Edit: This question appears to be the same issue, and states that the card was working with Kernel 4.14 but stopped working with 4.15. uname -r tells me I'm running 4.15.0-55-generic - so this seems to fit. I don't know enough about kernels to update/maintain/verify if an update will help. But that'd be a different question, thanks for the help with this one!

3

1 Answer

All of the answers you're finding say that it's the cable because that's what it is in 99% of all cases.

The problem really is at the hardware level though, and as your cables and switches seem to check out OK that leaves you with:

  • The firmware (I checked: there is built-in support for this card)
  • The actual connector inside the PC

So you've got a hardware problem or you have a bug in the firmware and both of these are off-topic here.

However just fix the speed at 100M for now and every x kernel updates you receive, try 1G again or just have the connector replaced...

3

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like