Dlink DUB-E250 2.5Gbps ethernet adapter reports no auto-negotiation and only half duplex?

n1nj4888

Well-Known Member
Jan 13, 2019
162
22
58
45
Hi All,

Thought I'd try a couple of Dlink DUB-250 USB 2.5Gbps ethernet adapters (on two different proxmox nodes) but both only seem to connect at half duplex and both report auto-negotiation is not supported/enabled yet the dlink website suggests they should support this (https://www.dlink.com/en/products/dub-e250-usb-c-to-25g-ethernet-adapter)

I've tried both the latest 5.13 kernel (below on node pve-host1) and the test 5.15 kernel (below on node pve-host2) but both show the same results.

5.13 kernel (pve-host1)
Code:
root@pve-host1:~# uname -a; ethtool enxa8637d315c68
Linux pve-host1 5.13.19-2-pve #1 SMP PVE 5.13.19-4 (Mon, 29 Nov 2021 12:10:09 +0100) x86_64 GNU/Linux
Settings for enxa8637d315c68:
        Supported ports: [  ]
        Supported link modes:   Not reported
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 2500Mb/s
        Duplex: Half
        Auto-negotiation: off
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        MDI-X: Unknown
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

5.15 kernel (pve-host2)
Code:
root@pve-host2:~# uname -a; ethtool enxa8637d315c60
Linux pve-host2 5.15.5-1-pve #1 SMP PVE 5.15.5-1 (Mon, 29 Nov 2021 18:49:57 +0100) x86_64 GNU/Linux
Settings for enxa8637d315c60:
        Supported ports: [  ]
        Supported link modes:   Not reported
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 2500Mb/s
        Duplex: Half
        Auto-negotiation: off
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        MDI-X: Unknown
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

Could it be that the kernel does not fully support this adapter? Is there any way of forcing it to auto-negotiate / full-duplex? I tried at the command line to force auto-negotiate / full-duplex and got the following errors (on both nodes/kernel versions):

Code:
root@pve-host1:~# ethtool -s enxa8637d315c68 autoneg on
netlink error: Operation not supported
root@pve-host1:~# ethtool -s enxa8637d315c68 duplex full
netlink error: Operation not supported

Thanks!
 
To add to this, I also tried a similar Ugreen 2.5Gbps USB Ethernet NIC and saw the same issues as above... Both the Ugreen USB NIC and the DLink DUB-E250 USB NIC use the same Realtek 8156 based chipset and on both Linux PVE Kernel 5.13 and 5.15 they are seemingly using a "cdc"ncm" driver.

Shouldn't the Realtek r8125 driver be used for this USB NIC, which I understand should support the 8156/8156B chipset since Linux Kernel 5.13 (https://www.phoronix.com/scan.php?page=news_item&px=Realtek-RTL8153-RTL8156-Linux)?

PVE Kernel 5.13.19-2-pve
Code:
root@pve-host1:~# ethtool -i enxa8637d315c68
driver: cdc_ncm
version: 5.13.19-2-pve
firmware-version: CDC NCM
expansion-rom-version:
bus-info: usb-0000:6c:00.0-1
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

PVE Kernel 5.15.5-1-pve
Code:
root@pve-host2:~# ethtool -i enx2c16dba701ca
driver: cdc_ncm
version: 5.15.5-1-pve
firmware-version: CDC NCM
expansion-rom-version:
bus-info: usb-0000:6c:00.0-1
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
 
I'm facing the same issue - I thought the RTL8156 drivers were in 5.13 onwards. Should Proxmox automatically use those?
 
That's not the official code/repo - I wouldn't trust a random mirror on GitHub.

Also - the 'proper' driver, as I say, has been upstreamed.

Finally, I did try to build from Realtek source, and it made no difference.
 
FYI for anyone else with a RTL8156/RTL8156B USB to 2.5G Ethernet adapter I found that the problem was while there is the realtek driver now in the Linux kernel (currently running Proxmox with v5.15), it seems the cdc_ncm is being loaded for the USB Adapters. You'll notice that the adatper only syncs at 2.5G Half Duplex not full. The Realtek driver download includes a 50-usb-realtek-net.rules file that should be placed in /etc/udev/rules.d/. Rebooting the host or unloading the cdc_ncm driver fixes the problem and picks up the right driver (no need to install/build the RTL drivers) and these now work with bridges/VLANs - also looks like it works with LACP (802.3ad)..!

Steps:
nano /etc/udev/rules.d/50-usb-realtek-net.rules

Copy the below contents.

Code:
# This is used to change the default configuration of Realtek USB ethernet adapters

ACTION!="add", GOTO="usb_realtek_net_end"
SUBSYSTEM!="usb", GOTO="usb_realtek_net_end"
ENV{DEVTYPE}!="usb_device", GOTO="usb_realtek_net_end"

# Modify this to change the default value
ENV{REALTEK_MODE1}="1"
ENV{REALTEK_MODE2}="3"

# Realtek
ATTR{idVendor}=="0bda", ATTR{idProduct}=="815[2,3,5,6]", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="0bda", ATTR{idProduct}=="8053", ATTR{bcdDevice}=="e???", ATTR{bConfigurationValue}!="$env{REALTEK_MODE2}", ATTR{bConfigurationValue}="$env{REALTEK_MODE2}"

# Samsung
ATTR{idVendor}=="04e8", ATTR{idProduct}=="a101", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"

# Lenovo
ATTR{idVendor}=="17ef", ATTR{idProduct}=="304f", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3052", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3054", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3057", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3062", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3069", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3082", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3098", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="7205", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="720a", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="720b", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="720c", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="7214", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="721e", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="8153", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="a359", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"
ATTR{idVendor}=="17ef", ATTR{idProduct}=="a387", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"

# TP-LINK
ATTR{idVendor}=="2357", ATTR{idProduct}=="0601", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"

# Nvidia
ATTR{idVendor}=="0955", ATTR{idProduct}=="09ff", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"

# LINKSYS
ATTR{idVendor}=="13b1", ATTR{idProduct}=="0041", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"

LABEL="usb_realtek_net_end"

Then reboot or run:

Code:
sudo rmmod cdc_mbim
sudo rmmod cdc_ncm
service udev restart
 
Last edited:
Yes this is worth trying. I think that adapter is the RTL8125 chipset - you should be able to find out with lsusb. I assume the driver for this is in the latest kernel.

All you need to do is download the right drivers from Realtek and copy out the udev rules file. You may need to add your vendor and product if to the udev rules file. This other driver has mapped some of these IDs https://github.com/bb-qq/r8152/comm...bff23b78c8eb5baf65ad905508ad437a00f6026b8d530
 
Last edited:
FYI for anyone else with a RTL8156/RTL8156B USB to 2.5G Ethernet adapter I found that the problem was while there is the realtek driver now in the Linux kernel (currently running Proxmox with v5.15), it seems the cdc_ncm is being loaded for the USB Adapters. You'll notice that the adatper only syncs at 2.5G Half Duplex not full. The Realtek driver download includes a 50-usb-realtek-net.rules file that should be placed in /etc/udev/rules.d/. Rebooting the host or unloading the cdc_ncm driver fixes the problem and picks up the right driver (no need to install/build the RTL drivers) and these now work with bridges/VLANs - also looks like it works with LACP (802.3ad)..!
Hi,

this didn't work for me unfortunately. I'm fairly new to Proxmox but I understood that I have to place the file on my Proxmox host under /etc/udev/rules.d/ , reboot it and pass through the USB nic to the VM right?
So that's what I did (VM is Ubuntu Server 22.04) but I still can't change autonegotiation nor duplex.


sudo ethtool -s enx7898e8fd7b2a duplex full
netlink error: Operation not supported

Settings for enx7898e8fd7b2a:
Supported ports: [ ]
Supported link modes: Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: Unknown!
Duplex: Half
Auto-negotiation: off
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
MDI-X: Unknown
Current message level: 0x00000007 (7)
drv probe link




My Host:
proxmox-ve: 7.2-1 (running kernel: 5.15.30-2-pve)


Is there anything else I could do? Thanks in advance!
 
Last edited:
Hi,

this didn't work for me unfortunately. I'm fairly new to Proxmox but I understood that I have to place the file on my Proxmox host under /etc/udev/rules.d/ , reboot it and pass through the USB nic to the VM right?
So that's what I did (VM is Ubuntu Server 22.04) but I still can't change autonegotiation nor duplex.


sudo ethtool -s enx7898e8fd7b2a duplex full
netlink error: Operation not supported

Settings for enx7898e8fd7b2a:
Supported ports: [ ]
Supported link modes: Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: Unknown!
Duplex: Half
Auto-negotiation: off
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
MDI-X: Unknown
Current message level: 0x00000007 (7)
drv probe link




My Host:
proxmox-ve: 7.2-1 (running kernel: 5.15.30-2-pve)


Is there anything else I could do? Thanks in advance!
To be clear I’ve only tested this on the proxmox host itself - if you are doing USB pass through presumably you’d need to setup the drivers on the VM.

AFAIK USB passthrough is very bandwidth limited so not sure why you’d try this with a 2.5Gb adapter - for any speed you’d be better passing through the whole pcie usb controller to the VM (again you still need to install the drivers on the VM).

Is there a reason you need to pass the usb hardware device through?
 
To be clear I’ve only tested this on the proxmox host itself - if you are doing USB pass through presumably you’d need to setup the drivers on the VM.

AFAIK USB passthrough is very bandwidth limited so not sure why you’d try this with a 2.5Gb adapter - for any speed you’d be better passing through the whole pcie usb controller to the VM (again you still need to install the drivers on the VM).

Is there a reason you need to pass the usb hardware device through?

Thanks for your quick reply!

Yes, there is. I'm running proxmox on my Intel NUC which has amazing performance for its size but it lacks 2,5gbe (8th gen). So I'm unable to pass through a pcie card because there ain't any.
I will try to install the realtek drivers on the VM and see if that helps!

PS: The Ubuntu VM accesses my NAS which has 10gbe.
 
Last edited:
Thanks for your quick reply!

Yes, there is. I'm running proxmox on my Intel NUC which has amazing performance for its size but it lacks 2,5gbe (8th gen). So I'm unable to pass through a pcie card because there ain't any.
I will try to install the realtek drivers on the VM and see if that helps!

PS: The Ubuntu VM accesses my NAS which has 10gbe.
No worries. Funny, I have a nuc9 with two of these usb adapters and bond them in the network settings on the proxmox host itself (bonding is via a managed switch that’s supports lacp) - that way any VMs can take advantage of the full speed and I have failover. I use the inbuilt gbe network for out of band pve management. I also have 10Gbe NAS and run multiple VMs on iscsi mounts, again with the 2.5G adapter on the host…

FYI - The USB controller on the NUC is most likely connected to the PCIe bus (PCIe doesn’t just need to be a physical card). Use lsusb. See https://forum.proxmox.com/threads/odd-usb-passthrough-issue.93474/
 
Last edited:
No worries. Funny, I have a nuc9 with two of these usb adapters and bond them in the network settings on the proxmox host itself (bonding is via a managed switch that’s supports lacp) - that way any VMs can take advantage of the full speed and I have failover. I use the inbuilt gbe network for out of band pve management. I also have 10Gbe NAS and run multiple VMs on iscsi mounts, again with the 2.5G adapter on the host…

FYI - The USB controller on the NUC is most likely connected to the PCIe bus (PCIe doesn’t just need to be a physical card). Use lsusb. See https://forum.proxmox.com/threads/odd-usb-passthrough-issue.93474/

Great to hear that I'm not the only one :D.
I passed trough the corresponding PCIE bus and installed the realtek drivers RTL8156 using make install. I also copied the 50-usb-realtek-net.rules to the VMs /etc/udev/rules.d directory but still no luck unfortunately.


Settings for enx7898e8fd7b2a:
Supported ports: [ ]
Supported link modes: Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: Unknown!
Duplex: Half
Auto-negotiation: off
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
MDI-X: Unknown
Current message level: 0x00000007 (7)
drv probe link
Link detected: no
 
Great to hear that I'm not the only one :D.
I passed trough the corresponding PCIE bus and installed the realtek drivers RTL8156 using make install. I also copied the 50-usb-realtek-net.rules to the VMs /etc/udev/rules.d directory but still no luck unfortunately.


Settings for enx7898e8fd7b2a:
Supported ports: [ ]
Supported link modes: Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: Unknown!
Duplex: Half
Auto-negotiation: off
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
MDI-X: Unknown
Current message level: 0x00000007 (7)
drv probe link
Link detected: no
What does inxi -n or lsusb say the driver is?

Have you tried to remove the ncm driver?

sudo rmmod cdc_mbim
sudo rmmod cdc_ncm

Can you get it working on the proxmox host first?

What is your kernel version?
 
Last edited:
What does inxi -n or lsusb say the driver is?

Have you tried to remove the ncm driver?

sudo rmmod cdc_mbim
sudo rmmod cdc_ncm

Can you get it working on the proxmox host first?

Tried remove the ncm driver but still no luck unfortunately.
After "sudo rmmod cdc_ncm" inxi-n says "USB driver:none", after a reboot:

inxi -n:
Device-3: D-Link DUBE250 2.5GbE Adapter type: USB driver: cdc_ncm

lsusb:
Bus 003 Device 002: ID 2001:b301 D-Link Corp. DUBE250 2.5GbE Adapter


How can I get it working on the proxmox host? I don't see the interface under Network in the GUI.

PS:
Dmesg from the host returns:
[ 2.289276] usb 4-1: new SuperSpeed USB device number 2 using xhci_hcd
[ 2.310472] usb 4-1: New USB device found, idVendor=2001, idProduct=b301, bcdDevice=31.00
[ 2.310475] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6
[ 2.310476] usb 4-1: Product: DUBE250 2.5GbE Adapter
[ 2.310477] usb 4-1: Manufacturer: D-Link
[ 2.310478] usb 4-1: SerialNumber: 001000001
 
Last edited:
What does ethtool -i en..name…usb… show

This is on my proxmox host. Make sure you install the latest updates for proxmox (if you don’t have an enterprise proxmox license be sure to add the community repo and remove enterprise from your apt sources list ‘deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription’) and do a ‘apt dist-upgrade’.

Assume you have also setup intel iommu https://pve.proxmox.com/wiki/Pci_passthrough
Code:
> ethtool -i enx0.......
driver: r8152
version: v1.12.13
firmware-version: rtl8156a-2 v1 04/15/21
expansion-rom-version:
bus-info: usb-0000:38:00.0-2
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
 
Last edited:
Looking at the udev rules this may not work you might want to add a line to the rules copying the realtek 8152 line replacing with the dlink ids: idVendor=2001, idProduct=b301, bcdDevice=31.00 (I assume this is using the Realtek chipset)? Does dlink provide Linux drivers?

Adding something like to the udev rules file should work:
Code:
…

# DLINK
ATTR{idVendor}=="2001", ATTR{idProduct}=="b301", ATTR{bConfigurationValue}!="$env{REALTEK_MODE1}", ATTR{bConfigurationValue}="$env{REALTEK_MODE1}"

…
LABEL="usb_realtek_net_end"

Looks like not all of these adapters are in the default udev from Realtek. Both Asus and DLink are missing. https://github.com/bb-qq/r8152/comm...bff23b78c8eb5baf65ad905508ad437a00f6026b8d530
 
Last edited:
Thanks!
I installed the latest updates (non enterprise) and removed the enterprise line.
I also configured intel iommu and it works as my VM is able use the intel uhd graphics for plex hardware transcoding.

I removed the PCIe bus from the VM and rebooted the host. The host shows the interface but ethtool shows only half duplex.

When adding the lines you provided to the 50-usb-realtek-net.rules the network interface disappears after a reboot..

Dlink itself does not seem to provide drivers. I have another 2,5gbe adapter at home. I will give it a try..
 
So it works right out of the box with another adapter (Club 3D CAC-1420).
Thanks again for your help!
 
  • Like
Reactions: nem

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!