NETGEAR WNDAP360
Supported Versions
Hardware Highlights
Installation
BEFORE YOU START!!!
- Update WNDAP360 firmware to the latest original firmware (3.7.11.4)
Get Image Files
- Download
sysupgrade.bin
image file from OpenWrt web site (see table above). - Only first installation: You need a linux kernel image which is loadable by U-boot. Try a current kernel image (openwrt-*-ath79-generic-netgear_wndap360-initramfs-kernel.bin) from https://firmware-selector.openwrt.org/ Otherwise you must compile your own initramfs-image. Build OpenWrt for the WNDAP360 following the normal build instructions (checkout the
openwrt-19.07
branch). See following section “Make Linux kernel image” for more information and → Build system – Usage - Only first installation: Check your initramfs-image.
$ mkimage -l openwrt-ar71xx-generic-wndap360-initramfs-uImage.bin Image Name: MIPS OpenWrt Linux-4.14.171 Created: Thu Feb 27 22:05:12 2020 Image Type: MIPS Linux Kernel Image (gzip compressed) Data Size: 3986639 Bytes = 3893.20 KiB = 3.80 MiB Load Address: 80060000 Entry Point: 80060000
The command mkimage is included in package “u-boot-tools” for most linux distributions.
Make Linux kernel image
- Get trunk checked out
- Run
make menuconfig
- Select target system:
AR7xxx/AR9xxx
- Select Subtarget:
Generic
- Select target profile:
NETGEAR WNDAP360
- Make images. Images will be generated under
/trunk/bin
folder.$ make
Load Images to WNDAP360
Connect to your WNDAP360 console.
- You need a Cisco Console Cable (and a USB to RS-232 adapter, if you do not have a console port).
- On windows you can use PuTTY to connect to console and screen or minicom on Mac / Linux. → Serial Console
- Use the “9600,8,N,1”-labled RJ45-jack of the WNDAP360
$ minicom -b 9600 -D /dev/ttyUSB0
or:
$ screen /dev/ttyUSB0 9600,cs8,-parenb,-cstopb,-hupcl,-crtscts,clocal
Start your WNDAP360 and interrupt U-boot by pressing the space bar.
Output:
U-Boot 1.1.4 dni-1.07 (Jul 7 2009 - 14:17:28) AP94 (ar7100) U-boot 0.0.12 Enter SPACE to drop into boot loader: 0
At this stage you need a tftp server with static ip on your PC / laptop. Copy bin/targets/ar71xx/generic/openwrt-ar71xx-generic-wndap360-initramfs-uImage.bin
from your build directory to your tftp.
Connect an Ethernet cable directly from your PC / laptop to the WNDAP360. Statically assign your computer an IP address within the 192.168.1.0/24 subnet (other than 192.168.1.1, which is the default IP address for the OpenWRT image). You can configure tftp server and client ip addresses in u-boot environment:
ar7100> setenv ipaddr 192.168.1.1 ar7100> setenv serverip 192.168.1.42 ar7100> saveenv
Reboot your WNDAP360 to assign new ip adresses in U-boot environment.
ar7100> reset
Start your WNDAP360 and interrupt uboot by pressing the space bar.
Load the kernel image and root ramdisk into RAM, by typing the following at the U-boot prompt:
ar7100> tftpboot 0x81000000 openwrt-ar71xx-generic-wndap360-initramfs-uImage.bin
Start up OpenWrt Linux kernel from RAM:
ar7100> bootm 0x81000000
The WNDAP360 will have an IP address of 192.168.1.1/24
by default.
From your computer, copy the sysupgrade image to the router:
$ scp Downloads/openwrt-19.07.8-ar71xx-generic-wndap360-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/
On the router via the serial interfaces, verify the checksum (compare against the OpenWRT download server checksum):
root@OpenWrt:/# sha256sum /tmp/open*upgrade.bin
If the checksums match, then write the image file to the flash on the router:
root@OpenWrt:/# sysupgrade -v /tmp/open*upgrade.bin
Wait for the upgrade to finish and the WNDAP360 to automatically reboot.
The SSH key used by the initramfs image will not have been copied to the flash, and as a result, the new installation will have a different ssh host key. Tell your PC to forget about the temporary host key:
$ ssh-keygen -R "192.168.1.1"
You can now configure your WNDAP360 using luci or ssh at 192.168.1.1
.
$ ssh root@192.168.1.1
Configuration
Basic configuration
→ Basic configuration After flashing, proceed with this.
Set up your Internet connection, configure wireless, configure USB port, etc.
Specific Configuration
Interfaces
The default network configuration is:
Interface Name | Description | Default configuration |
---|---|---|
br-lan | LAN & WiFi | 192.168.1.1/24 |
eth0 | LAN | DHCP |
wlan0 | WiFi | Disabled |
wlan1 | WiFi | Disabled |
Failsafe mode
Flash Layout
This is the OEM FLASH layout:
0x00000000-0x00040000 : "u-boot" 0x00040000-0x00050000 : "u-boot-env" 0x00050000-0x00150000 : "vmlinux.gz.uImage" 0x00150000-0x00760000 : "rootfs" 0x00760000-0x007e0000 : "var" 0x007e0000-0x007f0000 : "manufacturing-data" 0x007f0000-0x00800000 : "ART"
OpenWrt FLASH layout:
0x000000000000-0x000000040000 : "u-boot" 0x000000040000-0x000000050000 : "u-boot-env" 0x000000050000-0x000000200000 : "kernel" 0x000000200000-0x0000007f0000 : "rootfs" 0x0000003f0000-0x0000007f0000 : "rootfs_data" 0x0000007f0000-0x000000800000 : "art" 0x000000050000-0x0000007f0000 : "firmware"
Upgrading OpenWrt
- Upgrade via usual sysupgrade.
→ Upgrading OpenWrt firmware via CLI (generic explanation)
- Upgrade from version 19.07 to 22.03. There are several known issues with OpenWrt version 22.03. Version 19.07.9 is still the latest stable OpenWrt release for Netgear WNDAP360.
→ ar71xx.to.ath79 → https://github.com/openwrt/openwrt/pull/9685 → https://github.com/openwrt/openwrt/issues/11025 → https://github.com/openwrt/openwrt/issues/11017
$ scp openwrt-22.03.1-ath79-generic-netgear_wndap360-squashfs-sysupgrade.bin root@192.168.1.1:/tmp $ minicom -b 9600 -D /dev/ttyUSB0 ar7100> OpenWrt 19.07.10, r11427-9ce6aa9d8d ar7100> sysupgrade -v -n --force /tmp/openwrt-22.03.1-ath79-generic-netgear_wndap360-squashfs-sysupgrade.bin $ minicom -b 115200 -D /dev/ttyUSB0 ar7100> ls ar7100> OpenWrt 22.03.1, r19777-2853b6d652 ar7100> uname -rsm Linux 5.10.146 mips
Info gathered from OEM configuration
U-Boot info commands
ar7100> bdinfo boot_params = 0x87F73FA4 memstart = 0x80000000 memsize = 0x08000000 flashstart = 0xBF000000 flashsize = 0x00800000 flashoffset = 0x0002F62C ethaddr = 00:00:00:00:00:00 ip_addr = 192.168.1.100 baudrate = 9600 bps ar7100> coninfo List of available devices: serial 80000003 SIO stdin stdout stderr ar7100> imls Image at BF050000: Image Name: Linux Kernel Created: 2011-04-07 13:27:18 UTC Image Type: MIPS Linux Kernel Image (gzip compressed) Data Size: 917504 Bytes = 896 kB Load Address: 80020000 Entry Point: 801ec000 Verifying Checksum ... OK ar7100> pci Scanning PCI devices on bus 0 BusDevFun VendorId DeviceId Device Class Sub-Class _____________________________________________________________ 00.00.00 0x168c 0x0029 Network controller 0x80 00.01.00 0x168c 0x0029 Network controller 0x80 ar7100> showmd ProductID = WNDAP360 HWVer = 1.0 reginfo = 1 numofimages = -1 currimage = -1 basemac = 7444019729A0 maccnt0 = -1 maccnt1 = -1 maccnt2 = -1 maccnt3 = -1 serno = 2PB1215K00503 boot_params = 0x87F73FA4 memstart = 0x80000000 memsize = 0x08000000 flashstart = 0xBF000000 flashsize = 0x00800000 flashoffset = 0x0002F62C ethaddr = 00:00:00:00:00:00 ip_addr = 192.168.1.100 baudrate = 9600 bps ar7100> version U-Boot 1.1.4 dni-1.07 (Jul 7 2009 - 14:17:28) ar7100> printenv bootdelay=4 baudrate=9600 loadUboot=tftpboot 0x80010000 u-boot.bin;erase 0xbf000000 +0x30000;cp.b 0x80010000 0xbf000000 0x30000 loadLinux=tftpboot 0x80010000 vmlinux.gz.uImage;erase 0xbf640000 +0x120000;cp.b 0x80010000 0xbf640000 0x120000 loadFiles=tftpboot 0x80010000 ap94-jffs2;erase 0xbf040000 +0x600000;cp.b 0x80010000 0xbf040000 0x600000 loadAll=run loadUboot;run loadLinux;run loadFiles ethact=eth0 kimagename=vmlinux.gz.uImage rimagename=rootfs.squashfs download=tftp memtmp_addr=0x80060000 kernel_size=+0x100000 kernel_addr=0xbf050000 rootfs_size=+0x610000 rootfs_addr=0xbf150000 clear_var=era 0xbf760000 +0x80000 serverip=192.168.1.1 ipaddr=192.168.1.100 bootargs=console=ttyS0,9600 rootfstype=squashfs root=31:03 init=/sbin/init mtdparts=ar7100-nor0:256k(u-boot),64k(u-boot-env),1024k(vmlinux.gz.uImage),6208k(rootfs),512k(var),64k(manufacturing-data),64k(ART) erase_kimage=erase ${kernel_addr} ${kernel_size} erase_rimage=erase ${rootfs_addr} ${rootfs_size} kimage=${download} ${memtmp_addr} ${kimagename};run erase_kimage;cp.b ${memtmp_addr} ${kernel_addr} ${filesize} rimage=${download} ${memtmp_addr} ${rimagename};run erase_rimage;cp.b ${memtmp_addr} ${rootfs_addr} ${filesize} bootcmd=bootm 0xbf050000 flash_rootfs=run rimage flash_kernel=run kimage flash_all=run flash_kernel flash_rootfs clear_var stdin=serial stdout=serial stderr=serial Environment size: 1357/65532 bytes
/proc/cpuinfo
netgear9729A8#cat /proc/cpuinfo system type : Atheros AR7100 (hydra) processor : 0 cpu model : MIPS 24K V7.4 BogoMIPS : 450.56 wait instruction : yes microsecond timers : yes tlb_entries : 16 extra interrupt vector : yes hardware watchpoint : yes ASEs implemented : mips16 VCED exceptions : not available VCEI exceptions : not available
Full booting sequence
U-Boot 1.1.4 dni-1.07 (Jul 7 2009 - 14:17:28) AP94 (ar7100) U-boot 0.0.12 DRAM: b8050000: 0xc0140180 128 MB Top of RAM usable for U-Boot at: 88000000 Reserving 228k for U-Boot at: 87fc4000 Reserving 192k for malloc() at: 87f94000 Reserving 56 Bytes for Board Info at: 87f93fc8 Reserving 36 Bytes for Global Data at: 87f93fa4 Reserving 128k for boot params() at: 87f73fa4 Stack Pointer at: 87f73f88 Now running in RAM - U-Boot at: 87fc4000 id read 0x100000ff flash size 8MB, sector count = 128 Flash: 8 MB In: serial Out: serial Err: serial Net: ag7100_enet_initialize... : cfg1 0xf cfg2 0x7014 VSCXXX Found 0 unit 0:0 phy_addr: 1 id: 004dd04e PHY: Atheros AR8021 eth0: 00:03:7f:e0:00:96 eth0 up eth0 Manu data is valid! ### main_loop entered: bootdelay=4 ### main_loop: bootcmd="bootm 0xbf050000" Enter SPACE to drop into boot loader: 4 3 2 1 0 ## Booting image at bf050000 ... Image Name: Linux Kernel Created: 2011-04-07 13:27:18 UTC Image Type: MIPS Linux Kernel Image (gzip compressed) Data Size: 917504 Bytes = 896 kB Load Address: 80020000 Entry Point: 801ec000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK No initrd ## Transferring control to Linux (at address 801ec000) ... ## Giving linux memsize in bytes, 134217728 Starting kernel ... ýLinux version 2.6.23-WNDAP360_V2.0.0 (root@build) (gcc version 4.2.4) #1 Thu Apr 7 18:49:01 IST 2011 flash_size passed from bootloader = 8 arg 1: console=ttyS0,9600 arg 2: rootfstype=squashfs arg 3: root=31:03 arg 4: init=/sbin/init arg 5: mtdparts=ar7100-nor0:256k(u-boot),64k(u-boot-env),1024k(vmlinux.gz.uImage),6208k(rootfs),512k(var),64k(manufacturing-data),64k(ART) CPU revision is: 00019374 Determined physical RAM map: memory: 08000000 @ 00000000 (usable) Built 1 zonelists in Zone order. Total pages: 32512 Kernel command line: console=ttyS0,9600 rootfstype=squashfs root=31:03 init=/sbin/init mtdparts=ar7100-nor0:256k(u-boot),64k(u-boot-env),1024k(vmlinux.gz.uImage),6208k(rootfs),512k(var),64k(manufacturing-data),64k(ART) Primary instruction cache 64kB, physically tagged, 4-way, linesize 32 bytes. Primary data cache 32kB, 4-way, linesize 32 bytes. Synthesized TLB refill handler (20 instructions). Synthesized TLB load handler fastpath (32 instructions). Synthesized TLB store handler fastpath (32 instructions). Synthesized TLB modify handler fastpath (31 instructions). Cache parity protection disabled PID hash table entries: 512 (order: 9, 2048 bytes) Using 340.000 MHz high precision timer. console [ttyS0] enabled Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) Memory: 127744k/131072k available (1501k kernel code, 3256k reserved, 334k data, 96k init, 0k highmem) Mount-cache hash table entries: 512 NET: Registered protocol family 16 registering PCI controller with io_map_base unset NET: Registered protocol family 2 Time: MIPS clocksource has been installed. IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 4096 (order: 3, 32768 bytes) TCP bind hash table entries: 4096 (order: 2, 16384 bytes) TCP: Hash tables configured (established 4096 bind 4096) TCP reno registered AR7100 GPIOC major 0 squashfs: version 3.3 (2007/10/31) Phillip Lougher squashfs: LZMA suppport for slax.org by jro JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc. io scheduler noop registered io scheduler deadline registered (default) Serial: 8250/16550 driver $Revision: 1.90 $ 1 ports, IRQ sharing enabled serial8250: ttyS0 at MMIO 0x0 (irq = 19) is a 16550A serial8250.0: ttyS0 at MMIO 0x0 (irq = 19) is a 16550A 7 cmdlinepart partitions found on MTD device ar7100-nor0 Creating 7 MTD partitions on "ar7100-nor0": 0x00000000-0x00040000 : "u-boot" 0x00040000-0x00050000 : "u-boot-env" 0x00050000-0x00150000 : "vmlinux.gz.uImage" 0x00150000-0x00760000 : "rootfs" 0x00760000-0x007e0000 : "var" 0x007e0000-0x007f0000 : "manufacturing-data" 0x007f0000-0x00800000 : "ART" TCP cubic registered NET: Registered protocol family 1 NET: Registered protocol family 17 VFS: Mounted root (squashfs filesystem) readonly. Freeing unused kernel memory: 96k freed init used greatest stack depth: 7436 bytes left mount used greatest stack depth: 6328 bytes left printmd used greatest stack depth: 6280 bytes left [1;29mMounting etc to ramfs. [1;0m[1;32m[DONE][1;0m [1;29mMounting var to jffs2. [1;0mmount used greatest stack depth: 6200 bytes left [1;32m[DONE][1;0m [1;29mChecking SSH keys. [1;0m[1;32m[DONE][1;0m [1;29mChecking for run file. [1;0m[1;32m[DONE][1;0m [1;29mStarting System Logger. [1;0m[1;32m[DONE][1;0m [1;29mStarting Kernel Logger. [1;0m[1;32m[DONE][1;0m [1;29mStarting Panel LED. [1;0m[1;32m[DONE][1;0m [1;29mStarting watchdog. [1;0m[1;32m[DONE][1;0m [1;29mStarting Reset Detect. [1;0m[1;32m[DONE][1;0m [1;29mChecking Manufac. data [1;0m[1;32m[DONE][1;0m [1;29mChecking board file. [1;0m[1;33m[CREATED][1;0m [1;29mLoading Ethernet module. [1;0m[1;33m[GENMAC][1;0m [1;29m [1;0m[1;32m[DONE][1;0m [1;29mChecking database. [1;0m[1;32m[DONE][1;0m [1;29mVerifing checksum. [1;0m[1;32m[DONE][1;0m [1;29mLoading Bridge module. [1;0m[1;32m[DONE][1;0m ^[ [1;29mLoading wlan modules. [1;0m[1;32m[DONE][1;0m [1;29mCreating vap interface. [1;0m[1;32m[DONE][1;0m [1;29mCreating wds interface. [1;0m[1;32m[DONE][1;0m [1;29mStarting configd. [1;0m[1;32m[DONE][1;0m [1;29mStarting web server. [1;0m[1;32m[DONE][1;0m [1;29mStarting Translator... [1;0mstart-stop-daemon: cannot start /usr/bin/log_ro: No such file or directory [1;32m[syslog][1;0m [1;29mStarting Translator... [1;0m[1;32m[password][1;0m [1;29mStarting Translator... [1;0m[1;32m[ssh][1;0m [1;29mStarting Translator... [1;0m[1;32m[snmp][1;0m [1;29mStarting Translator... [1;0m[1;32m[telnet][1;0m [1;29mStarting Translator... [1;0m[1;32m[dns][1;0m [1;29mStarting Translator... [1;0mroute: SIOCADDRT: Invalid argument [1;32m[bridge_and_vlan_translator][1;0m [1;29mStarting Translator... [1;0m[1;32m[hostapd_tr][1;0m [1;29mStarting Translator... [1;0m[1;32m[nmbd_tr][1;0m [1;29mStarting Translator... [1;0m[1;32m[http_redirect_tr][1;0m [1;29mStarting Translator... [1;0ml2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down l2_packet_receive - recvfrom: Network is down [1;32m[dhcp][1;0m [1;29mStarting Translator... [1;0mkill: cannot kill pid 523: No such process [1;32m[ntp][1; Welcome to SDK. Have a lot of fun... netgear9729A8 login:
Hardware
Info
Architecture: | MIPS |
Vendor: | Qualcomm Atheros |
bootloader: | U-Boot |
System-On-Chip: | AR7161 rev2 |
CPU/Speed | 24K V7.4 680 Mhz |
Flash-Chip: | MX25L6406EMI-12G |
Flash size: | 8 MiB |
RAM: | 128 MiB |
Wireless: | 802.11abgn |
Ethernet: | 1 10/100/1000 |
Internet: | No |
USB: | No |
Serial: | Yes |
JTAG: | ? |
Photos
Opening the case
Note: This will void your warranty!
To open the case simply unscrew 5 torx bolts (marked with red on picture above), there are two clips inside (marked with blue on picture above), you need to fiddle a bit to get the case opened. PCB is on one more screw in the middle of it (inside).
Serial
→ port.serial general information about the serial port, serial port cable, etc.
The serial port is accessible through the back of the device with a RJ45 connector. If you don't have a Cisco console cable you can get a serial connection using the 4 pin header inside the case.
JTAG
→ port.jtag general information about the JTAG port, JTAG cable, etc.
How to connect to the JTAG Port of this specific device:
Photo of PCB with markings