Linksys EA7500 v1 and OpenWrt?

do You have 1.8v and 3.3v from board?

@M10
I do get 3.3, but I do not get 1.8 at the tx rx headers. I got a ttl adapter that supported 1.8, but seem to have lost voltage regulation on 1.8 and now rx/tx swing from 1.7-2.5. An led on the back of the board at power cycle button blinks quickly. When the usb adapter is attached it calms down and would seem to boot. Stabilizes the voltage maybe? I haven't tried much after seemingly cooking it.

it looks like You fried 1.8v regulator , any not normal looking components near serial header ?

No, I cant tell what let the smoke out. I couldn't get a serial connection up anyway.

Guide: Easy way to get serial access without soldering

So, the device wiki page is very confusing and misleading. I was able to flash the openwrt factory firmware pretty easily without "unsoldering" or soldering anything on the board.

My EA7500 has the pin headers already there and I used a master communications ftdi board with the 3.3v jumper set, and just connected TX, RX, and GND.

I flashed the recommended downgrade twice, and also made sure my tftp server was up and running with the right ip.

Once that was done I pulled up "picocom" in linux with the correct serial settings, 115200 8N1, and turned the router on. Instantly I got to see the entire boot up process of the Linksys firmware. I shut it down, turned it on again and this time hit a key to interrupt u-boot, and followed the rest of the instructions in the wiki.

No problem!

But, I do have a question, maybe even an issue.

I am showing only 3.6mb available for opkg software. That is not gonna work for me. I grabbed this router cause it is supposed to have 128mb NAND which from my experience with the AR300M gives plenty of space for me to work with. Whats going on here? Is it the double firmware thing that Linksys has on this router? Couldn't the partition table be changed to something more pratical?

Did I do something wrong?

Thank you to the development team, I really feel like openwrt is a superior operating system for my networking needs.

Jimmy

root@OpenWrt:/# block info
[ 1380.507651] blk_update_request: I/O error, dev mtdblock0, sector 0 op 0x0:(READ) flags 0x80700 phys_seg 4 prio class 0
[ 1380.515386] blk_update_request: I/O error, dev mtdblock0, sector 8 op 0x0:(READ) flags 0x80700 phys_seg 3 prio class 0
[ 1380.518868] blk_update_request: I/O error, dev mtdblock0, sector 16 op 0x0:(READ) flags 0x80700 phys_seg 2 prio class 0
[ 1380.529926] blk_update_request: I/O error, dev mtdblock0, sector 24 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 0
[ 1380.540289] blk_update_request: I/O error, dev mtdblock0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[ 1380.549478] Buffer I/O error on dev mtdblock0, logical block 0, async page read
[ 1380.564189] blk_update_request: I/O error, dev mtdblock0, sector 32 op 0x0:(READ) flags 0x80700 phys_seg 7 prio class 0
[ 1380.584298] blk_update_request: I/O error, dev mtdblock0, sector 40 op 0x0:(READ) flags 0x80700 phys_seg 6 prio class 0
[ 1380.624284] blk_update_request: I/O error, dev mtdblock0, sector 48 op 0x0:(READ) flags 0x80700 phys_seg 5 prio class 0
[ 1380.653992] blk_update_request: I/O error, dev mtdblock0, sector 56 op 0x0:(READ) flags 0x80700 phys_seg 4 prio class 0
[ 1380.694277] blk_update_request: I/O error, dev mtdblock0, sector 64 op 0x0:(READ) flags 0x80700 phys_seg 3 prio class 0
[ 1380.767491] Buffer I/O error on dev mtdblock0, logical block 1, async page read
[ 1380.773766] Buffer I/O error on dev mtdblock1, logical block 0, async page read
[ 1380.782478] Buffer I/O error on dev mtdblock1, logical block 1, async page read
[ 1381.085998] Buffer I/O error on dev mtdblock2, logical block 0, async page read
[ 1381.096599] Buffer I/O error on dev mtdblock2, logical block 1, async page read
[ 1381.102423] Buffer I/O error on dev mtdblock3, logical block 0, async page read
[ 1381.105956] Buffer I/O error on dev mtdblock3, logical block 0, async page read
[ 1381.115664] Buffer I/O error on dev mtdblock4, logical block 0, async page read
[ 1381.128795] Buffer I/O error on dev mtdblock4, logical block 0, async page read
/dev/mtdblock14: UUID="1612296405" VERSION="1" TYPE="ubi"
/dev/mtdblock16: UUID="1333238185" VERSION="1" TYPE="ubi"
/dev/mtdblock18: UUID="459140831" VERSION="1" TYPE="ubi"
/dev/ubiblock0_0: UUID="a07e7566-89ce4cb2-2233b800-8311c335" VERSION="4.0" MOUNT="/rom" TYPE="squashfs"
/dev/ubi0_1: UUID="eb784e36-7b13-46a7-9d62-77f8ddaeed6d" VERSION="w5r0" MOUNT="/overlay" TYPE="ubifs"

For those who might want to test and use the Kong builds on this router, they are available right now, here.

The biggest improvement from the main builds is the NSS cores enabled for more performance in encryption and heavy network operations, such as SQM.

Huge kudos for @KONG!

Thanks for sharing!

I was not aware that @Kong also has a nss build for the ipq8065/8064, which seems different than the community nss build for the ipq8066/8064 from @ACwifidude. Does anybody know what is the difference between the nss portion of the two builds i.e. what works better in one than the other, etc?

Also, I see that source code of @ACwifidude is available to compile the build, but could not find the same for @Kong nss builds. How does one compile the nss build from @KONG from source? Thanks.

No they are the same source I use ACwifidudes source, just different package selection. Just fixed the dts for the ea units as ACwifidudes last changes broke EA builds.

1 Like

Got it. Many thanks for the prompt response. Appreciate it!

So does that mean that I just need to copy the qcom-ipq8064-ea8500.dts file from https://www.desipro.de/openwrt/sources/ to the dts folder for @ACwifidude sources, and I should be ready to do nss build for the EA8500, while for the other routers (EA7500v1, R7500v2, C2600) I don't need any other sources from desipro.de for nss build?

BTW, I see there are a handful of other source files in https://www.desipro.de/openwrt/sources. Could you share what they do and when they should be used, for builds? Thanks!

Ah, those files are all outdated. Just use acwifidude code and make the change from:

that's it.

Aha, that was quite straightforward. Thanks again for the clarification!

A quick question on the nss build. Does openssl use the nss core in that build, and if so, have you had a chance to test the improvement in performance due to the nss core, if any ?

e.g openssl speed -elapsed -evp aes-256-cbc -engine ???

Instead of building from source, your might prefer installing it straight from the sysupgrade binaries:

Through SSH:

cd /tmp
wget https://www.desipro.de/openwrt/trunk/ipq806x-nss/kong-ipq806x-generic-linksys_ea7500-v1-squashfs-sysupgrade.bin
sysupgrade /tmp/kong-ipq806x-generic-linksys_ea7500-v1-squashfs-sysupgrade.bin

Enjoy the new web GUI and awesome features from this builds!

PS: It includes Luci, there is no need to install it.

Thanks! I generally like to compile from source, but I agree that having @KONG build through sysupgrade is very convenient to have.

BTW, are you using the @Kong nss builds? If so, can check the performance of openssl on it (see my previous post) and post the results? Thanks.

$ openssl speed -elapsed -evp aes-256-cbc
You have chosen to measure elapsed time instead of user CPU time.
Doing aes-256-cbc for 3s on 16 size blocks: 6506914 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 2050872 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 555666 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 137048 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 17085 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 16384 size blocks: 8502 aes-256-cbc's in 3.00s
OpenSSL 1.1.1j  16 Feb 2021
built on: Mon Mar 15 19:48:44 2021 UTC
options:bn(64,32) rc4(char) des(long) aes(partial) blowfish(ptr)
compiler: arm-openwrt-linux-muslgnueabi-gcc -fPIC -pthread -Wa,--noexecstack -Wa                                                                                                      ll -O3 -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set                                                                                                      -variable -Wno-error=unused-result -mfloat-abi=hard -Wformat -Werror=format-secu                                                                                                      rity -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -O3 -fpic -ff                                                                                                      unction-sections -fdata-sections -znow -zrelro -DOPENSSL_USE_NODELETE -DOPENSSL_                                                                                                      PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -                                                                                                      DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DEC                                                                                                      P_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -DOPENSSL_PREFER_CHACHA_OVER_GCM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  1                                                                                                      6384 bytes
aes-256-cbc      34703.54k    43751.94k    47416.83k    46779.05k    46653.44k                                                                                                          46432.26k

Thanks! It seems from above result that openssl by default is not using the nss core in the nss build. Perhaps, you need to invoke some specific openssl engine. What do you get if you run "openssl engine -t -c" ?

Using dynamic:

$  openssl speed -elapsed -evp aes-256-cbc -engine dynamic
engine "dynamic" set.
You have chosen to measure elapsed time instead of user CPU time.
Doing aes-256-cbc for 3s on 16 size blocks: 6506834 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 2051837 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 560387 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 142642 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 17340 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 16384 size blocks: 8656 aes-256-cbc's in 3.00s
OpenSSL 1.1.1j  16 Feb 2021
built on: Mon Mar 15 19:48:44 2021 UTC
options:bn(64,32) rc4(char) des(long) aes(partial) blowfish(ptr)
compiler: arm-openwrt-linux-muslgnueabi-gcc -fPIC -pthread -Wa,--noexecstack -Wall -O3 -pipe -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -mfloat-abi=hard -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -O3 -fpic -ffunction-sections -fdata-sections -znow -zrelro -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -DOPENSSL_PREFER_CHACHA_OVER_GCM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
aes-256-cbc      34703.11k    43772.52k    47819.69k    48688.47k    47349.76k    47273.30k

I'm assuming that is odd enough, even through speedtest.net, using my ISP server, < 2 ms latency, I can't get more than half of my downstream speed:

Using the same ONT and ethernet cable, with an Intel x64 CPU runing opnsense, I get full speed, 510/120 mbps.

I'm not seeing any NSS benefits so far. :frowning:

@KONG , could you check this, please?

My EA7500 has the pin headers already there and I used a master communications ftdi board with the 3.3v jumper set, and just connected TX, RX, and GND.

@k3chb, i agree the wiki is a bit confusing. i also have a US version of the ea7500v1 and mine already comes with a soldered serial header. i surmise some board revs perhaps the 'worldwide' versions may not come with serial header hence the need to solder additional components to use 3.3 uart. i like to be careful so i don't fry anything in the process.