익명 04:48

Intel I219-LM on Lenovo M90n-1 IoT detected in PCI but e1000e probe fails on Ubu...

Intel I219-LM on Lenovo M90n-1 IoT detected in PCI but e1000e probe fails on Ubuntu 24.04.3 LTS Server

Intel I219-LM on Lenovo M90n-1 IoT detected in PCI but e1000e probe fails on Ubuntu 24.04.3 LTS Server

I’m trying to use the second Ethernet port (Intel I219-LM) on a Lenovo ThinkCentre M90n-1 IoT running Ubuntu 24.04.3 LTS Server, but the NIC never initializes. The Realtek NIC works normally.

Ubuntu does detect the I219-LM in lspci, and the correct Intel driver (e1000e) loads, but the driver probe fails with error -2, and the interface never appears in ip a.


System

  • Model: Lenovo ThinkCentre M90n-1 IoT
  • BIOS: Latest available from Lenovo support website
  • OS: Ubuntu 24.04.3 LTS Server (fresh, clean install)
  • NIC Port 1: Realtek RTL8111/8168 → works
  • NIC Port 2: Intel I219-LM → detected by PCI but does not work

Diagnostic information

PCI device is detected:

lspci | grep -i i219
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (6) I219-LM (rev 30)

Driver module loads, but probe fails:

lsmod | grep e1000
e1000e                356352  0

sudo dmesg | grep -i e1000e
[    1.113767] e1000e: Intel(R) PRO/1000 Network Driver
[    1.114432] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    1.116625] e1000e 0000:00:1f.6: Interrupt Throttling Rate set to dynamic conservative mode
[    1.757815] e1000e: probe of 0000:00:1f.6 failed with error -2

Detailed PCI dump:

sudo lspci -vvv -s 00:1f.6

00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (6) I219-LM (rev 30)
  DeviceName: Onboard - Ethernet
  Subsystem: Lenovo Ethernet Connection (6) 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: 11
  Region 0: Memory at a1300000 (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

Only the Realtek NIC appears in ip a:

ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    ....
2: enp2s0:  mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ... brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.35/24 metric 100 brd 192.168.2.255 scope global dynamic enp2s0
       valid_lft 3565sec preferred_lft 3565sec
    inet6 .../64 scope link 
       valid_lft forever preferred_lft forever

Output shows:

  • lo
  • enp2s0 (Realtek RTL8111/8168 with a valid IPv4 address)

The Intel NIC never appears as an interface (normally it would be something like enp0s...).


What I have tried

  • Fresh reinstall of Ubuntu 24.04.3 LTS Server
  • Updated to latest Lenovo BIOS
  • Verified both NICs are enabled in BIOS
  • Swapped cables, ports, and switches
  • Booted with the Intel port connected and disconnected
  • Confirmed the e1000e kernel module is loaded

Behavior is always the same:

  • The Realtek NIC works perfectly.
  • The Intel I219-LM is visible in PCI, but e1000e fails to probe it and no network interface is created.

Additional test: Windows 10 works on the same hardware

To rule out hardware failure, I booted the exact same ThinkCentre M90n-1 IoT from a Windows 10 Pro portable USB with the Ethernet cable plugged only into the Intel I219-LM port (Realtek port unused):

  • Windows detected the Intel NIC.
  • It obtained an IP address via DHCP.
  • The machine was reachable on the LAN and had working network connectivity.

So:

  • The Intel I219-LM hardware and port are known-good.
  • BIOS configuration appears sufficient for the NIC to operate.
  • The failure seems specific to the Ubuntu 24.04.3 + in-kernel e1000e + Lenovo OEM NVM/firmware combination, not a physical or cabling issue.

Intel documentation

Intel’s official driver README for this NIC says:

  • I219-LM is supported
  • Ubuntu 24.04 LTS is supported

Intel also states:

“If you purchased an OEM-branded system, contact your OEM for an SW/FW version compatible with your exact NVM. Using mismatched SW/FW versions may affect performance or stability.”

This suggests Lenovo may use a Lenovo-specific NVM/firmware for the I219-LM on this model.


Question for AskUbuntu

  • Is this a known issue with the I219-LM on Ubuntu 24.04.3 LTS Server (kernel 6.8) on the ThinkCentre M90n-1 IoT?
  • Does the in-kernel e1000e driver need a different version or special module options for this OEM firmware/NVM?
  • Could this be caused by an Intel NVM or ME/UEFI firmware mismatch on this Lenovo platform?
  • How can I further debug what probe of 0000:00:1f.6 failed with error -2 actually means here?

Any help or pointers on getting the Intel I219-LM to initialize properly on this system would be greatly appreciated.



Top Answer/Comment:

I have resolved this issue. The root cause was PCIe Active State Power Management (ASPM) settings in the Linux kernel (6.8.x) interacting poorly with the I219-LM on this specific Lenovo hardware.

While the hardware is physically fine, the aggressive power management was preventing the e1000e driver from initializing the PHY correctly, leading to the probe failed with error -2.

The Solution

I had to disable PCIe ASPM via kernel boot parameters.

  1. Edited the GRUB configuration:

    sudo nano /etc/default/grub
    
  2. Updated the line containing GRUB_CMDLINE_LINUX_DEFAULT as below.

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pcie_aspm=off"
    
  3. Updated GRUB and rebooted:

    sudo update-grub
    sudo reboot
    

Verification

After rebooting, the error -2 in dmesg disappeared, and the kernel successfully bound the driver:

sudo dmesg | grep e1000e
[    1.081884] e1000e: Intel(R) PRO/1000 Network Driver
[    1.081890] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    1.082244] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[    1.154540] e1000e 0000:00:1f.6 0000:00:1f.6 (uninitialized): registered PHC clock
[    1.217013] e1000e 0000:00:1f.6 eth1: (PCI Express:2.5GT/s:Width x1) 84:a9:38:3e:b5:cf
[    1.217020] e1000e 0000:00:1f.6 eth1: Intel(R) PRO/1000 Network Connection
[    1.217094] e1000e 0000:00:1f.6 eth1: MAC: 13, PHY: 12, PBA No: FFFFFF-0FF
[    1.291173] e1000e 0000:00:1f.6 eno1: renamed from eth1

Note on Ubuntu Server Configuration

After the driver loaded, the interface (eno1) appeared but remained in a DOWN state because Ubuntu Server (via Netplan) had not been configured for it yet. I had to add the interface to my Netplan config to get a DHCP address:

  1. Edited /etc/netplan/50-cloud-init.yaml.

  2. Added the new interface entry (pay attention to indentation):

    network:
      version: 2
      ethernets:
        enp2s0:
          dhcp4: true
        eno1:             # The new Intel interface
          dhcp4: true
          optional: true  # Prevents boot hangs if cable is unplugged
    
  3. Applied changes:

    sudo netplan apply
    

At this point, the server was on the LAN and had an IP address through a DHCP lease. So, the aggressive power management was indeed the root cause.

상단 광고의 [X] 버튼을 누르면 내용이 보입니다