Ethernet Speed Issue on Ubuntu 22.04 with Realtek Killer E2600 NIC

sedation

New Member
Joined
Dec 18, 2024
Messages
10
Reaction score
2
Credits
127
Hi everyone,

I’ve been struggling with a networking issue on my laptop running Kubuntu 22.04 and would greatly appreciate any insights.

The Problem

I’ve noticed that my Ethernet connection speed is capped at 100 Mbps, even though I have a gigabit internet connection. When I manually set the Ethernet speed to 1000 Mbps (full duplex) using ethtool, the connection drops, and I lose internet access. The only way to restore connectivity is by rebooting the system. However, after rebooting, the speed automatically reverts to 100 Mbps by default.

Interestingly, I previously had the same issue on Windows. Unfortunately, I don’t remember exactly how I solved it back then, but as a matter of fact, the Ethernet connection worked on Windows with this laptop and this cable at higher speeds.

Observation

Yesterday, I was installing a few games via Steam on Linux, and when most of the games were installing at a fixed speed under 100 Mbps, there was a moment after a reboot when I noticed the speed briefly pop up to 400-600 Mbps. This persisted for some time until the game finished downloading, but after that, it reverted back to the lower speeds.

Setup Details

  • Laptop Acer Nitro 5 AN515-46-RW12
  • Network Interface Card (NIC): Realtek Killer E2600
  • Driver in Use: r8169
  • Firmware Version: rtl8168h-2_0.0.2 02/26/15
  • Operating System: Kubuntu 22.04
  • Kernel Version: 6.8.0-51-generic

Troubleshooting Steps Tried

  1. Verified the driver and kernel compatibility for the Realtek Killer E2600 NIC.
  2. Used the following ethtool command to change the speed: sudo ethtool -s <interface> speed 1000 duplex full autoneg off
  3. Attempted to switch to the r8168 driver, but it didn’t resolve the issue.
  4. Checked for any updated drivers or firmware, but couldn't find a clear solution.
Additional Notes
  • The issue only arises when setting the speed manually. When left at default settings (100 Mbps), the connection is stable.
  • The NIC is reported as supported by the r8169 driver for kernels 5.3 and above, but there may be some issue with its behavior under manual speed settings.
  • This occurs both with and without NetworkManager managing the interface.
  • Has anyone else encountered a similar problem or knows a workaround? Would love to hear any ideas for resolving this or digging deeper into the root cause.

    Thanks in advance for your suggestions!
 
Last edited:


What is the output of...

ethtool (interface name)

Code:
ethtool enp1s0

Also, what is the output of...

Code:
netstat -i
 
What is the output of...

ethtool (interface name)

Code:
ethtool enp1s0

Also, what is the output of...

Code:
netstat -i
Please, see below:
Bash:
$ sudo ethtool enp3s0
Settings for enp3s0:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
                                             1000baseT/Full
        Link partner advertised pause frame use: Symmetric Receive-only
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 100Mb/s
        Duplex: Full
        Auto-negotiation: on
        master-slave cfg: preferred slave
        master-slave status: slave
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: external
        MDI-X: Unknown
        Supports Wake-on: pumbg
        Wake-on: d
        Link detected: yes
Bash:
$ netstat -i
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
enp3s0           1500    38349      0      0 0         30676      0      0      0 BMRU
lo              65536    57675      0      0 0         57675      0      0      0 LRU
virbr0           1500        0      0      0 0             0      0      0      0 BMU
 
I don't see any errors or dropped packets in netstat, so it looks like you have a stable connection.

I see that ethtool says that your device supports 10, 100 and 1000.
I also see that whatever device you are connecting to ( Link partner ) also says they support 10,100 and 1000.

My first thought is that you are using an older cat4 or cat5 cable, not cat 5e or cat6.

Can you give the output of...

Code:
 nmcli con show enp3s0 | egrep "port|speed|duplex|nego|method"
 
Last edited:
I don't see any errors or dropped packets in netstat, so it looks like you have a stable connection.

I see that ethtool says that your device supports 10, 100 and 1000.
I also see that whatever device you are connecting too ( Link partner ) also says they support 10,100 and 1000.

My first thought is that you are using an older cat4 or cat5 cable, not cat 5e or cat6.

Can you give the output of...

Code:
 nmcli con show enp3s0 | egrep "port|speed|duplex|nego|method"
Please, see below.

Bash:
$ nmcli con show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  984af063-9d25-3f00-b1b7-72b8338c76e6  ethernet  enp3s0
lo                  9476a86d-1ec2-4a3d-bb90-3e7b019a0ff4  loopback  lo     
virbr0              6f72afc7-ab93-4c76-827e-e1132711d028  bridge    virbr0

$ nmcli con show "Wired connection 1" | egrep "port|speed|duplex|nego|method"
connection.port-type:                   --
connection.autoconnect-ports:           -1 (default)
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          no
ipv4.method:                            auto
ipv6.method:                            auto
proxy.method:                           none
 
You could try this first.

Code:
nmcli connection modify <connection_name> ethtool.auto-negotiate yes

If that doesn't work, you can try to force it.

Code:
nmcli connection modify <connection_name> ethtool.speed 1000 ethtool.duplex full ethtool.auto-negotiate no

If neither of those work, maybe try a different ( cat6 ) cable.

NOTE: after you change the settings, either reboot, or bounce the interface.
 
You could try this first.

Code:
nmcli connection modify <connection_name> ethtool.auto-negotiate yes

If that doesn't work, you can try to force it.

Code:
nmcli connection modify <connection_name> ethtool.speed 1000 ethtool.duplex full ethtool.auto-negotiate no

If neither of those work, maybe try a different ( cat6 ) cable.

I tried using the nmcli commands you suggested, but I ran into errors. Here's what happened:
Code:
nmcli connection modify "Wired connection 1" ethtool.auto-negotiate yes

Error: invalid property 'auto-negotiate': 'auto-negotiate' not among [feature-esp-hw-offload, feature-esp-tx-csum-hw-offload, feature-fcoe-mtu, feature-gro, feature-gso, feature-highdma, feature-hw-tc-offload, feature-l2-fwd-offload, feature-loopback, feature-lro, feature-macsec-hw-offload, feature-ntuple, feature-rx, feature-rxhash, feature-rxvlan, feature-rx-all, feature-rx-fcs, feature-rx-gro-hw, feature-rx-gro-list, feature-rx-udp-gro-forwarding, feature-rx-udp_tunnel-port-offload, feature-rx-vlan-filter, feature-rx-vlan-stag-filter, feature-rx-vlan-stag-hw-parse, feature-sg, feature-tls-hw-record, feature-tls-hw-rx-offload, feature-tls-hw-tx-offload, feature-tso, feature-tx, feature-txvlan, feature-tx-checksum-fcoe-crc, feature-tx-checksum-ipv4, feature-tx-checksum-ipv6, feature-tx-checksum-ip-generic, feature-tx-checksum-sctp, feature-tx-esp-segmentation, feature-tx-fcoe-segmentation, feature-tx-gre-csum-segmentation, feature-tx-gre-segmentation, feature-tx-gso-list, feature-tx-gso-partial, feature-tx-gso-robust, feature-tx-ipxip4-segmentation, feature-tx-ipxip6-segmentation, feature-tx-nocache-copy, feature-tx-scatter-gather, feature-tx-scatter-gather-fraglist, feature-tx-sctp-segmentation, feature-tx-tcp6-segmentation, feature-tx-tcp-ecn-segmentation, feature-tx-tcp-mangleid-segmentation, feature-tx-tcp-segmentation, feature-tx-tunnel-remcsum-segmentation, feature-tx-udp-segmentation, feature-tx-udp_tnl-csum-segmentation, feature-tx-udp_tnl-segmentation, feature-tx-vlan-stag-hw-insert, coalesce-adaptive-rx, coalesce-adaptive-tx, coalesce-pkt-rate-high, coalesce-pkt-rate-low, coalesce-rx-frames, coalesce-rx-frames-irq, coalesce-rx-frames-high, coalesce-rx-frames-low, coalesce-rx-usecs, coalesce-rx-usecs-irq, coalesce-rx-usecs-high, coalesce-rx-usecs-low, coalesce-sample-interval, coalesce-stats-block-usecs, coalesce-tx-frames, coalesce-tx-frames-irq, coalesce-tx-frames-high, coalesce-tx-frames-low, coalesce-tx-usecs, coalesce-tx-usecs-irq, coalesce-tx-usecs-high, coalesce-tx-usecs-low, pause-autoneg, pause-rx, pause-tx, eee-enabled, ring-rx, ring-rx-jumbo, ring-rx-mini, ring-tx, channels-rx, channels-tx, channels-other, channels-combined].

$ nmcli connection modify "Wired connection 1" ethtool.speed 1000 ethtool.duplex full ethtool.auto-negotiate no

Error: invalid property 'speed': 'speed' not among [feature-esp-hw-offload, feature-esp-tx-csum-hw-offload, feature-fcoe-mtu, feature-gro, feature-gso, feature-highdma, feature-hw-tc-offload, feature-l2-fwd-offload, feature-loopback, feature-lro, feature-macsec-hw-offload, feature-ntuple, feature-rx, feature-rxhash, feature-rxvlan, feature-rx-all, feature-rx-fcs, feature-rx-gro-hw, feature-rx-gro-list, feature-rx-udp-gro-forwarding, feature-rx-udp_tunnel-port-offload, feature-rx-vlan-filter, feature-rx-vlan-stag-filter, feature-rx-vlan-stag-hw-parse, feature-sg, feature-tls-hw-record, feature-tls-hw-rx-offload, feature-tls-hw-tx-offload, feature-tso, feature-tx, feature-txvlan, feature-tx-checksum-fcoe-crc, feature-tx-checksum-ipv4, feature-tx-checksum-ipv6, feature-tx-checksum-ip-generic, feature-tx-checksum-sctp, feature-tx-esp-segmentation, feature-tx-fcoe-segmentation, feature-tx-gre-csum-segmentation, feature-tx-gre-segmentation, feature-tx-gso-list, feature-tx-gso-partial, feature-tx-gso-robust, feature-tx-ipxip4-segmentation, feature-tx-ipxip6-segmentation, feature-tx-nocache-copy, feature-tx-scatter-gather, feature-tx-scatter-gather-fraglist, feature-tx-sctp-segmentation, feature-tx-tcp6-segmentation, feature-tx-tcp-ecn-segmentation, feature-tx-tcp-mangleid-segmentation, feature-tx-tcp-segmentation, feature-tx-tunnel-remcsum-segmentation, feature-tx-udp-segmentation, feature-tx-udp_tnl-csum-segmentation, feature-tx-udp_tnl-segmentation, feature-tx-vlan-stag-hw-insert, coalesce-adaptive-rx, coalesce-adaptive-tx, coalesce-pkt-rate-high, coalesce-pkt-rate-low, coalesce-rx-frames, coalesce-rx-frames-irq, coalesce-rx-frames-high, coalesce-rx-frames-low, coalesce-rx-usecs, coalesce-rx-usecs-irq, coalesce-rx-usecs-high, coalesce-rx-usecs-low, coalesce-sample-interval, coalesce-stats-block-usecs, coalesce-tx-frames, coalesce-tx-frames-irq, coalesce-tx-frames-high, coalesce-tx-frames-low, coalesce-tx-usecs, coalesce-tx-usecs-irq, coalesce-tx-usecs-high, coalesce-tx-usecs-low, pause-autoneg, pause-rx, pause-tx, eee-enabled, ring-rx, ring-rx-jumbo, ring-rx-mini, ring-tx, channels-rx, channels-tx, channels-other, channels-combined].

Instead, I tried using the other method – ethtool – as I described in the original post, but the results are the same, unfortunately:
When I ran: sudo ethtool -s enp3s0 autoneg on
It worked without issue, and my connection remained stable.
However, when I tried to force the speed and duplex:
sudo ethtool -s enp3s0 speed 1000 duplex full autoneg off
My internet connection dropped and only came back after I used:
sudo ethtool -s enp3s0 autoneg on

It seems that forcing the settings might not be working well for my setup, and auto-negotiation is the best option to keep the connection stable.


Also I checked the cable and was able to find the labeling:

Cable Type:
  • Category: Cat 5e
  • Cable Type: U/UTP (Unshielded Twisted Pair)
  • Frequency Rating: 35 MHz
  • Wire Gauge: 24 AWG
  • Material: Copper (Cu)
  • Insulation: PVC (Polyvinyl Chloride)
  • Length: 12.7 meters
  • Compliance: ISO 11801, TIA-568-C standards
  • Date of Manufacture: August 2021
 
So for whatever reason it got fixed.

1735488813597.png




1735488449835.png

Bash:
$ netstat -i

Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
enp3s0           1500 140276030      0      0 0      34702822      0      0      0 BMRU
lo              65536  3909291      0      0 0       3909291      0      0      0 LRU
virbr0           1500        0      0      0 0             0      0      0      0 BMU
wlp4s0           1500    15031      0      0 0         11330      0      0      0 BMRU
$ ethtool enp3s0
Settings for enp3s0:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
                                             1000baseT/Full
        Link partner advertised pause frame use: Symmetric Receive-only
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Auto-negotiation: on
        master-slave cfg: preferred slave
        master-slave status: slave
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: external
        MDI-X: Unknown
netlink error: Operation not permitted
        Link detected: yes
 
You may think superfast internet is a great move forward, but It doesn't matter what your max incoming signal is set at, if the server you are downloading from has a max transmission speed of 50 GB then that's all you will get,
network load will also reduce your speed, example If i want to download from an American site I will do it before 9am my time which is the middle of the night in the states so less load and faster downloads
 
You may think superfast internet is a great move forward, but It doesn't matter what your max incoming signal is set at, if the server you are downloading from has a max transmission speed of 50 GB then that's all you will get,
network load will also reduce your speed, example If i want to download from an American site I will do it before 9am my time which is the middle of the night in the states so less load and faster downloads
I don't really need it that much, it's just nice to have a gigabit connection.
 
I don't really need it that much, it's just nice to have a gigabit connection.

If you're only going out to the internet, it may not matter that much ( I have gig Fiber out to the internet )
But if you have two computers on the same local network that transfer files between them, it makes a huge difference.
 
as was already mentioned, you have to look at the entire path. The slowest connection in the path is the fastest you go. During my upgrade we had systems working at 1000mb and others at 100mb.. the thing is even if you have 1000mb coming in and your card in the computer is 1000mb but the router only supports 100mb then 100mb is the fastest you will go. gigabit is not just one item, everything in the chain. the NIC in the PC, the router, any network switches, and even the wire all have to be gigabit rated or you will not get more than 100mb. Keep in mind that wifi will not give you gigabit as it is a shared line.
personally I do not use gigabit internet. It is a waste to me. 20mb is fine for streaming and downloading multiple at a time.
 


Members online


Top