I have a Dell Latitude 5420 laptop with LMDE, running kernel 6.1.0-12. This laptop has a builtin I219-LM ethernet controller that I can see via lspci. Some research indicates that this needs the e1000e kernel module, so I grabbed it from Intel, compiled it, and installed it. There were some complaints during the compilation, but nothing more than the average compilation process. Plus, it shows up in lsmod. Afterwards, lspci -vv
displays it with the e1000e driver:
0000:00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (13) I219-LM (rev 20)
Subsystem: Dell Ethernet Connection (13) I219-LM
Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 16
IOMMU group: 15
Region 0: Memory at a6100000 (32-bit, non-prefetchable) [size=128K]
Capabilities: [c8] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=1 PME-
Capabilities: [d0] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Kernel modules: e1000e
However, when I do lshw
, it is listed as unclaimed:
*-network:1 UNCLAIMED
description: Ethernet controller
product: Ethernet Connection (13) I219-LM
vendor: Intel Corporation
physical id: 1f.6
bus info: pci@0000:00:1f.6
version: 20
width: 32 bits
clock: 33MHz
capabilities: pm msi cap_list
configuration: latency=0
resources: memory:a6100000-a611ffff
…and of course, it’s still not showing in ifconfig. So, where do I go from here? Did I miss anything obvious?
And just for the record, I know that the ethernet port is working. It worked fine in Win11 before wiped the PC completely.
Is the module loaded?
Derp, I don’t think I ever did a modprobe. Anyway, I did an rmmod as I found out that there’s a newer version out, and I’m currently working on building the new version.
UPDATE: Newer version built, installed, and loaded.
Cool. Wondering if
dmesg
will give more detail as well, once the kmod is loaded. Let me know how it goes!Pretty much when you posted that, I found this in my dmesg:
[ 715.744332] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode [ 715.965683] e1000e 0000:00:1f.6: The NVM Checksum Is Not Valid [ 716.008541] e1000e: probe of 0000:00:1f.6 failed with error -5
Just for the record, I compared modinfo up against lspci, and the PCI ID matches, so the driver should work. Is it possible to ignore the NVM checksum and try anyway? Because any tool I can find that communicates with the EEPROM on a hardware level is made for msdos.
I had that issue for months. There is no real solution afaik. Apparently, reading the NVM checksum is just not possible on Linux with this chip. It always defaults to 0xFFFFFF I believe. In theory you could write some value, to reset it, but it gave me some permissions error. I resorted to get the source of the kernel, patch out the checking code, compile just the module and then install it. I created a PKGBUILD for it, and I’m currently trying to make it a DKMS package, so you don’t have to reboot first to manually rebuild it.
As you use Debian, you’ll need to create a manual compiling script, but here are my PKGBUILDs for reference: https://git.30p87.de/30p87/e1000e-nocksum-kerne Note that you need to swap out the kernel source link to the source of your current kernel version.
The current problem is, that you need to reboot to update to a new kernel version, which then means the custom driver will not work anymore, and you need an internet connection to rebuild it, as it will need the most recent kernel version. So never kernel update without wifi in reach.
I will first make it a DKMS package, to ease some of the pain, and then see if I can make it debian compatible.
Unfortunately this is uncharted territory for me. I did a quick web search though, and you aren’t alone. At least a few people have had the same problem before.