# Intel ethernet Controller I225-V not supported yet



## chris35 (Jun 22, 2021)

Hi !
I tried installing BSD on my Z490 MB but it uses an Intel i225V ethernet card which doesn't seem to be supported by BSD systems, but maybe someone was able to use a generic that is compatible?
(sorry for my english i'm french)


----------



## SirDice (Jun 22, 2021)

There is no "generic" ethernet driver. There's work being done to port the driver for the I225 to FreeBSD, I believe some things have already been committed to -CURRENT.


----------



## chris35 (Jun 22, 2021)

happy to learn it, it should not be long then


----------



## chris35 (Jun 22, 2021)

how or where can i see when this will be done please?


----------



## SirDice (Jun 22, 2021)

If it's being MFC'ed[*] then it'll happen to stable/13, not to 13.0-RELEASE. https://reviews.freebsd.org/D30668

[*] Merged From Current


----------



## chris35 (Jun 22, 2021)

many thanks Sir  Any idea when we will can download the stable 13 ISO ?
I am a bit in a hurry to be able to use this OS on my PC


----------



## SirDice (Jun 22, 2021)

Note that stable/13 is a _development_ version. And you should build and update it from source (which you can always do). 



chris35 said:


> I am a bit in a hurry to be able to use this OS on my PC


Stick a cheap Intel PRO/1000 card in it in the mean time. I suspect you don't have a 2.5G capable switch either so you're not going to be able to use the additional bandwidth anyway.


----------



## chris35 (Jun 22, 2021)

i tought buying a more basic card but i have this MB https://www.gigabyte.com/fr/Motherboard/Z490I-AORUS-ULTRA-rev-1x/sp#sp
with a big RTX 3060ti taking all the place i have in my case....
No i will wait for this update, no matter  Any idea of when it could be done ?


----------



## Geezer (Jun 23, 2021)

It seems that many new MBs have fantastic fast new ethernet interfaces that are not yet or never will be supported.

Have got a nice new supermicro with aquantia that may never be supported.


----------



## T-Daemon (Jun 23, 2021)

chris35 said:


> No i will wait for this update, no matter  Any idea of when it could be done ?


Maybe in a few weeks or a month. According to the differential revision SirDice linked to, the revision was "accepted and ready to land", meaning it will be integrated to CURRENT (main) first (it's not mentioned when this will be, maybe soon, maybe later), then Merged from CURRENT to STABLE, usually after two weeks, and to RELEASE with a next minor RELEASE upgrade, which has not yet been announced.

But if you see this time as to long


chris35 said:


> I am a bit in a hurry to be able to use this OS on my PC


and are willing to build system components from source (kernel or kernel module) you can have the driver right now.

The linked revision comes with a patch which can be applied to the system source to build the igc(4) driver. I've tested the patch, kernel or kernel module alone builds fine on 13.0-RELEASE, but I can't test the functionality, no hardware. Try the kernel module.


----------



## chris35 (Jun 23, 2021)

i'm not a super user but i will give it a try, many thanks to all for your help !


----------



## chris35 (Jun 23, 2021)

i boot on my 13.0-RELEASE i have on my USB but what should i do ?
i dont have any IPV4 or 6 possibility
>> just tried the FreeBSD 14.0-CURRENT too and no network too


----------



## SirDice (Jun 23, 2021)

chris35 said:


> >> just tried the FreeBSD 14.0-CURRENT too and no network too





T-Daemon said:


> the revision was "accepted and ready to land", meaning it will be integrated to CURRENT (main) first (*it's not mentioned when this will be, maybe soon, maybe later*),


(emphasis mine)


----------



## chris35 (Jun 23, 2021)

ok thanks Sir, then maybe i will wait few days or weeks


----------



## chris35 (Jun 23, 2021)

T-Daemon said:


> and are willing to build system components from source (kernel or kernel module) you can have the driver right now.
> 
> The linked revision comes with a patch which can be applied to the system source to build the igc(4) driver. I've tested the patch, kernel or kernel module alone builds fine on 13.0-RELEASE, but I can't test the functionality, no hardware. Try the kernel module.


can someone could explain me what and how doing this ?
i'm not a super user but i have some linux and general skills...


----------



## T-Daemon (Jun 23, 2021)

chris35 said:


> can someone could explain me what and how doing this ?
> i'm not a super user ...


Neither am I, and you don't have to be a super user. If you read the systems manuals and documentation you will do fine. Building a kernel or a kernel module on FreeBSD is very simple.

Instead of pointing you to documentation to figure it out yourself how to do things I give a short guide but I strongly advice to read or at least to glance trough the handbook and documentation afterward [1] .

Assuming you have 13.0-RELEASE installed:

1 - Install the source code from the 13.0-RELEASE installer image or from downloaded file on USB stick

1.1 Installer image, assuming it's mounted on /mnt

```
# tar xf /mnt/usr/freebsd-dist/src.txz -C  /
```

1.2 USB stick, assuming it's mounted on /mnt

```
# tar xf /mnt/src.txz -C  /
```

2 - Apply the patch from USB stick

```
# cd /usr/src
# patch -p0 < /mnt/D30668.diff
```

3 - Build, install igc(4) kernel module

```
# cd sys/modules/igc
# make install
```

4 - Set driver kernel module to load when system boots up

/boot/loader.conf

```
if_igc_load="YES"
```

5 - Load driver kernel module immediate

```
# kldload if_igc
```

Check dmesg(8), the I225 device interface should appear most likely as `igc0`.

6 - Continue with 12.5. Setting Up Network Interface Cards

If you have problems or further questions please ask.

[1]
24.5. Updating FreeBSD from Source, 24.5.4.4. Building a Custom Kernel

tar(1), patch(1), loader.conf(5), kldload(8)


----------



## chris35 (Jun 23, 2021)

many thanks i will do it !


----------



## chris35 (Jun 23, 2021)

I did not manage to do anything, I do not understand anything about what to do and how to do it ... too bad I will wait for the release of this version with the integrated driver. thanks anyway !


----------



## T-Daemon (Jun 26, 2021)

In case you have problems to carry over the files to FreeBSD on the USB stick follow instructions bellow.

- Take a MS-DOS FAT formatted USB stick
- Copy the files, patch and src.txz, on the stick
- From FreeBSD execute dmesg(8), look for daN device nodes (N = 0,1,2, etc)
- To mount the device execute

```
mount_msdosfs /dev/da0s1 /mnt  # replace device node number '0' if necessary
```
- Continue with instructions beginning from 1.2 in post #16

If you have further questions or problems please ask.


----------



## martinrame (Jul 17, 2021)

This was my first attempt to building a driver and it was quite easy, just downloaded the sources from this link, un-tared it, then went to `src-main/sys/modules/igc` and `make`, done!, the driver went to `/usr/obj/root/13/src-main/amd64.amd64/sys/modules/igc/`.

Now I would like this to be backported to 12, to let me try it on the latest TrueNAS!.


----------



## SirDice (Jul 17, 2021)

martinrame said:


> just downloaded the sources from this link, un-tared it,


That's the source code for 14.0-CURRENT.


----------



## Phishfry (Jul 17, 2021)

martinrame said:


> Now I would like this to be backported to 12,


Probably not going to happen. Things like a new driver would most likely hit the next major release.


----------



## martinrame (Jul 18, 2021)

I wrote to Peter Grehan and he pointed me to the pfSense source tree, where there is an igc driver, I downloaded, went to `sys/modules/igc` and did a `make`, initially it didn't work:


```
In file included from /root/FreeBSD-src-devel-12/sys/dev/igc/if_igc.c:31:
/root/FreeBSD-src-devel-12/sys/dev/igc/if_igc.h:31:10: fatal error: 'opt_ddb.h'
      file not found
#include "opt_ddb.h"
         ^~~~~~~~~~~
1 error generated.
*** Error code 1
```

After that I looked into other Makefiles, for example the one for the e1000 driver and found the igc version lacks the opt_ddb.h reference here:


```
SRCS    = device_if.h bus_if.h pci_if.h opt_ddb.h ifdi_if.h
```

So, I added it and it compiled!, now I have an `if_igc.ko` ready to test.


----------



## martinrame (Jul 18, 2021)

No luck so far 


```
KLD if_igc.ko: depends on kernel - not available or version mismatch
linker_load_file: /boot/modules/if_igc.ko - unsupported file type
```

It looks like the 12.2 sources I used to build the driver differs from the 12.2-release-p6 where I want to use it. Does anyone know where can I download the 12.2-release-p6 sources?.


----------



## SirDice (Jul 18, 2021)

martinrame said:


> It looks like the 12.2 sources I used to build the driver differs from the 12.2-release-p6 where I want to use it.


You downloaded the sources for 14.0-CURRENT (src-main.tar.gz, the main branch is -CURRENT).

If your machine has access to the internet simply use git(1): `git clone -b releng/12.2 https://git.freebsd.org/src.git /usr/src`
Or install net/gitup and use that to download the correct sources (don't forget the edit gitup.conf).

Branches: releng/13.0 = 13.0-RELEASE plus errata and security patches. releng/12.2 = 12.2-RELEASE plus errata and security patches.


----------



## martinrame (Jul 18, 2021)

SirDice said:


> You downloaded the sources for 14.0-CURRENT (src-main.tar.gz, the main branch is -CURRENT).
> 
> If your machine has access to the internet simply use git(1): `git clone -b releng/12.2 https://git.freebsd.org/src.git /usr/src`
> Or install net/gitup and use that to download the correct sources (don't forget the edit gitup.conf).
> ...


I was sure I downloaded the 12.2 tree from the pfSense repo (https://github.com/pfsense/FreeBSD-src), anyway, I'm downloading the releng/12.2, and  I'll patch with the igc driver.


----------



## martinrame (Jul 18, 2021)

```
root@truenas[/boot/modules]# kldload -v if_igc.ko
Loaded if_igc.ko, id=27
```

Yea!!!






Now, let's plug a cable.


----------



## Phishfry (Jul 18, 2021)

And show us `ifconfig igc0` not some web trash.
Do they still allow you to see the command line on TrueNAS?


----------



## martinrame (Jul 18, 2021)

Phishfry said:


> And show us `ifconfig igc0` not some web trash.
> Do they still allow you to see the command line on TrueNAS?




```
root@truenas[~]# ifconfig igc0
igc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    description: igc0
    options=e527bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,WOL_MAGIC,VLAN_HWFILTER,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
    ether 18:c0:4d:dd:2a:fd
    inet 192.168.100.37 netmask 0xffffff00 broadcast 192.168.100.255
    media: Ethernet autoselect (1000baseT <full-duplex>)
    status: active
    nd6 options=9<PERFORMNUD,IFDISABLED>
```

It's working.


----------



## aragats (Jul 19, 2021)

Hopefully it really works as expected.
I have a I219-V (13), which is supposed to be supported in 14.0, so I copied the corresponding e1000 files and compiled. It pretends working, but very unstable and with bad performance...


----------



## olli@ (Aug 20, 2021)

Just FYI …

The igc(4) driver was MFCed to stable/13 this week. It supports the Intel I225-V ethernet NICs that are becoming very popular on consumer hardware.
That driver is included in the latest stable/13 snapshot (20210819) right now, and it will be included in 13.1-RELEASE.

I recently ordered an HM80 mini PC from Minisforum (link to product page) that also has a 2.5 GbE Intel I225-V NIC, in addition to an “old-fashioned” 1 GbE Realtek NIC. Both of them now work fine with FreeBSD stable/13 out of the box. Very nice hardware, by the way. The only thing that doesn’t work yet is the integrated AX wifi (thankfully I don’t need it – if I did, I’d probably just connect a supported USB3 wifi dongle).


----------



## aragats (Aug 20, 2021)

olli@ said:


> The igc(4) driver was MFCed to stable/13 this week. It supports the Intel I255-V ethernet NICs that are becoming very popular on consumer hardware.


Thanks, I'll try this weekend. The problem with FreeBSD 14 I tried, was that my NIC I255-V rev.13 had unstable connection and poor performance.


----------



## martinrame (Aug 20, 2021)

I have a TrueNas running with that driver, connected to a 100baseT switch (cannot test more than that), but apparently it is running very well. Which tests did you do?, to compare mine with yours.


----------



## aragats (Aug 20, 2021)

martinrame said:


> Which tests did you do?, to compare mine with yours.


I didn't run specific tests other than downloading/uploading files on local network after I noticed that installing packages is almost impossible via that NIC. By my understanding, the rev.13 support was added very recently. Anyway, that was almost 2 months ago, I'll try again with FreeBSD 13 now.


----------



## martinrame (Aug 20, 2021)

Mmm, I was able to install everything connected with that nic, I created a jail, installed PostgreSql there, migrated an Ubuntu VM and the server is in production since last month. 

I'll test with iperf to see how fast it is running.


----------



## Pelleplast (Nov 12, 2021)

SirDice said:


> You downloaded the sources for 14.0-CURRENT (src-main.tar.gz, the main branch is -CURRENT).
> 
> If your machine has access to the internet simply use git(1): `git clone -b releng/12.2 https://git.freebsd.org/src.git /usr/src`
> Or install net/gitup and use that to download the correct sources (don't forget the edit gitup.conf).
> ...


I seem to have problem cloning the git-repo. Anyone with more knowledge that can help?

`$git clone -b releng/12.2 https://git.freebsd.org/src.git
Cloning into 'src'...
fatal: unable to access 'https://git.freebsd.org/src.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none`


----------



## T-Daemon (Nov 12, 2021)

Please install security/ca_root_nss.


----------



## Pelleplast (Nov 15, 2021)

T-Daemon said:


> Please install security/ca_root_nss.


How would I go ahead to do this? I'm running debian on a second computer (me trueneas is without network so I'm planning on preparing the driver on the Debain machine then moving it over to my truenas on a USB-stick. I'm having trouble following the guide you linked on my debain machine.


----------



## diizzy (Nov 15, 2021)

Pelleplast said:


> How would I go ahead to do this? I'm running debian on a second computer (me trueneas is without network so I'm planning on preparing the driver on the Debain machine then moving it over to my truenas on a USB-stick. I'm having trouble following the guide you linked on my debain machine.











						GhostBSD, pfSense, TrueNAS, and all other FreeBSD Derivatives
					

Questions about 'derivative FreeBSDs', like  GhostBSD DesktopBSD TrueNAS XigmaNAS OPNsense pfSense PacBSD BSD Router Project NomadBSD helloSystem  should be asked on the forums and/or mailing lists for these specific products. See below for links.  If you still think your questions should be...




					forums.freebsd.org


----------



## T-Daemon (Nov 16, 2021)

Normally Linux and TrueNAS is unsupported here in forums, but giving some tips won't hurt.



T-Daemon said:


> Please install security/ca_root_nss.





Pelleplast said:


> How would I go ahead to do this? I'm running debian on a second computer ...





			Debian -- Package Download Selection -- ca-certificates_20211016_all.deb
		




Pelleplast said:


> ... me trueneas is without network so I'm planning on preparing the driver on the Debain machine then moving it over to my truenas on a USB-stick.


How do you plan to prepare the driver on Debian? In a FreeBSD 12.2-RELEASE virtual machine?



Pelleplast said:


> I'm having trouble following the guide you linked on my debain machine.


Which part?


----------



## grahamperrin@ (Nov 21, 2021)

chris35 said:


> Any idea of when it could be done ?



13.1-RELEASE estimated _some time in early 2022_ at <https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255979#c17>. 

<https://www.freebsd.org/releases/13.1R/schedule/> for an official release schedule does not yet exist.


----------



## SirDice (Nov 22, 2021)

grahamperrin release schedule is that there's a release every 6 months. FreeBSD 12.3 is up next, that will be released some time in December. FreeBSD 13.1 will follow about 6 months after that. Then 12.4 6 months after that, etc. So you can make an educated guess that 13.1 will come some time in June/July 2022.


----------



## grahamperrin@ (Nov 23, 2021)

Thanks ▶ FreeBSD release engineering | The FreeBSD Forums


----------



## MattP (Nov 24, 2021)

I managed to get I225-V working in Freebsd 13.0-RELEASE relatively easily with some pointers from this thread.

Thanks to those who posted. Here is what I did.








						Solved - Adding IGC Driver to 13.0-RELEASE (for Intel I225-V Network Adapter)
					

My new PC build has an Intel I225-V Network Adapter. There is no driver for this in 13.0-RELEASE but the driver (sys/modules/igc) is in 13.0-STABLE.  I am downloading the iso for STABLE and installing that is an option.  Would it be safer to just try installing the IGC driver into my current...




					forums.freebsd.org
				




If 2nd post isn't visible, it's just pending approval.


----------



## adnanml (Jul 21, 2022)

martinrame said:


> No luck so far
> 
> 
> ```
> ...



I read a lot of valuable input in this forum. Many thanks to all of you for these valuable discussions.

I have the same situation. But I'm trying to stay on FreeBSD-12.1 Release and back-port this driver (igc). I did : git clone -b releng/12.1 https://git.freebsd.org/src.git /usr/src, and then copied the sys/dev/igc & sys/modules/igc (from FreeBSD 13.1 Release - releng/13.1). When I try to run "make" in /usr/src/sys/modules/igc I get 9 errors generated. Will see if I can solve them all..

While when I tried "git clone -b releng/12.2 https://git.freebsd.org/src.git /usr/src" and did the same thing (igc files in /dev/igc and /modules/igc), the make runs successfully and so does make install. But then it comes to the "KLD if_igc.ko: depends on kernel - not available or version mismatch" problem.

Did anyone manage to build and run this driver (igc) in FreeBSD 12.1 releng?


----------



## SirDice (Jul 21, 2022)

Both 12.1 and 12.2 are EoL and not supported anymore. 









						Unsupported FreeBSD Releases
					

FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms.




					www.freebsd.org


----------



## adnanml (Jul 27, 2022)

Because I have to use FreeBSD 12.1 I had to dig around to find a solution. But definitively planning to move to FreeBSD 13.1 very soon.
In case that any of you need to have the igc running on 12.1 or 12.2, I'll put some feedbacks in here.
For me it finally worked.
The module is created in /boot/modules/ and runs great..
`# kldload -v if_igc.ko
Loaded if_igc.ko, id=21`
and when I run ifconfig, I can see the igc0 interface.

So how it worked? For 12.2 was quite strait-forward. Copy the /src/sys/dev/igc/files* and /src/sys/modules/igc/files* from FreeBSD 12.3 src to your machine. From there you can run "make", and after "make install". For me it worked directly.

For 12.1 was more complicated. I copied all the changed files with all the required modifications (as seen in picture): https://cgit.freebsd.org/src/commit/?id=9ffb4c0adab4853ab752ecda6a5ff59ea943af4e (cherry pick the needed files from src-9ffb4c0adab4853ab752ecda6a5ff59ea943af4e.zip)

And additionally did the changes on if_igc.c regarding function "if_foreach_llmaddr()" as noted there - *For stable/12, CTLFLAG_NEEDGIANT removed and if_foreach_llmaddr() replaced with if_multiaddr_array()*.

Then run make, and after make install. And at the end it all worked - better then expected actually.
The if_igc.ko is working very good (the same way) on Hardened BSD 12.1 as well. I just had to copy and kldload it on HBSD and immediately turn on (igc0: link state changed to UP)
So a win-win situation, FreeBSD 12.1 and HBSD 12.1


----------

