The background is that the default OpenWRT image for Raspberry Pi lacks drivers for the LAN port (RTL8111) on the DFRobot board. DFRobot provide an image, but that one is made from a quite old daily snapshot of OpenWRT which is not entirely stable. Also, it is better to know how to fish than be given a fish.
DFRobot's page about the router board:
https://wiki.dfrobot.com/Compute_Module_4_IoT_Router_Board_Mini_SKU_DFR0767
OpenWRT main page:
https://openwrt.org/
You are expected to have some general knowledge on Linux and OpenWRT. The instructions for flashing the resulting firmware image are presented on DFRobot's page.
We will use the OpenWRT image builder. This is a quite nifty tool that can generate a firmware image with some additional packages not present in the default image. It is not a cross-compiler, but rather takes already compiled OpenWRT packages and creates a new firmware image.
Download the latest image builder for Raspberry Pi from OpenWRT. At the time of writing, this is RC3. It is under target bcm27xx/bcm2711
https://downloads.openwrt.org/releases/21.02.0-rc3/targets/bcm27xx/bcm2711/
I built it on a Debian VirtualBox machine, but pretty much any Linux system would do. You first need to install some Linux tools. These are the tools for Debian/Ubuntu:
root@debian:~# apt install build-essential libncurses5-dev libncursesw5-dev zlib1g-dev gawk git gettext libssl-dev xsltproc rsync wget unzip pythonFor other Linux distros, see the Prerequisites section here:
https://openwrt.org/docs/guide-user/additional-software/imagebuilder
Unpack your image builder:
martin@debian:~# tar Jxf openwrt-imagebuilder-21.02.0-rc3-bcm27xx-bcm2711.Linux-x86_64.tar.xz
martin@debian:~# cd openwrt-imagebuilder-21.02.0-rc3-bcm27xx-bcm2711.Linux-x86_64/For some reason, you will need a /etc/config/network file in your image, or your LAN network will not come up.
https://openwrt.org/docs/guide-user/additional-software/imagebuilder#files_variable
martin@debian:~# mkdir -p files/etc/configPut below file in files/etc/config/network
We need to build the image with 3 extra modules:
- luci -- the OpenWRT web interface
- kmod-r8169 -- kernel module for the DFRobot ethernet controller
- kmod-usb-dwc2 -- kernel module for USB. More details:
https://openwrt.org/packages/pkgdata/kmod-usb-dwc2
https://raspberrypi.stackexchange.com/questions/77059/what-does-dtoverlay-dwc2-really-do#77061
Go!
martin@debian:~# make image PROFILE="rpi-4" PACKAGES="luci kmod-r8169 kmod-usb-dwc2" FILES=files/The built image(s) will end up at:
bin/targets/bcm27xx/bcm2711/
The “default” one to use would be:
openwrt-21.02.0-rc3-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz
After you gunzip that file, you can follow the instructions from DFRobot for installation. Or you can use “dd” directly on Linux, instead of Rufus:
martin@debian:~# dd if=/home/martin/openwrt/openwrt-21.02.0-rc3-bcm27xx-bcm2711-rpi-4-ext4-factory.img of=/dev/sdb
hey @ddschmitz I've found a workaround after my last comment and totally forgot this gist. For 23.05.0 onwords you have to only select
kmod-usb-dwc2. To quote from my blog:Maybe that helps. I've sold mine a few months ago and switched to a Unifi gateway instead, since the upgrade procedure was annoying. I suggest you try to create the bootimage like I've described and select only the
kmod-usb-dwc2package. Once the image is flashed, put the mentioned .dat and .elf firmware files into the /boot partition like it's recommended in the dfroboto forum. Hope that helps!