[Banana Pi BPI-R64] Mainline OpenWRT image

Which kind of mPCIe hardware are you using? And have you tried both slots?

I have 2 wifi cards: QCA9882 and QCA9984. Both from Compex WLE600VX and WLE1216v5. They are 100% working cards, I tested both of them in another PC. I’v tried both slots, alone and together, mixed vice-a-versa.

Also I loaded board with Openwrt snapshot built, my own build, 21rc build. And got no luck.

Even without any cards at all I should get something from lspci.

No, this is not true. If I have both slots empty, lspci also doesn’t show anything, not even host bridges. So what you are seeing is (from software point of view) just both slots empty and/or link down.

With both slots populated, it looks like this on my board:

0000:00:00.0 PCI bridge: MEDIATEK Corp. Device 3258
0000:01:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)
0001:00:01.0 PCI bridge: MEDIATEK Corp. Device 3258
0001:01:00.0 Unclassified device [0002]: MEDIATEK Corp. Device 7615

I don’t have any QCA modules here for testing, but I’ve heard that the R64 is picky about mPCIe modules. (the AX200 is sitting in mPCIe to NGFF adapter and works fine. it can only do client mode, like all Intel wifi NICs, though…)

Update: The Compex modules you mentioned seem to be problematic, see also [BPI-R64] PCIe issues

There were pcie hardware-issues on r64

  • missing capacitors on tx lines (causing some cards not detected,maybe depend on bus speed)
  • limited current (causing tx power limited on mt7615)

Maybe you fall into one of these.they are known and should be fixed in next hw-rev,but idk if this hardware is ready

there is a limitation that only one pcie-slot supports usb passthrough (afair the one shared with sata). So if card needs this (like some 4g modems) cards do not work correctly (but should shown up in lspci)

I was looking through this thread, and yes there are some issues with those cards at least on older kernels (I’m using 5.10).

Do you have any info about those caps? May be it possible to add them like changing protective resistors?

only this: [BPI-R64] PCIe issues

pcie-splitting is not yet merged to mainline, but maybe existent in openwrt

https://patchwork.kernel.org/project/linux-mediatek/patch/[email protected]/

https://patchwork.kernel.org/project/linux-mediatek/patch/[email protected]/

Yes, we got both patches in recent OpenWrt with Linux 5.10:

I know it has been discussed before, but the Sinovoip support pages disappeared, so I can’t find the method for setting permanent eth1 (wan) and eth0 (br-lan) MAC address. Is there any way to set it in U-boot or elsewhere?

Afair that was nowhere in official documents,but i have it written down here (os independ,but ifupdown/systemd maybe not working in openwrt):

https://www.fw-web.de/dokuwiki/doku.php?id=en/bpi-r2/network/start#mac-address

Thanks, but unfortunately I couldn’t make it in OpenWRT. There was a setenv command in previous u-boot menu, for setting mac address, but it is gone.

afair uboot-way depends on right dts. it needs mac-address property and alias for ethernet-node

Run this in openwrt:

fw_setenv ethaddr newaddress

Or in uboot

setenv ethaddr newaddress

saveenv

1 Like

I applied the fw_setenv ethaddr command, and it changed the MAC address indeed (after rebooting). Now every interface has the same MAC address. I think it changed the internal bridge address. Is there any way to specify it separately for the wan/eth1 also? Perhaps it is not so important, because br-lan and wan are on different segments, so there should be no ARP conflict.

It changes adress of eth0 (gmac between soc and switch). eth1 should not exist and wan (dsa port) is connected to eth0 too

Independently of the main MAC address you may configure an individual mac address for wan port (or any other port) in OpenWrt. This works in LuCI:

or in CLI:

uci add network device
uci set network.@device[-1].name= 'wan'
uci set network.@device[-1].macaddr= '02:03:04:05:06:07'

Thanks, it worked :+1:

I upgraded luci-mod-network and it handles the bridge interface differently that it used before. But now the LAN bridge does not have any fixed IP address and it does not act as a DHCP server. What should I change in the new config? Here is the bridge related section in the /etc/network/config:

config interface 'lan'
    option proto 'static'
    option ipaddr '192.168.0.1'
    option netmask '255.255.255.0'
    option ip6assign '60'
    option ifname 'br-lan'

config device
    option name 'br-lan'
    option type 'bridge'
    list ports 'lan1'
    list ports 'lan2'
    list ports 'lan3'
    list ports 'lan4'

I guess you need to define br-lan before assign ip-address to it…so basicly swapping both blocks

If I add Option type 'bridge' to the config interface 'lan' section, it already gets IP address, but still not leasing DHCP addresses to clients… I wonder if there is a comprehensive description of the network config options, or at least a sample configuration with the changed syntax.

Edit: I can add br-lan and the ports manually with brctl. Then it works. But when I open the Network - Interfaces configuration page, it says:

The existing network configuration needs to be changed for LuCi to function properly. Upon pressing “Continue”, bridges configuration will be moved from “interface” sections to “device” sections the network will be restarted to apply the updated configuration.

But after this change the lan1…lan4 ports are not bridged to eth0, and the bridged ports are down. I can restore it only if I add option type 'bridge to the config interface ‘lan’ section, and add the lan1 … lan4 interfaces to the bridge manually with brctl addif br-lan lan1 and same for lan2 lan3 lan4. However, this is not compatible with LuCi. LuCi version: git-21.140.43486-398982f

After upgrading the kernel to 5.10.39 it works fine. Edit: it worked fine, but today my wan6 interface “disappeared”. It is present in LuCi, but not showing up by ifconfig:

root@OpenWrt:/sys/class/net# ifconfig | grep Link
`br-lan    Link encap:Ethernet  HWaddr 6A:55:75:51:DE:5A`
      inet6 addr: fe80::6855:75ff:fe51:de5a/64 Scope:Link
eth0      Link encap:Ethernet  HWaddr 6A:55:75:51:DE:5A
      inet6 addr: fe80::6855:75ff:fe51:de5a/64 Scope:Link
ifb4eth1  Link encap:Ethernet  HWaddr 4A:80:25:54:53:95
      inet6 addr: fe80::4880:25ff:fe54:5395/64 Scope:Link
lan1      Link encap:Ethernet  HWaddr 6A:55:75:51:DE:5A
lan2      Link encap:Ethernet  HWaddr 6A:55:75:51:DE:5A
lan3      Link encap:Ethernet  HWaddr 6A:55:75:51:DE:5A
lan4      Link encap:Ethernet  HWaddr 6A:55:75:51:DE:5A
lo        Link encap:Local Loopback
wan       Link encap:Ethernet  HWaddr 6A:55:75:51:DE:5B
      inet6 addr: fe80::6855:75ff:fe51:de5b/64 Scope:Link
root@OpenWrt:/sys/class/net# ls
6in4-WAN6  br-lan     eth1       lan1       lan3       lo         wan
6in4-wan6  eth0       ifb4eth1   lan2       lan4       sit0       wlan0

Also I created a second 6in4-WAN6 device by mistake. Maybe this caused the confusion. Is there any way to remove it? And how could I restore the wan6 interface? My kernel is 5.10.39 from snapshot image.