Add support for Linksys EA6350 v3

Would anyone be prepared to work with me to support this device? I have found the following about the device internals. I would be happy to build a serial cable for it and open the device if someone would assist in building a specific firmware. I'm relatively tech savvy so I hope I wouldn't be wasting anybodies time! The router is quite new hardware (2016) with a low price in the UK of about £40 so would be an attractive Open WRT option I think.
FCC ID: Q87-EA6350V3
Qualcomm IPQ4018
ARM Cortex A7 717Mhz
Samsung DDR3 256MB RAM
Winbond 128MB SLC NAND Flash

Video of the internals:

I have opened up my router and it is interesting - the header which is there in the FCC pic (half way down, left edge of board):

and not there in my own router - but do you think this is the serial connection point and if so which pin is which ?

3 Likes

I would gamble to say they're likely the same.

Since they failed to put a dolip of soldier in the top-most hole, I would surmise that's the VCC+.

Why do you think the no solder point is VCC+? Are there any tips on identifying which connection is which? I guess I can take a multi-meter for GND and VCC+, then is there any problem with experimenting on Rx & Tx using my USB to Serial TTL cable?

1 Like

Just the opposite: That's GND.

The no-solder-point is connected to the big copper area.
To determine if this big copper area is Vcc or GND, take a look at C755 and C39 + C34.

I stand corrected...the only way to certainly determine an unknown board would be to use a (voltimeter) multimeter (or follow the circuitry, as @tmomas noted).

1 Like

Thanks for the tips. I am waiting for the USB to Serial TTL adapter to arrive today but my mulitmeter identified VCC as the bottom pin, 3.3V on the next one up (assume TX) then 0V at next one up (assume RX) and finally 0 volts and 0 resistance across board for the top pad (assume GND).

I got the serial port connected. 115200 baud, 8,-,1.
I bought the HiLetGo C2102 UART to TTL USB adapter from Amazon

The USB adapter is wired as follows:
Post1

And the headers on the router main board:
post2

Next question is what information is needed to port one of the existing builds? arm_cortex-a7_neon-vfpv4

1 Like

It appears you wired RX to RX and TX to TX...this should be reversed.

1 Like

Aha! Then my photo is wrong not the wiring. I didn't think to cross those wires and wondered why it didn't work until I switched TX and RX. I've got a working console so I'll change my photo :joy::joy:

2 Likes

Glad you figured it out!

Here is the boot sequence. Could someone give me tips on what I need to do to create a build for this router?

In ART, mac0=0xFFFFFFFFFFFF, mac1=0xFFFFFFFFFFFF, mac2=0x6038E08B6235, mac3=0x6038E08B6236
get_eth_mac_address@1407: the base hw_mac_addr='60:38:E0:8B:62:33' is valid!
Using machid 0x8010100 from environment

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 3.14.43 (root@build-vm) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.01 r40864) ) #1 SMP PREEMPT Sat Jul 1 06:01:09 PDT 2017
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine model: Linksys EA6350v3 based on Qualcomm Technologies, Inc. IPQ40xx/AP-DK01.1-C2
[    0.000000] Reserved memory: failed to reserve memory for node 'rsvd1@87000000': base 0x87000000, size 5 MiB
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] PERCPU: Embedded 8 pages/cpu @cfdca000 s8384 r8192 d16192 u32768
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 62208
[    0.000000] Kernel command line: init=/sbin/init rootfstype=squashfs ubi.mtd=13,2048 ubi.block=0,0 root=/dev/ubiblock0_0 rootwait ro mtdparts=spi0.1:40M(kernel),37M@0x300000(rootfs),40M@0x2800000(alt_kernel),37M@0x2b00000(alt_rootfs),1M(sysdiag),47M(syscfg),-(offlimit) clk_ignore_unused
[    0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Memory: 241412K/250880K available (4584K kernel code, 341K rwdata, 1496K rodata, 200K init, 315K bss, 9468K reserved, 0K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xd0800000 - 0xff000000   ( 744 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0208000 - 0xc07f83ac   (6081 kB)
[    0.000000]       .init : 0xc07f9000 - 0xc082b0c0   ( 201 kB)
[    0.000000]       .data : 0xc082c000 - 0xc0881608   ( 342 kB)
[    0.000000]        .bss : 0xc0881608 - 0xc08d0344   ( 316 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] Architected cp15 timer(s) running at 48.00MHz (virt).
[    0.000008] sched_clock: 56 bits at 48MHz, resolution 20ns, wraps every 2863311552512ns
[    0.000017] Switching to timer-based delay loop
[    0.000299] Calibrating delay loop (skipped), value calculated using timer frequency.. 96.00 BogoMIPS (lpj=480000)
[    0.000316] pid_max: default: 32768 minimum: 301
[    0.000586] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000599] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.011214] CPU: Testing write buffer coherency: ok
[    0.011578] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.011654] Setting up static identity map for 0x80213768 - 0x802137c0
[    0.090580] CPU1: Booted secondary processor
[    0.090627] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.110580] CPU2: Booted secondary processor
[    0.110616] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[    0.130620] CPU3: Booted secondary processor
[    0.130656] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[    0.130791] Brought up 4 CPUs
[    0.130832] SMP: Total of 4 processors activated (384.00 BogoMIPS).
[    0.130841] CPU: All CPU(s) started in SVC mode.
[    0.141293] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
[    0.141693] pinctrl core: initialized pinctrl subsystem
[    0.142121] regulator-dummy: no parameters
[    0.142785] NET: Registered protocol family 16
[    0.144402] DMA: preallocated 2048 KiB pool for atomic coherent allocations
[    0.144925] cpuidle: using governor ladder
[    0.144937] cpuidle: using governor menu
[    0.153122] hw-breakpoint: Debug register access (0xee003e17) caused undefined instruction on CPU 3
[    0.153130] hw-breakpoint: Debug register access (0xee003e17) caused undefined instruction on CPU 2
[    0.153139] hw-breakpoint: Debug register access (0xee003e17) caused undefined instruction on CPU 1
[    0.153143] hw-breakpoint: CPU 2 failed to disable vector catch
[    0.153173] hw-breakpoint: Debug register access (0xee003e17) caused undefined instruction on CPU 0
[    0.153263]
[    0.153263] Version Rollback Feature Disabled
[    0.156766] sps:sps is ready.
[    0.162734] bio: create slab <bio-0> at 0
[    0.164455] SCSI subsystem initialized
[    0.165165] msm_bus_fabric_init_driver
[    0.165348] msm_bus_device 580000.ad-hoc-bus: Util-fact is missing, default to 100
[    0.165365] msm_bus_device 580000.ad-hoc-bus: Vrail-comp is missing, default to 100
[    0.165385] msm_bus_device 580000.ad-hoc-bus: Failed to get bus clk for bus4096 ctx1
[    0.165428] msm_bus_device 580000.ad-hoc-bus: Util-fact is missing, default to 100
[    0.165443] msm_bus_device 580000.ad-hoc-bus: Vrail-comp is missing, default to 100
[    0.165460] msm_bus_device 580000.ad-hoc-bus: Failed to get bus clk for bus1024 ctx1
[    0.191937] Switched to clocksource arch_sys_counter
[    0.193711] NET: Registered protocol family 2
[    0.194977] TCP established hash table entries: 2048 (order: 1, 8192 bytes)
[    0.195025] TCP bind hash table entries: 2048 (order: 2, 16384 bytes)
[    0.195074] TCP: Hash tables configured (established 2048 bind 2048)
[    0.195129] TCP: reno registered
[    0.195145] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.195178] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.195518] NET: Registered protocol family 1
[    0.196270] hw perfevents: enabled with ARMv7 Cortex-A7 PMU driver, 5 counters available
[    0.197632] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    0.207167] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.207184] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.208145] msgmni has been set to 471
[    0.209850] Key type asymmetric registered
[    0.209864] Asymmetric key parser 'x509' registered
[    0.209905] io scheduler noop registered
[    0.209915] io scheduler deadline registered (default)
[    0.210783] tcsr 194b000.tcsr: setting usb hs phy mode select = e700e7
[    0.210853] tcsr 1953000.ess_tcsr: setting ess interface select = 0
[    0.210922] tcsr 1949000.tcsr: setting wifi_glb_cfg = 41000000
[    0.210980] tcsr 1957000.tcsr: setting wifi_noc_memtype_m0_m2 = 2222222
[    0.211529] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[    0.212735] msm_serial_hsl_probe: detected port #0 (ttyMSM0)
[    0.212775] msm_serial_hsl_probe: Bus scaling is disabled
[    0.212937] 78af000.serial: ttyMSM0 at MMIO 0x78af000 (irq = 139, base_baud = 115200) is a MSM
[    0.213013] msm_hsl_console_setup: console setup on port #0
[    0.826429] console [ttyMSM0] enabled
[    0.830518] msm_serial_hsl_init: driver initialized
[    0.835317] qca_serial_hs module loaded
[    0.841324] sps: BAM device 0x07884000 is not registered yet.
[    0.846092] sps:BAM 0x07884000 is registered.
[    0.851388] sps:BAM 0x07884000 (va:0xd0b40000) enabled: ver:0x19, number of pipes:12
[    0.858530] m25p80 spi0.0: found mx25l1606e, expected n25q128a11
[    0.864291] m25p80 spi0.0: mx25l1606e (2048 Kbytes)
[    0.869185] 10 ofpart partitions found on MTD device spi0.0
[    0.874687] Creating 10 MTD partitions on "spi0.0":
[    0.879538] 0x000000000000-0x000000040000 : "0:SBL1"
[    0.885632] 0x000000040000-0x000000060000 : "0:MIBIB"
[    0.890693] 0x000000060000-0x0000000c0000 : "0:QSEE"
[    0.895716] 0x0000000c0000-0x0000000d0000 : "0:CDT"
[    0.900635] 0x0000000d0000-0x0000000e0000 : "0:APPSBLENV"
[    0.906121] 0x0000000e0000-0x000000160000 : "0:APPSBL"
[    0.911312] 0x000000160000-0x000000170000 : "0:ART"
[    0.916319] 0x000000170000-0x000000190000 : "u_env"
[    0.921301] 0x000000190000-0x0000001b0000 : "s_env"
[    0.926200] 0x0000001b0000-0x0000001c0000 : "devinfo"
[    0.932781] libphy: ipq40xx_mdio: probed
[    0.939148] ipq40xx-mdio 90000.mdio: ipq40xx-mdio driver was registered
[    0.944813] PPP generic driver version 2.4.2
[    0.949168] i2c /dev entries driver
[    0.953715] qcom_wdt watchdog.9: invalid resource
[    0.957400] qcom_wdt: probe of watchdog.9 failed with error -22
[    0.963905] sdhci: Secure Digital Host Controller Interface driver
[    0.969451] sdhci: Copyright(c) Pierre Ossman
[    0.973817] sdhci-pltfm: SDHCI platform and OF driver helper
[    0.985283] nand: device found, Manufacturer ID: 0xef, Chip ID: 0xaa
[    0.990605] nand: Winbond W25N01GV 128MiB 3.3V
[    0.995060] nand: 128MiB, SLC, page size: 2048, OOB size: 64
[    1.000685] Scanning device for bad blocks
[    1.658153] random: nonblocking pool is initialized
[    2.795049] mtd: spi0.1: skipping zero sized partition
[    2.799157] 6 cmdlinepart partitions found on MTD device spi0.1
[    2.805102] Creating 6 MTD partitions on "spi0.1":
[    2.809848] 0x000000000000-0x000002800000 : "kernel"
[    2.816179] 0x000000300000-0x000002800000 : "rootfs"
[    2.821252] mtd: device 11 (rootfs) set to be root filesystem
[    2.826008] 0x000002800000-0x000005000000 : "alt_kernel"
[    2.832447] 0x000002b00000-0x000005000000 : "alt_rootfs"
[    2.837877] 0x000005000000-0x000005100000 : "sysdiag"
[    2.843069] 0x000005100000-0x000008000000 : "syscfg"
[    2.849117] u32 classifier
[    2.850790]     input device check on
[    2.854485] Netfilter messages via NETLINK v0.30.
[    2.859234] nf_conntrack version 0.5.0 (3772 buckets, 15088 max)
[    2.865720] ctnetlink v0.93: registering with nfnetlink.
[    2.870424] nf_conntrack_rtsp v0.7 loading
[    2.874611] ip_set: protocol 6
[    2.877705] gre: GRE over IPv4 demultiplexor driver
[    2.882414] ip_gre: GRE over IPv4 tunneling driver
[    2.888671] nf_nat_rtsp v0.7 loading
[    2.891248] ip_tables: (C) 2000-2006 Netfilter Core Team
[    2.896810] TCP: cubic registered
[    2.900519] NET: Registered protocol family 10
[    2.905907] ip6_tables: (C) 2000-2006 Netfilter Core Team
[    2.910605] sit: IPv6 over IPv4 tunneling driver
[    2.916770] NET: Registered protocol family 17
[    2.920329] Bridge firewalling registered
[    2.924224] Ebtables v2.0 registered
[    2.927828] l2tp_core: L2TP core driver, V2.0
[    2.932098] l2tp_netlink: L2TP netlink interface
[    2.936702] 8021q: 802.1Q VLAN Support v1.8
[    2.941030] Registering SWP/SWPB emulation handler
[    2.946794] regulator-dummy: disabling
[    2.949933] UBI: attaching mtd13 to ubi0
[    4.754432] UBI: scanning is finished
[    4.824955] UBI warning: print_rsvd_warning: cannot reserve enough PEBs for bad PEB handling, reserved 19, need 20
[    4.835148] UBI: attached mtd13 (name "alt_rootfs", size 37 MiB) to ubi0
[    4.840956] UBI: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
[    4.847754] UBI: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[    4.854424] UBI: VID header offset: 2048 (aligned 2048), data offset: 4096
[    4.861265] UBI: good PEBs: 296, bad PEBs: 0, corrupted PEBs: 0
[    4.867182] UBI: user volume: 1, internal volumes: 1, max. volumes count: 128
[    4.874304] UBI: max/mean erase counter: 1/0, WL threshold: 4096, image sequence number: 1906976869
[    4.883329] UBI: available PEBs: 0, total reserved PEBs: 296, PEBs reserved for bad PEB handling: 19
[    4.892464] UBI: background thread "ubi_bgt0d" started, PID 71
[    4.893343] UBI: ubiblock0_0 created from ubi0:0(squashfs)
[    4.894171] input: gpio_keys.7 as /devices/soc.0/gpio_keys.7/input/input0
[    4.894431] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    4.897833] clk: Not disabling unused clocks
[    4.936069] VFS: Mounted root (squashfs filesystem) readonly on device 254:0.
[    4.942511] Freeing unused kernel memory: 200K (c07f9000 - c082b000)
*********************************************************************************
              _        _  __    _    __ _____ __   __ _____
             | |      | ||  \  | |  / // ____]\ \ / // ____]TM
             | |      | ||   \ | | / /| (___   \ V /| (____
             | |      | || |\ \| |\ \  \____ \  \ /  \____ \
             | |_____ | || | \   | \ \  ____) | | |   ____) |
             |_______||_||_|  \__|  \_\[____ /  |_|  [_____/

 (c) 2013 Belkin International, Inc. and/or its affiliates. All rights reserved.
 Booting civic (firmware version 3.1.9.182357)
*********************************************************************************
[utopia][init] System Initialization
[utopia][init] Creating /proc
[utopia][init] Creating /sys
[utopia][init] Creating /dev
[utopia][init] Creating /tmp
[utopia][init] Allocating 50M for /tmp
[utopia][init] Prepairing /dev/pts
[utopia][init] Setting /tmp and /var permissions
[utopia][init] Starting udev..
Attempting mount of ubifs syscfg partition
UBI device number 1, total 376 LEBs (47742976 bytes, 45.5 MiB), available 0 LEBs (0 bytes), LEB size 126976 bytes (124.0 KiB)
[utopia][init] Using persistent syscfg data from /var/config/syscfg
[utopia][init] Starting system logging
[utopia][init] Starting sysevent subsystem
[utopia][init] Enabling DesignWare USB3 DRD Core drivers
[utopia][init] Loading QCA Ethernet, NSS and GMAC drivers
net.netfilter.nf_conntrack_acct = 1
[utopia][init] Late loading usb drivers
[utopia][init] Setting any unset system values to default
[utopia][init] no persistence config file (/var/config/pstcfg) found
setting up MAC addresses for all interface based on 60:38:E0:8B:62:33
NTP Servers do not need to be updated
checking for interactive script start up...
Updating BootCount Page[20]:140 ... Done

attempting to sync sysinfo.cgi auth credentials
[utopia][init] Loading Buttons drivers
[utopia][init] Load WiFi cal data from MTD(mtd6) to FS.
[utopia][init] Setup link to WiFi firmware and board data (EU)
[utopia][init] Using EU region for WiFi firmware and board data
NSS Auto scaling disabled
inserting fpbypass.ko for QCA

civic login: Thu Oct 11 06:00:00 UTC 2012
wan, sysevent received: wan-start=NULL
Lighttpd Model Base: EA6350
Generating Rainier lighttpd config
Build temporary www configuration directory:
wifi, sysevent received: lan-started (Wed Oct 10 23:00:07 PDT 2012)
wifi, service_start()
TSLIIHauhEfGE
Power cycle Ethernet ports.
Registering Service myrouter._http._tcp.local port 80
[utopia][init] Loading GMAC and WLAN drivers
Got a reply for myrouter._http._tcp.local.: Name now registered and active
[utopia][init] Creating wifi devices
ath0
ath1
[utopia][init] setting WiFi Red CE settings
RTNETLINK answers: Device or resource busy
wifi, wifi_physical_start(ath0)
wifi, setting obss rssi threshold (ath0)
Auto channel
Not ready for JNAP. Sleeping for 15 seconds...
wifi, wifi_virtual_start(ath0)
[utopia] Not setting ppp_clamp_mtu
wifi, wifi_user_start(ath0)
wifi_user, ath0 TxBF enabled
wifi, primary AP: ath0 is up
wifi, wifi_guest_start(ath0)
wifi, guest ath2 is disabled, do not start wifi guest
wifi, wifi_physical_start(ath1)
wifi, setting obss rssi threshold (ath1)
Auto channel
wifi, wifi_virtual_start(ath1)
wifi, wifi_user_start(ath1)
fastpath, sysevent received: qos_enabled
wifi_user, ath1 TxBF enabled
wifi_user, ath1 MU-MIMO enabled
sysctl: error: 'dev.nss.general.redirect' is an unknown key
wifi, primary AP: ath1 is up
wifi, wifi_guest_start(ath1)
wifi, guest ath3 is disabled, do not start wifi guest
wifi, start_hostapd()
Configuration file: /tmp/hostapd-ath0.conf
Configuration file: /tmp/hostapd-ath1.conf
ath0: Could not connect to kernel driver
Using interface ath0 with hwaddr 60:38:e0:8b:62:34 and ssid "Linksys28543"
ath0: interface state UNINITIALIZED->ENABLED
ath0: AP-ENABLED
ath1: Could not connect to kernel driver
Using interface ath1 with hwaddr 60:38:e0:8b:62:35 and ssid "Linksys28543_5GHz"
ath1: interface state UNINITIALIZED->ENABLED
ath1: AP-ENABLED
[utopia] Not setting ppp_clamp_mtu on dslite protocol
Restarting nfqrecv service...
wan, sysevent received: phylink_wan_state=down
[fw.sh] fwup_checked_after_boot: 0
[fw.sh] fwup_forced_update: 0
Starting smbd ...
[fw.sh] fwup_checked_after_boot: 0
[fw.sh] fwup_forced_update: 0
[fw.sh] fwup_checked_after_boot: 0
[fw.sh] fwup_forced_update: 0

:astonished:

You shouldn't need any help...Linksys better give it to you!!!

Ask them for it.

Sorry if this is a daft question - if LinkSys built their router based on OpenWRT are they obliged to share their code?

I guess its clear that OpenWRT can be run on this hardware, but wouldn't it be easier to start with a clean build that I have full control over rather than try to hack the existing Linksys image?

YES!

No, but if you prefer, follow this post:

Also, I didn't say hack their image. I mean to request that Linksys GIVE IT TO YOU!

1 Like

I can't find opkg on the system so can't add the bandwidth monitoring that I would like. I want to run something which will send netflow data to an ntop system.

Can you suggest where I start? I've read the "build your own image" and developer docs but they all seem to assume too much knowledge of Linux and openWRT :frowning:

I use the package softflowd for NetFlow and snmpd for bandwidth monitoring. I use nFsen and Cacti to collect this data, respectively.

I just noted above. Start collecting the hardware information. That's needed to make your own firmware...or Linksys should have a copy of their build environment.

If the above is too much, the knowledge of OpenWrt and Linux you'll need may be a lot. You'll also need to quickly learn about non x86_84 computers.

CPU : CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
Memory : Samsung DDR3L-1600 256MB RAM (K482G16 46F BYK0)
Flash Chip : Winbond 128MB SLC NAND Flash (25N01GV ZEIG)
Wireless : Wave-2 802.11ac SoC 2x2 MIMO
Switch Chip : ??

Is there any command that I can run or log file that I can look at which will tell me the Wireless and Switch chips drivers I will need?

logread works on my device. You should see the name of the hardware as the drivers load into the Kernel.

Also, provide the make/model of the CPU.

This appears to be Qualcomm.

CPU is Qualcomm IPQ4018