This is what the interfaces end up being named as without changing the label in the device tree from what’s in frank-w’s kernel:
vyos@vyos:~$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address MAC VRF MTU S/L Description
----------- ------------ ----------------- ------- ----- ----- -------------
eth2 - 62:0f:90:15:4f:8b default 1504 A/D
eth3 - 02:00:00:b3:14:42 default 1500 A/D
eth4 - 02:00:00:b3:14:41 default 1500 A/D
lan1 - 02:00:00:b3:14:44 default 1500 A/D
lan2 - 02:00:00:b3:14:45 default 1500 A/D
lan3 - 02:00:00:b3:14:46 default 1500 A/D
lo 127.0.0.1/8 00:00:00:00:00:00 default 65536 u/u
::1/128
Not sure what happened with the RJ45 wan interface. I set a MAC address ending in 43 for it in the device tree but that clearly isn’t used.
VyOS is unable to detect a link on any of the network interfaces.
For the SFP+ slots I tried with both a 10G DAC as well as a 10GBASE-SR fiber transceiver. I also tried with 10GBASE-T transceivers, which did at least light up the link light on the switch at the other end, but still no link detected.
All of the transceivers and DACs work fine in OpenWrt.
Any ideas?
This is the patch I used instead of 0001-bpi-r4-eth-name.patch:
diff --git a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts
index 499f0c91c213..cf5b6bb6adbb 100644
--- a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts
+++ b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts
@@ -27,6 +27,7 @@ &gmac1 {
managed = "in-band-status";
phy-mode = "usxgmii";
sfp = <&sfp2>;
+ local-mac-address = [02 00 00 b3 14 42];
status = "okay";
};
diff --git a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dtsi b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dtsi
index 358ac1df35dd..581e1ae23a77 100644
--- a/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dtsi
@@ -166,6 +166,7 @@ &gmac2 {
managed = "in-band-status";
phy-mode = "usxgmii";
sfp = <&sfp1>;
+ local-mac-address = [02 00 00 b3 14 41];
status = "okay";
};
@@ -182,6 +183,7 @@ &gsw_phy0_led0 {
&gsw_port0 {
label = "wan";
+ local-mac-address = [02 00 00 b3 14 43];
};
&gsw_phy1 {
@@ -197,6 +199,7 @@ &gsw_phy1_led0 {
&gsw_port1 {
label = "lan1";
+ local-mac-address = [02 00 00 b3 14 44];
};
&gsw_phy2 {
@@ -212,6 +215,7 @@ &gsw_phy2_led0 {
&gsw_port2 {
label = "lan2";
+ local-mac-address = [02 00 00 b3 14 45];
};
&gsw_phy3 {
@@ -227,6 +231,7 @@ &gsw_phy3_led0 {
&gsw_port3 {
label = "lan3";
+ local-mac-address = [02 00 00 b3 14 46];
};
&i2c0 {
EDIT: It seems like the issue with VyOS not detecting a link happens when the interfaces are not added to the configuration. Manually adding them makes it establish a link. I realized this after I tried your latest build and running into the exact same issue with all ports except eth5. It works in my build too, except I don’t see the RJ45 wan interface (i.e. the leftmost RJ45 port from the front) for some reason in my build, just like I mentioned before. 
Normally, VyOS would enumerate and add all detected network interfaces to the configuration automatically, but I assume the config override used in your builds to allow people to access the device via SSH without first setting it up using a serial console cable.
The wan interface shows up in ip a:
7: wan@eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 02:00:00:b3:14:43 brd ff:ff:ff:ff:ff:ff
Trying to change it’s state to UP using ifconfig results in the following, so it seems like something fails in the initialization for that interface for some reason based on the LOWERLAYERDOWN state:
7: wan@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN group default qlen 1000
link/ether 02:00:00:b3:14:43 brd ff:ff:ff:ff:ff:ff