I've recently received one of the new MT-2500 (Brume 2) GL-iNet routers. Excellent piece of kit, with lots of headroom, but with no easy way to build on it. It's listed as '21.02-SNAPSHOT', and is built on 'aarch64_cortex-a53' (mediatek/mt7981 board). Am I right in thinking that there are no on-device build tools available?
Assuming that is the case, is my only option to cross-compile? I came across this forum in my search for the build tools, but notice that this router is not yet in the hardware support list (presumably given it's age), so wondered if anyone can let me know if I will have any luck using the tools available today, to cross-compile on a Mac M1? Many thanks.
Openwrt buildroot is well documented, you can start here;
However, if your device isn’t in the table of hardware then it’s not running official openwrt - which will mean software built with the openwrt tools may not be compatible. Anything with kernel modules will definitely not be compatible.
To build packages for an unsupported device you either need to port openwrt yourself or ask the hardware vendor for their source / vendor sdk. Vendor sdk builds are not supported here.
A quick grep through the master source suggests the Brume 2 is not yet supported on vanilla OpenWrt. While GL.iNet sticks rather close to upstream OpenWrt, they still roll their own builds. So:
Compiling natively is rarely done on OpenWrt since networking hardware is designed for networking, not for general purpose computing.
The OpenWrt buildroot crosscompiles effortlessly for you, but is mostly tested on GNU/Linux x86_64 and macOS x86_64 AFAIK, maybe a few already tried their hand at MacOS on ARM.
Since there's no official OpenWrt support for your device (yet), you cannot compile anything for it either with the official OpenWrt tools. If GL.iNet offers an SDK you're lucky, but you're an end user, not a corporate client, so I don't think they'll do that easily.
Where might the process fall down? Will there be an obvious issue whereby I need to specify an exact piece of hardware? ...or can I simply build for a specified CPU, and hope for the best once an executable is compiled?
I'm thinking I'd like to simply try compiling a hello-world app, just to see if that will work, but I'm just not sure if the particular hardware is problematic, or if it's simply a case of compiling for that cpu (which seemingly may be supported)?
I'm only looking to compile a couple of node-modules, for homebridge, as I've managed to install most other stuff, without issue, via opkg. However, some npm stuff seems to want to build on-device, which is failing due to make being absent. I'm not looking to rebuild the entire distro - unless perhaps that would allow me to compile on the device
Notably, I've now manage to fetch gcc (again, via opkg), on the device, but presumably that still doesn't allow me to build? Apologies if I sound a bit n00b, I've never needed to cross-compile before, so am a bit out of my depth. Thanks again
Buildroot uses device targets to set the cross compile settings - not cpu type or architecture as routers are mostly SOC based and unique.
You could select another device that has the same system on a chip but, again, if the 'modules' you want to build have kernel dependencies they will not work on your non-openwrt device - unless the source tree you use is also the one that built the kernel on your device. See if gl-inet will give it to you.
Building on the device is just a bad idea, even if you get all the build essentials installed you are going to have terrible build performance and will run out of storage space.