If you’re on Deutsche Telekom fiber, you need the pppoe-wan credentials. If you’ve built the custom MT7615 kernel module, make sure mt7615-common.ko is in the instance home folder.
When building the OpenWrt image, you can customize the default config files and include or exclude system packages. If the
3. OpenWrt Config satisfies your needs or you’re looking for a quick start, you can use this script from
to automate the build. Otherwise follow the steps below.

Bash
Copy
. <(curl -fsS https://properinter.net/bin/build_bpi_r4_dt_gpon_image.sh)
Enter pppoe-wan username: [email protected]
Enter pppoe-wan password: 51428761
MT7615 kernel module [~/mt7615-common.ko]:
Hit:1 http://security.ubuntu.com/ubuntu noble-security InRelease
[...]
22806532 bytes (23 MB, 22 MiB) copied, 0.0891981 s, 256 MB/s
Calculating checksums...
bin/targets/mediatek/filogic/openwrt-mediatek-filogic-bananapi_bpi-r4-sdcard.img.gz
OpenWrt image copied to ~/openwrt-mediatek-filogic-bananapi_bpi-r4-sdcard.img.gz
1. Prepare the OpenWrt image builder
Bash
Copy
# install system dependencies
sudo apt update
sudo apt install -y build-essential libncurses-dev zlib1g-dev gawk git \
gettext libssl-dev xsltproc rsync wget unzip python3 python3-setuptools
# prepare openwrt image builder
wget https://downloads.openwrt.org/snapshots/targets/mediatek/filogic/openwrt-imagebuilder-mediatek-filogic.Linux-x86_64.tar.zst
tar --use-compress-program=unzstd -xvf openwrt-imagebuilder-mediatek-filogic.Linux-x86_64.tar.zst
2. Prepare the OpenWrt configuration
Bash
Copy
cd openwrt-imagebuilder-mediatek-filogic.Linux-x86_64
mkdir files
cd files
git clone https://github.com/proper-internet/etc.git
rm -rf etc/.git
# update network configuration with your ISP credentials
sed -i -e "s/[email protected]/[email protected]/" config/network
sed -i -e "s/'password'/'51428761'/" config/network
# update wireless configuration SSID and keys (optional)
vim etc/config/wireless
cd ..
3. Include the MT7615 custom kernel module
If you’ve decided to build the
2.1. Kernel module for MT7165, then mt7615-common.ko should be in the instance home folder. Skip this step otherwise.

Bash
Copy
mkdir -p files/lib/modules/6.6.61
cp ~/mt7615-common.ko ./files/lib/modules/6.6.61/
4. Build the OpenWrt image
Change the PACKAGES environment variable to include or exclude packages in your image.
Bash
Copy
export PROFILE=bananapi_bpi-r4
export PACKAGES="luci luci-ssl iptables-nft sqm-scripts luci-app-sqm wireguard-tools luci-proto-wireguard netperf htop pciutils unbound-daemon unbound-control luci-app-unbound odhcpd kmod-mt7615e kmod-mt7615-common kmod-mt7615-firmware gawk curl ca-bundle ca-certificates tcpdump adblock luci-app-adblock -dnsmasq -odhcpd-ipv6only"
make image PROFILE="$PROFILE" PACKAGES="$PACKAGES" FILES="files"
# the sd card image is located in bin/targets/mediatek/filogic/
cp bin/targets/mediatek/filogic/openwrt-mediatek-filogic-bananapi_bpi-r4-sdcard.img.gz ~/
Flash the OpenWrt image
Flash the SD card with the OpenWrt image you’ve just built.
user@local:~#
Bash
Copy
scp [email protected]:~/openwrt-mediatek-filogic-bananapi_bpi-r4-sdcard.img.gz .
gunzip openwrt-mediatek-filogic-bananapi_bpi-r4-sdcard.img.gz
# get the device path using diskutil (e.g. /dev/disk4)
diskutil list
diskutil unmountDisk /dev/disk4
# flash the sd card with the openwrt image
sudo dd bs=1M if=openwrt-mediatek-filogic-bananapi_bpi-r4-sdcard.img of=/dev/disk4
85+1 records in
85+1 records out
89915396 bytes transferred in 18.030707 secs (4986793 bytes/sec)
You can now stop the Ubuntu instance and move on to
5. First Boot.
