Skip to content

Instantly share code, notes, and snippets.

@crypt0rr
Last active May 29, 2025 04:58
Show Gist options
  • Save crypt0rr/60aaabd4a5c29a256b4f276122765237 to your computer and use it in GitHub Desktop.
Save crypt0rr/60aaabd4a5c29a256b4f276122765237 to your computer and use it in GitHub Desktop.
Intel e1000e fix - Proxmox

Fix Intel e1000e error

Please note - you may want to validate whether the options used affect your setup.

Create a new service file.

nano /etc/systemd/system/disable-offloading.service

Paste the required information/command in the newly created service file - please change eth0 to your desired adapter.

[Unit]
Description=Disable NIC offloading
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -K eth0 gso off gro off tso off tx off rx off rxvlan off txvlan off sg off
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

Load the new service file and enable on reboot.

systemctl daemon-reexec && systemctl daemon-reload && systemctl enable disable-offloading.service
@ceyers
Copy link

ceyers commented Apr 23, 2025

Thank you so much for posting this. It corrected my Proxmox node.

@tenekev
Copy link

tenekev commented May 1, 2025

Thanks you. I'm just posting the backlink to the proxmox forum thread where I found this for more context:

https://forum.proxmox.com/threads/e1000e-eno1-detected-hardware-unit-hang.59928

@JordyEGNL
Copy link

Thank you for posting this, was really frustrated by this issue!

@baljinder1082
Copy link

Thanks, worked for me too!

@townsmcp
Copy link

townsmcp commented May 8, 2025

I have just implemented this script and performed a reboot. Apart from systemctl status disable-offloading.service (which is showing as active), is there a way to check if the command itself has been successful at load? lol I know a big giveaway will be if Proxmox doesnt die but I would rather some way to check upfront the command has successfully been applied.

@crypt0rr
Copy link
Author

crypt0rr commented May 8, 2025

I have just implemented this script and performed a reboot. Apart from systemctl status disable-offloading.service (which is showing as active), is there a way to check if the command itself has been successful at load? lol I know a big giveaway will be if Proxmox doesnt die but I would rather some way to check upfront the command has successfully been applied.

In the output of the systemctl status disable-offloading.service command, you will find the code=exited, status=0/SUCCESS which tells you the command did run successfully. Example below.

   Main PID: 880 (code=exited, status=0/SUCCESS)
        CPU: 21ms

Apr 03 09:58:56 titan systemd[1]: Starting disable-offloading.service - Disable NIC offloading...
Apr 03 09:58:56 titan systemd[1]: Finished disable-offloading.service - Disable NIC offloading.

@townsmcp
Copy link

townsmcp commented May 8, 2025

Thanks @crypt0rr, I get the following:

root@pve2:~# systemctl status disable-offloading.service
● disable-offloading.service - Disable NIC offloading
     Loaded: loaded (/etc/systemd/system/disable-offloading.service; enabled; preset: enabled)
     Active: active (exited) since Thu 2025-05-08 09:25:20 BST; 42min ago
    Process: 941 ExecStart=/sbin/ethtool -K eno1 gso off gro off tso off tx off rx off rxvlan off txvlan off sg off (code=exited, status=0/SUCCESS)
   Main PID: 941 (code=exited, status=0/SUCCESS)
        CPU: 21ms
root@pve2:~# 

Just wondered if there was anything else that needed to be checked but all good :) I shall see if this works in about 12 hours (my Proxmox keeps dying around 9pm every evening just in the middle of watching something on Plex)

@crypt0rr
Copy link
Author

crypt0rr commented May 8, 2025

Thanks @crypt0rr, I get the following:

root@pve2:~# systemctl status disable-offloading.service
● disable-offloading.service - Disable NIC offloading
     Loaded: loaded (/etc/systemd/system/disable-offloading.service; enabled; preset: enabled)
     Active: active (exited) since Thu 2025-05-08 09:25:20 BST; 42min ago
    Process: 941 ExecStart=/sbin/ethtool -K eno1 gso off gro off tso off tx off rx off rxvlan off txvlan off sg off (code=exited, status=0/SUCCESS)
   Main PID: 941 (code=exited, status=0/SUCCESS)
        CPU: 21ms
root@pve2:~# 

Just wondered if there was anything else that needed to be checked but all good :) I shall see if this works in about 12 hours (my Proxmox keeps dying around 9pm every evening just in the middle of watching something on Plex)

Hm, that's unfortunate. Let us know if the solution worked for you please!

@tkranz
Copy link

tkranz commented May 8, 2025

I solved it here: with post-up command

root@proxmox43:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
address 192.168.1.43/24
gateway 192.168.1.1
bridge-ports eno1
post-up /sbin/ethtool -K eno1 tx off rx off
bridge-stp off
bridge-fd 0

@townsmcp
Copy link

townsmcp commented May 9, 2025

Well, Proxmox worked all through last night - no failures since adding and activtaing this script. So thats a win :)
I will report back in a few days time just to update but so far, it is looking promising so thank you @crypt0rr

@techiebloke333
Copy link

Applied this "fix" 8 days ago after a couple of weeks of random freezing and it's worked a treat ever since. Thanks!

@townsmcp
Copy link

Well sadly Proxmox died again today. That’s 3 days without keeling over. I have looked at the system log from Proxmox UI but can’t see an error so not sure if that was related to nic issue or not. When I stopped responding I tried removing the network cable as I have seen others say that worked for them but unfortunately it didn’t help me

@rcastley
Copy link

Thank you for this fix ... my NUC seems to have stabilised :-) I have created a PR for a Helper Script - community-scripts/ProxmoxVED#310

Hopefully this is accepted and will help others.

Thank you again, for the fix!

@profucius
Copy link

@rcastley Very interested in this helper script. I see in your link that the PR was accepted, where can I find the script link to try it in my environment?

@profucius
Copy link

@crypt0rr I tried your script, and the verification command, but I got a failure response. I wonder what I did wrong?

× disable-offloading.service - Disable NIC offloading
     Loaded: loaded (/etc/systemd/system/disable-offloading.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Wed 2025-05-21 10:39:11 EDT; 3min 0s ago
    Process: 781 ExecStart=/sbin/ethtool -K eth0 gso off gro off tso off tx off rx off rxvlan off txvlan off sg off (code=exited, status=92)
   Main PID: 781 (code=exited, status=92)
        CPU: 1ms

Starting disable-offloading.service - Disable NIC offloading...
netlink error: no device matches name (offset 24)
netlink error: No such device
disable-offloading.service: Main process exited, code=exited, status=92/n/a
disable-offloading.service: Failed with result 'exit-code'.
Failed to start disable-offloading.service - Disable NIC offloading.

@techiebloke333
Copy link

You probably need to edit the eth0 for the identity of your specific network card - in my case it was eno2

@profucius
Copy link

Indeed that was it. I haven't done something like this before so I had to search how to do this. For anyone who might be in a similar position, I used ip -a and found eno1 in the list.

@rcastley
Copy link

rcastley commented May 21, 2025

@profucius

@rcastley Very interested in this helper script. I see in your link that the PR was accepted, where can I find the script link to try it in my environment?

The source for my PR is available here - https://raw.githubusercontent.com/rcastley/ProxmoxVED/refs/heads/main/tools/pve/nic-offloading-fix.sh

So you could run the following from your PVE shell:

bash -c "$(curl https://raw.githubusercontent.com/rcastley/ProxmoxVED/refs/heads/main/tools/pve/nic-offloading-fix.sh)"

@chrismaddahl
Copy link

@profucius

@rcastley Very interested in this helper script. I see in your link that the PR was accepted, where can I find the script link to try it in my environment?

The source for my PR is available here - https://raw.githubusercontent.com/rcastley/ProxmoxVED/refs/heads/main/tools/pve/nic-offloading-fix.sh

So you could run the following from your PVE shell:

bash -c "$(curl https://raw.githubusercontent.com/rcastley/ProxmoxVED/refs/heads/main/tools/pve/nic-offloading-fix.sh)"

Thank you so much for creating this, I ran your command and it worked perfectly.

@profucius
Copy link

Just confirming that this script worked perfectly for me too!

@rcastley
Copy link

Thank you @profucius and @chrismaddahl ... just waiting for community-scripts to approve and merge 👍

@Dietmarjas
Copy link

Hallo Zusammen bei mir funktioniert der Skript leider nicht was läuft hier falsch bitte um hilfe bin neuling DANKE
prox

@rcastley
Copy link

@Dietmarjas The script has been accepted and merged into dev, so is now available here:

https://community-scripts.github.io/ProxmoxVED/scripts?id=nic-offloading-fix

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment