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
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 188.8.131.52357) ********************************************************************************* [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: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
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?
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!
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
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
Good news, the ipq40xx target already exists in OpenWrt...it won't be too hard..hopefully others are looking and can get you closer to what tweaks, etc. you'll need to support this device. A major one is the location where the bootloader looks for the Kernel (in Hex).
But starting point would be to create a build environment to create my image, then work out what options to use in menuconfig?
Do you know of a howto where I can take work that appears to be almost complete e.g.
and customize it for my exact hardware?
Thank you Wayne for all your help so far :)
You need to write a dts file for you hardware.
There are already a few devices supported on ipq4018.
I think I have a working build platform. I used Ubuntu 18.04LTS server and cloned chaos-calmer. I had a fight with a few dependencies and had to modify ./include/prereq-build.mk so that I didn't get an error about the git version found the answer in the patch here (https://gitlab.labs.nic.cz/turris/openwrt/issues/56)
I am now at the point where I should build an image but couple of questions:
- which CPU should I pick? ARMv8 or ARM?
- Can anyone explain how to fix the menu showing with 'x' and 'q' instead of line characters? (I tried changing Terminal -> Data -> Terminal-type string --> putty (was xterm) but this didn't have any effect. Window -> Translation has remote character set as UTF-8 and when I check 'locale' it is all en_US.UTF-8)
Qualcomm Atheros IPQ40XX
ARMv8 == ARM64 == AARCH, this would cover ARM Cortex A53 and newer.
ARMv7 == 32 bit ARM == armhf, this covers the older 32 bit cores, like Cortex A5-A17.
The ipq40xx family of SOCs is based on Cortex A7 ARMv7 cores.
You can't build an image for a new device just by selecting something in menuconfig.
Some work needs to be done first. After this work your device will appear in menuconfig.
Start with writing a DTS file. It is not so easy...
OK. I've read Thomas Petazzoni's Device Tree for dummies and realize that this process is somewhat involved. I also now understand why Wayne suggested I ask Linksys for the source - the DTS file already exists for my hardware and I could copy it to build using the latest OpenWRT release.
Please can anyone tell me how I can reach the right contact in Linksys to get this information?
Linksys GPL Code Center