A new dual 10G router based on Filogic 880 (Banana Pi BPi-R4)

on my BPI-R4:
root@BPI-R4:/usr/lib# opkg install kmod-iwlwifi
Unknown package 'kmod-iwlwifi'.
Collected errors:

  • pkg_hash_check_unresolved: cannot find dependency kernel (= 6.1.79-1-4a3c1cd3a4e65473dcdef01a32cbb597) for kmod-cfg80211
  • pkg_hash_fetch_best_installation_candidate: Packages for kmod-cfg80211 found, but incompatible with the architectures configured
  • pkg_hash_check_unresolved: cannot find dependency kernel (= 6.1.79-1-4a3c1cd3a4e65473dcdef01a32cbb597) for kmod-crypto-hash
  • pkg_hash_fetch_best_installation_candidate: Packages for kmod-crypto-hash found, but incompatible with the architectures configured
  • pkg_hash_check_unresolved: cannot find dependency kernel (= 6.1.79-1-4a3c1cd3a4e65473dcdef01a32cbb597) for kmod-crypto-cmac
  • pkg_hash_fetch_best_installation_candidate: Packages for kmod-crypto-cmac found, but incompatible with the architectures configured
  • pkg_hash_check_unresolved: cannot find dependency kernel (= 6.1.79-1-4a3c1cd3a4e65473dcdef01a32cbb597) for kmod-crypto-null
  • pkg_hash_fetch_best_installation_candidate: Packages for kmod-crypto-null found, but incompatible with the architectures configured
  • pkg_hash_check_unresolved: cannot find dependency kernel (= 6.1.79-1-4a3c1cd3a4e65473dcdef01a32cbb597) for kmod-crypto-aead
  • pkg_hash_fetch_best_installation_candidate: Packages for kmod-crypto-aead found, but incompatible with the architectures configured
  • pkg_hash_check_unresolved: cannot find dependency kernel (= 6.1.79-1-4a3c1cd3a4e65473dcdef01a32cbb597) for kmod-crypto-manager

As this is a snapshot build you have to update to the latest snapshot first to be able to install kernel modules.

I have made system upgrade to OpenWrt SNAPSHOT, r25339-35a5e62da7 but my board is not discovering BE200 device...
Errors have gone

So we are both at the same step - my own build with included packages

iwlwifi-firmware-be200 
kmod-iwlwifi

also does not recognize be200 card. Maybe @dingo will share what needs to be done more (or it was just install packages + reboot and that's it?)

You need to show some logs what is being detected in the system.

OS: OpenWrt SNAPSHOT, r25339-35a5e62da7

root@BPI-R4:~# lsusb
Bus 001 Device 003: ID 8087:0036 >>> I suppose here is my BE200 card

for another device Mt7922 I see:

root@BPI-R4:~# dmesg |grep -i firm
[ 0.000000] psci: PSCIv1.1 detected in firmware.
[ 13.009342] mt7921e 0000:01:00.0: WM Firmware Version: ____000000, Build Time: 20231120183441
root@BPI-R4:~# dmesg |grep -i intel
[ 12.323403] Intel(R) Wireless WiFi driver for Linux
root@BPI-R4:~# dmesg |grep -i be200
root@BPI-R4:~# dmesg |grep -i 8087
root@BPI-R4:~# dmesg |grep -i 0036

not sure about those steps

cat /sys/kernel/debug/usb/devices:

T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=8087 ProdID=0036 Rev= 0.00
C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=1ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms
I: If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
E: Ad=03(O) Atr=01(Isoc) MxPS= 63 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 63 Ivl=1ms

echo "8087 0036" > /sys/bus/usb-serial/drivers/generic/new_id

[ 306.781935] usbserial_generic 1-1.2:1.0: The "generic" usb-serial driver is only for testing and one-off prototypes.
[ 306.792469] usbserial_generic 1-1.2:1.0: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
[ 306.802464] usbserial_generic 1-1.2:1.0: generic converter detected
[ 306.808841] usb 1-1.2: generic converter now attached to ttyUSB8
[ 306.814968] usbserial_generic 1-1.2:1.1: The "generic" usb-serial driver is only for testing and one-off prototypes.
[ 306.825511] usbserial_generic 1-1.2:1.1: Tell linux-usb@vger.kernel.org to add your device to a proper driver.
[ 306.835523] usbserial_generic 1-1.2:1.1: device has no bulk endpoints

T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=8087 ProdID=0036 Rev= 0.00
C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=usbserial_generic
E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=1ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)
E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=(none)

crw-rw---- 1 root dialout 188, 8 Feb 28 10:30 /dev/ttyUSB8 >>> new device created

That's the Bluetooth part of the BE200 card. The WiFi part is connected via PCIe, not via USB.

I see:

root@BPI-R4:~# lspci
0000:00:00.0 PCI bridge: MEDIATEK Corp. Device 7988 (rev 01)
0000:01:00.0 Network controller: MEDIATEK Corp. MT7922 802.11ax PCI Express Wireless Network Adapter
0001:00:00.0 PCI bridge: MEDIATEK Corp. Device 7988 (rev 01)
0002:00:00.0 PCI bridge: MEDIATEK Corp. Device 7988 (rev 01)
0002:01:00.0 Non-Volatile memory controller: Sandisk Corp SanDisk Ultra 3D / WD Blue SN550 NVMe SSD (rev 01)

Nothing more, dmesg as above....

Maybe bluetooth part of my MT7922 802.11ax PCI Express Wireless Network Adapter?
if like this-> whole BE200 is not found...

update Im wrong as I remove the BE200 card and there was no entry 8087:0036 so I m rather sure it should ba a part of BE200

any hint or advise how we can go forward?

Do you have some other device with a mini-PCIe slot where you can test the BE200 and adapter combo? The adapter is the prime suspect here.

Yes mt7922 and IT is working fine.
Here no idea how to go further



A friend helped me to 3D print the case, there are a few problems:

RJ45 ports, and SFP cages are physically not exactly aligned at the same horizontal line, but the case design assumes they are aligned so I have to do some human cutting for me to force it in.

USB-C port opening not close enough to the DC Jack, need to manually make it bigger to fit in USB-C. One more note here is, USB-C is not coming out as much as other ports, don't make the case very thick or your USB-C cable can't push all the way into the port.

Back side: SD card slot should have wider opening, I have to use pen or screw driver to push card in/out. And since SIM slots do not use spring mechanism to eject it, basically I am not able to pull the dummy out (well I don't plan to use it now)

BTW, just found that the BPI-R4 is on sale in US Amazon as a small kit, with debugging serial + heatsink @$130

1 Like

How fussy is this thing about SFP modules, especially copper?

Not different from any other embedded Linux device which supports multiple speed SFP modules. Generally, for copper SFP modules that means that they work best if the built-in PHY can be detected by Linux via MDIO-over-I2C (either Marvell C22 or RollBall C45 protocol).

At this (quite early) point of adding support for the MT7988 SoC to Linux there are still some problems with PCS stability in 1G and 2.5G modes, sometimes multiple manual link up, link down, link up sequences are required before it actually works. I'm working with MediaTek to resolve this in a way which is worth being called a good solution (and not just a dirty hack).

7 Likes

Thank you for the detailed answer! That's very good to know about the sketchy 1G and 2.5G stability at present.

If you want to be on the safe side, get 10G copper SFP+ module with Marvell 10G PHY inside. Those work great and very reliable (in USXGMII mode).

if you can be a bit more concise i have a freind who can fix the stl to work properly.