Banana Pi BPI-RV2 - Dual Band (B key WiFi)

Hi,

if you want to use dual band WiFi with the BPI-RV2 you can use a second WiFi module in the B key slot. It works using this adapter:

image

Tested with AC and N Atheros WiFi, 5 antennas

# lspci
0000:00:00.0 PCI bridge: Device 1a0a:abcd (rev 01)
0000:01:00.0 Network controller: Qualcomm Atheros QCA986x/988x 802.11ac Wireless Network Adapter
0001:00:00.0 PCI bridge: Device 1a0a:abcd (rev 01)
0001:01:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01)

Hope that helps anyone!

Hi! Unfortunately I was unable to create a separate topic, so I had to answer here.

Banana Pi BPI-RV2 Some mPCIE cards not detected by board

This effect enabled on original firmware on snapshot OpenWrt Image an custom builds. I have more mPCIe cards, but work only somes.

Cards works and detect by board:

Realtek RTL8111 Wired GBps network adapter
Atheros AR9435 802.11b/g/n wireless network adapter
MediaTek MT7612 802.11b/g/n/ac wireless network adapter

Cards not works and not detect by board:

Wallys DR7915 (MediaTek MT7915) 802.11b/g/n/ac/ax DBDC network adapter
Banana BPI-MT7615 (MediaTek MT7615) 802.11b/g/n/ac network adapter

Not working cards perfectly work on another boards: MT7621 with PCIe, Marwell Feroceon 88FR131 and x86 boards. What different PCB desigh RV2 board or software bug?

If possible, please separate this message into another discussion. Thanks.

Maybe its due to power draw ? Some cards have higher power requirement than others. Some issues were observed with certain NVMe because of that on the B key slot. I suppose the same may apply to the mPCIE slot, but not sure. The mPCIE cards I tested all worked fine.

Make sure your OpenWrt build has the right firmware / drivers enabled !

Are there any improvements in the situation over time?

I want to share my experience with Wi-Fi chips on the Banana Pi BPI-RV2, in case it is useful to someone else. I used OpenWRT 25.12.5 with Linux kernel 6.12.94.

Did NOT work: MediaTek MT7925, via Mini PCIe. The device could be seen in lsusb, but did not show up in lspci. There was no error in dmesg. The log was the same as for the other (currently empty) M.2 slot, meaning that I did not have any useful logs to debug.

Worked: MediaTek MT7612E, via Mini PCIe.

The PCIe lanes for the Mini PCIe and M.2 Key B devices should be fine; the issue is likely due to the drivers not being added in the software.

@hyf Thanks for your reply. For the MediaTek MT7925, I did install the kernel all modules called kmod-mt7925* and their dependencies from here. I checked multiple times and to my knowledge I don’t think I forgot anything.

In case anyone is interested, I will post some logs from the boot with a MediaTek MT7925. The reason for posting them here instead of opening a new topic is because I’m genuinely curious to find out why some Wi-Fi cards don’t work, or whether they have different root causes. I am ready to perform further tests if anyone has any ideas.

The output of dmesg does not show any error, but just “Phy link never came up” (both for the Mini PCIe that has the MediaTek MT7925, and for the empty M.2 slot). We can also see that the mt7925u driver is being loaded:

root@OpenWrt:~# dmesg
[    0.000000] Linux version 6.12.94 (builder@buildhost) (riscv64-openwrt-linux-musl-gcc (OpenWrt GCC 14.3.0 r33051-f5dae5ece4) 14.3.0, GNU ld (GNU Binutils) 2.44) #0 SMP Mon Jun 29 12:59:20 2026
[    0.000000] Machine model: Bananapi BPI-RV2 (Booting from NAND)
[    0.000000] SBI specification v2.0 detected
[    0.000000] SBI implementation ID=0x1 Version=0x10005
[    0.000000] SBI TIME extension detected
[    0.000000] SBI IPI extension detected
[    0.000000] SBI RFENCE extension detected
[    0.000000] SBI SRST extension detected
[    0.000000] SBI DBCN extension detected
[    0.000000] OF: reserved mem: 0x000000003fe00000..0x000000003fe1ffff (128 KiB) nomap non-reusable mmode_resv0@3fe00000
[    0.000000] OF: reserved mem: 0x000000003fe20000..0x000000003fe3ffff (128 KiB) nomap non-reusable mmode_resv1@3fe20000
[    0.000000] Zone ranges:
[    0.000000]   DMA32    [mem 0x0000000020000000-0x000000003fffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000020000000-0x000000003fdfffff]
[    0.000000]   node   0: [mem 0x000000003fe00000-0x000000003fe3ffff]
[    0.000000]   node   0: [mem 0x000000003fe40000-0x000000003fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000020000000-0x000000003fffffff]
[    0.000000] SBI HSM extension detected
[    0.000000] riscv: base ISA extensions acdfim
[    0.000000] riscv: ELF capabilities acdfim
[    0.000000] percpu: Embedded 20 pages/cpu s41496 r8192 d32232 u81920
[    0.000000] pcpu-alloc: s41496 r8192 d32232 u81920 alloc=20*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Kernel command line: root=/dev/fit0 rootwait
[    0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 131072
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] software IO TLB: SWIOTLB bounce buffer size adjusted to 0MB
[    0.000000] software IO TLB: area num 4.
[    0.000000] software IO TLB: SWIOTLB bounce buffer size roundup to 1MB
[    0.000000] software IO TLB: mapped [mem 0x000000003f500000-0x000000003f600000] (1MB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] riscv-intc: 64 local interrupts mapped
[    0.000000] riscv: providing IPIs using SBI IPI extension
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x12049cd048c, max_idle_ns: 440795204120 ns
[    0.000000] sched_clock: 64 bits at 1250MHz, resolution 0ns, wraps every 4398046511103ns
[    0.000010] riscv-timer: Timer interrupt in S-mode is available via sstc extension
[    0.000131] Calibrating delay loop (skipped), value calculated using timer frequency.. 2500.00 BogoMIPS (lpj=12500000)
[    0.000142] pid_max: default: 32768 minimum: 301
[    0.003975] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
[    0.003987] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
[    0.007720] ASID allocator using 16 bits (65536 entries)
[    0.007848] rcu: Hierarchical SRCU implementation.
[    0.007852] rcu: 	Max phase no-delay instances is 1000.
[    0.008062] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[    0.008461] smp: Bringing up secondary CPUs ...
[    0.010415] smp: Brought up 1 node, 4 CPUs
[    0.011107] Memory: 494036K/524288K available (5904K kernel code, 4795K rwdata, 2048K rodata, 2159K init, 311K bss, 27104K reserved, 0K cma-reserved)
[    0.014759] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.014779] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.017293] pinctrl core: initialized pinctrl subsystem
[    0.018571] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.018840] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[    0.018867] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.019195] thermal_sys: Registered thermal governor 'step_wise'
[    0.019465] Serial: AMBA PL011 UART driver
[    0.048176] clocksource: Switched to clocksource riscv_clocksource
[    0.051816] NET: Registered PF_INET protocol family
[    0.051987] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.054348] tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.054368] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.054379] TCP established hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.054415] TCP bind hash table entries: 4096 (order: 5, 131072 bytes, linear)
[    0.054808] TCP: Hash tables configured (established 4096 bind 4096)
[    0.055134] MPTCP token hash table entries: 512 (order: 2, 12288 bytes, linear)
[    0.055312] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.055329] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.055668] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.055706] PCI: CLS 0 bytes, default 64
[    0.057354] workingset: timestamp_bits=46 max_order=17 bucket_order=0
[    0.058781] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.058790] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.061496] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    0.062929] riscv-plic: interrupt-controller@108000000: mapped 176 interrupts with 4 handlers for 8 contexts.
[    0.064278] pinctrl-single ce3c000.iomux: 41 pins, size 164
[    0.077768] NET: Registered PF_INET6 protocol family
[    0.079997] Segment Routing with IPv6
[    0.080044] In-situ OAM (IOAM) with IPv6
[    0.080126] NET: Registered PF_PACKET protocol family
[    0.080159] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[    0.080356] 8021q: 802.1Q VLAN Support v1.8
[    0.095690] c301000.uart: ttyAMA1 at MMIO 0xc301000 (irq = 24, base_baud = 0) is a PL011 rev3
[    0.095736] printk: legacy console [ttyAMA1] enabled
[    0.683125] spi-nand spi0.0: Winbond SPI NAND was found.
[    0.683827] sf21-pcie 4000000.pcie: host bridge /soc/pcie@04200000 ranges:
[    0.683827] sf21-pcie 0.pcie: host bridge /soc/pcie@00200000 ranges:
[    0.683879] sf21-pcie 0.pcie:       IO 0x00a0080000..0x00a00fffff -> 0x00a0080000
[    0.683900] sf21-pcie 0.pcie:      MEM 0x00a0100000..0x00cfffffff -> 0x00a0100000
[    0.688466] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64
[    0.688832] 2 fixed-partitions partitions found on MTD device spi0.0
[    0.695383] sf21-pcie 4000000.pcie:       IO 0x00d0080000..0x00d00fffff -> 0x00d0080000
[    0.701949] Creating 2 MTD partitions on "spi0.0":
[    0.709276] sf21-pcie 4000000.pcie:      MEM 0x00d0100000..0x00ffffffff -> 0x00d0100000
[    0.716736] 0x000000000000-0x000000020000 : "fbl"
[    0.758596] 0x000000020000-0x000008000000 : "ubi"
[    0.818282] ubi0: attaching mtd1
[    0.828634] sf21-pcie 0.pcie: iATU: unroll T, 8 ob, 8 ib, align 64K, limit 4G
[    0.858570] sf21-pcie 4000000.pcie: iATU: unroll T, 8 ob, 8 ib, align 64K, limit 4G
[    1.629465] ubi0: scanning is finished
[    1.678828] ubi0: attached mtd1 (name "ubi", size 127 MiB)
[    1.684334] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
[    1.691231] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[    1.698018] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
[    1.704979] ubi0: good PEBs: 1023, bad PEBs: 0, corrupted PEBs: 0
[    1.711072] ubi0: user volume: 4, internal volumes: 1, max. volumes count: 128
[    1.718292] ubi0: max/mean erase counter: 126978/126977, WL threshold: 4096, image sequence number: 847596351
[    1.728206] ubi0: available PEBs: 0, total reserved PEBs: 1023, PEBs reserved for bad PEB handling: 20
[    1.737524] ubi0: background thread "ubi_bgt0d" started, PID 344
[    1.738759] block ubiblock0_2: created from ubi0:2(fit)
[    1.750355] 3 fixed-partitions partitions found on MTD device spi0.1
[    1.756719] Creating 3 MTD partitions on "spi0.1":
[    1.761540] 0x000000000000-0x000000090000 : "bootloader-nor"
[    1.767824] 0x000000090000-0x0000000a0000 : "factory-nor"
[    1.774080] 0x0000000a0000-0x000001000000 : "firmware-nor"
[    1.878177] sf21-pcie 0.pcie: Phy link never came up
[    1.883371] sf21-pcie 0.pcie: PCI host bridge to bus 0000:00
[    1.889082] pci_bus 0000:00: root bus resource [bus 00-ff]
[    1.894571] pci_bus 0000:00: root bus resource [io  0x0000-0x7ffff] (bus address [0xa0080000-0xa00fffff])
[    1.898184] sf21-pcie 4000000.pcie: Phy link never came up
[    1.904146] pci_bus 0000:00: root bus resource [mem 0xa0100000-0xcfffffff]
[    1.916528] pci 0000:00:00.0: [1a0a:abcd] type 01 class 0x060400 PCIe Root Port
[    1.923865] pci 0000:00:00.0: BAR 0 [mem 0x00000000-0x000fffff]
[    1.929802] pci 0000:00:00.0: BAR 1 [mem 0x00000000-0x0000ffff]
[    1.935721] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    1.940950] pci 0000:00:00.0:   bridge window [io  0x0000-0x0fff]
[    1.947039] pci 0000:00:00.0:   bridge window [mem 0x00000000-0x000fffff]
[    1.953831] pci 0000:00:00.0:   bridge window [mem 0x00000000-0x000fffff 64bit pref]
[    1.961620] pci 0000:00:00.0: supports D1
[    1.965624] pci 0000:00:00.0: PME# supported from D0 D1 D3hot D3cold
[    1.973050] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
[    1.979741] pci 0000:00:00.0: BAR 0 [mem 0xa0100000-0xa01fffff]: assigned
[    1.979846] sf21-pcie 4000000.pcie: PCI host bridge to bus 0001:00
[    1.986535] pci 0000:00:00.0: BAR 1 [mem 0xa0200000-0xa020ffff]: assigned
[    1.992734] pci_bus 0001:00: root bus resource [bus 00-ff]
[    1.999516] pci 0000:00:00.0: PCI bridge to [bus 01]
[    2.004984] pci_bus 0001:00: root bus resource [io  0x80000-0xfffff] (bus address [0xd0080000-0xd00fffff])
[    2.009948] pci_bus 0000:00: resource 4 [io  0x0000-0x7ffff]
[    2.019589] pci_bus 0001:00: root bus resource [mem 0xd0100000-0xffffffff]
[    2.025237] pci_bus 0000:00: resource 5 [mem 0xa0100000-0xcfffffff]
[    2.032131] pci 0001:00:00.0: [1a0a:abcd] type 01 class 0x060400 PCIe Root Port
[    2.045671] pci 0001:00:00.0: BAR 0 [mem 0x00000000-0x000fffff]
[    2.051675] pci 0001:00:00.0: BAR 1 [mem 0x00000000-0x0000ffff]
[    2.057603] pci 0001:00:00.0: PCI bridge to [bus 01-ff]
[    2.062851] pci 0001:00:00.0:   bridge window [io  0x0000-0x0fff]
[    2.068955] pci 0001:00:00.0:   bridge window [mem 0x00000000-0x000fffff]
[    2.075742] pci 0001:00:00.0:   bridge window [mem 0x00000000-0x000fffff 64bit pref]
[    2.083553] pci 0001:00:00.0: supports D1
[    2.087558] pci 0001:00:00.0: PME# supported from D0 D1 D3hot D3cold
[    2.095002] pci_bus 0001:01: busn_res: [bus 01-ff] end is updated to 01
[    2.101700] pci 0001:00:00.0: BAR 0 [mem 0xd0100000-0xd01fffff]: assigned
[    2.108515] pci 0001:00:00.0: BAR 1 [mem 0xd0200000-0xd020ffff]: assigned
[    2.115310] pci 0001:00:00.0: PCI bridge to [bus 01]
[    2.120283] pci_bus 0001:00: resource 4 [io  0x80000-0xfffff]
[    2.126024] pci_bus 0001:00: resource 5 [mem 0xd0100000-0xffffffff]
[    2.183788] FIT: Detected U-Boot 2022.01
[    2.187721] FIT: Default configuration: "config-1" (OpenWrt bananapi_bpi-rv2-nand)
[    2.195326] FIT:           kernel sub-image 0x00001000..0x0038f0a9 "kernel-1" (RISCV OpenWrt Linux-6.12.94) 
[    2.205178] FIT:          flat_dt sub-image 0x00390000..0x00395373 "fdt-1" (RISCV OpenWrt bananapi_bpi-rv2-nand device tree blob) 
[    2.216935] FIT:       filesystem sub-image 0x00396000..0x0071dfff "rootfs-1" (RISCV OpenWrt bananapi_bpi-rv2-nand rootfs) 
[    2.228584] block ubiblock0_2: mapped 1 uImage.FIT filesystem sub-image as /dev/fit0
[    2.236731] clk: Disabling unused clocks
[    2.245541] VFS: Mounted root (squashfs filesystem) readonly on device 259:0.
[    2.253656] Freeing unused kernel image (initmem) memory: 2156K
[    2.259666] Run /sbin/init as init process
[    2.263759]   with arguments:
[    2.263764]     /sbin/init
[    2.263768]   with environment:
[    2.263771]     HOME=/
[    2.263775]     TERM=linux
[    2.667433] init: Console is alive
[    2.671101] init: - watchdog -
[    3.003210] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    4.048189] random: crng init done
[    7.224521] Airoha EN8811H xgmac0:0f: MD32 firmware version: 25062302
[    7.243748] usbcore: registered new interface driver usbfs
[    7.249358] usbcore: registered new interface driver hub
[    7.254760] usbcore: registered new device driver usb
[    7.262370] gpio_button_hotplug: loading out-of-tree module taints kernel.
[    7.275469] dwc2 10000000.usb: supply vusb_d not found, using dummy regulator
[    7.282835] dwc2 10000000.usb: supply vusb_a not found, using dummy regulator
[    7.307809] dwc2 10000000.usb: DWC OTG Controller
[    7.312583] dwc2 10000000.usb: new USB bus registered, assigned bus number 1
[    7.319688] dwc2 10000000.usb: irq 54, io mem 0x10000000
[    7.326137] hub 1-0:1.0: USB hub found
[    7.329971] hub 1-0:1.0: 1 port detected
[    7.335572] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    7.344108] init: - preinit -
[    7.648261] usb 1-1: new high-speed USB device number 2 using dwc2
[    7.869043] hub 1-1:1.0: USB hub found
[    7.873861] hub 1-1:1.0: 4 ports detected
[    8.181741] sfxgmac 8000000.ethernet eth0: PHY [xgmac0:01] driver [SF1240 Gigabit Ethernet] (irq=POLL)
[    8.191967] sfxgmac 8000000.ethernet eth0: configuring for phy/qsgmii link mode
[    8.278197] usb 1-1.3: new high-speed USB device number 3 using dwc2
[   12.364611] UBIFS (ubi0:3): Mounting in unauthenticated mode
[   12.370458] UBIFS (ubi0:3): background thread "ubifs_bgt0_3" started, PID 650
[   12.421449] UBIFS (ubi0:3): recovery needed
[   12.565426] UBIFS (ubi0:3): recovery completed
[   12.569966] UBIFS (ubi0:3): UBIFS: mounted UBI device 0, volume 3, name "rootfs_data"
[   12.577802] UBIFS (ubi0:3): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
[   12.587725] UBIFS (ubi0:3): FS size: 116817920 bytes (111 MiB, 920 LEBs), max 931 LEBs, journal size 5840896 bytes (5 MiB, 46 LEBs)
[   12.599564] UBIFS (ubi0:3): reserved for root: 4952683 bytes (4836 KiB)
[   12.606175] UBIFS (ubi0:3): media format: w5/r0 (latest is w5/r0), UUID 6272B648-F402-414C-8D6A-5DE90D89BDAA, small LPT model
[   12.629374] mount_root: switching to ubifs overlay
[   12.644431] overlayfs: null uuid detected in lower fs '/', falling back to xino=off,index=off,nfs_export=off.
[   12.663021] urandom-seed: Seeding with /etc/urandom.seed
[   12.762022] procd: - early -
[   12.764996] procd: - watchdog -
[   13.323893] procd: - watchdog -
[   13.327552] procd: - ubus -
[   13.483040] procd: - init -
[   14.193349] urngd: v1.0.2 started.
[   14.246280] kmodloader: loading kernel modules from /etc/modules.d/*
[   14.404166] i2c_dev: i2c /dev entries driver
[   14.419110] Loading modules backported from Linux version v6.18.26-0-g1fe060681
[   14.426425] Backport generated by backports.git 6ecbb44
[   14.446789] rtc-pcf8563 0-0051: registered as rtc0
[   14.452280] rtc-pcf8563 0-0051: setting system clock to 2026-09-01T18:13:00 UTC (1788286380)
[   14.982949] PPP generic driver version 2.4.2
[   14.988581] NET: Registered PF_PPPOX protocol family
[   15.035489] usbcore: registered new interface driver mt7925u
[   15.045663] kmodloader: done loading kernel modules from /etc/modules.d/*
[   18.295526] sfxgmac 8000000.ethernet eth0: PHY [xgmac0:01] driver [SF1240 Gigabit Ethernet] (irq=POLL)
[   18.306045] sfxgmac 8000000.ethernet eth0: configuring for phy/qsgmii link mode
[   18.314592] br-lan: port 1(eth0) entered blocking state
[   18.319940] br-lan: port 1(eth0) entered disabled state
[   18.325237] sfxgmac 8000000.ethernet eth0: entered allmulticast mode
[   18.332072] sfxgmac 8000000.ethernet eth0: entered promiscuous mode
[   18.352490] sfxgmac 8004000.ethernet eth1: PHY [xgmac0:02] driver [SF1240 Gigabit Ethernet] (irq=POLL)
[   18.362004] sfxgmac 8004000.ethernet eth1: configuring for phy/qsgmii link mode
[   18.371059] br-lan: port 2(eth1) entered blocking state
[   18.376323] br-lan: port 2(eth1) entered disabled state
[   18.381689] sfxgmac 8004000.ethernet eth1: entered allmulticast mode
[   18.388460] sfxgmac 8004000.ethernet eth1: entered promiscuous mode
[   18.399491] sfxgmac 8008000.ethernet eth2: PHY [xgmac0:03] driver [SF1240 Gigabit Ethernet] (irq=POLL)
[   18.408938] sfxgmac 8008000.ethernet eth2: configuring for phy/qsgmii link mode
[   18.417903] br-lan: port 3(eth2) entered blocking state
[   18.423252] br-lan: port 3(eth2) entered disabled state
[   18.428646] sfxgmac 8008000.ethernet eth2: entered allmulticast mode
[   18.435281] sfxgmac 8008000.ethernet eth2: entered promiscuous mode
[   18.447079] sfxgmac 800c000.ethernet eth3: PHY [xgmac0:04] driver [SF1240 Gigabit Ethernet] (irq=POLL)
[   18.456539] sfxgmac 800c000.ethernet eth3: configuring for phy/qsgmii link mode
[   18.465516] br-lan: port 4(eth3) entered blocking state
[   18.470900] br-lan: port 4(eth3) entered disabled state
[   18.476207] sfxgmac 800c000.ethernet eth3: entered allmulticast mode
[   18.482975] sfxgmac 800c000.ethernet eth3: entered promiscuous mode
[   18.502720] sfxgmac 8014000.ethernet eth5: PHY [xgmac0:06] driver [SF1211F Gigabit Ethernet] (irq=POLL)
[   18.512204] sfxgmac 8014000.ethernet eth5: configuring for phy/rgmii-txid link mode
[   18.521895] br-lan: port 5(eth5) entered blocking state
[   18.527149] br-lan: port 5(eth5) entered disabled state
[   18.532512] sfxgmac 8014000.ethernet eth5: entered allmulticast mode
[   18.539280] sfxgmac 8014000.ethernet eth5: entered promiscuous mode
[   18.557394] sfxgmac 8010000.ethernet eth4: PHY [xgmac0:0f] driver [Airoha EN8811H] (irq=POLL)
[   18.566093] sfxgmac 8010000.ethernet eth4: configuring for phy/2500base-x link mode
[   22.718921] sfxgmac 8014000.ethernet eth5: Link is Up - 1Gbps/Full - flow control rx/tx
[   22.726970] br-lan: port 5(eth5) entered blocking state
[   22.732244] br-lan: port 5(eth5) entered forwarding state
[   22.741438] sfxgmac 8010000.ethernet eth4: Link is Up - 1Gbps/Full - flow control rx/tx

The output of lspci does not show the MediaTek MT7925 (note: the error below is unrelated, and not displayed when executing only lspci without further parameters):

root@OpenWrt:~# lspci -nnk
0000:00:00.0 PCI bridge [0604]: Device [1a0a:abcd] (rev 01)
        Kernel driver in use: pcieport
lspci: Unable to load libkmod resources: error -2
0001:00:00.0 PCI bridge [0604]: Device [1a0a:abcd] (rev 01)
        Kernel driver in use: pcieport

The output of lsusb shows that the MediaTek MT7925 is detected, so Bluetooth would work (but that’s not what I need):

root@OpenWrt:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 003: ID 0e8d:8c38 MediaTek Inc. Wireless_Device

The following two commands have no output:

root@OpenWrt:~# wifi config
root@OpenWrt:~# iw dev
root@OpenWrt:~#

EDIT: I forgot to mention that before buying any Wi-Fi card, I checked out whether it is fully supported by the Linux kernel (and by which kernel version) according to the documentation. Specifically for both MediaTek cards mentioned above, according to the documentation of this driver.

I saw it, it’s also strange. Is there a wiring error in PCIe causing it to be unusable? If you have the wiring of this WiFi network card, you can compare it with the schematic on the official website to check

Check the M.2 Key E pinout on your module because if the PCIe TX/RX lines aren’t connected on the card side, the Siflower SF21H8898 host controller will fail the PHY link training step every time

Unfortunately, I don’t have the wiring of the MediaTek MT7925. The package did not include any manual or anything else.

I purchased the incompatible MediaTek MT7925 from here: Zhdbchyuu PCIE Wireless WiFi 7 Netzwerkkarte MT7925 5400Mbps Bluetooth 5.3 Tri-Band 2.4G/5G/6G WiFi Adapter 8DB Antenne: Amazon.de: Computer & Zubehör

The chip above has numbers above certain pins, but these are probably useless without actual schematics describing what the pins do. Here are the photos:

I purchased the compatible MediaTek MT7612E from here (the version with external antennas): https://de.aliexpress.com/item/1005006249235461.html