Intel I-226 SRKTV M.2 NIC never hands out DHCP on LAN on OPNsense 25.1

Started by Lil-cyb, May 09, 2025, 05:39:55 PM

Previous topic - Next topic
Hardware & Firmware

Host: Lenovo ThinkCentre M710q Tiny (Type 10MR)
 BIOS: M1AKT5AA (20 Mar 2025)
 Built-in NIC (em0): Intel I219-V SPT-H (1 GbE)
 M.2 NIC (igc0): Intel I226-SRKTV (2.5 GbE adapter in the Wi-Fi slot) Amazon link

OPNsense Version

 25.1 (amd64) installed on internal SSD (Crucial P3 Plus 500Gb)

---

## Problem Description

When I assign the built-in I219 (em0) to LAN, my laptop gets a 192.168.1.x DHCP lease immediately and I can browse to https://192.168.1.1.
When I instead assign the I226-SRKTV (igc0) to LAN:

 The firewall's LAN IP shows correctly as 192.168.1.1/24
 Clients never receive a DHCP lease
 The LAN LED (orange and green blinking)

In contrast, the I219 works flawlessly both as WAN (DHCP from Fritz!Box router) and as LAN (DHCP to clients).

---

 What I've Tried

1. Assigned interfaces via console menu (option 1), set igc0 as LAN, em0 as WAN, and vice versa.
2. Static LAN IP on igc0: 192.168.1.1/24, no gateway.
3. Toggled BIOS ASPM/EEE where available (none exposed for PCIe on M710q).
4. Disabled ASPM in `/boot/loader.conf.local`:

  ```
  hw.pci.enable_aspm="0" 
  ```
5. Disabled EEE via sysctl in `/etc/sysctl.conf`:

  ```
  dev.igc.0.no_eee=1 
  ```
6. Forced link mode at the CLI:

  ```shell
  ifconfig igc0 down 
  ifconfig igc0 media 2500baseTX mediaopt full-duplex 
  ifconfig igc0 up 
  ```

7. Factory reset (console option 4) and full reconfiguration.
8. Tried different cables, direct connect, and even an unmanaged 2.5 Gb switch—no change.

---

 What I Need Help With

1. Why does igc0 never hand out DHCP leases on LAN? Clients never see a carrier.
2. Has anyone used an Intel I226-SRKTV under FreeBSD/OPNsense? Does it require a special driver or firmware?
3. Are there hidden BIOS options (in UEFI Advanced menus) to disable PCIe power-management on the I226?
4. Any further tunables or driver settings that will force true 2.5 Gbps and enable DHCP on LAN?

Thank you for any pointers or config examples—happy to provide logs (`dmesg`, `ifconfig -a`, `/var/log/dhcpd.log`) or test drivers if needed!

All you've tried is on top of the driver.
You need to diagnose if the interface is being seen by the OS and a driver. Your post seems to suggest both it does and it doesn't.
So, does the nic get identified and the driver assigned to it? Simple, just see from ifconfig to begin with. If is igcX then yes.
Next is to see if there is activity on it. Is there? This is to not jump to diagnosing a service ie. dhcp
Also, regarding "force true 2.5 Gbps". What is it synced at? Is the other end of the cable on a 2.5 capable interface?
Welcome to the forum.

Edit: re-reading, I can see most are answered on OP - sorry. We need to move to diagnostics then.

What do you mean by "Clients never see a carrier"? If the hardware link is down, then probably your clients cannot communicate with the I226 - especially when you set the link speed to something specific that they do not support instead of auto.

It seems like the igc0 is detected by OpnSense, it should work right out of the box. You can see the link status via Interfaces: Overview on the OpnSense side - on your clients or on your switch, you should be able to see it via LED indicators.
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Sorry for the delay and thanks again for pointing me in the right direction.
And to give more context, I'm new to opnsense and I was following a tutorial on YT when I got this issue after a fresh installation.
I did update to the latest BIOS too just in case and still the same as before.
I just took the screenshots you asked for:

 1) `ifconfig igc0` output



You can see:

* flags: UP, BROADCAST, RUNNING, MULTICAST
* status: active
* media: Ethernet autoselect (1000baseT <full-duplex>) (Its connected to my laptop with an usb-c ethernet adapter which is 1gbps anyway)

So the FreeBSD `igc` driver definitely sees the I-226 and brings it up at 1 Gbps connected with the usb-c adapter.

---

 2) Interface assignment

from the initial setup screen when you pick the option to assign interfaces:



I confirmed:

* WAN → em0 (the Intel I219-V)
* LAN → igc0 (the Intel I226-SRKTV)

That matches what you recommended: proper mapping of em0 for upstream and igc0 for my LAN.

---

Next Steps?

At this point I'm convinced it's not a DHCP‐service issue, but rather a negotiation or driver quirk with the I-226 on FreeBSD. Any further suggestions would be hugely appreciated!

---

In the mean time, I looked it up for a new adapter on amazon, and I found someone (in the reviews of the product) using this new adapter (using the I210) on the same mini computer that I have (Lenovo M710q tiny), which might work but its 1gbps and not 2.5gpbs: new adapter link

Did you verify that the DHCP server is running and set up correctly (BTW: which one of the three available?)?
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

At this point, I'd use option 10 in the console menu with only LAN connected.
Plugging in a PC should show some activity, if only the broadcast DHCP discover from the client.

Thanks again for all the tips—here's a more detailed update that hopefully clears up the DHCP side:

---

 1) DHCP configuration

* With the built-in I219 (em0) as LAN, I never touched any DHCP settings at all—just plugged my laptop into the port and it always immediately got an IP.
* Switching LAN to the I226 (igc0), I tried exactly the same: straight cable connection, laptop set to DHCP. Nothing. No address.
* I then went into Services → DHCPv4 → LAN, explicitly enabled the server and defined a 192.168.1.100–200 pool, but igc0 still never handed out any leases.

 2) Link speed/duplex

* When I ran `ifconfig igc0`, it showed `media: Ethernet autoselect (1000baseT <full-duplex>) status: active`.
* That was fine for testing against my laptop's USB-C 1 Gbps adapter, but it still didn't pass any DHCP broadcasts. In other words, even at 1 Gbps full-duplex it wasn't forwarding broadcasts off the wire.

 3) Live packet capture

 I watched the pf log via console option 10 while triggering `dhclient` on my laptop—no DHCPDISCOVER ever appeared.

---

Final resolution

I then swapped in with an new adapter: Intel I210-based M.2 adapter (the one I linked earlier) in the very same slot. On first try it came up as `igb0`, negotiated 1 Gbps full-duplex, and immediately served DHCP leases to my laptop exactly as the I219 had.



That tells me the issue wasn't DHCPd or pf at all, but a PHY/driver quirk with the I226-SRKTV under FreeBSD. I'm now running with the I210 card on LAN and everything is rock-solid. If anyone discovers a firmware or driver patch that makes the I226 work properly, I'd love to hear about it—otherwise I'm all set.

Thanks again for your help!

The I226 driver is pretty commonly used. Just look at the signature of the other member that helped in this thread.
I'm also using these NICs in one of my NUCs, although through virtualization (via Proxmox).
That's actually one thing you could try... Proxmox is Debian based, you'd get another driver, maybe allowing you to verify the adapter works.
Or Ubuntu, or Windows... Anything that can get the HW to work.