Network Manager limits Internet speed again

This ■■■■ happens periodically over years and still not fixed yet!!! After some connection lost or manual connection on/off or other reason NM may slow down network speed to 1-10 Mb/s. After reboot speedtest.net may show 100 Mb/s but I have 1Gb/s connection! And other PC (with Ubuntu NM 1.46.0) shows full speed with the same router and speedtest.net server.

$ sudo NetworkManager --version
1.48.8

My connection is wire and was able to get 1Gb on it previously. How to prevent NM to reduce the speed and get full interface speed?! Tried to switch to Wicked - it does not rise up any connection to me at all - no network.

I doubt this has to do with the network management framework. Speculating…the driver or link negotiation might be causing some issues here. Show us the results from

inxi -na
/usr/sbin/ethtool <name of interface>

Substitute your actual network device node foe eg eth1

Since you’re using NetworkManager, perhaps worthwhile monitoring related journal events in a terminal as well…

sudo journalctl -fu NetworkManager

Share the output if you find anything of interest occurring there.

1 Like

I’ve set speed to 1Gb/s (or 2.5Gb/s) manually in NM KDE settings and speed is normal now!

Here is your commands output:

> inxi -na
Network:
  Device-1: Realtek RTL8125 2.5GbE vendor: Gigabyte driver: r8169 v: kernel
    pcie: gen: 2 speed: 5 GT/s lanes: 1 port: f000 bus-ID: 04:00.0
    chip-ID: 10ec:8125 class-ID: 0200
  IF: enp4s0 state: up speed: 1000 Mbps duplex: full mac: 74:56:3c:48:0c:88
  Device-2: MEDIATEK MT7921K Wi-Fi 6E 80MHz driver: mt7921e v: kernel pcie:
    gen: 2 speed: 5 GT/s lanes: 1 bus-ID: 05:00.0 chip-ID: 14c3:0608
    class-ID: 0280
  IF: wlp5s0 state: down mac: ee:3c:3a:86:f7:ba
  Info: services: NetworkManager,wpa_supplicant

> /usr/sbin/ethtool enp4s0
Settings for enp4s0:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  1000baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Auto-negotiation: off
        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

> sudo journalctl -fu NetworkManager
авг 25 03:05:49 Aleksey NetworkManager[1864]: <info>  [1724544349.6698] device (enp4s0): carrier: link connected
авг 25 03:05:56 Aleksey NetworkManager[1864]: <info>  [1724544356.0470] device (enp4s0): carrier: link connected
авг 25 03:06:21 Aleksey NetworkManager[1864]: <info>  [1724544381.4091] device (wlp5s0): set-hw-addr: set MAC address to EE:3C:3A:86:F7:BA (scanning)
авг 25 03:06:21 Aleksey NetworkManager[1864]: <info>  [1724544381.4349] device (wlp5s0): supplicant interface state: inactive -> interface_disabled
авг 25 03:06:21 Aleksey NetworkManager[1864]: <info>  [1724544381.4349] device (p2p-dev-wlp5s0): supplicant management interface state: inactive -> interface_disabled
авг 25 03:06:21 Aleksey NetworkManager[1864]: <info>  [1724544381.4745] device (wlp5s0): supplicant interface state: interface_disabled -> inactive
авг 25 03:06:21 Aleksey NetworkManager[1864]: <info>  [1724544381.4745] device (p2p-dev-wlp5s0): supplicant management interface state: interface_disabled -> inactive
авг 25 03:06:54 Aleksey NetworkManager[1864]: <info>  [1724544414.2745] audit: op="statistics" interface="enp4s0" ifindex=2 args="2000" pid=2475 uid=1000 result="success"
авг 25 03:07:03 Aleksey NetworkManager[1864]: <info>  [1724544423.7289] audit: op="connection-update" uuid="fa26c24f-6892-419f-ae57-3aef9234284e" name="Проводное соединение" args="802-3-ethernet.speed" pid=4443 uid=1000 result="success"
авг 25 03:07:05 Aleksey NetworkManager[1864]: <info>  [1724544425.1099] audit: op="statistics" interface="enp4s0" ifindex=2 args="2000" pid=2475 uid=1000 result="success"
авг 25 03:11:21 Aleksey NetworkManager[1864]: <info>  [1724544681.6234] audit: op="statistics" interface="enp4s0" ifindex=2 args="2000" pid=2475 uid=1000 result="success"
авг 25 03:11:28 Aleksey NetworkManager[1864]: <info>  [1724544688.3749] device (wlp5s0): set-hw-addr: set MAC address to 7A:11:4C:8B:6A:4D (scanning)
авг 25 03:11:28 Aleksey NetworkManager[1864]: <info>  [1724544688.4320] device (wlp5s0): supplicant interface state: inactive -> disconnected
авг 25 03:11:28 Aleksey NetworkManager[1864]: <info>  [1724544688.4320] device (p2p-dev-wlp5s0): supplicant management interface state: inactive -> disconnected
авг 25 03:11:28 Aleksey NetworkManager[1864]: <info>  [1724544688.4371] device (wlp5s0): supplicant interface state: disconnected -> inactive
авг 25 03:11:28 Aleksey NetworkManager[1864]: <info>  [1724544688.4371] device (p2p-dev-wlp5s0): supplicant management interface state: disconnected -> inactive

If setting the link speed manually works for you then there is no need to share the output. The output only reflects what you set manually anyway. :wink:

Speed: 1000Mb/s
        Duplex: Full
        Auto-negotiation: off

Occasionally network hardware doesn’t play nice with other connected network hardware with respect to auto-negotiation.

The last command was for monitoring purposes, and if your link is now stable, there is no need to continue monitoring. In any case it showed nothing of interest for the period that you ran it.

1 Like

No link is not stable: after today power on speed again at 100 Mb/s while NM setting is still 2.5 Gb/s. Output:

> /usr/sbin/ethtool enp4s0
Settings for enp4s0:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/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
                                2500baseT/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
        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
netlink error: Operation not permitted
        Link detected: yes

> sudo journalctl -fu NetworkManager
[sudo] пароль для aleksey:
авг 25 14:25:12 Aleksey NetworkManager[1871]: <info>  [1724585112.8253] device (enp4s0): carrier: link connected
авг 25 14:25:16 Aleksey NetworkManager[1871]: <info>  [1724585116.1257] device (enp4s0): carrier: link connected
авг 25 14:25:19 Aleksey NetworkManager[1871]: <info>  [1724585119.9049] device (enp4s0): carrier: link connected
авг 25 14:25:22 Aleksey NetworkManager[1871]: <info>  [1724585122.4931] device (enp4s0): carrier: link connected
авг 25 14:26:56 Aleksey NetworkManager[1871]: <info>  [1724585216.4144] audit: op="statistics" interface="enp4s0" ifindex=2 args="2000" pid=2661 uid=1000 result="success"
авг 25 14:29:25 Aleksey NetworkManager[1871]: <info>  [1724585365.8347] device (wlp5s0): set-hw-addr: set MAC address to B6:D6:CD:BA:E0:79 (scanning)
авг 25 14:29:25 Aleksey NetworkManager[1871]: <info>  [1724585365.8657] device (wlp5s0): supplicant interface state: inactive -> interface_disabled
авг 25 14:29:25 Aleksey NetworkManager[1871]: <info>  [1724585365.8658] device (p2p-dev-wlp5s0): supplicant management interface state: inactive -> interface_disabled
авг 25 14:29:25 Aleksey NetworkManager[1871]: <info>  [1724585365.8893] device (wlp5s0): supplicant interface state: interface_disabled -> inactive
авг 25 14:29:25 Aleksey NetworkManager[1871]: <info>  [1724585365.8894] device (p2p-dev-wlp5s0): supplicant management interface state: interface_disabled -> inactive

How to make it 1Gb or 2.5GGb/s?!

Now something happened and it occasionally switched back to 1Gb/s for some reason:

> sudo journalctl -fu NetworkManager
авг 25 14:25:12 NetworkManager[1871]: <info>  [1724585112.8253] device (enp4s0): carrier: link connected
авг 25 14:25:16 NetworkManager[1871]: <info>  [1724585116.1257] device (enp4s0): carrier: link connected
авг 25 14:25:19 NetworkManager[1871]: <info>  [1724585119.9049] device (enp4s0): carrier: link connected
авг 25 14:25:22 NetworkManager[1871]: <info>  [1724585122.4931] device (enp4s0): carrier: link connected
авг 25 14:26:56 NetworkManager[1871]: <info>  [1724585216.4144] audit: op="statistics" interface="enp4s0" ifindex=2 args="2000" pid=2661 uid=1000 result="success"
авг 25 14:29:25 NetworkManager[1871]: <info>  [1724585365.8347] device (wlp5s0): set-hw-addr: set MAC address to B6:D6:CD:BA:E0:79 (scanning)
авг 25 14:29:25 NetworkManager[1871]: <info>  [1724585365.8657] device (wlp5s0): supplicant interface state: inactive -> interface_disabled
авг 25 14:29:25 NetworkManager[1871]: <info>  [1724585365.8658] device (p2p-dev-wlp5s0): supplicant management interface state: inactive -> interface_disabled
авг 25 14:29:25 NetworkManager[1871]: <info>  [1724585365.8893] device (wlp5s0): supplicant interface state: interface_disabled -> inactive
авг 25 14:29:25 NetworkManager[1871]: <info>  [1724585365.8894] device (p2p-dev-wlp5s0): supplicant management interface state: interface_disabled -> inactive
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.1650] device (enp4s0): state change: activated -> unavailable (reason 'carrier-changed', sys-iface-state: 'managed')
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.1651] dhcp4 (enp4s0): canceled DHCP transaction
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.1652] dhcp4 (enp4s0): activation: beginning transaction (timeout in 45 seconds)
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.1652] dhcp4 (enp4s0): state changed no lease
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.3392] manager: NetworkManager state is now DISCONNECTED
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.4162] device (enp4s0): carrier: link connected
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.4163] device (enp4s0): state change: unavailable -> disconnected (reason 'carrier-changed', sys-iface-state: 'managed')
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.4167] policy: auto-activating connection 'Проводное соединение' (fa26c24f-6892-419f-ae57-3aef9234284e)
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.4169] device (enp4s0): Activation: starting connection 'Проводное соединение' (fa26c24f-6892-419f-ae57-3aef9234284e)
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.4170] device (enp4s0): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed')
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.4171] manager: NetworkManager state is now CONNECTING
авг 25 14:30:11 NetworkManager[1871]: <warn>  [1724585411.4172] device (enp4s0): set-link: failure to set link negotiation
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.4172] device (enp4s0): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.4304] device (enp4s0): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed')
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.4307] dhcp4 (enp4s0): activation: beginning transaction (timeout in 45 seconds)
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.4710] dhcp4 (enp4s0): state changed new lease, address=192.168.0.112, acd pending
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.6756] dhcp4 (enp4s0): state changed new lease, address=192.168.0.112
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.6758] policy: set 'Проводное соединение' (enp4s0) as default for IPv4 routing and DNS
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.7678] device (enp4s0): state change: ip-config -> ip-check (reason 'none', sys-iface-state: 'managed')
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.7924] device (enp4s0): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'managed')
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.7925] device (enp4s0): state change: secondaries -> activated (reason 'none', sys-iface-state: 'managed')
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.7927] manager: NetworkManager state is now CONNECTED_SITE
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.7929] device (enp4s0): Activation: successful, device activated.
авг 25 14:30:11 NetworkManager[1871]: <info>  [1724585411.9040] manager: NetworkManager state is now CONNECTED_GLOBAL
> /usr/sbin/ethtool enp4s0
Settings for enp4s0:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
                                2500baseT/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
                                2500baseT/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

What is going on?!

Have you tried replacing the cable and changing the router port?

The connection has reverted to auto-negotiation. You’d need to show us your NM wired connection definition.

No, wire too long and in separate room. Router port? May try not sure it will help: new modern TP-Link router.

Seems so: and changes to speed in Plasma NM settings has no effect now for some reason.

How, what command? Screenshot?

Well, there is definitely an issue between your PC and the network appliance it is connected to to. This could be due a cable/termination issue, or some problem with a network interface as already mentioned. If the cable is long and not screened sufficiently, there may be an interference problem at play.

I’m not sure how auto-negotiation would be forced if you explicitly set manual negotiation. However, setting the link speed manually is likely masking a real problem with the physical ocnnection that needs addressing.

The active NM connection parameters can be shown with something like
nmcli c show <conneciton-name>
Since we’re only interested in the duplex settings as set by NM we can abbreviate the output with
nmcli c show <connection-name> | grep "ethernet"
Chanege to your actual wired conneciton name.

The system connection profiles are located in /etc/NetworkManager/system-connections/ directory, so you can navigate there and examine with…
sudo cat /etc/NetworkManager//system-connections/<connection-name>
or just show the screenshot of the relevant connection if that is easier.

> nmcli c show "Wire connection" | grep "ethernet"
connection.type:                        802-3-ethernet
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   2500
802-3-ethernet.duplex:                  full
802-3-ethernet.auto-negotiate:          no
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-denylist:    --
802-3-ethernet.mtu:                     auto
802-3-ethernet.s390-subchannels:        --
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            --
802-3-ethernet.wake-on-lan:             default
802-3-ethernet.wake-on-lan-password:    --
802-3-ethernet.accept-all-mac-addresses:-1 (default)
> sudo cat /etc/NetworkManager/system-connections/Wire\ connection.nmconnection
[connection]
id=Wire connection
uuid=fa26c24f-6892-419f-ae57-3aef9234284e
type=ethernet

[ethernet]
duplex=full
speed=2500

[ipv4]
method=auto

[ipv6]
addr-gen-mode=stable-privacy
method=auto

[proxy]

Ok, that shows the applied configuration from the NM perspective at least.

Please also show us

systemctl list-units | egrep -i "network|wicked"

Autonegotiation is mandatory for 1G and above. I have no idea what happens if you try to turn it off. In the best case, driver will ignore it. Or it will fall back to the 100Mb/s which is the highest possible speed with negotiation.

That could well be the problem.

device (enp4s0): state change: unavailable -> disconnected (reason 'carrier-changed', sys-iface-state: 'managed')

The cable could be running along some other cables that trigger a disturbance or some other hardware problem.

Yes, you will likely be able to fix the speed but the underlying problem will not go away and you might become back saying the network sometimes does not work or has high packet loss.

1 Like
> systemctl list-units | egrep -i "network|wicked"
  NetworkManager-wait-online.service                                                                                              loaded active exited    Network Manager Wait Online
  NetworkManager.service                                                                                                          loaded active running   Network Manager
  network-online.target                                                                                                           loaded active active    Network is Online
  network-pre.target                                                                                                              loaded active active    Preparation for Network
  network.target                                                                                                                  loaded active active    Network
  nss-lookup.target                                                                                                               loaded active active    Host and Network Name Lookups

According to NM UI settings we can set speed limit only if we set negotiation to manual.

True - 1 more cable exists there. So what to do: use more expensive cables with better screening? Also could be bad pin connection - probably need to change it. However after reestablishing connection I think NM should set it back to 2.5 Gb/s - not 100 Mb/s or even several times lower occasionally.

All UI I have seen are limited and do not expose all possible options. Try explicitly setting 802-3-ethernet.auto-negotiate to yes.

nmcli c modify "Wire connection" 802-3-ethernet.auto-negotiate yes?

And how to save that to link configuration? Seems it save this automatically?

> LC_ALL=C nmcli c show "Проводное соединение" | grep "ethernet"
connection.type:                        802-3-ethernet
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   2500
802-3-ethernet.duplex:                  full
802-3-ethernet.auto-negotiate:          yes
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-denylist:    --
802-3-ethernet.mtu:                     auto
802-3-ethernet.s390-subchannels:        --
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            --
802-3-ethernet.wake-on-lan:             default
802-3-ethernet.wake-on-lan-password:    --
802-3-ethernet.accept-all-mac-addresses:-1 (default)

Now UI does not allow to set the speed again.

I am not sure I understand this question. After changing connection profile you need to re-apply it by toggling connection/device down/up or reboot.

I see. I checked the config file - it saved. Please always write the command. Ok found:

nmcli c down "Проводное соединение"
nmcli c up "Проводное соединение"

Works. Now need to understand if it gives any effect.