TP-Link TL-WA901ND

The TL-WA901ND is a lowcost b/g/n wireless access point, capable of running OpenWRT.

  • Version 1.x of this device is fully supported since r22353.
  • Version 2.x of this device has been reported to work fine with r29330 (no earlier versions tested).
  • Version 3.x of this device is currently unknown.

Hardware Highlights

Version CPU Ram Flash Wireless LAN Network USB Serial
V1 Atheros AR7240 xxx MHz 32MiB 4MiB Atheros AR9285 Atheros AR5416 1 No Yes
V2 Atheros AR9132 rev 2 400MHz 32MiB 4MiB Atheros AR5416 ??? 1 No Yes
V3 Atheros AR9341 535MHz 32MiB 4MiB Atheros AR5416 Atheros AG71xx 1 No Yes

Version 1.x

Features

  • Atheros AR7240 CPU
  • 4 MB flash memory
  • 32 MB RAM
  • Atheros AR9285 wireless chip

Serial console

The serial console connector has the usual TP-Link pinout: RX - TX - GND - +5V (Power connector)

However, as with other TP-Link models, a little hardware mod is required in most circumstances to get the serial console working properly. Without this mod, you might see garbled chars when using a Prolific PL2302-based level shifter. This is because TP-Link employed some sort of voltage divider as has been reported for the TL-WR741ND as well: RX will have a high level of only 1,7V, whereas the CPU pin itself has the usual 2,5V.

To fix this, you must remove the 2x 5k6 resistors R249 (→ 3.3V) and R251 (→ GND) as well as the capacitor C278. You might want to replace it with a 1K resistor to protect the CPU pin, otherwise bridging the pads will do the job but offers the risk of damaging the CPU port.

After this, the console will be accessible at 115200bps 8N1. Type "tpl" to escape automatic boot and reach U-boot's prompt. Note this is a crippled U-boot: you can not modify the environment settings permanently which is why OpenWrt kernels ignore the kernel command line.

Comment: The WR741ND had the same serial connection, and I fixed it without altering the board, by simply placing a 10k pullup resistor between the TX and 3.3V pins.

Installation

via Web Interface

You can install OpenWRT via the web interface (System > Firmware Upgrade) using the pre-compiled trunk .bin file openwrt-ar71xx-generic-tl-wa901nd-v1-squashfs-factory.bin

via Bootloader and Ethernet port

Using the serial console, new firmware versions can be loaded via TFTP and flashed as follows. This assumes your TFTP server is reachable at 192.168.1.100. You can change IP addresses with:

setenv ipaddr a.b.c.d
setenv serverip e.f.g.h

TFTP loading and flashing is done by issuing:

tftpboot 0x80000000 openwrt-ar71xx-tl-wa901nd-squashfs-factory.bin
erase 0x9f020000 +0x3c0000
cp.b 0x80000000 0x9f020000 0x3c0000

If successful, the firmware can now be started with

bootm 0x9f020000

Version 2.x

Features

  • Atheros AR9132 CPU
  • 4 MB flash memory
  • 32 MB ram
  • Atheros AR5416 wireless chip
  • RTL8201 Ethernet chip

Serial console

The serial console connector has the usual TP-Link pinout: RX - TX - GND - +3.3V (Power connector)

It's 115200 8N1, software flow control. It's a TTL serial port, so don't plug it directly into a RS232 port. You have to build a TTL-RS232 adaptor to attach your WA901ND to your computer:

With that, you can now use a null modem cable to attach it to your PCs COM port.

To access the boot menu, type "tpl" (without quotes) when you see "autobooting in 1 seconds".

The ethernet port is not enabled in the boot loader. Because of that, TFTP cannot be used to transfer the firmware.

Installation

via Web Interface

You can install OpenWRT via the web interface using the pre-compiled trunk .bin file openwrt-ar71xx-generic-tl-wa901nd-v2-squashfs-factory.bin

You will want to configure your new OpenWRT by:

1. set your static IP to 192.168.1.x

2. telnet into the device either through putty or unix terminal:

telnet 192.168.1.1
Full guide found here: First Login

3. Then you will want to secure your router:

root@openwrt:~$ passwd
Changing password for root
New password:
Retype password:
Password for root changed by root
root@openwrt:~$ 
4. then you will want to configure your router to your liking, I suggest starting here Dumb AP 5. then you will want to configure your router with LuCI:
opkg update
opkg install luci
/etc/init.d/uhttpd enable
/etc/init.d/uhttpd start
(the full guide can be found here LuCI Essentials)

via Bootloader and Serial port

ar7100> loady

Now send the file openwrt-ar71xx-generic-tl-wa901nd-v2-squashfs-factory.bin using the Ymodem protocol with your terminal emulation.

After the filetransfer has been completed type:

ar7100> erase 0xbf020000 +0x3c0000
ar7100> cp.b 0x81000000 0xbf020000 0x3c0000
ar7100> reset

BootLogs

Factory Bootlog

U-Boot 1.1.4 (Feb 24 2012 - 16:48:46) AP81 (ar7100) U-boot DRAM: sri 32 MB id read 0x100000ff flash size 4MB, sector count = 64 Flash: 4 MB Using default environment In: serial Out: serial Err: serial Net: ag7100_enet_initialize... No valid address in Flash. Using fixed address bsingle_phy = 0 eth0: 00:03:7f:09:0b:ad eth0 up eth0 Autobooting in 1 seconds## Booting image at bf020000 ... Uncompressing Kernel Image ... OK Starting kernel ... Linux version 2.6.15--LSDK-6.1.1.40 (root@localhost.localdomain) (gcc version 3.4.4) #9 Thu Jan 31 14:51:43 HKT 2013 flash_size passed from bootloader = 4 CPU revision is: 00019374 Determined physical RAM map: memory: 02000000 @ 00000000 (usable) User-defined physical RAM map: memory: 02000000 @ 00000000 (usable) Built 1 zonelists Kernel command line: console=ttyS0,115200 root=/dev/mtdblock2 rootfstype=squashfs init=/sbin/init mtdparts=ar7100-nor0:128k(uboot),1024k(kernel),2816k(rootfs),64k(config),64k(art) mem=32M 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: 256 (order: 8, 4096 bytes) Using 200.000 MHz high precision timer. Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) Memory: 30524k/32768k available (1403k kernel code, 2228k reserved, 297k data, 112k init, 0k highmem) Mount-cache hash table entries: 512 Checking for 'wait' instruction... available. NET: Registered protocol family 16 Jumpstart button pressed. SCSI subsystem initialized AR7100 GPIOC major 0 squashfs: version 3.3 (2007/10/31) Phillip Lougher squashfs: LZMA suppport for slax.org by jro Initializing Cryptographic API io scheduler noop registered io scheduler deadline registered Serial: 8250/16550 driver $Revision: #2 $ 1 ports, IRQ sharing disabled serial8250.0: ttyS0 at MMIO 0x0 (irq = 19) is a 16550A RAMDISK driver initialized: 1 RAM disks of 8192K size 1024 blocksize PPP generic driver version 2.4.2 PPPoX init, max protocols:3 NET: Registered protocol family 24 pppox protocol 0 register. max:3 cmdlinepart partition parsing not available Searching for RedBoot partition table 5 RedBoot partitions found on MTD device ar7100-nor0 Creating 5 MTD partitions on "ar7100-nor0": 0x00000000-0x00020000 : "boot" 0x00020000-0x00120000 : "kernel" 0x00120000-0x003e0000 : "rootfs" 0x003e0000-0x003f0000 : "config" 0x003f0000-0x00400000 : "art" ->Oops: flash id 0x10215 . NET: Registered protocol family 2 IP route cache hash table entries: 512 (order: -1, 2048 bytes) TCP established hash table entries: 2048 (order: 1, 8192 bytes) TCP bind hash table entries: 2048 (order: 1, 8192 bytes) TCP: Hash tables configured (established 2048 bind 2048) TCP reno registered TCP bic registered NET: Registered protocol family 1 NET: Registered protocol family 17 802.1Q VLAN Support v1.8 Ben Greear All bugs added by David S. Miller ar7100wdt_init: Registering WDT success VFS: Mounted root (squashfs filesystem) readonly. Freeing unused kernel memory: 112k freed init started: BusyBox v1.01 (2012.12.18-07:39+0000) multi-call binary Algorithmics/MIPS FPU Emulator v1.5 This board use 2.6.15 ip_tables: (C) 2000-2002 Netfilter core team ip_conntrack version 2.4 (256 buckets, 5120 max) - 244 bytes per conntrack insmod: cannot open module `/lib/modules/2.6.15/kernel/ip_nat.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/ipt_MASQUERADE.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/ipt_conntrack.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/ipt_iprange.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/ipt_mac.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/ipt_string.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/iptable_nat.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/ipt_time.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/ipt_TRIGGER.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/ip_conntrack_pptp.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/ipt_TCPMSS.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/statistics.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/ipt_multiurl.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/ip_conntrack_h323.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/ipt_MARK.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/sch_htb.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/sch_prio.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/sch_sfq.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/cls_basic.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/cls_fw.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/ts_kmp.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/flashid.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/pppol2tp.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/pptp.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/wlan_warn.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/harmony.ko': No such file or directory insmod: cannot open module `/lib/modules/2.6.15/kernel/cdc-acm.ko': No such file or directory Now flash open! Now flash open! Invalid PHY ID1 for enet0 port0. Expected 0x0243, read 0x0000 (none) mips #9 Thu Jan 31 14:51:43 HKT 2013 (none) (none) login: device eth0 entered promiscuous mode Now flash open! Invalid PHY ID1 for enet0 port0. Expected 0x0243, read 0x0000 br0: port 1(eth0) entering learning state br0: topology change detected, propagating br0: port 1(eth0) entering forwarding state ath_hal: module license 'Proprietary' taints kernel. ath_hal: 0.9.17.1 (AR5416, DEBUG, REGOPS_FUNC, WRITE_EEPROM, 11D) wlan: 0.8.4.2 (Atheros/multi-bss) ath_rate_atheros: Copyright (c) 2001-2005 Atheros Communications, Inc, All Rights Reserved ath_dev: Copyright (c) 2001-2007 Atheros Communications, Inc, All Rights Reserved ath_ahb: 0.9.4.5 (Atheros/multi-bss) Howl Revision ID 0xb9 <6>wifi0: Atheros AR9100 WiSoC: mem=0xb80c0000, irq=2 wlan_me: Version 0.1 Copyright (c) 2008 Atheros Communications, Inc. All Rights Reserved wlan: mac acl policy registered Country ie is US maxrate = 300000 Country ie is US br0: port 1(eth0) entering disabled state Invalid PHY ID1 for enet0 port0. Expected 0x0243, read 0x0000 br0: port 1(eth0) entering learning state br0: topology change detected, propagating br0: port 1(eth0) entering forwarding state device ath0 entered promiscuous mode br0: port 2(ath0) entering learning state br0: topology change detected, propagating br0: port 2(ath0) entering forwarding state br0: port 2(ath0) entering disabled state Country ie is US br0: port 2(ath0) entering learning state br0: topology change detected, propagating br0: port 2(ath0) entering forwarding state br0: port 2(ath0) entering disabled state Country ie is US br0: port 2(ath0) entering learning state br0: topology change detected, propagating br0: port 2(ath0) entering forwarding state OPERMODE:0**** TL-WA901N mips #9 Thu Jan 31 14:51:43 HKT 2013 (none) TL-WA901N login: root Password: Jan 1 00:00:19 login[120]: root login on `ttyS0' BusyBox v1.01 (2012.12.18-07:39+0000) Built-in shell (msh) Enter 'help' for a list of built-in commands. # cat /proc/cpuinfo system type : Atheros AR9100 processor : 0 cpu model : MIPS 24K V7.4 BogoMIPS : 265.21 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 # # cat /proc/meminfo MemTotal: 30652 kB MemFree: 17112 kB Buffers: 1412 kB Cached: 4640 kB SwapCached: 0 kB Active: 4488 kB Inactive: 3180 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 30652 kB LowFree: 17112 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 0 kB Writeback: 0 kB Mapped: 3020 kB Slab: 3912 kB CommitLimit: 15324 kB Committed_AS: 3140 kB PageTables: 196 kB VmallocTotal: 1048560 kB VmallocUsed: 1512 kB VmallocChunk: 1046900 kB # # cat /proc/mtd dev: size erasesize name mtd0: 00020000 00010000 "boot" mtd1: 00100000 00010000 "kernel" mtd2: 002c0000 00010000 "rootfs" mtd3: 00010000 00010000 "config" mtd4: 00010000 00010000 "art" # # cat /proc/partitions major minor #blocks name 31 0 128 mtdblock0 31 1 1024 mtdblock1 31 2 2816 mtdblock2 31 3 64 mtdblock3 31 4 64 mtdblock4 # # cat /proc/version Linux version 2.6.15--LSDK-6.1.1.40 (root@localhost.localdomain) (gcc version 3.4.4) #9 Thu Jan 31 14:51:43 HKT 2013 #

OpenWrt Bootlog (Attitude Adjustment)

U-Boot 1.1.4 (Feb 24 2012 - 16:48:46) AP81 (ar7100) U-boot DRAM: sri 32 MB id read 0x100000ff flash size 4MB, sector count = 64 Flash: 4 MB Using default environment In: serial Out: serial Err: serial Net: ag7100_enet_initialize... No valid address in Flash. Using fixed address bsingle_phy = 0 eth0: 00:03:7f:09:0b:ad eth0 up eth0 Autobooting in 1 seconds## Booting image at bf020000 ... Uncompressing Kernel Image ... OK Starting kernel ... OpenWrt kernel loader for AR7XXX/AR9XXX Copyright (C) 2011 Gabor Juhos Looking for OpenWrt image... found at 0xbf022000 Decompressing kernel... done! Starting kernel at 80060000... [ 0.000000] Linux version 3.3.8 (blogic@Debian-60-squeeze-64-minimal) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #1 Sat Mar 23 16:49:30 UTC 2013 [ 0.000000] bootconsole [early0] enabled [ 0.000000] CPU revision is: 00019374 (MIPS 24Kc) [ 0.000000] SoC: Atheros AR9132 rev 2 [ 0.000000] Clocks: CPU:400.000MHz, DDR:400.000MHz, AHB:100.000MHz, Ref:5.000MHz [ 0.000000] Determined physical RAM map: [ 0.000000] memory: 02000000 @ 00000000 (usable) [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Zone PFN ranges: [ 0.000000] Normal 0x00000000 -> 0x00002000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] Early memory PFN ranges [ 0.000000] 0: 0x00000000 -> 0x00002000 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128 [ 0.000000] Kernel command line: board=TL-WA901ND-v2 console=ttyS0,115200 rootfstype=squashfs,jffs2 noinitrd [ 0.000000] PID hash table entries: 128 (order: -3, 512 bytes) [ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes. [ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes [ 0.000000] Writing ErrCtl register=00000000 [ 0.000000] Readback ErrCtl register=00000000 [ 0.000000] Memory: 29000k/32768k available (2211k kernel code, 3768k reserved, 418k data, 212k init, 0k highmem) [ 0.000000] SLUB: Genslabs=9, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] NR_IRQS:51 [ 0.000000] Calibrating delay loop... 265.42 BogoMIPS (lpj=1327104) [ 0.080000] pid_max: default: 32768 minimum: 301 [ 0.080000] Mount-cache hash table entries: 512 [ 0.090000] NET: Registered protocol family 16 [ 0.090000] gpiochip_add: registered GPIOs 0 to 21 on device: ath79 [ 0.100000] MIPS: machine is TP-LINK TL-WA901ND v2 [ 0.330000] bio: create slab at 0 [ 0.340000] Switching to clocksource MIPS [ 0.350000] NET: Registered protocol family 2 [ 0.350000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.350000] TCP established hash table entries: 1024 (order: 1, 8192 bytes) [ 0.360000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes) [ 0.360000] TCP: Hash tables configured (established 1024 bind 1024) [ 0.370000] TCP reno registered [ 0.370000] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 0.380000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 0.390000] NET: Registered protocol family 1 [ 0.410000] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.410000] JFFS2 version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 0.420000] msgmni has been set to 56 [ 0.430000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254) [ 0.430000] io scheduler noop registered [ 0.440000] io scheduler deadline registered (default) [ 0.440000] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled [ 0.480000] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11) is a 16550A [ 0.480000] console [ttyS0] enabled, bootconsole disabled [ 0.480000] console [ttyS0] enabled, bootconsole disabled [ 0.500000] m25p80 spi0.0: found s25sl032a, expected m25p80 [ 0.500000] m25p80 spi0.0: s25sl032a (4096 Kbytes) [ 0.510000] 5 tp-link partitions found on MTD device spi0.0 [ 0.510000] Creating 5 MTD partitions on "spi0.0": [ 0.520000] 0x000000000000-0x000000020000 : "u-boot" [ 0.530000] 0x000000020000-0x00000010bc00 : "kernel" [ 0.530000] mtd: partition "kernel" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only [ 0.540000] 0x00000010bc00-0x0000003f0000 : "rootfs" [ 0.550000] mtd: partition "rootfs" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only [ 0.560000] mtd: partition "rootfs" set to be root filesystem [ 0.570000] mtd: partition "rootfs_data" created automatically, ofs=2E0000, len=110000 [ 0.580000] 0x0000002e0000-0x0000003f0000 : "rootfs_data" [ 0.580000] 0x0000003f0000-0x000000400000 : "art" [ 0.590000] 0x000000020000-0x0000003f0000 : "firmware" [ 0.610000] ag71xx_mdio: probed [ 0.610000] eth0: Atheros AG71xx at 0xb9000000, irq 4 [ 0.910000] ag71xx ag71xx.0: eth0: connected to PHY at ag71xx-mdio.0:0c [uid=00008201, driver=Generic PHY] [ 0.930000] TCP cubic registered [ 0.930000] NET: Registered protocol family 17 [ 0.930000] Bridge firewalling registered [ 0.940000] 8021q: 802.1Q VLAN Support v1.8 [ 0.950000] VFS: Mounted root (squashfs filesystem) readonly on device 31:2. [ 0.960000] Freeing unused kernel memory: 212k freed - preinit - Press the [f] key and hit [enter] to enter failsafe mode [ 4.910000] eth0: link up (100Mbps/Full duplex) - regular preinit - [ 6.510000] JFFS2 notice: (419) jffs2_build_xattr_subsystem: complete building xattr subsystem, 1 of xdatum (0 unchecked, 0 orphan) and 15 of xref (0 dead, 5 orphan) found. switching to jffs2 - init - [ 6.710000] eth0: link down Please press Enter to activate this console. [ 8.550000] Compat-drivers backport release: compat-drivers-2012-09-04-2-gddac993 [ 8.560000] Backport based on wireless-testing.git master-2012-09-07 [ 8.570000] compat.git: wireless-testing.git [ 8.590000] cfg80211: Calling CRDA to update world regulatory domain [ 8.600000] cfg80211: World regulatory domain updated: [ 8.610000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 8.610000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.620000] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.630000] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.640000] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.650000] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 9.010000] usbcore: registered new interface driver usbfs [ 9.010000] usbcore: registered new interface driver hub [ 9.020000] usbcore: registered new device driver usb [ 9.650000] ieee80211 phy0: Atheros AR9100 MAC/BB Rev:7 AR2133 RF Rev:a2 mem=0xb80c0000, irq=2 [ 9.660000] cfg80211: Calling CRDA for country: US [ 9.660000] cfg80211: Regulatory domain changed to country: US [ 9.670000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 9.670000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm) [ 9.680000] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 1700 mBm) [ 9.690000] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 9.700000] cfg80211: (5490000 KHz - 5600000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 9.700000] cfg80211: (5650000 KHz - 5710000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 9.710000] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 3000 mBm) [ 9.760000] PPP generic driver version 2.4.2 [ 10.010000] ip_tables: (C) 2000-2006 Netfilter Core Team [ 10.220000] NET: Registered protocol family 24 [ 10.240000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 10.260000] nf_conntrack version 0.5.0 (456 buckets, 1824 max) [ 10.470000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 14.020000] device eth0 entered promiscuous mode [ 14.150000] ar71xx: pll_reg 0xb8050014: 0x13000a44 [ 14.150000] eth0: link up (100Mbps/Full duplex) [ 14.280000] br-lan: port 1(eth0) entered forwarding state [ 14.280000] br-lan: port 1(eth0) entered forwarding state [ 16.280000] br-lan: port 1(eth0) entered forwarding state [ 18.590000] cfg80211: Calling CRDA for country: GR [ 18.590000] cfg80211: Regulatory domain changed to country: GR [ 18.600000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 18.610000] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 18.610000] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 18.620000] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 18.630000] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm) BusyBox v1.19.4 (2013-03-14 11:28:31 UTC) built-in shell (ash) Enter 'help' for a list of built-in commands. _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- ATTITUDE ADJUSTMENT (12.09, r36088) ----------------------------------------------------- * 1/4 oz Vodka Pour all ingredients into mixing * 1/4 oz Gin tin with ice, strain into glass. * 1/4 oz Amaretto * 1/4 oz Triple sec * 1/4 oz Peach schnapps * 1/4 oz Sour mix * 1 splash Cranberry juice ----------------------------------------------------- root@OpenWrt:/# uname -a Linux OpenWrt 3.3.8 #1 Sat Mar 23 16:49:30 UTC 2013 mips GNU/Linux root@OpenWrt:/# root@OpenWrt:/# cat /proc/mtd dev: size erasesize name mtd0: 00020000 00010000 "u-boot" mtd1: 000ebc00 00010000 "kernel" mtd2: 002e4400 00010000 "rootfs" mtd3: 00110000 00010000 "rootfs_data" mtd4: 00010000 00010000 "art" mtd5: 003d0000 00010000 "firmware" root@OpenWrt:/# cat /proc/meminfo MemTotal: 29212 kB MemFree: 13584 kB Buffers: 1648 kB Cached: 4940 kB SwapCached: 0 kB Active: 3688 kB Inactive: 3968 kB Active(anon): 1100 kB Inactive(anon): 44 kB Active(file): 2588 kB Inactive(file): 3924 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 1084 kB Mapped: 1068 kB Shmem: 76 kB Slab: 5060 kB SReclaimable: 896 kB SUnreclaim: 4164 kB KernelStack: 296 kB PageTables: 192 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 14604 kB Committed_AS: 3548 kB VmallocTotal: 1048372 kB VmallocUsed: 576 kB VmallocChunk: 1042196 kB root@OpenWrt:/# root@OpenWrt:/# cat /proc/cpuinfo system type : Atheros AR9132 rev 2 machine : TP-LINK TL-WA901ND v2 processor : 0 cpu model : MIPS 24Kc V7.4 BogoMIPS : 265.42 wait instruction : yes microsecond timers : yes tlb_entries : 16 extra interrupt vector : yes hardware watchpoint : yes, count: 4, address/irw mask: [0x0000, 0x03d0, 0x0c38, 0x07f8] ASEs implemented : mips16 shadow register sets : 1 kscratch registers : 0 core : 0 VCED exceptions : not available VCEI exceptions : not available root@OpenWrt:/#

Version 3.x

Install OpenWRT

A discussion around the version 3.x is in Openwrt forum.

Flashing via Web GUI fails with installed stock FW. A workaround is to use the firmware file from here (including LuCI admin GUI): https://www.dropbox.com/s/dyjxbohh85na0qs/openwrt-ar71xx-generic-tl-wa901nd-v3-squashfs-factory-12.09.bin and use it for get openwrt running.

Images for the 3.x version also could be get from here:

Openwrt Snapshot:

openwrt-ar71xx-generic-tl-wa901nd-v3-squashfs-factory.bin (to flash trough the tp-link default webgui)

openwrt-ar71xx-generic-tl-wa901nd-v3-squashfs-sysupgrade.bin (to upgrade an existing openwrt installation)

Oxxion repository:

openwrt-ar71xx-generic-tl-wa901nd-v3-squashfs-factory.bin (to flash trough the tp-link default webgui)

openwrt-ar71xx-generic-tl-wa901nd-v3-squashfs-sysupgrade.bin (to upgrade an existing openwrt installation)

Serial

Serial port layout is:
(x) VCC (3.3V)
(x) GND
(x) RX
[x] TX

Settings: 115200 8N1

There is NO hardware modification needed.

Bootloader

The bootloader is uboot with enabled ethernet network device. To access uboot console type quickly tpl if you see Autobooting in 1 seconds.

Recovery

uboot + tftp

You can do recovery using uboot and tftp. Prepare a tftp server at 192.168.1.100 containing openwrt-ar71xx-generic-tl-wa901nd-v3-squashfs-factory.bin.

erase 0x9f020000 +0x3c0000
tftpboot 0x81000000 openwrt-ar71xx-generic-tl-wa901nd-v3-squashfs-factory.bin
cp.b 0x81000000 0x9f020000 0x3c0000
bootm 0x9f020000

Now, OpenWRT should installed and run.

I got problems when loading image to ram and after that I try to clear the flash range for the os image. This is the reason why to clear first.

Back to top

toh/tp-link/tl-wa901nd.txt · Last modified: 2014/03/14 07:19 by reflexing