GL-iNet AX1800 Slate compiling PR

So far I don't think there is an offical release for the slate? if that's still the case could someone advise how to compile an image form the pr https://github.com/openwrt/openwrt/pull/14950

https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem + apply the commits from the PR you linked to.

a high level YT video of it - https://youtu.be/4C-0cfyCmqE

Thanks i've done

git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a

But can't work out how to apply specific commits or which ones i need for the slate.

the PR is device specific, I would assume you need all of them.
as for the actual patching there's the patch command.

There're 2 ways to do it:
The easiest way is to clone this branch and compile it, the downside is that you don't get the latest bug fixes from v24.10 branch.
For me, I checked out the openwrt/openwrt v24.10.0-rc5 tag and rebased the commits from the pull request on top of the tag in a new branch and then compiled it.

1 Like

Thanks for that, i've been trying for some time with various rebase cherry pick commands but none of them are working. I've checked out v24.10.0-rc5 pleas could you tell me the commands I need to rebase the commits onto it.

Rebasing on top of v24.10.0-rc5 needs extra bits of effort to do that, including modifying source code to remove the support of a Linksys router if I remembered correctly, a decent experienced software developer would figure it out in hours.
If you aren't familiar with the source code, I would recommend you just merge the ipq-gl branch to the master branch of OpenWrt, thus you get the support of the hardware at the same time you get most recent changes/fixes from OpenWrt.

I had been hesitant to upgrade the firmware in my main router, but the instructions link that @frollic posted was very straightforward. I ended up git mergeing the source branch of the pull request to the head of the main branch as of yesterday. There were two rather trivial conflicts to shell scripts that seem to invoke some changes to the persistent configuration or to u-boot. Had I used the pull request directly, I would have avoided that step.

In make menuconfig I did little else than selecting the device (qualcommax, ipq60xx, GL-AX1800). For the build to succeed, I had to remove liblzma-dev from my base system, because its headers in /usr/include would conflict with something in the OpenWrt buildroot. I know, I should have set up a clean chroot build environment or something (for example, with debootstrap on Debian).

The installation turned out to be as simple as uploading the bin/targets/qualcommax/ipq60xx/openwrt-qualcommax-ipq60xx-glinet_gl-ax1800-squashfs-factory.bin to the firmware upgrade dialog of the 4.6.8 factory firmware (the newest available, after enabling some "experimental" factory firmware support).

In make menuconfig I had tried to enable LuCi out of the box, but because I am a total newbie to building OpenWrt, the new firmware was initially only accessible from a LAN port via ssh root@192.168.1.1 (no password). After I installed LuCi, I got access to http://192.168.1.1 and enabled&configured WLAN there.

I thought that I would upgrade to the 24.10 release. I did it by git cherry-pick; the top commit required quite a few adjustments.

All went well, except that only after upgrading I found out that there is no apk utility in the image. I can still access the system via SSH and upgrade to another image with sysupgrade. But I am running out of ideas how to get apk included in the image. I tried manually adding CONFIG_USE_APK=y to the .config file after make menuconfig would remove it, hoping that it would have enabled https://github.com/openwrt/openwrt/pull/16986 in some way. My previous build did have CONFIG_USE_APK=y set by make menuconfig.

I think that it would be useful to update https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem with some instructions on how to get apk included. I can copy files to the system (that’s how I tried to upgrade the firmware twice more), and apparently my existing configuration is preserved, so this does not count as fully bricked yet. Any advice would be appreciated.

I figured out that the sysupgrade.bin file is actually an uncompressed tar archive, whose last file is a squashfs image of the root file system. Even after starting from a clean build directory and make menuconfig, I can’t seem to get an apk executable included in the image.

As I understand, The 24.10 release does not include apk support, only opkg. Apk support is in main. This might explain why you have apk in the version you merged from main.

@steep01, thank you a lot. There indeed is a /bin/opkg included. I didn’t realize that switching from main (which I probably was using for my previous build) to a 24.10 release branch would be such a significant downgrade. I’ll try again with a fresh main and report what happens.

apk is back, and it turns out that the current main branch makes 2 patches in the pull request redundant.

Hi everyone!

I'm starting to try my own snapshot builds from the main branch with this PR as a patch, however I'm getting a bit stuck during the compile process.

I'm using a WSL2 VM with Debian while following the instructions from the wiki to run this command:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make -j $(($(nproc)+1)) download world V=sc; echo -e '\a'

However, I seem to always get stuck with an error in musl and stamp:

/home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/linux-6.6.80/arch/arm64/boot/dts/qcom/ipq6018.dtsi:510.23-531.5: ERROR (duplicate_node_names): /soc@0/mmc@7804000: Duplicate node name
ERROR: Input tree has errors, aborting (use -f to force output)
/home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/linux-6.6.80/arch/arm64/boot/dts/qcom/ipq6018.dtsi:510.23-531.5: ERROR (duplicate_node_names): /soc@0/mmc@7804000: Duplicate node name
ERROR: Input tree has errors, aborting (use -f to force output)
make[5]: *** [Makefile:42: /home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/image-ipq6000-gl-ax1800.dtb] Error 2
make[5]: *** Waiting for unfinished jobs....
make[5]: *** [Makefile:42: /home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/image-ipq6010-xe3-4.dtb] Error 2
/home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/linux-6.6.80/arch/arm64/boot/dts/qcom/ipq6018.dtsi:510.23-531.5: ERROR (duplicate_node_names): /soc@0/mmc@7804000: Duplicate node name
ERROR: Input tree has errors, aborting (use -f to force output)
/home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/linux-6.6.80/arch/arm64/boot/dts/qcom/ipq6018.dtsi:510.23-531.5: ERROR (duplicate_node_names): /soc@0/mmc@7804000: Duplicate node name
ERROR: Input tree has errors, aborting (use -f to force output)
make[5]: *** [Makefile:42: /home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/image-ipq6000-gl-axt1800.dtb] Error 2
make[5]: *** [Makefile:42: /home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/image-ipq6010-mango-dvk.dtb] Error 2
/home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/linux-6.6.80/arch/arm64/boot/dts/qcom/ipq6018.dtsi:510.23-531.5: ERROR (duplicate_node_names): /soc@0/mmc@7804000: Duplicate node name
ERROR: Input tree has errors, aborting (use -f to force output)
/home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/linux-6.6.80/arch/arm64/boot/dts/qcom/ipq6018.dtsi:510.23-531.5: ERROR (duplicate_node_names): /soc@0/mmc@7804000: Duplicate node name
ERROR: Input tree has errors, aborting (use -f to force output)
make[5]: *** [Makefile:42: /home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/image-ipq6010-wax214.dtb] Error 2
make[5]: *** [Makefile:42: /home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/image-ipq6000-mr7350.dtb] Error 2
/home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/linux-6.6.80/arch/arm64/boot/dts/qcom/ipq6018.dtsi:510.23-531.5: ERROR (duplicate_node_names): /soc@0/mmc@7804000: Duplicate node name
ERROR: Input tree has errors, aborting (use -f to force output)
/home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/linux-6.6.80/arch/arm64/boot/dts/qcom/ipq6018.dtsi:510.23-531.5: ERROR (duplicate_node_names): /soc@0/mmc@7804000: Duplicate node name
ERROR: Input tree has errors, aborting (use -f to force output)
make[5]: *** [Makefile:42: /home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/image-ipq6000-360v6.dtb] Error 2
make[5]: *** [Makefile:42: /home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/image-ipq6018-eap610-outdoor.dtb] Error 2
/home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/linux-6.6.80/arch/arm64/boot/dts/qcom/ipq6018.dtsi:510.23-531.5: ERROR (duplicate_node_names): /soc@0/mmc@7804000: Duplicate node name
ERROR: Input tree has errors, aborting (use -f to force output)
make[5]: *** [Makefile:42: /home/toasterdev/openwrt/build_dir/target-aarch64_cortex-a53_musl/linux-qualcommax_ipq60xx/image-ipq6018-fap650.dtb] Error 2
make[5]: Leaving directory '/home/toasterdev/openwrt/target/linux/qualcommax/image'
make[4]: *** [Makefile:21: install] Error 2
make[4]: Leaving directory '/home/toasterdev/openwrt/target/linux/qualcommax'
make[3]: *** [Makefile:12: install] Error 2
make[3]: Leaving directory '/home/toasterdev/openwrt/target/linux'
time: target/linux/install#22.64#4.41#20.03
    ERROR: target/linux failed to build.
make[2]: *** [target/Makefile:32: target/linux/install] Error 1
make[2]: Leaving directory '/home/toasterdev/openwrt'
make[1]: *** [target/Makefile:26: /home/toasterdev/openwrt/staging_dir/target-aarch64_cortex-a53_musl/stamp/.target_install] Error 2
make[1]: Leaving directory '/home/toasterdev/openwrt'
make: *** [/home/toasterdev/openwrt/include/toplevel.mk:233: world] Error 2

I think I may have done something wrong while applying the patches, though I'm not sure what tbh. Could someone point me in the right way please?

It could help if you indicated the SHA1 commit hashes (the hexadecimal numbers after commit in git show or git log), for both the OpenWrt main branch and the PR. I see that I did my latest build 11 days ago, without any tweaks needed back then.

Could it be that the file target/linux/qualcommax/patches-6.6/0137-arm64-dts-qcom-ipq6018-add-SDHCI-node.patch has recently been included into the main branch (that is, there is some continuing progress in getting these changes merged piece by piece) and you should simply remove this duplicate patch file?

For errors that I had in the past, it was not this obvious; I had to invoke make V=s or make V=sc to get some relevant output that would indicate the issue. But here the Duplicate node name is rather telling when you look at https://github.com/openwrt/openwrt/pull/14950/files.

Hmm, I see.

Truth be told this is my first time working with embedded Linux compilation, so working with patches was a bit out of my wheelhouse :sweat_smile:

As you said, removing the duplicate patch ended up with a successful build, so thanks for the pointer!

Still, for the sake of posterity, the hash of the main branch I was trying this with is 6da7352ebe1150928a249aff47eb28c5c81f26aa, and while I don't have the hash for the PR, I can tell that my last attempt at pulling source code from GitHub was at 20250304T22:10UTC-6 (CST).

Thanks for everything!

1 Like

I’m glad that the fix was this simple. This is also my first time compiling OpenWrt, or anything with embedded Linux for a long time. I understand that the experts do not want to spend too much time on rather trivial things such as constantly rebasing the pull request, until there is a reasonable expectation that it can be merged ‘as is’. This pull request has a long history; it has been shrinking a lot as some pieces (sometimes for other routers using similar hardware) have been merged.

Even if the manufacturer would stop selling this model before the support is merged, it would still be extremely useful, because it should guarantee ‘eternal’ security updates, extending the lifetime of existing hardware. It could also make it easier to support models that run on similar hardware. I would expect this type of hardware to perform reasonably well at least for the next 10 years.

1 Like

https://github.com/openwrt/openwrt/pull/14950 was just merged to the main branch today, so I guess one could get a pre-built image from somewhere. I’m yet to build&test it.

1 Like

at https://firmware-selector.openwrt.org/?version=SNAPSHOT in a day or two.

Images are being built.

1 Like