NanoPi R2S: USB ethernet fail, how to fix?

Hi,
Just wanted to share my experience with the NanoPi R2S Plus running OpenWrt 24.10.0. Overall, it's been a fantastic little router for the price point, but I've noticed some quirky behavior that others might want to be aware of.

The Good Stuff

  • Rock solid performance most of the time
  • 1 GB RAM.
  • Great throughput for a budget device
  • Trivial setup with OpenWrt
  • Super compact form factor
  • No wifi (i have seperate wifi access points and this is a bonus, to me)

The Occasional Hiccups

After upgrading to OpenWrt 24.10.0, I've noticed that the USB Ethernet port (the one using the Realtek RTL8153B chipset) occasionally times out. You might see something like this in your logs:

r8152 4-1:1.0 eth1: NETDEV WATCHDOG: CPU: 2: transmit queue 0 timed out 5010 ms
r8152 4-1:1.0 eth1: Tx timeout

The good news is that the device recovers on its own! The USB Ethernet controller resets itself automatically:

r8152-cfgselector 4-1: reset SuperSpeed USB device number 2 using xhci-hcd
r8152 4-1:1.0 eth1: Promiscuous mode enabled

These hiccups happen pretty randomly - could be hours or days between occurrences. While it's a bit annoying when you're trying to figure out if it's your internet connection or just the USB resetting, it's usually back up and running so quickly that most users won't even notice.

No idea if this helps but i have this turned on

If you're experiencing these issues, adding this to your network config might help stabilise things:

config device
option name 'eth1'
option macaddr 'XX:XX:XX:XX:XX:XX' # Your MAC here
option ethtool 'tx-checksum-ip-generic off rx-checksum off tso off'

On my github bug report another community member suggested forcing the CPU to max frequency by adding this to /etc/rc.local:

echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor

The One Thing to Avoid

If you do encounter issues, don't manually unload the r8152 module with rmmod r8152 as this can cause the system to freeze, requiring a hard reboot.

Also a reboot using Luci or 'reboot' just freezes the system.

Posting to see if anyone can suggest a solution as its eluded me so far. Also I'm at the limit of my knowledge so don't really understand what i'm doing with the ethtool options / scaling_governor thing.

Would i buy it again? Yes, fast, rock solid and oceans of space with 1 GB of RAM. The eMMC having 32GB is positively amazing too. All for $30.

My current dmesg filtered. This is so annoying as its not related to load or time.

Mon Mar  3 17:31:03 2025 kern.crit kernel: [84178.127403] r8152 4-1:1.0 eth1: NETDEV WATCHDOG: CPU: 2: transmit queue 0 timed out 5610 ms
Mon Mar  3 17:31:03 2025 kern.warn kernel: [84178.128288] r8152 4-1:1.0 eth1: Tx timeout
Mon Mar  3 17:31:03 2025 kern.warn kernel: [84178.132278] r8152 4-1:1.0 eth1: Tx status -2
Mon Mar  3 17:31:03 2025 kern.warn kernel: [84178.132808] r8152 4-1:1.0 eth1: Tx status -2
Mon Mar  3 17:31:03 2025 kern.warn kernel: [84178.133275] r8152 4-1:1.0 eth1: Tx status -2
Mon Mar  3 17:31:03 2025 kern.warn kernel: [84178.133743] r8152 4-1:1.0 eth1: Tx status -2
Mon Mar  3 17:31:06 2025 kern.info kernel: [84180.302412] r8152-cfgselector 4-1: reset SuperSpeed USB device number 2 using xhci-hcd
Mon Mar  3 17:31:06 2025 kern.notice kernel: [84180.340523] r8152 4-1:1.0 eth1: Promiscuous mode enabled
Tue Mar  4 00:45:29 2025 kern.crit kernel: [110243.499626] r8152 4-1:1.0 eth1: NETDEV WATCHDOG: CPU: 2: transmit queue 0 timed out 5430 ms
Tue Mar  4 00:45:29 2025 kern.warn kernel: [110243.500436] r8152 4-1:1.0 eth1: Tx timeout
Tue Mar  4 00:45:30 2025 kern.err kernel: [110244.540082] r8152-cfgselector 4-1: Failed to read 4 bytes at 0xb400/0x0133 (-110)
Tue Mar  4 00:45:31 2025 kern.info kernel: [110244.702286] r8152-cfgselector 4-1: reset SuperSpeed USB device number 2 using xhci-hcd
Tue Mar  4 00:45:31 2025 kern.warn kernel: [110244.744196] r8152 4-1:1.0 eth1: Tx status -108
Tue Mar  4 00:45:31 2025 kern.warn kernel: [110244.744652] r8152 4-1:1.0 eth1: Tx status -108
Tue Mar  4 00:45:31 2025 kern.warn kernel: [110244.745058] r8152 4-1:1.0 eth1: Tx status -108
Tue Mar  4 00:45:31 2025 kern.warn kernel: [110244.745462] r8152 4-1:1.0 eth1: Tx status -108
Tue Mar  4 00:45:31 2025 kern.notice kernel: [110244.752606] r8152 4-1:1.0 eth1: Promiscuous mode enabled
Tue Mar  4 00:45:31 2025 kern.info kernel: [110244.926205] r8152-cfgselector 4-1: reset SuperSpeed USB device number 2 using xhci-hcd
Tue Mar  4 00:45:31 2025 kern.notice kernel: [110244.963431] r8152 4-1:1.0 eth1: Promiscuous mode enabled
Tue Mar  4 12:45:15 2025 kern.crit kernel: [153428.494108] r8152 4-1:1.0 eth1: NETDEV WATCHDOG: CPU: 2: transmit queue 0 timed out 5030 ms
Tue Mar  4 12:45:15 2025 kern.warn kernel: [153428.494946] r8152 4-1:1.0 eth1: Tx timeout
Tue Mar  4 12:45:16 2025 kern.err kernel: [153429.534288] r8152-cfgselector 4-1: Failed to read 4 bytes at 0xb400/0x0133 (-110)
Tue Mar  4 12:45:17 2025 kern.info kernel: [153429.694137] r8152-cfgselector 4-1: reset SuperSpeed USB device number 2 using xhci-hcd
Tue Mar  4 12:45:17 2025 kern.warn kernel: [153429.751899] r8152 4-1:1.0 eth1: Tx status -108
Tue Mar  4 12:45:17 2025 kern.warn kernel: [153429.752365] r8152 4-1:1.0 eth1: Tx status -108
Tue Mar  4 12:45:17 2025 kern.warn kernel: [153429.752771] r8152 4-1:1.0 eth1: Tx status -108
Tue Mar  4 12:45:17 2025 kern.warn kernel: [153429.753174] r8152 4-1:1.0 eth1: Tx status -108
Tue Mar  4 12:45:17 2025 kern.notice kernel: [153429.761768] r8152 4-1:1.0 eth1: Promiscuous mode enabled
Tue Mar  4 12:45:17 2025 kern.info kernel: [153429.950075] r8152-cfgselector 4-1: reset SuperSpeed USB device number 2 using xhci-hcd
Tue Mar  4 12:45:17 2025 kern.notice kernel: [153429.987288] r8152 4-1:1.0 eth1: Promiscuous mode enabled

its always the same:

r8152 4-1:1.0 eth1: eth1: NETDEV WATCHDOG: CPU: 2: transmit queue 0 timed out 5610 ms
r8152 4-1:1.0 eth1: Tx timeout
r8152 4-1:1.0 eth1: Tx status -2
r8152 4-1:1.0 eth1: Tx status -2
r8152 4-1:1.0 eth1: Tx status -2
r8152 4-1:1.0 eth1: Tx status -2
r8152-cfgselector 4-1: reset SuperSpeed USB device number 2 using xhci-hcd
r8152 4-1:1.0 eth1: Promiscuous mode enabled