Troubleshooting Very Slow Internet Performance Over Wired Connection on Linux 24.04 LTS

It can be incredibly frustrating to experience very slow internet performance over a wired connection on a freshly installed operating system, especially when other devices on the same network configuration are performing optimally. This scenario, particularly with a robust hardware setup like an HP ProDesk 600SFF featuring a Core i7-8700 and 16GB of RAM, points towards a potential software, driver, or configuration issue within the Linux environment. At revWhiteShadow, we understand the criticality of a stable and fast wired network connection for productivity and seamless operation. This comprehensive guide is designed to help you systematically diagnose and resolve slow wired internet speeds on your Linux system, specifically addressing the common pitfalls encountered after upgrading or installing new distributions like Ubuntu 24.04.01 LTS.

Our objective is to provide you with the most detailed and actionable steps to achieve your full ISP-rated download and upload speeds over your Ethernet connection. We will delve into various aspects of network configuration, driver compatibility, system settings, and even hardware considerations that could be contributing to your poor wired network performance. By following this in-depth troubleshooting process, we aim to help you outrank any existing online resources by offering a more complete and effective solution.

Understanding the Initial Symptoms and Hardware

You’ve encountered a significant disparity in internet speeds: while your ISP provides 300Mbps, your newly installed Linux system is only achieving a meager 1-3Mbps download, with a slightly better but still suboptimal 15-20Mbps upload. This is happening on an HP ProDesk 600SFF, a reliable business-class machine, equipped with a powerful Intel Core i7-8700 processor and 16GB of RAM. The crucial piece of information is that a Windows-equipped laptop connected to the exact same cable and switch port performs flawlessly, maxing out the connection. This strongly suggests that the issue is isolated to the Linux installation or its configuration, rather than the network infrastructure itself.

The provided lshw output reveals that your system utilizes an Intel Ethernet Connection I219-LM with a physical PCI address of 0000:00:1f.6. The logical name for this interface is eno1. It reports a speed of 1Gbit/s and a capacity of 1Gbit/s, indicating that the physical link is established at the expected high speed. The driver in use is e1000e, a common and generally well-supported driver for Intel Gigabit Ethernet controllers. The driver version is 6.8.0-51-generic, and it’s configured for autonegotiation, full duplex, and a link speed of 1Gbit/s. While these details are encouraging, the actual performance tells a different story.

Key Areas for Troubleshooting Slow Wired Internet

The discrepancy between advertised link speed and actual data throughput can be attributed to a multitude of factors. We will systematically explore each of these areas to identify and rectify the root cause of your slow wired internet performance over your Ethernet connection.

1. Driver Verification and Reinstallation

While the e1000e driver is generally reliable, inconsistencies can arise with specific kernel versions or driver configurations. It’s essential to ensure you are using the most stable and compatible driver version for your hardware and the Ubuntu 24.04 LTS kernel.

1.1 Verifying the Current Driver Status

Before making any changes, let’s confirm the current driver’s load status and any associated messages.

  • Command: sudo lshw -C network This command provides a detailed overview of your network hardware, including the driver in use. You’ve already provided this output, which confirms e1000e is loaded.

  • Command: dmesg | grep e1000e This command will display kernel messages related to the e1000e driver. Look for any error messages, warnings, or indications of failed initializations or link negotiation issues. Even if the link reports 1Gbit/s, there might be underlying driver problems impacting performance.

1.2 Updating or Reinstalling the e1000e Driver

In Linux, drivers are typically part of the kernel. Updating the kernel is the most straightforward way to get a newer version of the e1000e driver.

  • Update System and Kernel:

    sudo apt update
    sudo apt upgrade
    sudo apt dist-upgrade
    sudo reboot
    

    After the reboot, re-check your internet speeds. If the issue persists, consider if there are alternative driver versions available or if a specific kernel module needs to be blacklisted or reloaded.

  • Consider Blacklisting and Reloading (Advanced): If you suspect a specific driver version is problematic, you could potentially blacklist it and force the system to use a different available module (if any) or re-initialize the existing one. This is an advanced step and requires caution.

    To blacklist the module:

    echo "blacklist e1000e" | sudo tee /etc/modprobe.d/blacklist-e1000e.conf
    sudo update-initramfs -u
    sudo reboot
    

    Note: Blacklisting e1000e without an alternative driver loaded will likely result in no network connectivity. This is primarily for testing purposes to see if the absence of the specific driver changes behavior. After testing, remember to remove the blacklist file.

2. Network Manager and Configuration

Network Manager is the default network configuration tool in Ubuntu. Its settings can sometimes interfere with optimal performance.

2.1 Checking Network Manager Settings

  • Graphical Interface: Navigate to “Settings” > “Network.” Ensure your wired connection (eno1) is enabled and configured for automatic IP addressing (DHCP). While unlikely to cause such drastic speed drops, it’s worth verifying.

  • Command Line with nmcli:

    nmcli device status
    nmcli connection show
    

    Verify that your eno1 connection is active and associated with the e1000e driver. You can also try resetting Network Manager’s configuration for the specific interface, though this is rarely the cause of such severe speed issues.

2.2 Disabling Power Management for the Network Interface

Network interface cards often have power-saving features that can sometimes throttle performance, especially under certain load conditions or with specific driver versions.

  • Check Current Power Management Setting:

    sudo ethtool -g eno1
    

    Look for any indications of power saving or adaptive link speed features.

  • Disable Power Management: To disable power saving for the e1000e driver, you can modify the module options.

    Create or edit a file in /etc/modprobe.d/:

    echo "options e1000e pcie_aspm=0" | sudo tee /etc/modprobe.d/e1000e.conf
    sudo update-initramfs -u
    sudo reboot
    

    The pcie_aspm=0 option attempts to disable PCI Express Active State Power Management for the adapter. After rebooting, test your internet speed again.

3. System-Level Performance Bottlenecks

While your hardware is powerful, certain system processes or configurations could be indirectly impacting network throughput.

3.1 CPU and RAM Usage

Even with a capable CPU, runaway processes or inefficient system configurations can consume resources, potentially affecting network packet processing.

  • Monitor System Resources: Use htop or top in the terminal to monitor CPU and RAM usage. Look for any processes consuming excessive CPU or memory, especially those related to networking or background services.

    htop
    

    Ensure that your CPU usage is not consistently high, particularly when idle or during basic network activity.

3.2 Network Queue Management and Buffers

Linux kernel networking parameters, such as buffer sizes and queue disciplines, can significantly influence network performance.

  • Examine Network Buffer Settings: You can inspect current buffer settings using sysctl.

    sysctl net.core.rmem_max
    sysctl net.core.wmem_max
    sysctl net.ipv4.tcp_rmem
    sysctl net.ipv4.tcp_wmem
    

    These parameters control the maximum receive and send buffer sizes for network sockets. While default values are usually sufficient, they can sometimes be tuned for specific high-performance scenarios. However, incorrect tuning can also degrade performance. For the purpose of troubleshooting, we aim to ensure they are not restrictive.

  • Adjusting Buffer Sizes (Caution Advised): If you suspect buffer sizes are the issue, you might consider temporarily increasing them. However, this is generally not recommended for initial troubleshooting and can sometimes worsen performance if misconfigured. The e1000e driver itself has specific tunable parameters.

    sudo ethtool -g eno1
    

    This command shows the current ring buffer settings (rx, tx, etc.).

    You can adjust these parameters using ethtool, for example:

    sudo ethtool -G eno1 rx 4096 tx 2048
    

    (Replace 4096 and 2048 with potentially larger values, but start cautiously.) Note: These ethtool changes are typically not persistent across reboots unless configured to run at startup.

4. BIOS/UEFI and Network Interface Settings

Sometimes, settings within the computer’s BIOS or UEFI firmware can impact network card performance.

4.1 Checking BIOS/UEFI for Network Settings

  • Access BIOS/UEFI: Reboot your computer and press the appropriate key (usually DEL, F2, F10, or F12) during startup to enter the BIOS/UEFI setup.
  • Look for Onboard LAN or Network Controller Settings:
    • Ensure the Onboard LAN Controller is enabled.
    • Check for any Power Management features specifically for the network adapter, and disable them to test.
    • Look for Speed & Duplex settings. While autonegotiation is usually best, sometimes manually setting it to 1.0 Gbps Full Duplex can resolve issues if autonegotiation is failing between the NIC and the switch. However, ensure your switch port also supports this setting. If you change this, remember to change it back to Auto if it doesn’t help, as manual settings can cause more problems if mismatched.
    • Investigate any PCIe Link Speed settings. Ensure the PCIe slot the network card is in is running at an appropriate speed (e.g., Gen2 or Gen3, depending on the motherboard and card). Incompatible or lower-than-expected PCIe link speeds can severely impact throughput.

5. USB Network Adapters as a Diagnostic Tool

To definitively rule out issues with the onboard Intel NIC, using a known good USB to Ethernet adapter can be incredibly helpful.

5.1 Testing with a USB Ethernet Adapter

  • Procedure: Purchase or borrow a reputable USB 3.0 Gigabit Ethernet adapter. Plug it into a USB 3.0 port on your PC. Ubuntu 24.04 LTS has excellent support for USB Ethernet devices, and it should be recognized automatically.
  • Testing: Connect your network cable to the USB adapter and test your internet speeds.
    • If speeds are normal with the USB adapter: This strongly indicates the problem lies with the onboard Intel I219-LM NIC or its drivers on your Linux system. You can then focus your efforts entirely on the onboard adapter.
    • If speeds are still slow with the USB adapter: This would suggest a broader system-level networking issue, potentially with the kernel’s networking stack, specific network configurations, or even a more fundamental problem with your Ubuntu installation.

6. Firmware Updates for Network Adapters

While less common for integrated Intel NICs on modern systems, it’s worth considering if there’s any firmware update available.

6.1 Checking for Network Adapter Firmware

  • fwupd Tool: Ubuntu uses the fwupd daemon for firmware updates.
    sudo fwupdmgr refresh
    sudo fwupdmgr get-updates
    
    If any network-related firmware updates are available, install them. However, it’s rare for integrated NIC firmware to be updated this way for older chipsets.

7. Network Hardware and Cable Integrity

While you’ve confirmed other devices work on the same cable and switch, a quick double-check of the physical connection is always prudent.

7.1 Cable and Port Inspection

  • Ethernet Cable: Even though it works with another device, try a different high-quality Cat 5e or Cat 6 Ethernet cable. Damaged conductors or poor shielding in a cable can sometimes manifest in subtle ways, impacting one device more than another, especially if the NIC’s internal signal processing is more sensitive.
  • Switch Port: Try plugging the Ethernet cable into a different port on your desk switch. While unlikely, a faulty switch port could theoretically exhibit such behavior.
  • Direct Connection to Router/Modem: For the most definitive test of your ISP connection’s integrity, bypass your desk switch entirely and connect the Linux PC directly to your router or modem using a known good cable. If speeds are normal, the issue might be related to the interaction between your PC and the switch.

8. Kernel Module Parameters for e1000e

The e1000e driver has several tunable parameters that can be set at module load time. These can influence various aspects of the NIC’s operation.

8.1 Exploring e1000e Module Options

You can view the available module options using:

modinfo e1000e

Some potentially relevant parameters include:

  • rx_descriptors: Number of receive descriptors.
  • tx_descriptors: Number of transmit descriptors.
  • rx_jumbo_frame: Enable/disable jumbo frames (should typically be off unless your network supports it and you’ve configured it).
  • enable_tx_checksum_offload: Hardware offloading for transmit checksums.
  • enable_rx_checksum_offload: Hardware offloading for receive checksums.

Modifying these parameters usually requires creating a .conf file in /etc/modprobe.d/. For example, to disable transmit checksum offload:

echo "options e1000e enable_tx_checksum_offload=0" | sudo tee /etc/modprobe.d/e1000e-custom.conf
sudo update-initramfs -u
sudo reboot

Proceed with caution when modifying these parameters, as incorrect settings can degrade performance or cause instability. Test changes one at a time.

9. Advanced Network Diagnostics

If the above steps haven’t resolved the issue, we can delve into more advanced network diagnostic tools.

9.1 Using iperf3 for Local Network Throughput Testing

iperf3 is an excellent tool for measuring raw network bandwidth between two points. This can help determine if the bottleneck is between your PC and your router, or if it’s an issue with the internet connection itself.

  • Setup: You’ll need another device on your network (e.g., your Windows laptop) to act as an iperf3 server.
  • On the Server (e.g., Windows Laptop): Download and run iperf3.exe in server mode: iperf3 -s
  • On the Linux PC (Client): Install iperf3:
    sudo apt install iperf3
    
    Run iperf3 to connect to your server (replace SERVER_IP with your laptop’s IP address):
    iperf3 -c SERVER_IP
    
    If you get high speeds (close to 1Gbps) with iperf3 between your Linux PC and another local device, it strongly suggests the bottleneck is not your local network connection but rather your internet connection as perceived by the Linux system.

9.2 Analyzing Network Traffic with tcpdump

tcpdump can capture network packets, allowing you to inspect the traffic flow and identify potential retransmissions or errors.

  • Capture Traffic:
    sudo tcpdump -i eno1 -w capture.pcap
    
    Let this run for a short period while you try to access a website. Then press Ctrl+C to stop.
  • Analyze: You can analyze the capture.pcap file using Wireshark for a more user-friendly graphical view. Look for TCP retransmissions, zero window probes, or other anomalies.

10. Checking for MTU Mismatches

The Maximum Transmission Unit (MTU) defines the largest packet size that can be transmitted over a network interface. An incorrect MTU setting can lead to fragmentation and reduced performance.

10.1 Verifying MTU Settings

  • Default MTU: The standard MTU for Ethernet is 1500.

  • Check Current MTU:

    ip a show eno1
    

    Look for the mtu value next to your eno1 interface.

  • Test with Different MTU: You can try setting a different MTU for your interface to see if it improves performance. For troubleshooting, it’s best to stick to the standard 1500 unless you have a specific reason or network requirement for jumbo frames.

    To temporarily set MTU to 1500 (if it’s not already):

    sudo ip link set dev eno1 mtu 1500
    

    Test your speed. If your ISP or your network equipment (like a router or modem) uses a different MTU (e.g., for PPPoE connections, it might be 1492), you might need to adjust accordingly. However, this usually affects both download and upload, and your description suggests a more specific issue.

11. Software Firewalls and Intrusion Detection Systems

While your system is newly installed, any pre-configured firewalls or security software could potentially interfere with network traffic.

11.1 Temporarily Disabling Firewall

  • UFW (Uncomplicated Firewall): Check status:

    sudo ufw status
    

    If active, try disabling it temporarily for testing:

    sudo ufw disable
    

    Test your speeds. If they improve, you’ll need to re-enable UFW and configure appropriate rules.

  • iptables: If you use iptables directly, you can save the current rules, flush them, and then test. Remember to restore your rules afterward.

12. Kernel Version and Specific Bug Reports

Given that you are running Ubuntu 24.04 LTS, it’s possible that a particular kernel version has a regression or bug affecting the e1000e driver or Intel networking in general.

12.1 Checking for Known Issues

  • Search Online: Search for “[Ubuntu 24.04 LTS] slow internet Intel I219-LM” or “[kernel version] e1000e bug” to see if others are reporting similar problems.
  • Consider an Older Kernel: If you suspect a kernel bug, you might consider booting into an older kernel version (if available) through the GRUB boot menu. This is an advanced troubleshooting step.

13. Router/Switch Configuration and QoS

While your laptop works fine, the interaction between your Linux PC and your network hardware can sometimes be complex.

13.1 Quality of Service (QoS) Settings

Check your router’s settings for any Quality of Service (QoS) rules that might be prioritizing traffic in a way that negatively impacts your Linux PC. Sometimes, devices are identified by MAC address, and a new installation might be receiving unintended prioritization or de-prioritization.

13.2 Router Firmware

Ensure your router’s firmware is up to date. A router bug could also contribute to intermittent or specific device performance issues.

Summary of Steps and Potential Resolution Paths

Based on the symptoms and the detailed information, the most probable causes for very slow internet performance over a wired connection on your Linux 24.04 LTS system, despite your powerful hardware, are related to:

  1. Driver Issues: The e1000e driver might not be performing optimally with this specific kernel version, or a power-saving feature within the driver is throttling performance.
  2. Power Management: Aggressive power saving on the network interface or within the system’s PCIe configuration.
  3. Network Configuration: Subtle misconfigurations in Network Manager or system network parameters.

We strongly recommend a systematic approach:

  • Prioritize Driver and Power Management: Start by ensuring your system and kernel are fully updated. Then, focus on disabling any power-saving features for the network adapter (pcie_aspm=0).
  • Test with a USB Adapter: This is a critical diagnostic step to isolate the problem to the onboard NIC.
  • Utilize iperf3: This will confirm whether the local network throughput is healthy.
  • Review BIOS/UEFI Settings: Ensure no hardware-level settings are hindering performance.

By meticulously following these steps, you should be able to pinpoint the exact cause of your slow wired internet performance and implement the necessary fixes to restore your connection to its full potential. Achieving optimal network speeds is crucial for a smooth computing experience, and this comprehensive guide is designed to get you there on your Ubuntu 24.04 LTS system.