All posts
Technical4 min read

Ethernet Dead on Fedora, and the Cable Was Fine All Along

My ethernet stopped working on Fedora. Cable was fine, driver was fine, kernel could see the link. NetworkManager just never made a profile for it.

VA

Varun Agnihotri

Python, LLMs & Cybersecurity

Short version - if the tray icon shows a red X but ip link says LOWER_UP, stop blaming the cable. There's no connection profile.

Plugged the ethernet in, got the red X on the network icon in the tray. No internet, nothing.

First guess was the obvious one - bad cable or a dead port. Took the cable over to a friend's Windows laptop and it worked perfectly there. So the cable is fine, and something on my side is the problem.

Checking what the kernel actually sees

Before touching any config, I wanted to know whether Linux even knew the adapter existed.

ip link show
13: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
    altname enp3s0f3u1u4u3c2
    altname enx aabbccddeeff

Two things here that killed my "it's a driver problem" theory straight away.

UP and LOWER_UP together. UP just means the interface is administratively enabled. LOWER_UP is the one that matters - it means the driver is reporting a physical link, i.e. there is a cable plugged in and there's signal coming down it. If the cable or port were dead I'd have seen NO-CARRIER instead.

The other thing - enx aabbccddeeff as an altname. That naming scheme is what Fedora uses for USB-attached network adapters, built off the MAC. So this isn't a built-in NIC at all, it's a USB ethernet adapter. Didn't change the fix, but good to know.

So: hardware fine, driver loaded, link detected. Which leaves userspace.

The actual problem

nmcli device status
DEVICE        TYPE      STATE                   CONNECTION
wlo1          wifi      connected               <my-wifi>
lo            loopback  connected (externally)  lo
docker0       bridge    connected (externally)  docker0
eth0          ethernet  disconnected            --
p2p-dev-wlo1  wifi-p2p  disconnected            --

There it is. eth0 is disconnected, and the CONNECTION column is --.

That -- is the whole bug. NetworkManager knows the device exists, it just has no connection profile to activate on it. Nothing was broken, nothing was misconfigured - there was simply no config at all, so NM sat there doing nothing with a perfectly good link.

The fix

Made a profile for it:

nmcli connection add type ethernet ifname eth0 con-name eth0-wired

Ethernet started working immediately, before I ran anything else.

I did also run this after:

nmcli connection up eth0-wired

That did nothing. It was already up. New profiles get connection.autoconnect=yes by default, so the moment connection add created the profile, NetworkManager activated it on a device that was sitting there available and waiting. The connection up was me not trusting that it had worked.

Why there was no profile to begin with

Honestly, I don't know for sure.

Normally NetworkManager handles this itself - when it sees a wired device with no matching profile, it creates a default one (the "Wired connection 1" you've probably seen). That's the no-auto-default setting, and by default it's empty, meaning auto-create is on for everything.

So something stopped that from happening here. Could be a leftover config drop in /etc/NetworkManager/conf.d/, could be something about how the USB adapter hotplugs and when NM notices it. I didn't chase it further because the machine works and I had other things to do. If it happens again on a fresh plug-in I'll dig in properly.

The bit worth remembering

Most of the time I've lost to network problems on Linux has been from skipping the diagnosis and jumping to the fix. Reinstalling drivers, adding kernel params, restarting NetworkManager over and over. This one was two commands of reading before anything got changed.

What you seeWhat it means
NO-CARRIER in ip linkCable, port or adapter. Physical problem.
LOWER_UP + no interface listedDriver problem, kernel side.
LOWER_UP + -- in nmcliNo profile. This post.
LOWER_UP + profile, no IPDHCP or IP config. Different rabbit hole.
#FEDORA#LINUX#NETWORKMANAGER#TROUBLESHOOTING

/ written by Varun Agnihotri