A r4lite device plugged with a RTL8125 (PCIe Ethernet) module via PCIe slot CN13.
The R8169 Linux driver is installed. It supports to drive the RTL8125 firmware. In case of BPI-R4 (not Lite), I have configured and confirmed the RTL8125 operations.
CONFIG_R8169=y
For BPI-R4Lite, the R8169 driver probed fail with PHY ID 0x00000000. Thus, the RTL8125 Ethernet does not work.
I am not sure if the issue is related to the MT7987 / DTS setup.
The bpi-r4 from my repo does this for mt7988/87 and r3mini phy to be loaded from utils/firmware directory,just copy it there and extend the option in defconfig
However, there is no rtl_nic or related firmware installed in device:
root@bpi-r4:/# ll /lib/firmware/
total 32
drwxr-xr-x 5 root root 4096 Jan 6 2026 ./
drwxr-xr-x 42 root root 4096 Jan 6 2026 ../
drwxr-xr-x 2 root root 4096 Jan 6 2026 aeonsemi/
drwxr-xr-x 2 root root 4096 Jan 6 2026 airoha/
drwxr-xr-x 15 root root 4096 Jan 6 2026 mediatek/
lrwxrwxrwx 1 root root 31 Jan 6 2026 regulatory.db -> /etc/alternatives/regulatory.db
-rw-r--r-- 1 root root 4896 Jan 6 2026 regulatory.db-git
lrwxrwxrwx 1 root root 35 Jan 6 2026 regulatory.db.p7s -> /etc/alternatives/regulatory.db.p7s
-rw-r--r-- 1 root root 1182 Jan 6 2026 regulatory.db.p7s-git
root@bpi-r4:/#
root@bpi-r4:/# find -type d -name *rtl_nic*
root@bpi-r4:/#
root@bpi-r4:/# find -name *8125*
root@bpi-r4:/#
How to ensure the extra firmware images are installed to device?
And the r4 (mt7988) does not have the same error as r4lite (mt7987). Both of them have no rtl_nic firmware loaded. Is the PHY setup of r4lite different to r4?
[ 2.800015] r8169 0000:01:00.0: no dedicated PHY driver found for PHY ID 0x00000000, maybe realtek.ko needs to be added to initramfs?
[ 2.812024] r8169 0000:01:00.0: probe with driver r8169 failed with error -49
It is builtin in kernel,not image…i guess image is too late because filesystem is not yet mounted when cie is probed. But your config.gz shows the firmware is there…else build would have fail.
So is the driver builtin too? What does dmesg now say about phy? If the new rtl driver is also loaded maybe it prints the firmware version
Do you have the realtek card in both devices? R4 lite has both pcie lanes mapped to the first mpcie slot per default because of the be14 card. You can split pcie lanes to both slots with overlay. But have bot tested this completely…only have be14 card in the r4lite.
Both R4 and R4Lite devices have tested with the same RTL8125 NIC module. They are just enabled “CONFIG_R8169=y” driver in Linux. No “rtl_nic” firmware needed to add manually.
If same kernel works with r4 you can try applying the overlay for splitting pcie lanes
Ignore name of variable it is just to add another overlay
wificfg=#ov-lite-2pcie1l
In your uEnv.txt on BPI-BOOT partition (no reflash of card,just edit txt file). Then boot this card and look just before linux starts if the overlay is correctly applied.
I do not know these cards only read about firmware so wanted to be sure it is not the issue…if you have it working you can drop your changes regarding firmware. You have driver enabled for the phy?
I guess the way to edit uEnv.txt you meant is to insert the SD card in PC, but I’m playing with eMMC instead, not installing the Ubuntu firmware in SD.
How to test “splitting PCIe lanes” with eMMC based on your recommendation?
In arch/arm64/configs/mt7988a_bpi-r4_defconfig
CONFIG_R8169=y
CONFIG_R8169_LEDS=y
No other changes needed for operating RTL8125 in R4.
My uboot loads this file directly before display bootmenu (bootcmd - reloadmenu - loadenv) and overwrites/extend the builtin env. Have you wait bootmenu displayed?
Can you post output of serial console after bootmenu entry was choosen before linux kernel is started? There should be the loaded overlays printed. Maybe there is something missig
Here is the log in-between bootmenu and linux start:
## Error: "initrd" not defined
EXT_CSD[179], PARTITION_CONFIG:
BOOT_ACK: 0x1
BOOT_PARTITION_ENABLE: 0x1 (boot0)
PARTITION_ACCESS: 0x0 (user)
emmc available
SF: Detected w25q256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB
NOR available
bootconf=#conf-base-r4lite#ov-lite-emmc#ov-lite-nor
fit=bpi-r4.itb
10395696 bytes read in 772 ms (12.8 MiB/s)
No UBIFS volume mounted!
## Loading kernel (any) from FIT Image at 46000000 ...
Using 'conf-base-r4lite' configuration
Trying 'kernel-1' kernel subimage
Description: Linux Kernel 6.18.0-main
Type: Kernel Image
Compression: gzip compressed
Data Start: 0x460000e8
Data Size: 10211470 Bytes = 9.7 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x44000000
Entry Point: 0x44000000
Hash algo: sha1
Hash value: 5d8da90cf1d549d9e5227ad25c8bb85d4c7b9ec1
Verifying Hash Integrity ... sha1+ OK
## Loading fdt (any) from FIT Image at 46000000 ...
Using 'conf-base-r4lite' configuration
Trying 'fdt-base-lite' fdt subimage
Description: Flattened Device Tree blob BPI-R4 Lite
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x469df20c
Data Size: 31002 Bytes = 30.3 KiB
Architecture: AArch64
Load Address: 0x47000000
Hash algo: sha1
Hash value: 394f22549ac95838afcf11fe12630463893b3a13
Verifying Hash Integrity ... sha1+ OK
Loading fdt from 0x469df20c to 0x47000000
Loading Device Tree to 00000000be7ed000, end 00000000be7f7fff ... OK
Working FDT set to be7ed000
## Loading fdt (any) from FIT Image at 46000000 ...
Using 'ov-lite-emmc' configuration
Trying 'fdt-ov-lite-emmc' fdt subimage
Description: Flattened Device Tree blob
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x469e77ac
Data Size: 878 Bytes = 878 Bytes
Architecture: Unknown Architecture
Verifying Hash Integrity ... OK
## Loading fdt (any) from FIT Image at 46000000 ...
Using 'ov-lite-nor' configuration
Trying 'fdt-ov-lite-nor' fdt subimage
Description: Flattened Device Tree blob
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x469e80d8
Data Size: 919 Bytes = 919 Bytes
Architecture: Unknown Architecture
Verifying Hash Integrity ... OK
Booting using the fdt blob at 0xbe7ed000
Working FDT set to be7ed000
Uncompressing Kernel Image to 44000000
Loading Device Tree to 00000000be7e2000, end 00000000be7ecca6 ... OK
Working FDT set to be7e2000
Starting kernel ...
## Error: "initrd" not defined
EXT_CSD[179], PARTITION_CONFIG:
BOOT_ACK: 0x1
BOOT_PARTITION_ENABLE: 0x1 (boot0)
PARTITION_ACCESS: 0x0 (user)
emmc available
SF: Detected w25q256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB
NOR available
bootconf=#conf-base-r4lite#ov-lite-emmc#ov-lite-nor#ov-lite-2pcie1l
fit=bpi-r4.itb
10395696 bytes read in 771 ms (12.9 MiB/s)
No UBIFS volume mounted!
## Loading kernel (any) from FIT Image at 46000000 ...
Using 'conf-base-r4lite' configuration
Trying 'kernel-1' kernel subimage
Description: Linux Kernel 6.18.0-main
Type: Kernel Image
Compression: gzip compressed
Data Start: 0x460000e8
Data Size: 10211470 Bytes = 9.7 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x44000000
Entry Point: 0x44000000
Hash algo: sha1
Hash value: 5d8da90cf1d549d9e5227ad25c8bb85d4c7b9ec1
Verifying Hash Integrity ... sha1+ OK
## Loading fdt (any) from FIT Image at 46000000 ...
Using 'conf-base-r4lite' configuration
Trying 'fdt-base-lite' fdt subimage
Description: Flattened Device Tree blob BPI-R4 Lite
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x469df20c
Data Size: 31002 Bytes = 30.3 KiB
Architecture: AArch64
Load Address: 0x47000000
Hash algo: sha1
Hash value: 394f22549ac95838afcf11fe12630463893b3a13
Verifying Hash Integrity ... sha1+ OK
Loading fdt from 0x469df20c to 0x47000000
Loading Device Tree to 00000000be7ed000, end 00000000be7f7fff ... OK
Working FDT set to be7ed000
## Loading fdt (any) from FIT Image at 46000000 ...
Using 'ov-lite-emmc' configuration
Trying 'fdt-ov-lite-emmc' fdt subimage
Description: Flattened Device Tree blob
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x469e77ac
Data Size: 878 Bytes = 878 Bytes
Architecture: Unknown Architecture
Verifying Hash Integrity ... OK
## Loading fdt (any) from FIT Image at 46000000 ...
Using 'ov-lite-nor' configuration
Trying 'fdt-ov-lite-nor' fdt subimage
Description: Flattened Device Tree blob
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x469e80d8
Data Size: 919 Bytes = 919 Bytes
Architecture: Unknown Architecture
Verifying Hash Integrity ... OK
## Loading fdt (any) from FIT Image at 46000000 ...
Using 'ov-lite-2pcie1l' configuration
Trying 'fdt-ov-lite-2pcie' fdt subimage
Description: DT overlay for R4Lite 2 pcie a 1 Lanes
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x469e867c
Data Size: 294 Bytes = 294 Bytes
Architecture: Unknown Architecture
Verifying Hash Integrity ... OK
Booting using the fdt blob at 0xbe7ed000
Working FDT set to be7ed000
Uncompressing Kernel Image to 44000000
Loading Device Tree to 00000000be7e2000, end 00000000be7eccb9 ... OK
Working FDT set to be7e2000
Starting kernel ...
However, this does not resolve the issue of
[ 2.809655] r8169 0000:01:00.0: no dedicated PHY driver found for PHY ID 0x00000000, maybe realtek.ko needs to be added to initramfs?
Anyway, I think it is okay to have a little workaround as I posted above. It would be very nice to have experts fixing that.