Ethernet expansion card photos, quick start guide, benchmarking

I could be wrong. It’s very hard to measure power consumption with powerTOP, it’s drifting all over the place. I tried to measure it over a period of several minutes, noting the reading whenever it changed (looks like every 30 seconds or so). I used the minimum reading over that time frame.

Just got mine today and it worked for thirty seconds, then stopped.

Known good cable (its stolen from my gaming rig). When I plug in, lights flicker for a second then go off.

Linux Mint 20.3
The device is visible in ifconfig:
enx9cbf0d00024b: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 9c:bf:0d:00:02:4b txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

I checked TLP and I already turned off USB disabling and no change in behavior after plugging in (TLP does also see the device):

Bus 002 Device 006 ID 0bda:8156 control = auto, autosuspend_delay_ms = 2000 – Realtek Semiconductor Corp. USB 10/100/1G/2.5G LAN (cdc_ncm)

Any insight?

What kernel? It would be 5.13 if I recall correctly, and there are updated drivers included in 5.17.

Try the updated drivers here: Realtek USB FE / GBE / 2.5G / 5G Ethernet Family Controller Software - REALTEK They’re very easy to install.

Before doing this, take a Timeshift backup to ensure you can walk back if it goes really badly.

1 Like

That worked!!! I was working through the list, but since it did in fact work for a period there I discounted drivers.

(And yes, still getting used to cutting edge technology, and not recycled parts I find on the side of the road :stuck_out_tongue: )

Thank you!!

3 Likes

Whew, glad that helped!

Hmm, my card doesn’t even show up as a device specifically if I attach it to either of the “closer to the front” 2/4 expansion ports (Fedora 36, kernel 5.19.9). No interface shows up under ip link / ifconfig, and if I attach to a 1 GbE switch, nothing happens.

Excerpt from journalctl -r

Sep 22 14:40:41 host kernel: usb usb2-port3: config error

...
Sep 22 14:40:21 host kernel: usb usb2-port3: Cannot enable. Maybe the USB cable is bad?
...
Sep 22 14:40:17 host kernel: usb 2-3: device not accepting address 9, error -71
Sep 22 14:40:17 host kernel: usb 2-3: Device not responding to setup address.
Sep 22 14:40:17 host kernel: usb 2-3: Device not responding to setup address.
Sep 22 14:40:15 host kernel: usb usb2-port3: attempt power cycle

Perhaps I have a hardware issue on those ports that other expansion cards haven’t made apparent before. With the other two ports, the link shows up, but no luck actually connecting to my router after testing with a few different cables.

Sep 22 14:56:56 host mtp-probe[7931]: bus: 2, device: 36 was not an MTP device
Sep 22 14:56:56 host mtp-probe[7931]: checking bus 2, device 36: "/sys/devices/pci0000:00/0000:00:0d.0/usb2/2-4"
Sep 22 14:56:56 host NetworkManager[1468]: <info>  [1663883816.3231] settings: (enp0s13f0u4c2): created default wired connection 'Wired connection 1'
Sep 22 14:56:56 host NetworkManager[1468]: <info>  [1663883816.3197] device (enp0s13f0u4c2): state change: unmanaged -> unavailable (reason 'managed', sys-iface-state: 'external')
Sep 22 14:56:56 host NetworkManager[1468]: <info>  [1663883816.3096] device (eth0): interface index 10 renamed iface from 'eth0' to 'enp0s13f0u4c2'
Sep 22 14:56:56 host kernel: cdc_ncm 2-4:2.0 enp0s13f0u4c2: renamed from eth0
...
Sep 22 14:56:55 host mtp-probe[7882]: bus: 2, device: 36 was not an MTP device
Sep 22 14:56:55 host mtp-probe[7882]: checking bus 2, device 36: "/sys/devices/pci0000:00/0000:00:0d.0/usb2/2-4"
Sep 22 14:56:55 host NetworkManager[1468]: <info>  [1663883815.6871] manager: (eth0): new Ethernet device (/org/freedesktop/NetworkManager/Devices/10)
Sep 22 14:56:55 host kernel: cdc_ncm 2-4:2.0 eth0: register 'cdc_ncm' at usb-0000:00:0d.0-4, CDC NCM, 9c:bf:0d:00:02:6f
Sep 22 14:56:55 host kernel: cdc_ncm 2-4:2.0: setting tx_max = 16384
Sep 22 14:56:55 host kernel: cdc_ncm 2-4:2.0: setting rx_max = 16384
Sep 22 14:56:55 host kernel: cdc_ncm 2-4:2.0: MAC-Address: 9c:bf:0d:00:02:6f
Sep 22 14:56:55 host kernel: usb 2-4: SerialNumber: 4013000001
Sep 22 14:56:55 host kernel: usb 2-4: Manufacturer: Realtek
Sep 22 14:56:55 host kernel: usb 2-4: Product: USB 10/100/1G/2.5G LAN
Sep 22 14:56:55 host kernel: usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=6
Sep 22 14:56:55 host kernel: usb 2-4: New USB device found, idVendor=0bda, idProduct=8156, bcdDevice=31.04
Sep 22 14:56:55 host kernel: usb 2-4: new SuperSpeed USB device number 36 using xhci_hcd

Anyone have thoughts on things to test?

It works normally on the other two positions? And those front two slots work for other devices like HDMI or USB-A?

So in the back two positions, the adapter is detected and actually registered as an ethernet device. It even gets an IPv6 address (probably through stateless autoconfiguration), but IPv4 DHCP never finishes. In the logs, it looks like the device basically keeps resetting but over a longer time window.

In the front two positions, the adapter isn’t properly probed as a USB device at all (the case shown in the first set of logs). The kernel just keeps power cycling it and attempting to probe it, but it eventually gives up. USB-A/C/1 TB storage module generally work fine in these front two ports. DisplayPort tends to give more issues in the front ports than the back ones, but I’ve also never really been able to get my dual-monitor setup to consistently work even if I only use the back ports (always have assumed it’s the cables or something because the kernel logs report link training issues).

For this ethernet adapter, I’ve tried enabling a debug kernel (dnf install kernel-debug), turning off secure boot to disable kernel lockdown, and enabling dynamic debug for the r8152 driver (echo 'file drivers/net/usb/r8152.c +p'>/sys/kernel/debug/dynamic_debug/control) to see if anything else shows in dmesg, but no new insights so far. Not sure if I need to be actually building a custom kernel image with #define DEBUG set in that driver file to actually get the dev_dbg statements. Also tried entirely disabling TLP in case there was some kind of USB power setting that it was messing with that caused issues.

To make things more confusing, in Windows basically all of my devices work. This ethernet adapter works out-of-the-box in all 4 ports, my DisplayPort connections are more reliable, etc. Are the drivers just more resilient in Windows perhaps? :upside_down_face:

Edit: I can also move this to a thread in the community support area if we want to keep this thread a bit more focused

And as one more update: in a Fedora 36 live USB (which boots with 5.17.5), the back two ports just work entirely fine, but the front two still have issues with probing & power cycling the device when it’s plugged in.

Is that idle power measured with an Ethernet cable plugged in and attached to a switch, or with just the module by itself? The numbers might well be different if the adapter goes into a low power mode if it’s not connected to anything.

That higher power consumption when doing a 2.5 GBe transfer probably isn’t all going to the Ethernet adapter. The CPU is also working harder. It’s likely that’s where most of the additional power is going, not the Ethernet adapter.

I’m not very worried about the in-use power numbers, whatever they may be, because connected to Ethernet but running on batteries is likely to be a rare use case. Most of the time when you’re connected to a wired network it will also be easy to plug in the charger. Standby power with the adapter plugged in matters more, because disconnecting the power and LAN and packing up the laptop is something that many of us will do.

I received mine today. Working perfectly so far, and it doesn’t even get warm to the touch in normal use. Can’t try it on a 2.5 GBe network because I don’t have any other equipment that runs at that speed, and I’d probably have to pull new cable to upgrade my house to higher speeds. It’s currently a mix of Cat 5 and Cat 5e in the walls; the only Cat 6 is some of the whips.

The in use power numbers do concern me a bit. My main reason for ordering the module is because when I’m connecting to Ethernet on a laptop I’m walking around to racks and switches to troubleshoot vs if stationary I’m using a dock

Plugged in and attached to a switch. I hadn’t thought of measuring it unplugged. Maybe I’ll try later this week.

I’ve finally gotten the expansion card in.

Is there an official driver I should use? Does/will Framework include this driver in their single .exe driver pack?

Windows defaulted to this driver in screenshot; dated from 2016! Does this this right or should I download from Realtek’s driver page?

Would it be possible for someone to explain how to install the Realtek driver?

I’m running Fedora 36 on 5.19. My Ethernet expansion card works. I tried it on another USBC laptop and it works immediately. I’ve also used it successfully with zero-config on my Framework 12th gen running Windsor 11, Fedora 37 Beta and Fedora 36 live-cd. For some reason, my installation of Fedora 36 won’t work with the Ethernet expansion card. I’m considering reinstalling 36 or installing beta 37 to try and get it to work. Other ethernet adapters work just fine with my current install, but for some reason it just won’t work on my install.

So, to get it working for debian 11, i had to download the firmare-realtek package from debian/sid, install that manually add the udev file from Realtek’s driver to /etc/udev/rules.d/50-usb-realtek-net.rules and now i have a happily working nic, whereas before it was sadness and repeat blinks. (also, used the wrong driver, cdc_ncm instead of realtek’s)

1 Like

JFYI, the ethernet expansion card works out-of-the-box with recent Haiku nightlies (at least for a couple of minutes) - fortunately, because for the installation to the internal SSD from an anyboot image which needed an update, the Intel AX210 was recognized but couldn’t find a single SSID out of 20+ near me (for some reason, it does after installation).

It’s provided as a .tar.bz2 compressed archive with source code inside.

Decompress it, get into the directory and:

./configure
make
make install

That’s for Linux Mint/Ubuntu/Debian, I think it should work for Fedora as well.

Also the ReadMe says:

For Fedora, you may have to run the following command after installing the
driver.

# dracut -f

For what it’s worth, I’ve done extensive power tests with powerstat. It does many samples (e.g. every 10 seconds over 5 minutes) after a settle down period, so you can really do good comparisons. My test procedure is basically:

xset 600 3 && sudo true && xbacklight -set 0 && sudo powerstat ; xbacklight -set 100

… that is:

  1. extend the timeout of the screen saver so it doesn’t affect tests
  2. prime the sudo password before disabling the backlight
  3. run the actual tests
  4. turn the backlight back on

You can run this test in your normal GUI, but I also recommend turning off everything you can to remove noise. Ideally, you’d run those tests in single-user mode (systemctl rescue + pkill -u 1000 or shutdown now if you’re not using systemd), but that makes it harder to control backlight.

At the very least make sure to remove all other modules first. Run a test without the module (to get a baseline) and with the module.

HTH!

1 Like