Skip to content

Commit f133daf

Browse files
committed
mt7986: Add Acer Connect Vero w6
1 parent 21fd80a commit f133daf

32 files changed

Lines changed: 2047 additions & 38 deletions

.github/workflows/build-image.yml

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ on:
1515
- bananapi-bpi-r64
1616
- friendlyarm-nanopi-r2s
1717
- microchip-sama7g54-ek
18+
- acer-connect-vero-w
1819
default: 'raspberrypi-rpi64'
1920

2021
jobs:
@@ -57,40 +58,53 @@ jobs:
5758
echo "BOOTLOADER=rpi2-boot" >> $GITHUB_ENV
5859
echo "ARCH=arm" >> $GITHUB_ENV
5960
echo "BUILD_EMMC=false" >> $GITHUB_ENV
61+
echo "BUILD_SD=true" >> $GITHUB_ENV
6062
;;
6163
raspberrypi-rpi64)
6264
echo "BOOTLOADER=rpi64-boot" >> $GITHUB_ENV
6365
echo "ARCH=aarch64" >> $GITHUB_ENV
6466
echo "BUILD_EMMC=false" >> $GITHUB_ENV
67+
echo "BUILD_SD=true" >> $GITHUB_ENV
6568
;;
6669
bananapi-bpi-r3)
6770
echo "BOOTLOADER_SD=bpi-r3-sd-boot" >> $GITHUB_ENV
6871
echo "BOOTLOADER_EMMC=bpi-r3-emmc-boot" >> $GITHUB_ENV
6972
echo "ARCH=aarch64" >> $GITHUB_ENV
7073
echo "BUILD_EMMC=true" >> $GITHUB_ENV
74+
echo "BUILD_SD=true" >> $GITHUB_ENV
7175
;;
7276
bananapi-bpi-r4)
7377
echo "BOOTLOADER_SD=bpi-r4-sd-boot" >> $GITHUB_ENV
7478
echo "BOOTLOADER_EMMC=bpi-r4-emmc-boot" >> $GITHUB_ENV
7579
echo "ARCH=aarch64" >> $GITHUB_ENV
7680
echo "BUILD_EMMC=true" >> $GITHUB_ENV
81+
echo "BUILD_SD=true" >> $GITHUB_ENV
7782
;;
7883
bananapi-bpi-r64)
7984
echo "BOOTLOADER_SD=bpi-r64-sd-boot" >> $GITHUB_ENV
8085
echo "BOOTLOADER_EMMC=bpi-r64-emmc-boot" >> $GITHUB_ENV
8186
echo "ARCH=aarch64" >> $GITHUB_ENV
8287
echo "BUILD_EMMC=true" >> $GITHUB_ENV
88+
echo "BUILD_SD=true" >> $GITHUB_ENV
89+
;;
90+
acer-connect-vero-w)
91+
echo "BOOTLOADER_EMMC=bpi-r3-emmc-boot" >> $GITHUB_ENV
92+
echo "ARCH=aarch64" >> $GITHUB_ENV
93+
echo "BUILD_EMMC=true" >> $GITHUB_ENV
94+
echo "BUILD_SD=false" >> $GITHUB_ENV
8395
;;
8496
friendlyarm-nanopi-r2s)
8597
echo "BOOTLOADER=nanopi-r2s-boot" >> $GITHUB_ENV
8698
echo "ARCH=aarch64" >> $GITHUB_ENV
8799
echo "BUILD_EMMC=false" >> $GITHUB_ENV
100+
echo "BUILD_SD=true" >> $GITHUB_ENV
88101
;;
89102
microchip-sama7g54-ek)
90103
echo "BOOTLOADER_SD=sama7g54-ek-sd-boot" >> $GITHUB_ENV
91104
echo "BOOTLOADER_EMMC=sama7g54-ek-emmc-boot" >> $GITHUB_ENV
92105
echo "ARCH=arm" >> $GITHUB_ENV
93106
echo "BUILD_EMMC=true" >> $GITHUB_ENV
107+
echo "BUILD_SD=true" >> $GITHUB_ENV
94108
;;
95109
*)
96110
echo "Error: Unknown board ${{ inputs.board }}"
@@ -111,15 +125,16 @@ jobs:
111125
run: |
112126
# Download bootloader from latest-boot release tag
113127
if [ "$BUILD_EMMC" = "true" ]; then
114-
# Download both SD and eMMC bootloaders for boards that support both
115-
echo "Downloading SD bootloader: ${BOOTLOADER_SD}"
116-
gh release download latest-boot --pattern "*${BOOTLOADER_SD}*" --dir temp_bootloader_sd/
117-
mkdir -p output_sd/images
118-
cd temp_bootloader_sd/
119-
tar -xzf *.tar.gz --strip-components=1 -C ../output_sd/images/
120-
cd ../
121-
rm -rf temp_bootloader_sd/
122-
128+
if [ "$BUILD_SD" = "true" ]; then
129+
# Download both SD and eMMC bootloaders for boards that support both
130+
echo "Downloading SD bootloader: ${BOOTLOADER_SD}"
131+
gh release download latest-boot --pattern "*${BOOTLOADER_SD}*" --dir temp_bootloader_sd/
132+
mkdir -p output_sd/images
133+
cd temp_bootloader_sd/
134+
tar -xzf *.tar.gz --strip-components=1 -C ../output_sd/images/
135+
cd ../
136+
rm -rf temp_bootloader_sd/
137+
fi
123138
echo "Downloading eMMC bootloader: ${BOOTLOADER_EMMC}"
124139
gh release download latest-boot --pattern "*${BOOTLOADER_EMMC}*" --dir temp_bootloader_emmc/
125140
mkdir -p output_emmc/images
@@ -201,22 +216,18 @@ jobs:
201216
fi
202217
203218
- name: Create SD card image
219+
if: ${{ env.BUILD_SD == 'true' }}
204220
run: |
205221
if [ "$BUILD_EMMC" = "true" ]; then
206222
export BINARIES_DIR=$PWD/output_sd/images
207-
export BUILD_DIR=$PWD/build
208-
export BR2_EXTERNAL_INFIX_PATH=$PWD
209-
export RELEASE=""
210-
export INFIX_ID="infix"
211-
./utils/mkimage.sh -t sdcard ${{ inputs.board }}
212223
else
213224
export BINARIES_DIR=$PWD/output/images
214-
export BUILD_DIR=$PWD/build
215-
export BR2_EXTERNAL_INFIX_PATH=$PWD
216-
export RELEASE=""
217-
export INFIX_ID="infix"
218-
./utils/mkimage.sh -t sdcard ${{ inputs.board }}
219225
fi
226+
export BUILD_DIR=$PWD/build
227+
export BR2_EXTERNAL_INFIX_PATH=$PWD
228+
export RELEASE=""
229+
export INFIX_ID="infix"
230+
./utils/mkimage.sh -t sdcard ${{ inputs.board }}
220231
221232
- name: Create eMMC image
222233
if: ${{ env.BUILD_EMMC == 'true' }}

board/aarch64/Config.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
if BR2_aarch64
22

33
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/alder-alder/Config.in"
4+
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/acer-connect-vero-w/Config.in"
45
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/bananapi-bpi-r3/Config.in"
56
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/bananapi-bpi-r4/Config.in"
67
source "$BR2_EXTERNAL_INFIX_PATH/board/aarch64/bananapi-bpi-r64/Config.in"

board/aarch64/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ aarch64
44
Board Specific Documentation
55
----------------------------
66

7+
- [Acer Connect Vero W6m](acer-connect-vero-w/)
78
- [Banana Pi BPi-R3](bananapi-bpi-r3/)
89
- [Banana Pi BPi-R4](bananapi-bpi-r4/)
910
- [Banana Pi BPi-R64](bananapi-bpi-r64/)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
config BR2_PACKAGE_ACER_CONNECT_VERO_W6
2+
bool "Acer Connect Vero w6"
3+
depends on BR2_aarch64
4+
select BR2_PACKAGE_BANANAPI_BPI_R3
5+
help
6+
Build Acer Connect Vero w6
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Acer Connect Vero W6m
2+
3+
<img src="connect_vero_w6m_case.jpg" alt="Acer Connect Vero W6m" width=400 padding=10>
4+
5+
## Overview
6+
7+
The Acer Connect Vero W6m is a compact WiFi 6/6E router platform based
8+
on the MediaTek MT7986A SoC. In Infix it is supported as an eMMC-based
9+
target that reuses the factory secure boot chain while replacing the
10+
system partitions with an Infix installation.
11+
12+
The Acer Connect Vero W6m is based on the same MT7986a SoC as the
13+
BPI-R3, with tri-band WiFi (2.4 GHz + 5 GHz + 6 GHz) using a PCIe
14+
MT7916 module and the SoC's built-in MT7976 DBDC radio.
15+
16+
## Default WiFi Layout
17+
18+
The factory configuration on this branch enables all three radios in AP
19+
mode and bridges them into the default LAN bridge `br0`:
20+
21+
- `radio0` / `wifi0-ap`: 2.4 GHz, SSID `Infix`
22+
- `radio1` / `wifi1-ap`: 6 GHz, SSID `Infix6G`
23+
- `radio2` / `wifi2-ap`: 5 GHz, SSID `Infix5G`
24+
25+
6 GHz operation is enabled in the MT7915e driver configuration, and all
26+
three APs use the same default passphrase `infixinfix` from the factory
27+
configuration.
28+
29+
Secure boot is enabled on this device, so the factory bootloader
30+
(partitions 1-4: bl2, u-boot-env, factory, fip) must not be modified.
31+
Infix is installed by replacing partitions 5+ while keeping the
32+
factory bootloader intact. The stock U-Boot chainloads the Infix
33+
U-Boot from the first partition after fip.
34+
35+
## Prerequisites
36+
37+
- Serial console access (115200 8N1) — required to interrupt U-Boot.
38+
Disassembly is needed to reach the UART header. See the [OpenWrt
39+
Vero W6m page][vero-openwrt] for details.
40+
- TFTP server on the local network with `u-boot.bin` for the initial
41+
RAM boot.
42+
- SSH access from the running Infix system to a host that stores
43+
`infix-vero-w-emmc.img`.
44+
- Ethernet cable connected between the PC and the Vero Internet/WAN
45+
port.
46+
- DHCP server running on the PC, serving addresses on that link during
47+
installation.
48+
- **Save the MAC addresses** from the stock U-Boot environment before
49+
installing. Interrupt autoboot and run `printenv` to note down:
50+
`2gMAC`, `5gMAC`, `6gMAC`, `LANMAC`, and `WANMAC`.
51+
52+
## Required Files
53+
54+
Prepare these files on a host reachable from the Vero:
55+
56+
1. **Infix Vero image:**
57+
- [infix-vero-w-emmc.img][1] (Complete system image)
58+
2. **eMMC bootloader** (extracted from):
59+
- [bpi-r3-emmc-boot-2025.01-latest.tar.gz][2]
60+
- Extract `u-boot.bin` from the tarball to your TFTP server
61+
62+
## Installing Infix
63+
64+
Connect the PC directly to the Vero Internet/WAN port before starting
65+
the installation. The PC should provide DHCP service on that link so
66+
the stock U-Boot and the temporary Infix system can reach the TFTP/SSH
67+
host.
68+
69+
1. **RAM-load Infix U-Boot** from the stock U-Boot serial console
70+
(hit any key to stop autoboot):
71+
72+
```
73+
setenv serverip <TFTP_SERVER_IP>
74+
setenv ipaddr <VERO_IP>
75+
setenv bootmenu_default 7
76+
tftpboot 0x46000000 u-boot.bin
77+
go 0x46000000
78+
```
79+
80+
`serverip` must point to your TFTP server and `ipaddr` must be a free
81+
address for the Vero on the same subnet. `bootmenu_default 7`
82+
bypasses secure boot verification. The Infix U-Boot will
83+
automatically netboot the Infix system.
84+
85+
2. **From running Infix**, stream the image directly to eMMC:
86+
87+
```bash
88+
ssh <USER>@<HOST> "dd if=/path/to/infix-vero-w-emmc.img bs=512 skip=17408 status=none" | \
89+
dd of=/dev/mmcblk0 bs=512 seek=17408 conv=fsync
90+
sync
91+
```
92+
93+
This writes only the Infix partitions (starting after fip at sector
94+
17408), leaving the factory bootloader and calibration data intact.
95+
Do not interrupt the transfer; if it fails, rerun the command from
96+
the beginning.
97+
98+
3. **Update the GPT** to replace stock partitions 5+ with the Infix
99+
layout:
100+
101+
```bash
102+
sudo sgdisk --zap-all /dev/mmcblk0
103+
sudo sgdisk -a 1 \
104+
-n2:8192:9215 -c2:u-boot-env \
105+
-n3:9216:13311 -c3:factory \
106+
-n4:13312:17407 -c4:fip \
107+
-n5:17408:+32M -c5:infix-uboot \
108+
-n6:0:+8M -c6:aux \
109+
-n7:0:+250M -c7:primary \
110+
-n8:0:+250M -c8:secondary \
111+
-n9:0:+128M -c9:cfg \
112+
-n10:0:+128M -c10:var \
113+
-p /dev/mmcblk0
114+
```
115+
116+
4. **Configure U-Boot to chainload Infix permanently** — reboot and
117+
interrupt stock U-Boot again:
118+
119+
```
120+
setenv bootmenu_default 7
121+
setenv bootcmd 'mmc read 0x46000000 0x4400 0x10000; go 0x46000000'
122+
saveenv
123+
reset
124+
```
125+
126+
The `bootcmd` reads the Infix U-Boot (at sector 0x4400/17408)
127+
into RAM and jumps to it. After `reset`, Infix boots from eMMC.
128+
129+
[vero-openwrt]: https://openwrt.org/toh/acer/predator_vero_w6m
130+
[1]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-vero-w-emmc.img
131+
[2]: https://github.com/kernelkit/infix/releases/download/latest-boot/bpi-r3-emmc-boot-2025.01-latest.tar.gz
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
$(eval $(ix-board))
2+
$(eval $(generic-package))
18 KB
Loading
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
dtb-y += mediatek/mt7986a-acer-connect-vero-w.dtb

0 commit comments

Comments
 (0)