# [SOLVED] Realtek driver r8169 won't use newer firmware

## sidamos

I noticed some dropped RX packages with ifconfig, so I decided to try a new firmware for my RTL8111.

I had configured this:

```

CONFIG_PREVENT_FIRMWARE_BUILD=y

CONFIG_FIRMWARE_IN_KERNEL=y

CONFIG_EXTRA_FIRMWARE="rtl_nic/rtl8168e-3.fw"

CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"

```

In /lib/firmware/rtl_nic I also found rtl8168g-3.fw.

So I changed the config to

```

CONFIG_EXTRA_FIRMWARE="rtl_nic/rtl8168g-3.fw"

```

and recompiled the kernel (3.18.7) with genkernel. I later also tried "make clean" before doing that.

Still, it seems to use the e-3 firmware instead of g-3:

```

# ethtool -i eth0

driver: r8169

version: 2.3LK-NAPI

firmware-version: rtl8168e-3_0.0.4 03/27/12

```

According to modinfo, it should be able to use the rtl8168g-3.fw firmware. I tried compiling the driver as module and built into the kernel.

Anything else I can try to get it to use the newer firmware?

Thanks!Last edited by sidamos on Tue Mar 10, 2015 6:08 am; edited 1 time in total

----------

## chithanh

The rtl_nic/rtl8168e-3.fw and rtl_nic/rtl8168g-3.fw firmware files are for different revisions of the RTL8169 chipset. Newer firmware releases for the same chipset have the appended number increased. For example:

```
rtl_nic/rtl8168e-1.fw

rtl_nic/rtl8168e-2.fw

rtl_nic/rtl8168e-3.fw
```

----------

## sidamos

Thanks, now that makes sense.

But why does it not complain during boot, when I configure

```

CONFIG_EXTRA_FIRMWARE="rtl_nic/rtl8168g-3.fw"

```

I thought, with my config settings, the firmware would be built into the kernel. But still it finds the e-3 version during boot, which I did not configure to be built into the kernel.

----------

## chithanh

Two possible explanations:

For one, not all r8169 cards need external firmware. Many cards work fine without.

The other is that if the driver tries to load firmware only after the root filesystem was mounted, then it can use the firmware which is present on the disk.

----------

## sidamos

I think, the 2nd explanation is the one. Thanks a lot!

----------

