What's new

Entware-3x for new HND platform (GT-AC5300 and RT-AC86U) with asuswrt-merlin firmware

  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

zyxmon

Regular Contributor
Entware-3x is new version of Entware optimized for 3.x and 4.x linux kernels. It is based on Entware-ng but can be used only on firmwares with 3.x and 4.x linux kernels. Entware-3x has more packages compared to Entware-ng because some packages cannot be compiled for old kernels, some Entware-3x packages have higher versions for the same reason. Entware-3x is used on many Metiatek routers, NASes, rooted android devices, DD-WRT devices starting from July 2016.

Entware-3x is built for mips, mipsel, armv5, armv7, aarch64, x64 platforms.
I have made a special installer for asuswrt (armv7 & aarch64) – it does not install busybox and adds /opt/bin & /opt/sbin to the end of PATH variable.
Here you can find more info https://github.com/Entware-ng/Entware-ng/issues/772#issuecomment-331609759

Asus GT-AC5300 and RT-AC86U have aarch64 architecture, and can run both armv7 (32 bit) and aarch64 (64 bit) binaries.

Entware-3x can be easily installed on asuswrt-merlin with 4.1 kernel

1) Copy /usr/sbin/entware-setup.sh script to /tmp folder
2) Edit entware-setup.sh script
- If you want to install 32 bit arm repo change
Code:
aarch64)
    PART_TYPES='ext2|ext3|ext4'
    INST_URL='http://pkg.entware.net/binaries/armv7/installer/entware_install.sh'

To
Code:
aarch64)
    PART_TYPES='ext2|ext3|ext4'
    INST_URL=' http://entware-3x.zyxmon.org/binaries/armv7/installer/install_asuswrt.sh'

- If you want to try 64 arm repo change the same lines to
Code:
aarch64)
    PART_TYPES='ext2|ext3|ext4'
    INST_URL=' http://entware-3x.zyxmon.org/binaries/armv8/installer/install_asuswrt.sh'
(The only difference is 7 is replaced with 8)


Run /tmp/entware-setup.sh script to install entware-3x


More info on Entware-3x (Russian) is here http://forums.zyxmon.org/viewtopic.php?f=5&t=5399
PS A couple of packages may need some adjustment, because busybox is not installed for asuswrt.
 
Last edited:
Entware-3x is new version of Entware optimized for 3.x and 4.x linux kernels. It is based on Entware-ng but can be used only on firmwares with 3.x and 4.x linux kernels. Entware-3x has more packages, then Entware-ng because some packages cannot be compiled for old kernels, some Entware-3x packages have higher versions for the same reason. Entware-3x is used on many Metiatek routers, NASes, rooted android devices, DD-WRT devices starting from July 2016.

Entware-3x is built for mips, mipsel, armv5, armv7, aarch64, x64 platforms.
I have made a special installer for asuswrt – it does not install busybox and adds /opt/bin & /opt/sbin to the end of PATH variable.
Here you can find more info https://github.com/Entware-ng/Entware-ng/issues/772#issuecomment-331609759

Asus GT-AC5300 and RT-AC86U have aarch64 architecture, but can run both armv7 (32 bit) and aarch64 (64 bit) binaries. I am not sure Broadcom CPU is compatible with aarch64 version of Entware-3x.

I do not have HND asus routers to test Entware-3x. armv7 repo will be OK for GT-AC5300 and RT-AC86U. aarch64 repo is to be tested.

Congrats on the release - nicely done...

Saw the HND thread - @RMerlin brings some interesting items...

Thoughts...

ARMv8 can run armv7-a and arm6 code just fine, just need to support kernel and the c-library - not all ARMv8's support legacy code, but many do, and the B53 does...

Past work - did most of userland in armhf, essentially mirroring rasbian's repo's - that decision was made after benchmarking more than a few boards, and the delta's were close enough - most of the benefit was the kernel and glibc tuning to the chip itself. armv8, makes more sense with the big OOO cores like a57 and so forth, for the in-order cores (a53), not much benefit, and with >2GB ram, more of a hinderance.

With regards to QCA's Kraits - A15 is so very similar to A9, wasn't worth the effort there, but I know of some (@Voxel) that did take some time to customize builds, and there were some incremental improvements. If one takes the time to optimize source for an OOO core like A8/A9, A15 and A17 will benefit without much impact to the A7 and A53 cores common in use.

Consider A17, Rockchip's 3288 is a good example there...

For armv8, the MachiattoBin board from SolidRun is an affordable example... GlobalScale's EspressoBin is a good A53 reference...

Just from a code perspective - in private chats, HND is an odd-duck - mixed mode and a lot of object files/binaries...

keeping things outside of /tmp is a good thing, but there's a fair amount of legacy with the platform in general, which is likely a headache for some now that we're seeing some modern cores and code in place...
 
Saw the HND thread - @RMerlin brings some interesting items...

Those have been resolved, as Busybox won't be installed by default, and the path will no longer override built-in versions either. This will ensure that add-on packages won't override built-in system, which could lead to functionality issues.
 
For armv8, the MachiattoBin board from SolidRun is an affordable example... GlobalScale's EspressoBin is a good A53 reference...
I am testing aarch64 repo on QNAP TS-128A with Realtek RTD1295. I have also run it without problems on Amlogic S912 Tv Box (Android). Some android users will probably test it on MediaTek MT6753 smartfones in near future.
As for Broadcom.... If aarch64 is not good, armv7 will work. Still I strongly recommend to switch from Entware-ng to Entware-3x on new kernel devices.

PS Synology lowcost NASEs for 2018 year are now aarch64 based with Realtek RTD129x - https://originwww.synology.com/en-u...ial/General/What_kind_of_CPU_does_my_NAS_have
Entware can be used also on aarch64 synos.
 
I am testing it now on my RT-AC86U. Some packages get improvement.
For instance,
ocserv (Openconnect vpn server) can reach 200Mbps. It was 70Mbps on armv7.
Transmission also get more speed, nearly 30MB/s. It was 12MB/s on armv7.

I'll try to do some more testing.

Code:
opkg list_installed
asuswrt-opt - 1.0-4
bash - 4.4.12-1
certtool - 3.5.16-1
dnscrypt-proxy - 1.9.5-7
dnscrypt-proxy-resolvers - 1.9.5+git-20170530-60baef4-7
fake-hwclock - 0.11-1
findutils - 4.6.0-1
haveged - 1.9.2-1
iperf - 2.0.10-1
iperf3 - 3.3-1
libc - 2.25-8
libcares - 1.13.0-1
libcurl - 7.57.0-1
libev - 4.22-1
libevent2 - 2.0.22-1
libgcc - 6.3.0-8
libgmp - 6.1.2-1
libgnutls - 3.5.16-1
libhavege - 1.9.2-1
libhttp-parser - 2.3.0-1
libldns - 1.6.17-2
libltdl - 2.4-2
libmbedtls - 2.6.0-1
libncurses - 6.0-1c
libncursesw - 6.0-1c
libnettle - 3.3-1
libopenssl - 1.0.2n-1
libpcre - 8.41-2
libprotobuf-c - v1.2.1
libpthread - 2.25-8
libreadline - 7.0-1
librt - 2.25-8
libsodium - 1.0.16-1
libssp - 6.3.0-8
libstdcpp - 6.3.0-8
locales - 2.25-8
ocserv - 0.11.9-1
opkg - 2011-04-08-9c97d5ec-17a
shadowsocks-libev-config - 3.1.1-1
shadowsocks-libev-ss-local - 3.1.1-1
shadowsocks-libev-ss-server - 3.1.1-1
shadowsocks-libev-ss-tunnel - 3.1.1-1
simple-obfs - 0.0.5-1
simple-obfs-server - 0.0.5-1
strace - 4.20-1
stunnel - 5.44-3
terminfo - 6.0-1c
transmission-daemon-openssl - 2.92+git-5
transmission-remote-openssl - 2.92+git-5
zlib - 1.2.11-1
zoneinfo-asia - 2017c-1
 
@zyxmon
Would you please let me know armv8 native gcc env ?
Is this right ?

Code:
#!/bin/sh
export LDFLAGS="-Wl,-rpath=/opt/lib -Wl,--dynamic-linker=/opt/lib/ld-linux-aarch64.so.1 -L/opt/lib"
export CFLAGS="-O2 -pipe -mcpu=cortex-a53 -fno-caller-saves -fno-plt"

Edit : never mind. I successfully installed the latest shadowsocks-libev (3.1.3) using native gcc.
 
Last edited:
@Odkrys did you install the 32bit or the 64bit aarch64?
 
@Odkrys has installed 64-bit version.
BTW @Voxel 32-bit armv7 repo can be also used on HND platform. It will be faster than entware-ng and probably faster than standard 32-bit Entware-3x repo.

Thanks, I have also installed it on my ac86u.
 
I compiled the latest tvheadend 4.2.5 using buildroot on my vps and it works well.
I switch to Entware-3x completely. Thanks @zyxmon

shadowsocks-libev iperf local benchmark here.

armv7
Code:
aes-128-gcm 85 mbps
aes-256-gcm 80 mbps
chacha20-ietf-poly1305 245 mbps

armv8
Code:
aes-128-gcm 130mbps
aes-256-gcm 130mbps
chacha20-ietf-poly1305 290mbps

installed packages list
Code:
ar - 2.27-1
asuswrt-opt - 1.0-4
autoconf - 2.69-2a
automake - 1.15-4
bash - 4.4.12-1
binutils - 2.27-1
ca-certificates - 20170717
certtool - 3.5.16-1
dnscrypt-proxy - 1.9.5-7
dnscrypt-proxy-resolvers - 1.9.5+git-20170530-60baef4-7
fake-hwclock - 0.11-1
findutils - 4.6.0-1
gcc - 6.3.0-1a
git - 2.15.1-1
git-http - 2.15.1-1
haveged - 1.9.2-1
iperf - 2.0.10-1
iperf3 - 3.3-1
libbfd - 2.27-1
libbz2 - 1.0.6-3
libc - 2.25-8
libcares - 1.13.0-1
libcurl - 7.57.0-1
libdb47 - 4.7.25.4.NC-5
libev - 4.22-1
libevent2 - 2.0.22-1
libexpat - 2.2.5-1
libexslt - 1.1.31-1
libffi - 3.2.1-3
libgcc - 6.3.0-8
libgdbm - 1.11-1
libgmp - 6.1.2-1
libgnutls - 3.5.16-1
libhavege - 1.9.2-1
libhttp-parser - 2.3.0-1
libiconv-full - 1.11.1-3
libintl-full - 0.19.8.1-1
libldns - 1.6.17-2
libltdl - 2.4-2
libmbedtls - 2.6.0-1
libncurses - 6.0-1c
libncursesw - 6.0-1c
libnettle - 3.3-1
libopcodes - 2.27-1
libopenssl - 1.0.2n-1
libpcre - 8.41-2
libprotobuf-c - v1.2.1
libpthread - 2.25-8
libreadline - 7.0-1
librt - 2.25-8
libsodium - 1.0.16-1
libsqlite3 - 3210000-1
libssp - 6.3.0-8
libstdcpp - 6.3.0-8
libtool-bin - 2.4.6-2
libxml2 - 2.9.7-1
libxslt - 1.1.31-1
locales - 2.25-8
m4 - 1.4.18-1a
make - 4.2.1-2
objdump - 2.27-1
ocserv - 0.11.9-1
opkg - 2011-04-08-9c97d5ec-17a
perl - 5.26.1-2
perl-dev - 5.26.1-2
perlbase-attributes - 5.26.1-2
perlbase-base - 5.26.1-2
perlbase-bytes - 5.26.1-2
perlbase-class - 5.26.1-2
perlbase-config - 5.26.1-2
perlbase-cwd - 5.26.1-2
perlbase-data - 5.26.1-2
perlbase-dynaloader - 5.26.1-2
perlbase-errno - 5.26.1-2
perlbase-essential - 5.26.1-2
perlbase-fcntl - 5.26.1-2
perlbase-file - 5.26.1-2
perlbase-filehandle - 5.26.1-2
perlbase-getopt - 5.26.1-2
perlbase-i18n - 5.26.1-2
perlbase-integer - 5.26.1-2
perlbase-io - 5.26.1-2
perlbase-list - 5.26.1-2
perlbase-locale - 5.26.1-2
perlbase-params - 5.26.1-2
perlbase-posix - 5.26.1-2
perlbase-re - 5.26.1-2
perlbase-scalar - 5.26.1-2
perlbase-selectsaver - 5.26.1-2
perlbase-selfloader - 5.26.1-2
perlbase-socket - 5.26.1-2
perlbase-symbol - 5.26.1-2
perlbase-text - 5.26.1-2
perlbase-thread - 5.26.1-2
perlbase-threads - 5.26.1-2
perlbase-tie - 5.26.1-2
perlbase-unicore - 5.26.1-2
perlbase-utf8 - 5.26.1-2
perlbase-xsloader - 5.26.1-2
python - 2.7.14-5
python-base - 2.7.14-5
python-codecs - 2.7.14-5
python-compiler - 2.7.14-5
python-ctypes - 2.7.14-5
python-db - 2.7.14-5
python-decimal - 2.7.14-5
python-distutils - 2.7.14-5
python-email - 2.7.14-5
python-gdbm - 2.7.14-5
python-light - 2.7.14-5
python-logging - 2.7.14-5
python-lxml - 4.1.1-1
python-multiprocessing - 2.7.14-5
python-ncurses - 2.7.14-5
python-openssl - 2.7.14-5
python-pip - 9.0.1
python-pip-conf - 0.1-1
python-pydoc - 2.7.14-5
python-setuptools - 28.8.0
python-sqlite3 - 2.7.14-5
python-unittest - 2.7.14-5
python-xml - 2.7.14-5
simple-obfs - 0.0.5-1
simple-obfs-server - 0.0.5-1
strace - 4.20-1
stunnel - 5.44-3
terminfo - 6.0-1c
transmission-daemon-openssl - 2.92+git-5
transmission-remote-openssl - 2.92+git-5
tvheadend - 4.2.5-1
zlib - 1.2.11-1
zoneinfo-asia - 2017c-1
zoneinfo-europe - 2017c-1
 
Good job @zyxmon , working error free so far on RT-AC86U with armv8 repo.
Installs without a hitch with (unreleased) AB-Solution 4.

Couple of remarks:
/opt/bin has two links to missing binaries: ifconfig and route
/opt/share/zoneinfo is installed but AFAIK not used by the router in Time Zone settings. Is there save a way to use it in Asuswrt-Merlin?
 
/opt/share/zoneinfo is installed but AFAIK not used by the router in Time Zone settings. Is there save a way to use it in Asuswrt-Merlin?
Timezone in Entware-3x is defined by /opt/etc/localtime file. It can be a symbolic link to /etc/localtime if firmware uses glibc as a system lib, or can be a symlink to your region:
Code:
/opt/etc/localtime -> /opt/share/zoneinfo/Europe/Moscow
This is from uclibc based router!
 
This is a bug. Where are ifconfog and route in asuswrt? May be ip and netstat are such links?
Code:
user@RT-AC86U-AD60:/tmp/home/root# find / -name ifconfig
/tmp/mnt/entware/entware/bin/ifconfig
/sbin/ifconfig
Code:
user@RT-AC86U-AD60:/tmp/home/root# find / -name route
/tmp/mnt/entware/entware/bin/route
....
/sbin/route
 
Timezone in Entware-3x is defined by /opt/etc/localtime file. It can be a symbolic link to /etc/localtime if firmware uses glibc as a system lib, or can be a symlink to your region:
Code:
/opt/etc/localtime -> /opt/share/zoneinfo/Europe/Moscow
This is from uclibc based router!
I'll test that later today, could be very helpful having an up-to-date database instead of the ancient one that Asus uses.
 
I'll correct it here (ip, route, ifconfig, netstat)
/bin/netstat (symlink to BusyBox binary)
/tmp/mnt/entware/entware/bin/netstat

/bin/ip
/tmp/mnt/entware/entware/bin/ip
/usr/sbin/ip
 
To clear it up:
Code:
user@RT-AC86U-AD60:/tmp/home/root# which ip
/bin/ip
user@RT-AC86U-AD60:/tmp/home/root# which netstat
/bin/netstat
user@RT-AC86U-AD60:/tmp/home/root# which route
/sbin/route
user@RT-AC86U-AD60:/tmp/home/root# which ifconfig
/sbin/ifconfig
 

Latest threads

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top