Ethernet acting strange

Hello everyone, my ethernet is acting strange, I believe there is some sort of misconfiguration. A brief overview of the issue is that my speeds can change from anywhere between 10-300 mbps when testing via speedtest-cli. Originally, my motherboard network adapter was having issues so I decided to try an Amazon Basics Gigabit USB to Ethernet adapter which shows up as asix ax88179, trying to install this using yay -S asix-ax88179-dkms yields the following error.

==> ERROR: Missing 6.1.38-1-rt12-MANJARO kernel modules tree for module ax88179_178a-dkms/1.20.0.

Originally, the adapter was having many issues with the linux-zen kernel, so I booted into the default Manjaro kernel and installed usb-modeswitch, which changed the adapter from not showing up to showing up as “Auto Ethernet” in Network Manager.

Troubleshooting attempts:

  • Changing ethernet cable
  • Disabling ipv6 via network manager gui
  • Switching between static and DHCP addressing
  • Changing settings via ethtool gives “operation not supported”
  • Changing USB ports
  • Rebooting desktop
  • Restarting router
  • Disabling wifi
  • Changing DNS from ISP to Google
  • Giving highest priority to ethernet

Output of inxi -Fazy:

System:
  Kernel: 6.1.38-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 13.1.1
    parameters: BOOT_IMAGE=/boot/vmlinuz-6.1-x86_64
    root=UUID=1ba4d656-0eca-404c-9852-f78c990aa705 rw quiet splash apparmor=1
    security=apparmor udev.log_priority=3
  Desktop: Xfce v: 4.18.1 tk: Gtk v: 3.24.36 info: xfce4-panel wm: xfwm
    v: 4.18.0 vt: 7 dm: LightDM v: 1.32.0 Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Desktop Mobo: Gigabyte model: B550M DS3H AC
    serial: <superuser required> BIOS: American Megatrends LLC. v: FDa
    date: 07/18/2023
CPU:
  Info: model: AMD Ryzen 9 5900X bits: 64 type: MT MCP arch: Zen 3+ gen: 4
    level: v3 note: check built: 2022 process: TSMC n6 (7nm) family: 0x19 (25)
    model-id: 0x21 (33) stepping: 2 microcode: 0xA20120A
  Topology: cpus: 1x cores: 12 tpc: 2 threads: 24 smt: enabled cache:
    L1: 768 KiB desc: d-12x32 KiB; i-12x32 KiB L2: 6 MiB desc: 12x512 KiB
    L3: 64 MiB desc: 2x32 MiB
  Speed (MHz): avg: 3239 high: 4716 min/max: 2200/4950 boost: enabled
    scaling: driver: acpi-cpufreq governor: schedutil cores: 1: 3771 2: 2200
    3: 3784 4: 4714 5: 3758 6: 3775 7: 2872 8: 3583 9: 2873 10: 3581 11: 2875
    12: 2200 13: 3773 14: 3771 15: 2200 16: 4716 17: 3773 18: 2200 19: 2874
    20: 3591 21: 2875 22: 3592 23: 2200 24: 2200 bogomips: 177340
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
  Vulnerabilities:
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: retbleed status: Not affected
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Retpolines, IBPB: conditional, IBRS_FW,
    STIBP: always-on, RSB filling, PBRSB-eIBRS: Not affected
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: AMD Navi 21 [Radeon RX 6950 XT] vendor: Tul / PowerColor
    driver: amdgpu v: kernel arch: RDNA-2 code: Navi-2x process: TSMC n7 (7nm)
    built: 2020-22 pcie: gen: 4 speed: 16 GT/s lanes: 16 ports:
    active: HDMI-A-1 empty: DP-1,DP-2,DP-3 bus-ID: 08:00.0 chip-ID: 1002:73a5
    class-ID: 0300
  Display: x11 server: X.Org v: 21.1.8 compositor: xfwm v: 4.18.0 driver: X:
    loaded: amdgpu unloaded: modesetting,radeon alternate: fbdev,vesa
    dri: radeonsi gpu: amdgpu display-ID: :0.0 screens: 1
  Screen-1: 0 s-res: 1920x1080 s-dpi: 96 s-size: 508x285mm (20.00x11.22")
    s-diag: 582mm (22.93")
  Monitor-1: HDMI-A-1 mapped: HDMI-A-0 model: 24G1H built: 2022
    res: 1920x1080 dpi: 93 gamma: 1.2 size: 527x296mm (20.75x11.65")
    diag: 604mm (23.8") ratio: 16:9 modes: max: 1920x1080 min: 720x400
  API: OpenGL v: 4.6 Mesa 23.0.4 renderer: AMD Radeon RX 6950 XT (navi21
    LLVM 15.0.7 DRM 3.49 6.1.38-1-MANJARO) direct-render: Yes
Audio:
  Device-1: AMD Navi 21/23 HDMI/DP Audio driver: snd_hda_intel v: kernel pcie:
    gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 08:00.1 chip-ID: 1002:ab28
    class-ID: 0403
  Device-2: AMD Starship/Matisse HD Audio vendor: Gigabyte
    driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16
    bus-ID: 0a:00.4 chip-ID: 1022:1487 class-ID: 0403
  API: ALSA v: k6.1.38-1-MANJARO status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
  Server-2: JACK v: 1.9.22 status: off tools: N/A
  Server-3: PipeWire v: 0.3.74 status: off tools: pw-cli
  Server-4: PulseAudio v: 16.1 status: active with: pulseaudio-alsa
    type: plugin tools: pacat,pactl,pavucontrol
Network:
  Device-1: Realtek RTL8821CE 802.11ac PCIe Wireless Network Adapter
    vendor: AzureWave driver: rtw_8821ce v: N/A modules: rtw88_8821ce pcie:
    gen: 1 speed: 2.5 GT/s lanes: 1 port: f000 bus-ID: 04:00.0
    chip-ID: 10ec:c821 class-ID: 0280
  IF: wlo1 state: down mac: <filter>
  Device-2: ASIX AX88179 Gigabit Ethernet driver: cdc_ncm type: USB rev: 2.1
    speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 3-2:8 chip-ID: 0b95:1790
    class-ID: 0a00 serial: <filter>
  IF: enp10s0f3u2c2 state: up speed: 1000 Mbps duplex: half mac: <filter>
Bluetooth:
  Device-1: IMC Networks Bluetooth Radio driver: btusb v: 0.8 type: USB
    rev: 1.1 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-9:3 chip-ID: 13d3:3533
    class-ID: e001 serial: <filter>
  Report: rfkill ID: hci0 rfk-id: 1 state: up address: see --recommends
Drives:
  Local Storage: total: 11.83 TiB used: 2.64 TiB (22.3%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Crucial model: CT4000P3SSD8
    size: 3.64 TiB block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s
    lanes: 4 tech: SSD serial: <filter> fw-rev: P9CR30A temp: 41.9 C
    scheme: GPT
  ID-2: /dev/sda maj-min: 8:0 vendor: SanDisk model: Extreme 55AE
    size: 3.64 TiB block-size: physical: 512 B logical: 512 B type: USB rev: 2.1
    spd: 480 Mb/s lanes: 1 mode: 2.0 tech: N/A serial: <filter> fw-rev: 307F
    scheme: GPT
  ID-3: /dev/sdb maj-min: 8:16 vendor: Western Digital
    model: WD50NMZW-59A8NS1 size: 4.55 TiB block-size: physical: 4096 B
    logical: 512 B type: USB rev: 3.1 spd: 5 Gb/s lanes: 1 mode: 3.2 gen-1x1
    tech: HDD rpm: 5400 serial: <filter> fw-rev: 5002 scheme: GPT
Partition:
  ID-1: / raw-size: 3.64 TiB size: 3.58 TiB (98.40%) used: 44.42 GiB (1.2%)
    fs: ext4 dev: /dev/nvme0n1p1 maj-min: 259:1
Swap:
  Alert: No swap data was found.
Sensors:
  System Temperatures: cpu: 70.2 C mobo: N/A gpu: amdgpu temp: 55.0 C
    mem: 56.0 C
  Fan Speeds (RPM): N/A gpu: amdgpu fan: 0
Info:
  Processes: 457 Uptime: 1h 6m wakeups: 0 Memory: total: 32 GiB
  available: 31.27 GiB used: 6.45 GiB (20.6%) Init: systemd v: 253
  default: graphical tool: systemctl Compilers: gcc: 13.1.1 clang: 15.0.7
  Packages: 1408 pm: pacman pkgs: 1401 libs: 481 tools: pamac,yay pm: flatpak
  pkgs: 7 Shell: Bash v: 5.1.16 running-in: xfce4-terminal inxi: 3.3.28

My guess is that the driver needs to be changed from cdc_ncm but I am having issues installing or building via the the Asix site or AUR. Any and all help is appreciated, thanks in advance for your inputs.

Edits:

  • Building from ASIX dkms says the module is already built for the Manjaro kernel

This indicates an RT kernel, not the regular one.

Is there a way to change drivers using the regular kernel since it says the module is already built for the current kernel? I am uneasy about switching to rt.

The problem is that you are using an RT kernel.
Or so that output makes it appear.
What is the output of:

mhwd-kernel -li

Output of mhwd-kernel -li

Currently running: 6.1.38-1-MANJARO (linux61)
The following kernels are installed in your system:
   * linux61

OK, doesnt look RT there.
Maybe also check

pacman -Qs linux61

Also though looking at the AUR package it seems a bit old with a few comments about other releases or patches left there.
https://aur.archlinux.org/packages/asix-ax88179-dkms

Usually there is no extra driver needed (or DKMS). See this:

modinfo ax88179_178a

Should show the module.

Maybe try this temporary:

# Unplug the device
# Unload the module:
sudo modprobe -rv cdc_ncm
# Load this module:
sudo modprobe -v ax88179_178a
# Plugin the device
# Check which driver is loaded:
inxi -Nazy

That is pretty normal when the usb device is connected via USB2 Port and not USB3. It will be limited to 480 MB/s shared by all devices on that internal hub. If 2 devices plugged in, then you will get half of the speed, if 3 are connected, then you get a third of the speed. Understandable?

The modinfo command shows the module. As for the module unloading command, I could not unload cdc_ncm so i unloaded cdc_mbim by following output of lsmod | grep cdc_ncm.

I have moved my usb hub to the case USB 3 port, and the adapter to an empty column of usb 3 ports on the back of my motherboard. The correct drivers are loaded, but now there is an issue connecting to it from the network manager.

When using the cdc_ncm driver the device was listed as usb 3.0 5gb/s with blinking orange light:

  Device-2: ASIX AX88179 Gigabit Ethernet driver: cdc_ncm type: USB rev: 3.2
    speed: 5 Gb/s lanes: 1 mode: 3.2 gen-1x1 bus-ID: 4-4:41 chip-ID: 0b95:1790
    class-ID: 0a00 serial: <filter>

When using the ASIX driver, the device is listed as follows with a blinking white light from the adapter:

  Device-2: ASIX AX88179 Gigabit Ethernet driver: ax88179_178a type: USB
    rev: 2.1 speed: 480 Mb/s lanes: 1 bus-ID: 3-4:27 chip-ID: 0b95:1790
    class-ID: 0a00 serial: 00000000000001
  IF: enp10s0f3u4c2 state: down mac: 6a:5d:76:0c:0f:93
  IF-ID-1: enp10s0f3u4c2i1 state: down mac: b6:c8:b3:7c:21:80

Both IF-IDs show as disconnected in the network manager.

sudo usb_modeswitch -v 0b95 -p 1790 -R yielded no results, vendor and product IDs stayed the same

Look for default devices ...
 Found devices in default mode (1)
Access device 027 on bus 003
Get the current device configuration ...
Current configuration number is 2
Use interface number 0
 with class 2
Warning: no switching method given. See documentation
Reset USB device .
 Device was reset
-> Run lsusb to note any changes. Bye!

There is a comment discussing a newer driver from the sites website, from a user on the dkms page

The latest ax_usb_nic driver seems to solve the stability issue for me. I was able to run the adapter a few days without disconnections, and it also does not crash under heavy load (iperf3 bidirectional test).

The new driver can be downloaded at ASIX Electronics Corporation
Choose AX88179A (not AX88179) when you download the driver, and the version I downloaded was v1.0.0 release on 2022-07-26 (ASIX_USB_NIC_Linux_Driver_Source_v1.0.0_20220726.tar.bz2). The driver is intended for the newer AX88179A chip but it also works for the older AX88179 chip. I can directly compile it on kernel 5.15 (Ubuntu 22.04) without any additional modification. The compiled driver ax_usb_nic.ko works much better in terms of stability compared to the older ax88179_178a driver.

One minor issue with the newer ax_usb_nic driver is that it does not support jumbo frames due to a minor bug. It can be easily fixed by adding a line “axdev->netdev->max_mtu = 4088;” to ax88179_bind() in ax88179_178a.c and then you can use MTU up to 4088.

When compiling using the readme file given on the site, using kernel 5.x LTS, the driver builds successfully and can be loaded, however the speed is 10mbps and the adapter shows both the orange and white lights steady when plugged into a usb 3 port.

The fastest shown speed is 500mbps on cdc_ncm using speedtest-cli, would there be any further recommendations to increase this closer to my 2.5gbps advertised for router? I also cannot enable duplex from the Network Manager gui, it always shows half in inxi -Faxy no matter what setting i choose.

some aspects to consider:

  • tools like speedtest we-dont-know-what, they go to an remote cloud service. So what they measure depends on the current load of the network and the load of the remote service. Thus, its always an estimation. You should repeat tests at different times
  • your on-board Eth has 1 Gbps if i read this correctly, so you can’t get more
  • during the test, your machine must also be without other CPU load

In general a good tool to analyse Eth problems is ‘ethtool’, although it doesn’t measure performance. Maybe install it and post the output.
Another idea would be to do tests in your local network if you have another machine, can be done with e.g., iperf3

What is the up/down rate of your Internet access? Did i overlook that?

HP