Compiling for apu2

Will start by admitting I am a total n00b when it comes to making my own router firmware.

My usual cup of tea is making custom ubuntu operating systems for home theater PCs and for work I troubleshoot SQL databases com issues with RTUs in SCADA systems.

Have started by reading everything I could

picked up an Apu2 as I am sick of my routers running out of steam when they make my internet faster (just got bumped up to 200 mbps).

Found a precompiled image for it here

Author said his changes have been merged into mainline and I was wondering how I would make a similar image. I read the Documentation about compiling but it gets confusing as to how I specificly target the APU with a build as I know it would fall under X86_64 bit but there appears to be no specific build for this unit.

These is the manifest list from the compile image of what I want so I guess I just select these packages and I think it should work. I read something about a device profile being present for the APU2. This probably will make more sense once I try to do it.

Also as best I can figure I can boot from this image on a USB then dd the image to the mSATA right. Got my null modem cable ready in case I have to go full nerd but would prefer not to.

And yes I did read multiple aticles and posts before posting this like this

I think the questions I am asking are so simple nobody ever wrote them down.

I have seen his patch set hit the mailing list, and they were received favourably, but to my knowledge, they're still sitting there waiting to be approved/revised.

That being said, the default x86/64 images (combined-ext4) work just fine on the APU2. I am running one as well, and one of the devs recently stated he's doing most of his development work on an APU2 even. So it certainly is well supported already; the patches sitting in Patchwork would further hone its support (drivers for extra tidbits like the LEDs etc).

You could use the buildroot to roll your own, or the image generator; if you don't mind installing LuCi afterwards, you can just use a 'vanilla' snapshot built by LEDE's buildbots.

What I did (granted, no programmer etc.) was put the mS-ATA drive into another system and dd the image to it from there, then swap it into the APU2.

(I see you read my article on the APU2, I hope you found it helpful :smiley: ).

Ok makes sense. Figure you guys would want more optimization flags etc for a specific build. Guess with symmetrical 500 mb/s+ no real point. I figured start with everything working for a reference so if I break it I at least know it was my fault.

Anyway to check what is compiled into the default X86 image? You guys don't list off default IP, ethernet port, or anything. Usually there is release notes and a changelog included with an image for most software projects. Granted you guys are building for everything and probably not enough man power to go around. It is also understandable as these are not stable releases yet.

Was originally thinking of going to DD-WRT but their last X86 build was over a year ago. OpenWRT looks like a ghost town in the forums. I know I can get this thing running with other distros but none seem to have web access and as much as I like ssh sometime I just like using the GUI.

Still cannot believe you guys are building on the 4.4 kernel already with that image. Be interesting where things head but can't see the routers with 8 MB of flash being supported forever. If I get the time I was thinking about making the gui a little nicer but at the same time hoping I don't make one of the under powered routers melt down.

You can check the git log for pointers. That'll at least give you some hints. There's not a lot of shocking differences with OpenWrt, at least not functionally.

As for defaults, the Quick Start Guide in the wiki lists what you need to know. Common sense dictates a web interface runs on port 80, so you can safely assume that is the case here as well.

For the default configuration, you'd have to check the buildroot's .config (it gets autogenerated when you run make defconfig). I can't find where the defaults get pulle from at the moment...

I don't know much about DD-Wrt's support for x86. But if their build is over a year old...

I've been running the PC Engines APU2 for quite some time now on a x86-x64 build. And I reach +500Mb/s transfer speeds with minimal CPU load (15% on all cores). I do however like to use the front LEDs which seems to be included in the patches [Borromini] linked to.

Do we have any status on those patches?

I was able to compile latest with the patches several weeks ago. Willing to share my set up if anyone cares.

They have been merged in the meantime, but they didn't make it into the 17.01.0 release. They are in the 17.01 tree now though:

Good to know. Will the APU devices ever get their own releases or will they always be bundled under X86?

Also is there a reliable way to update these things when they are ext file system. Right now I boot from USB then flash the image but would be nice if it could flash itself.

There won't be a more specific subtarget AFAIK. As for upgrading, I just sysupgrade with the combined ext image. Works fine.

Are the patches mainline in 17.01.4 now. Could use me some wifi patch fix love. Probably time I end my custom compiled ways.

They are indeed.

Do you know if I can do this for a CC 15.05 to LEDE 17.01.4 on the Geode on my ALIX?
Can I do this in the GUI?
This would be so much faster than taking the case apart to get the CF card out, to say nothing of DDing the image.
REF: => OpenWrt on x86
File: lede-17.01.4-x86-geode-combined-ext4.img.gz

You should be able to I guess, provided you were already using a combined ext image for 15.05, but it might be wise to wipe your settings. So make sure you've hooked your client up to the right LAN port (only the first Ethernet interface gets configured by default).

You should check with a dev if you can switch between image types with sysupgrade. I haven't tried, nor do I know.

1 Like

Oh, big thank you for this trick.

I don't think it took more than 5 minutes from the time I read this till I was done.

Can I partition the free space as Ext4 and mount this as a data device?
If so what do I need for packages (USB?, Samba?)

Does anyone have lede, builded with these flags:

CONFIG_MICROCODE_AMD ( ) - amd microcode
CONFIG_TARGET_OPTIMIZATION="-Os -pipe -march=btver2 -mtune=btver2" - amd optimalization 



See my reply on the mailing list. Only tested on master so far (and on my Ryzen desktop), but no reason why it shouldn't work on 17.01. Backporting the kernel bits to kernel 4.4 is pretty trivial.

Maybe its better to use backported config 4.9 and then use patch serieries....
And put amd-ucode blobs to /lib/firmware/amd-ucode/...

So you think using a config from a completely different kernel will be easier than adding four lines to the existing one?

I'll make it easy for you. Just apply the patch below.

From 05ac21e2bd125e81b92268da05a0231929918fde Mon Sep 17 00:00:00 2001
From: Stijn Segers <>
Date: Thu, 18 Jan 2018 19:46:12 +0100
Subject: [PATCH] x86: enable microcode loading for Intel and AMD

 target/linux/x86/config-4.4 | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/target/linux/x86/config-4.4 b/target/linux/x86/config-4.4
index 26bb124b8c..1e15d096cf 100644
--- a/target/linux/x86/config-4.4
+++ b/target/linux/x86/config-4.4
@@ -282,7 +282,10 @@ CONFIG_M486=y
 # CONFIG_MGEODEGX1 is not set
 # CONFIG_MGEODE_LX is not set
-# CONFIG_MICROCODE is not set
 # CONFIG_MK6 is not set
 # CONFIG_MK7 is not set
 # CONFIG_MK8 is not set

And what about this?