Bringing OpenWRT to TL-WA801ND v2 (Part 2, Building OpenWRT)


After getting some details about the board it was time to create a build environment. In my case this was just about copying one of the VMs I have prepared just for this purpose. The build environment requires a Linux machine whereas it doesn’t really matter which flavour it is. After everything is set on the VM the very first step is to create a user under which the build will be performed. I created a user ‘openwrt‘ for this and switched user to it. As user openwrt the following commands needed to be executed:

git clone git://git.openwrt.org/12.09/openwrt.git
cd openwrt
./scripts/feeds update
make menuconfig
make

I.e. getting the source, changing into the source directory and updating the feeds (the add-on packages). The ‘make menuconfig’ might not be necessary because everything is already set up for the AR71xx platform. If not configure appropriately. More details about the build system can be found on the developer site of OpenWRT.

The first build ran smooth without any errors or warnings in my case.

I’ve gone through several iterations and even failed attempts to create a working image for the TL-WA801ND after that but ended up with a working source. The patches that were needed and which can be applied to the 12.09 tree are as follows:

diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh
index 416322d..af4dd9e 100755
--- a/target/linux/ar71xx/base-files/etc/diag.sh
+++ b/target/linux/ar71xx/base-files/etc/diag.sh
@@ -127,6 +127,7 @@ get_status_led() {
         ;;
     tl-mr3220 | \
     tl-mr3420 | \
+    tl-wa801nd-v2 | \
     tl-wa901nd | \
     tl-wa901nd-v2 | \
     tl-wr1041n-v2 | \
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/leds b/target/linux/ar71xx/base-files/etc/uci-defaults/leds
index 7be4ce9..fc6ea05 100755
--- a/target/linux/ar71xx/base-files/etc/uci-defaults/leds
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/leds
@@ -122,6 +122,11 @@ tl-wa901nd)
     ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0"
     ;;

+tl-wa801nd-v2)
+    ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
+    ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan"  "eth0"
+    ;;
+
 tl-wa901nd-v2)
     ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
     ;;
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/network b/target/linux/ar71xx/base-files/etc/uci-defaults/network
index 7fa219d..6463961 100755
--- a/target/linux/ar71xx/base-files/etc/uci-defaults/network
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/network
@@ -156,6 +156,7 @@ rb-411 |\
 tl-mr11u |\
 tl-mr3020 |\
 tl-mr3040 |\
+tl-wa801nd-v2 |\
 tl-wa901nd |\
 tl-wa901nd-v2 |\
 tl-wr703n |\
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 2bc8194..63464e5 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -93,6 +93,9 @@ tplink_board_detect() {
     "084200"*)
         model="TP-Link TL-WR842N/ND"
         ;;
+    "080100"*)
+        model="TP-Link TL-WA801N/ND"
+        ;;
     "090100"*)
         model="TP-Link TL-WA901N/ND"
         ;;
@@ -351,6 +354,9 @@ ar71xx_board_detect() {
     *TL-WA7510N)
         name="tl-wa7510n"
         ;;
+    *"TL-WA801N/ND v2")
+        name="tl-wa801nd-v2"
+        ;;
     *TL-WA901ND)
         name="tl-wa901nd"
         ;;
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 49b1de9..5ac55ed 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -153,6 +153,7 @@ platform_check_image() {
     tl-mr3220 | \
     tl-mr3420 | \
     tl-wa7510n | \
+    tl-wa801nd-v2 | \
     tl-wa901nd | \
     tl-wa901nd-v2 | \
     tl-wdr4300 | \
diff --git a/target/linux/ar71xx/config-3.3 b/target/linux/ar71xx/config-3.3
index 446f202..3e556c1 100644
--- a/target/linux/ar71xx/config-3.3
+++ b/target/linux/ar71xx/config-3.3
@@ -58,6 +58,7 @@ CONFIG_ATH79_MACH_TEW_712BR=y
 CONFIG_ATH79_MACH_TL_MR11U=y
 CONFIG_ATH79_MACH_TL_MR3020=y
 CONFIG_ATH79_MACH_TL_MR3X20=y
+CONFIG_ATH79_MACH_TL_WA801ND_V2=y
 CONFIG_ATH79_MACH_TL_WA901ND=y
 CONFIG_ATH79_MACH_TL_WA901ND_V2=y
 CONFIG_ATH79_MACH_TL_WDR4300=y
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wa801nd-v2.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wa801nd-v2.c
index e69de29..7444b26 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wa801nd-v2.c
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wa801nd-v2.c
@@ -0,0 +1,115 @@
+/*
+ *  TP-LINK TL-WA801N/ND v2 board support
+ *
+ *  Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License version 2 as published
+ *  by the Free Software Foundation.
+ */
+
+#include <linux/platform_device.h>
+
+#include <asm/mach-ath79/ath79.h>
+#include <asm/mach-ath79/ar71xx_regs.h>
+
+#include "common.h"
+#include "dev-eth.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-m25p80.h"
+#include "dev-wmac.h"
+#include "machtypes.h"
+
+#define TL_WA801ND_V2_GPIO_LED_WLAN    13
+#define TL_WA801ND_V2_GPIO_LED_QSS    15
+#define TL_WA801ND_V2_GPIO_LED_LAN    18
+#define TL_WA801ND_V2_GPIO_LED_SYSTEM    14
+
+#define TL_WA801ND_V2_GPIO_BTN_RESET    17
+#define TL_WA801ND_V2_GPIO_SW_RFKILL    16
+
+#define TL_WA801ND_V2_KEYS_POLL_INTERVAL    20    /* msecs */
+#define TL_WA801ND_V2_KEYS_DEBOUNCE_INTERVAL (3 * TL_WA801ND_V2_KEYS_POLL_INTERVAL)
+
+static const char *tl_wa801nd_v2_part_probes[] = {
+    "tp-link",
+    NULL,
+};
+
+static struct flash_platform_data tl_wa801nd_v2_flash_data = {
+    .part_probes    = tl_wa801nd_v2_part_probes,
+};
+
+static struct gpio_led tl_wa801nd_v2_leds_gpio[] __initdata = {
+    {
+        .name        = "tp-link:green:qss",
+        .gpio        = TL_WA801ND_V2_GPIO_LED_QSS,
+        .active_low    = 1,
+    }, {
+        .name        = "tp-link:green:system",
+        .gpio        = TL_WA801ND_V2_GPIO_LED_SYSTEM,
+        .active_low    = 1,
+    }, {
+        .name        = "tp-link:green:lan",
+        .gpio        = TL_WA801ND_V2_GPIO_LED_LAN,
+        .active_low    = 1,
+    }, {
+        .name        = "tp-link:green:wlan",
+        .gpio        = TL_WA801ND_V2_GPIO_LED_WLAN,
+        .active_low    = 1,
+    },
+};
+
+static struct gpio_keys_button tl_wa801nd_v2_gpio_keys[] __initdata = {
+    {
+        .desc        = "Reset button",
+        .type        = EV_KEY,
+        .code        = KEY_RESTART,
+        .debounce_interval = TL_WA801ND_V2_KEYS_DEBOUNCE_INTERVAL,
+        .gpio        = TL_WA801ND_V2_GPIO_BTN_RESET,
+        .active_low    = 1,
+    }, {
+        .desc        = "RFKILL switch",
+        .type        = EV_SW,
+        .code        = KEY_RFKILL,
+        .debounce_interval = TL_WA801ND_V2_KEYS_DEBOUNCE_INTERVAL,
+        .gpio        = TL_WA801ND_V2_GPIO_SW_RFKILL,
+        .active_low    = 0,
+    }
+};
+
+static void __init tl_wa801nd_v2_setup(void)
+{
+    u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
+    u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
+
+    ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wa801nd_v2_leds_gpio),
+                 tl_wa801nd_v2_leds_gpio);
+
+    ath79_register_gpio_keys_polled(1, TL_WA801ND_V2_KEYS_POLL_INTERVAL,
+                    ARRAY_SIZE(tl_wa801nd_v2_gpio_keys),
+                    tl_wa801nd_v2_gpio_keys);
+
+    ath79_register_m25p80(&tl_wa801nd_v2_flash_data);
+
+    ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);
+
+    ath79_register_mdio(1, 0x0);
+
+    ath79_init_mac(ath79_eth0_data.mac_addr, mac, -1);
+    ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
+
+    /* GMAC0 is connected to the PHY0 of the internal switch */
+    ath79_switch_data.phy4_mii_en = 1;
+    ath79_switch_data.phy_poll_mask = BIT(0);
+    ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+    ath79_eth0_data.phy_mask = BIT(0);
+    ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
+    ath79_register_eth(0);
+
+    ath79_register_wmac(ee, mac);
+}
+
+MIPS_MACHINE(ATH79_MACH_TL_WA801ND_V2, "TL-WA801ND-v2", "TP-LINK TL-WA801N/ND v2",
+         tl_wa801nd_v2_setup);
diff --git a/target/linux/ar71xx/generic/profiles/tp-link.mk b/target/linux/ar71xx/generic/profiles/tp-link.mk
index 07d7059..4dd5967 100644
--- a/target/linux/ar71xx/generic/profiles/tp-link.mk
+++ b/target/linux/ar71xx/generic/profiles/tp-link.mk
@@ -93,6 +93,17 @@ endef
 $(eval $(call Profile,TLWA7510))

+define Profile/TLWA801
+    NAME:=TP-LINK TL-WA801N/ND
+    PACKAGES:=
+endef
+
+define Profile/TLWA801/Description
+    Package set optimized for the TP-LINK TL-WA801N/ND.
+endef
+$(eval $(call Profile,TLWA801))
+
+
 define Profile/TLWA901
     NAME:=TP-LINK TL-WA901N/ND
     PACKAGES:=
diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
index 9ebe486..c2d4a44 100644
--- a/target/linux/ar71xx/image/Makefile
+++ b/target/linux/ar71xx/image/Makefile
@@ -878,6 +878,7 @@ $(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLMR3040,tl-mr3040-v1,TL-MR
 $(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWR703,tl-wr703n-v1,TL-WR703N,ttyATH0,115200,0x07030101,1,4Mlzma))
 $(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWR740NV4,tl-wr740n-v4,TL-WR741ND-v4,ttyATH0,115200,0x07400004,1,4Mlzma))
 $(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWR741NV4,tl-wr741nd-v4,TL-WR741ND-v4,ttyATH0,115200,0x07410004,1,4Mlzma))
+$(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWA801NV2,tl-wa801nd-v2,TL-WA801ND-v2,ttyS0,115200,0x08010002,1,4Mlzma))
 $(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWR841NV8,tl-wr841n-v8,TL-WR841N-v8,ttyS0,115200,0x08410008,1,4Mlzma))
 $(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWR1041,tl-wr1041n-v2,TL-WR1041N-v2,ttyS0,115200,0x10410002,1,4Mlzma))
 $(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWR2543,tl-wr2543-v1,TL-WR2543N,ttyS0,115200,0x25430001,1,8Mlzma,-v 3.13.99))
diff --git a/target/linux/ar71xx/patches-3.3/660-MIPS-ath79-TL-WA801ND-v2-support.patch b/target/linux/ar71xx/patches-3.3/660-MIPS-ath79-TL-WA801ND-v2-support.patch
index e69de29..37c7771 100644
--- a/target/linux/ar71xx/patches-3.3/660-MIPS-ath79-TL-WA801ND-v2-support.patch
+++ b/target/linux/ar71xx/patches-3.3/660-MIPS-ath79-TL-WA801ND-v2-support.patch
@@ -0,0 +1,38 @@
+--- a/arch/mips/ath79/machtypes.h
++++ b/arch/mips/ath79/machtypes.h
+@@ -77,6 +77,7 @@
+     ATH79_MACH_TL_MR3220,        /* TP-LINK TL-MR3220 */
+     ATH79_MACH_TL_MR3420,        /* TP-LINK TL-MR3420 */
+     ATH79_MACH_TL_WA7510N_V1,    /* TP-LINK TL-WA7510N v1*/
++    ATH79_MACH_TL_WA801ND_V2,    /* TP-LINK TL-WA801ND v2 */
+     ATH79_MACH_TL_WA901ND,        /* TP-LINK TL-WA901ND */
+     ATH79_MACH_TL_WA901ND_V2,    /* TP-LINK TL-WA901ND v2 */
+     ATH79_MACH_TL_WDR4300,        /* TP-LINK TL-WDR4300 */
+--- a/arch/mips/ath79/Kconfig
++++ b/arch/mips/ath79/Kconfig
+@@ -461,6 +461,15 @@
+     select ATH79_DEV_M25P80
+     select ATH79_DEV_USB
+ 
++config ATH79_MACH_TL_WA801ND_V2
++    bool "TP-LINK TL-WA801ND v2 support"
++    select SOC_AR934X
++    select ATH79_DEV_ETH
++    select ATH79_DEV_GPIO_BUTTONS
++    select ATH79_DEV_LEDS_GPIO
++    select ATH79_DEV_M25P80
++    select ATH79_DEV_WMAC
++
+ config ATH79_MACH_TL_WA901ND
+     bool "TP-LINK TL-WA901ND/TL-WA7510N support"
+     select SOC_AR724X
+--- a/arch/mips/ath79/Makefile
++++ b/arch/mips/ath79/Makefile
+@@ -77,6 +77,7 @@
+ obj-$(CONFIG_ATH79_MACH_TL_MR11U)    += mach-tl-mr11u.o
+ obj-$(CONFIG_ATH79_MACH_TL_MR3020)    += mach-tl-mr3020.o
+ obj-$(CONFIG_ATH79_MACH_TL_MR3X20)    += mach-tl-mr3x20.o
++obj-$(CONFIG_ATH79_MACH_TL_WA801ND_V2)    += mach-tl-wa801nd-v2.o
+ obj-$(CONFIG_ATH79_MACH_TL_WA901ND)    += mach-tl-wa901nd.o
+ obj-$(CONFIG_ATH79_MACH_TL_WA901ND_V2)    += mach-tl-wa901nd-v2.o
+ obj-$(CONFIG_ATH79_MACH_TL_WDR4300)     += mach-tl-wdr4300.o
diff --git a/tools/firmware-utils/src/mktplinkfw.c b/tools/firmware-utils/src/mktplinkfw.c
index 2be6335..58a9c39 100644
--- a/tools/firmware-utils/src/mktplinkfw.c
+++ b/tools/firmware-utils/src/mktplinkfw.c
@@ -35,6 +35,7 @@
 #define HWID_TL_MR3420_V1    0x34200001
 #define HWID_TL_WA701N_V1    0x07010001
 #define HWID_TL_WA7510N_V1    0x75100001
+#define HWID_TL_WA801ND_V2    0x08010002
 #define HWID_TL_WA901ND_V1    0x09010001
 #define HWID_TL_WA901ND_V2    0x09010002
 #define HWID_TL_WR703N_V1    0x07030101
@@ -204,6 +205,11 @@ static struct board_info boards[] = {
         .hw_rev        = 1,
         .layout_id    = "4M",
     }, {
+        .id             = "TL-WA801NDv2",
+        .hw_id          = HWID_TL_WA801ND_V2,
+        .hw_rev         = 1,
+        .layout_id    = "4Mlzma",
+    }, {
         .id        = "TL-WA901NDv1",
         .hw_id        = HWID_TL_WA901ND_V1,
         .hw_rev        = 1,

(Note: If you want to compile OpenWRT yourself and create a patch file from the above you have to keep in mind that copy-paste of the above will convert all tabs into spaces. This lets the patch process fail for some files and requires manual corrections in order to succeed. To ease this I uploaded the complete patch here.)

After building the image you can find the result under the ‘bin/ar71xx’ directory which will contain the images for all supported devices using that architecture. In order to install the image onto the device you could simply update the firmware via the web interface. The stock firmware will recognize it as valid and allow installation. But for completeness I would like to explain how it can be installed via the bootloader as well. This could be very helpful especially if you’re experimenting with OpenWRT and something went wrong which bricks your device.

The bootloader is able to receive data via TFTP which in turn requires that you have a TFTP server installed. So either you install that directly on your development machine or any other machine you have at hand. You place the firmware image in the data directory of the TFTP server and start it.

Once you power on the TL-WA801ND you will see a message “Autobooting in 1 seconds” in the console. I.e. you have to be quick to abort autobooting by entering ‘tpl‘ into the console. If you succeed the boot process is interrupted and you will be at the bootloader prompt.

You then need to adjust the boot environment by setting an IP address according to your LAN setup, the IP address of your TFTP server and the name of the image you’re about to install.

U-Boot 1.1.4 (May 24 2012 - 19:13:20)

U-boot AP123

DRAM:  32 MB
id read 0x100000ff
Flash:  4 MB
Using default environment

In:    serial
Out:   serial
Err:   serial
Net:   ag934x_enet_initialize...
wasp reset mask:c03300
WASP ----> S27 PHY
GMAC: cfg1 0x5 cfg2 0x7114
eth0: ba:be:fa:ce:08:41
s27 reg init 
athrs27_phy_setup ATHR_PHY_CONTROL 4: 0x1000
athrs27_phy_setup ATHR_PHY_SPEC_STAUS 4: 0x10
eth0 up
WASP ----> S27 PHY
GMAC: cfg1 0xf cfg2 0x7214
eth1: ba:be:fa:ce:08:41
s27 reg init lan 
ATHRS27: resetting s27
ATHRS27: s27 reset done
athrs27_phy_setup ATHR_PHY_CONTROL 0: 0x1000
athrs27_phy_setup ATHR_PHY_SPEC_STAUS 0: 0x10
athrs27_phy_setup ATHR_PHY_CONTROL 1: 0x1000
athrs27_phy_setup ATHR_PHY_SPEC_STAUS 1: 0x10
athrs27_phy_setup ATHR_PHY_CONTROL 2: 0x1000
athrs27_phy_setup ATHR_PHY_SPEC_STAUS 2: 0x10
athrs27_phy_setup ATHR_PHY_CONTROL 3: 0x1000
athrs27_phy_setup ATHR_PHY_SPEC_STAUS 3: 0x10
eth1 up
eth0, eth1
Autobooting in 1 seconds
wasp> 

wasp> setenv serverip 192.168.0.2

wasp> setenv ipaddr 192.168.0.111

wasp> setenv bootfile openwrt-ar71xx-generic-tl-wa801nd-v2-squashfs-factory.bin

In my case the boot environment looked like this afterwards:

wasp> printenv

bootargs=console=ttyS0,115200 root=31:02 rootfstype=squashfs init=/sbin/init mtdparts=ath-nor0:128k(u-boot),1024k(kernel),2816k(rootfs),64k(config),64k(art)
bootcmd=bootm 0x9f020000
bootdelay=1
baudrate=115200
ethaddr=0xba:0xbe:0xfa:0xce:0x08:0x41
dir=
bc=ap123
lu=tftp 0x81000000 ${dir}u-boot.bin&&erase 0x9f000000 +$filesize;cp.b $fileaddr 0x9f000000 $filesize
lf=tftp 0x81000000 ${dir}${bc}-squashfs&&erase 0x9f120000 +$filesize;cp.b $fileaddr 0x9f120000 $filesize
stdin=serial
stdout=serial
stderr=serial
ipaddr=192.168.0.111
serverip=192.168.0.2
bootfile=openwrt-ar71xx-generic-tl-wa801nd-v2-squashfs-factory.bin
ethact=eth1

Environment size: 630/65532 bytes

Issuing the command ‘tftpboot‘ will start the download of the image.

wasp> tftpboot

enet1 port0 up
dup 1 speed 1000
Using eth1 device
TFTP from server 192.168.0.2; our IP address is 192.168.0.111
Filename 'openwrt-ar71xx-generic-tl-wa801nd-v2-squashfs-factory.bin'.
Load address: 0x81000000
Loading: *#################################################################
 #################################################################
 #################################################################
 #################################################################
 #################################################################
 #################################################################
 #################################################################
 #################################################################
 #################################################################
 #################################################################
 #################################################################
 ######################################################
done
Bytes transferred = 3932160 (3c0000 hex)
wasp> erase 0x9f020000 +0x3c0000

First 0x2 last 0x3d sector size 0x10000
   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61
Erased 60 sectors
wasp> cp.b 0x81000000 0x9f020000 0x3c0000

Copy to Flash... write addr: 9f020000
done

If the download was successfully done you will get the amount of transferred bytes (0x3c0000 in the above example) which is then used for the next commands which first erases 0x3c0000 bytes in the flash starting at 0x9f020000 and then copying that amount of data from the RAM starting at 0x81000000 into the flash starting at 0x9f020000. After that was successfully done the bootloader is instructed to start what we flashed by the ‘bootm‘ command:

wasp> bootm 0x9f020000

## Booting image at 9f020000 ...
   Uncompressing Kernel Image ... OK

Starting kernel ...

[    0.000000] Linux version 3.3.8 (openwrt@localhost.home.org) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #1 Fri May 24 10:50:15 CEST 2013
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU revision is: 0001974c (MIPS 74Kc)
[    0.000000] SoC: Atheros AR9341 rev 1
[    0.000000] Clocks: CPU:535.000MHz, DDR:400.000MHz, AHB:200.000MHz, Ref:25.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-WA801ND-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: 29136k/32768k available (2092k kernel code, 3632k reserved, 405k 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... 266.64 BogoMIPS (lpj=1333248)
[    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 22 on device: ath79
[    0.100000] MIPS: machine is TP-LINK TL-WA801N/ND v2
[    0.510000] bio: create slab  at 0
[    0.520000] Switching to clocksource MIPS
[    0.530000] NET: Registered protocol family 2
[    0.530000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.530000] TCP established hash table entries: 1024 (order: 1, 8192 bytes)
[    0.540000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.540000] TCP: Hash tables configured (established 1024 bind 1024)
[    0.550000] TCP reno registered
[    0.550000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.560000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.560000] NET: Registered protocol family 1
[    0.580000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.590000] JFFS2 version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.600000] msgmni has been set to 56
[    0.600000] io scheduler noop registered
[    0.610000] io scheduler deadline registered (default)
[    0.610000] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
[    0.640000] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11) is a 16550A
[    0.650000] console [ttyS0] enabled, bootconsole disabled
[    0.650000] console [ttyS0] enabled, bootconsole disabled
[    0.660000] m25p80 spi0.0: found en25q32b, expected m25p80
[    0.670000] m25p80 spi0.0: en25q32b (4096 Kbytes)
[    0.670000] 5 tp-link partitions found on MTD device spi0.0
[    0.680000] Creating 5 MTD partitions on "spi0.0":
[    0.680000] 0x000000000000-0x000000020000 : "u-boot"
[    0.690000] 0x000000020000-0x0000000ff314 : "kernel"
[    0.700000] mtd: partition "kernel" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only
[    0.710000] 0x0000000ff314-0x0000003f0000 : "rootfs"
[    0.720000] mtd: partition "rootfs" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only
[    0.730000] mtd: partition "rootfs" set to be root filesystem
[    0.740000] mtd: partition "rootfs_data" created automatically, ofs=280000, len=170000 
[    0.740000] 0x000000280000-0x0000003f0000 : "rootfs_data"
[    0.750000] 0x0000003f0000-0x000000400000 : "art"
[    0.760000] 0x000000020000-0x0000003f0000 : "firmware"
[    0.780000] ag71xx_mdio: probed
[    0.790000] eth0: Atheros AG71xx at 0xb9000000, irq 4
[    1.340000] ag71xx ag71xx.0: eth0: connected to PHY at ag71xx-mdio.1:00 [uid=004dd042, driver=Generic PHY]
[    1.360000] eth1: Atheros AG71xx at 0xba000000, irq 5
[    1.910000] eth1: Found an AR934X built-in switch
[    2.950000] TCP cubic registered
[    2.950000] NET: Registered protocol family 17
[    2.950000] 8021q: 802.1Q VLAN Support v1.8
[    2.960000] VFS: Mounted root (squashfs filesystem) readonly on device 31:2.
[    2.970000] Freeing unused kernel memory: 212k freed
- preinit -
Press the [f] key and hit [enter] to enter failsafe mode
[    7.420000] eth0: link up (100Mbps/Full duplex)
- regular preinit -
jffs2 not ready yet; using ramdisk
- init -
[    7.930000] eth0: link down
[    8.620000] Compat-drivers backport release: compat-drivers-2013-01-21-1
[    8.620000] Backport based on wireless-testing.git master-2013-02-22
[    8.630000] compat.git: wireless-testing.git
[    8.660000] cfg80211: Calling CRDA to update world regulatory domain
[    8.670000] cfg80211: World regulatory domain updated:
[    8.670000] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[    8.680000] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[    8.690000] cfg80211:   (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[    8.700000] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[    8.700000] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[    8.710000] cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[    8.990000] usbcore: registered new interface driver usbfs
[    9.000000] usbcore: registered new interface driver hub
[    9.010000] usbcore: registered new device driver usb
[    9.520000] ieee80211 phy0: Atheros AR9340 Rev:0 mem=0xb8100000, irq=47
[    9.520000] cfg80211: Calling CRDA for country: US
[    9.530000] cfg80211: Regulatory domain changed to country: US
[    9.530000] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[    9.540000] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm)
[    9.550000] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 1700 mBm)
[    9.560000] cfg80211:   (5250000 KHz - 5330000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[    9.570000] cfg80211:   (5490000 KHz - 5600000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[    9.570000] cfg80211:   (5650000 KHz - 5710000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[    9.580000] cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 3000 mBm)
[    9.640000] PPP generic driver version 2.4.2
[    9.840000] ip_tables: (C) 2000-2006 Netfilter Core Team
[   10.020000] NET: Registered protocol family 24
[   10.030000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[   10.060000] nf_conntrack version 0.5.0 (458 buckets, 1832 max)
[   10.250000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver

Please press Enter to activate this console. [   13.590000] device eth0 entered promiscuous mode
[   15.520000] eth0: link up (100Mbps/Full duplex)
[   15.520000] br-lan: port 1(eth0) entered forwarding state
[   15.530000] br-lan: port 1(eth0) entered forwarding state
[   17.530000] br-lan: port 1(eth0) entered forwarding state
[   23.220000] jffs2_scan_eraseblock(): End of filesystem marker found at 0x0
[   23.240000] jffs2_build_filesystem(): unlocking the mtd device... done.
[   23.240000] jffs2_build_filesystem(): erasing all blocks after the end marker... done.
[   30.100000] JFFS2 notice: (1079) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.

BusyBox v1.19.4 (2013-05-23 16:29:05 CEST) 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 (Attitude Adjustment, r36500)
 -----------------------------------------------------
  * 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:/#

Here we go! The TL-WA801ND is now running OpenWRT.

[Update: 10.6.2013]

The above patch was missing a file. This is corrected now.

[Update: 5.7.2013]

A compiled binary can be downloaded here.

[Update: 16.7.2013]

A new compiled binary can be downloaded here. It comes with some more preloaded applications:

  • luci
  • luci-ssl
  • luci-app-qos (Quality of Service)
  • luci-app-wol (Wake-on-LAN)
  • snmpd

[Update: 25.8.2013]

I added a note about the patch above.

199 comments

  1. Great Tutorial, I’m searching a way to bring OpenWRT to this Acces Point a long time, because the TP-Link Firmware has several bugs in my case. I’m a little nooby…so could you please explain how to apply this patch?

    Thanks in advance!

    1. Sure. From the folder which holds the sources issue ‘patch -p1 < TL-WA801NDV2.patch'. Supposing the patch is stored in a file called 'TL-WA801NDV2.patch'.

      1. Thank you! Everytime I use this command I see this error messages:

        patching file target/linux/ar71xx/base-files/etc/diag.sh
        Hunk #1 FAILED at 127.
        1 out of 1 hunk FAILED — saving rejects to file target/linux/ar71xx/base-files/etc/diag.sh.rej
        patching file target/linux/ar71xx/base-files/etc/uci-defaults/leds
        Hunk #1 succeeded at 127 with fuzz 2 (offset 5 lines).
        patching file target/linux/ar71xx/base-files/etc/uci-defaults/network
        Reversed (or previously applied) patch detected! Assume -R? [n] y
        patching file target/linux/ar71xx/base-files/lib/ar71xx.sh
        Hunk #1 FAILED at 93.
        Hunk #2 FAILED at 351.
        2 out of 2 hunks FAILED — saving rejects to file target/linux/ar71xx/base-files/lib/ar71xx.sh.rej
        patching file target/linux/ar71xx/base-files/lib/upgrade/platform.sh
        Hunk #1 FAILED at 153.
        1 out of 1 hunk FAILED — saving rejects to file target/linux/ar71xx/base-files/lib/upgrade/platform.sh.rej
        patching file target/linux/ar71xx/config-3.3
        Reversed (or previously applied) patch detected! Assume -R? [n] y
        patching file target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wa801nd-v2.c
        patching file target/linux/ar71xx/generic/profiles/tp-link.mk
        Hunk #1 succeeded at 104 with fuzz 2 (offset 11 lines).
        patching file target/linux/ar71xx/image/Makefile
        Reversed (or previously applied) patch detected! Assume -R? [n] y
        patching file target/linux/ar71xx/patches-3.3/660-MIPS-ath79-TL-WA801ND-v2-support.patch
        patching file tools/firmware-utils/src/mktplinkfw.c
        Hunk #1 FAILED at 35.
        Hunk #2 FAILED at 204.
        2 out of 2 hunks FAILED — saving rejects to file tools/firmware-utils/src/mktplinkfw.c.rej

        After some time “make” just fails with Exit code 2. The OS is Debian Wheezy 64 Bit.

        Could you maybe upload the .bin file so this great piece of Software becomes available for everyone? Many people out there have trouble with the stock firmware of the WA801NDV2…

  2. Can you please send me a copy of this image, in order to flash my 801ND v2? I would really appreciate it, i have no knowledge on linux.

    1. The repo is ok but this special packages is requiring a specific and exactly that specific kernel version. You may need to compile this package on your own.

      1. thanks, it worked :D

        for anyone that flash TasksOfOhm’s ROM from admin panel and lost access, directly plug the wa801 to laptop/pc via LAN with DHCP active.

        you need to re-set the ip settings.

  3. If you want to restore the original firmware you can’t use the .bin “as is”: the web interface will say that the file is not the right one.

    To “make it right” follow this:
    ———————
    In case the file name of this firmware file does contain the word “boot” in it, you need to cut off parts of the image file before flashing it:
    An example of an image file with the word “boot” in it is wr1043nv1_en_3_9_17_up_boot(091118).bin.

    Cut the first 0x20200 (that is 131,584 = 257*512) Bytes from original firmware:
    dd if=orig.bin of=tplink.bin skip=257 bs=512
    ———————

    From: http://wiki.openwrt.org/toh/tp-link/tl-wr1043nd#back.to.original.firmware

  4. Hi, I want a minimal system. Without a WEB-GUI.
    I followed all the instructions, but the patch file do not run automatically.
    I have patched the files one by one, but the compilation is not successful.
    I performed these steps:
    – git clone git://git.openwrt.org/12.09/openwrt.git
    – cd openwrt
    – vim TL-WA801NDV2.patch (and copy the full text upper)
    – patch -p1 < TL-WA801NDV2.patch
    – make menuconfig (only launched, exit and save)
    – make
    But not function :(
    Do you help me? Thanks :)

      1. Yes, I get this error:
        make -r world: build failed. Please re-run make with V=s to see what’s going on

  5. ~/test/openwrt$ patch -p2 < TL-WA801NDV2.patch patching file linux/ar71xx/patches-3.3/660-MIPS-ath79-TL-WA801ND-v2-support.patch
    patch unexpectedly ends in middle of line
    patch: **** malformed patch at line 42:Now, i have a problem to apply a patch.. If I copy patch and apply i have this error:

    1. What is the folder where I have to put the patch to run?
      The command : git clone git://git.openwrt.org/12.09/openwrt.git is correctly? it’s version correct? Tanks :)

  6. Hi there, I do own a WA801ND also and the WIFI stops working sometimes. I need to reset it almost every day. There are a lot of complaints on the web but no solution yet. Does OpenWRT make the WA801ND more stable than the latest original firmware?

      1. Hi mate,

        I want to thank you for the firmware, i flashed my WA801ND yesterday evening. I also want to thank TP-LINK for offering a mechanism to replace there buggy firmware but I think that is a design feature of the TP-LINK hardware because they know their firmware is not so good ;-) I will monitor the stability of this firmware and will inform you accordingly. This will give you some ‘proof’ that your build is working on more than one device.

        I noticed one thing during the use op openWRT but also during the use of the original firmware:
        Sometimes when I want to access the Luci interface, it takes some time to load or the Chrome webbrowser throws a timeout. When this happens, I can still access the interface via my blackberry or Galaxy Nexus. Is this a Chrome issue?

        Freddy

  7. Hi, thank you for your work on this. I now have OpenWRT running on my WA801ND v2 thanks to you.

    However, like some other people I was not able to apply your patch to the 12.09 git repo (fresh clone using git clone git://git.openwrt.org/12.09/openwrt.git).

    I wanted to build from source so I reworked your patch to apply cleanly to this branch. I also fixed the profile name so target profile builds work and merged the kernel modifications into the main 610-MIPS-ath79-openwrt-machines.patch instead of a separate patch.

    If anyone is interested in my patch it is available here: http://psi.s5e.net/r4243/tl-wa801nd-v2.12_09.patch

    1. WOOOW! Tanks “ra” ! Finally everything is working correctly with your edit patch!

      I install ubuntu server 13.04 on virtual machine

      sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext

      git clone git://git.openwrt.org/12.09/openwrt.git

      cd openwrt

      wget http://psi.s5e.net/r4243/tl-wa801nd-v2.12_09.patch

      patch -p2 < tl-wa801nd-v2.12_09.patch

      make

      and in fifteen minutes everything was compiled without any errors.
      I like to have a minimal system :)

      THANKS TasksOfOhm FOR YOUR WORK!!!!

    2. I think I figured out why the patch process fails. Comparing your patch with the one above it seems that the conversion of tabs into spaces caused by copy-pasting lead to the errors. I provided a link to a downloadable version of the patch.

  8. Hi all!
    this is my config wireless file:

    root@OpenWrt:~# cat /etc/config/wireless
    config wifi-device radio0
    option type mac80211
    option channel 11
    option hwmode 11ng
    option macaddr f8:1a:67:48:54:2f
    option htmode HT40-
    option noscan 1
    list ht_capab LDPC
    list ht_capab SHORT-GI-20
    list ht_capab SHORT-GI-40
    list ht_capab TX-STBC
    list ht_capab RX-STBC1
    list ht_capab DSSS_CCK-40

    config wifi-iface
    option device radio0
    option network lan
    option mode ap
    option ssid OpenWRT
    option encryption none

    the speed of connections between tp-link and my notebook, is 150mbps and not 300mbps. Why?
    My configuration is wrong?
    If i write HT40+ the wireless power off :(

  9. After flashing this AP with OpenWRT, can I configure multi-SSID with VLAN assigned to them, and trunk it with cisco switch?

    1. I would suppose: yes. But I must admit that although I’m using multi-SSID I don’t have them assigned into different VLANs. Main reason for this is that I don’t have appropriate switch infrastructure here…

  10. I just flashed TL-WA801ND v2.1 with this firmware.
    Everything works fine, except openwrt doesn’t detect build in switch.
    There is no
    eth1: Atheros AG71xx at 0xba000000, irq 5
    eth1: Found an AR934X built-in switch
    in kernel log. And there is not “switch” tab in luci.
    Hardware looks exactly the same:

    Anyone knows how to resolve this?

    1. Wow. TP-Link released a version 2.1? The firmware provided here will not fully support this version if TP-Link is providing the switch part with it. As v2 is using the same chipset the TP-WR841NV8 does but with some features unpopulated I explicitly disabled them (makes no sense to activate eth1 if it not connected anywhere). To get this fully working you need to start from source and activate those features. Where are those models sold actually? Maybe I could get hold of one…

      1. Thanks for your reply. I’ve bought it in Poland. http://postimg.org/image/foti4buhd
        What do you meen “if TP-Link is providing the switch part with it”.
        The 2.1 hardware looks the same as in 2.0. Why your OpenWRT build can detect build-in switch in your WA801ND, and can’t see it in mine?
        I’m asking this because from what I’ve read so far, VLAN frames tagging can only be enabled in a switch. So when there is no build-in switch, I cannot make a trunk link. Or maybe there is another way of tagging outgoing frames on single eth0 interface in openwrt?

      2. The used SoC (Atheros AR9341) is providing more features than the currently provided ones. E.g. it has built in switch capabilities which TP-Link is not using for this model. There not even unpopulated part on the PCB for this. So logically connecting this interfaces in the chip makes no sense as the pins on the outside of the chip are not connected anywhere.
        VLAN tagging does not require a switch on the access point. It’s nothing more than additional information on the ethernet frames that flow through an network interface. On the other hand the switch that you connect your access point to needs to have 802.1Q capabilities in order to forward packets accordingly. The same applies to router ports.
        Hope this makes it a bit clearer.

      3. Ok. I now also have a device which is labeled as version 2.1. It seems as if the only differences are other chip manufacturers (e.g. the RAM is now from Winbond in my case). The PCB layouts seem to be identical (stating version 1.0)

      4. just wanting to clearly state this because I was hesitant after reading all the v2.1 comments:
        the patched version for v2 works without a hitch on v2.1
        (used the stable patched version from taskofohm’s dropbox folder. thx for that ;))

    2. I have a TL-WA801ND v2.1 as well, and I am using multi-SSID configuration with different vlans. I just set up the vlans manually in /etc/config/network like this:

      config interface ‘vlan5’
      option proto ‘none’
      option ifname ‘eth0.5’
      option type ‘bridge’

      config interface ‘vlan8’
      option type ‘bridge’
      option proto ‘none’
      option ifname ‘eth0.8’

      Then you can bridge the vlan interfaces with the appropriate wifi networks from in the web interface.

      1. I just realized you can even create the vlan interfaces through the web interface. Just use Add new interface and in the Custom Interface option put eth0.VLANID

      1. Ok okay, nice :). I’ll keep my fingers crossed. This could be a breakthrough for a project I am working on :)

  11. Hi everybody, great HOWTO thanks for all the effort and insight!

    I got one problem though. TP-Link released a new firmware for this Access Point (TL-WA801ND_V2_130121.zip dated 21.01.2013) which ships a new U-Boot flash partition.

    New u-Boot Version is “U-Boot 1.1.4 (Jan 21 2013 – 19:03:42)”

    It appears to me this updated U-Boot deliberately broke loading firmwares with TFTP.
    I was unable to get the eth device to send any frames on the wire while in U-Boot. Appears like the vendor added a new patch.

    U-Boot startup log has a new line in it now saying

    file: ag934x.c,line: 179==: set LAN&WAN SWAP. –debug by HouXB

    I believe they added this to break TFTP flashing for end users.

    Can somebody please be so kind as to dump their U-Boot flash partition along with the MTD relevant information?

    The new ‘broken’ U-boot has this MTD info in /proc/mtd:
    mtd0: 00020000 00010000 “u-boot”

    If someone would supply a dump of their U-boot I will take the risk of downgrading U-boot to check if this can be fixed. I am fully aware this may very well kill the device. That’s fine.

    Thanks a whole bunch!!

    1. I can try to provide such image but for the installation of OpenWRT it is not required. Once you have it compiled (our downloaded the precompiled binary) you can simply update via the web interface. The TFTP method was required to install firmware that fails pre-installation checks done on the web interface. See also the comments above.

      1. Hello,
        I know it’s not required for OpenWrt installation. But I’m tinkering with cooking customized OpenWrt images based on your patch. And in case I manage to brick the device somehow I’d feel way more comfortable knowing I can reflash the stock firmware via U-Boot.

        If you could provide a dump of your TFTP-capable Uboot partition with MD5 checksum that would be awesome and very appreciated!

    1. U-boot downgrade worked like a charm.

      So as a heads-up to everybody, the U-boot loader in stock firmware TL-WA801ND_V2_130121.zip is crippled and TFTP does not work (no ethernet link). The U-boot by TasksOfOhm is TFTP capable.

  12. is any way to make a reset or failsafe boot ? I made some mistake(s) in web interface and now I cant enter into the router. no dhcp, no access, but wifi is enabled (I see ssid)

    1. i have the same problem, but finally solved, i used “conectiffy” run the services to share mi connection wifi->ethernet and connect the router with my laptop on ethernet ports, connectify have some services (ssh, telnet, access web on ports 80 and more) only to click access web and tada! i can access mi wa801nd, i so happy (sorry for my bad english )

  13. Hi,

    thanks for the firmware. I have just flashed my router (v2.1) but I’m now unable to connect to it I have setup static IP address as per OpenWert default 192.168.1.2 counting that the router/gateway is 192.168.1.1. I have also tried few other combinations but with no luck. And obviously wifi is not working.

    Please give me a hint.
    Thanks,
    Nikola

    1. WiFi will be disabled upon first installation. I.e. you can only reach the device via the LAN interface which in fact will be reachable at 192.168.1.1.

      1. Sadly, it’s not reachable. :-(

        I’ve made a ping scan after setting up static ip, even tried few options, but with no luck. I have also sniffed with wireshark but nothing.

        If i push reset afteer the second light blibnks I get fast blinking but again its not reachable. Do you have idea whats the problem?

        Thanks

  14. Thanks so much for your effort and for providing the binary that I could use without any hassle!
    The TP-Link firmware somehow didn’t like my iPhone 5 (connection drops and often simply no data transferred), but with OpenWRT it seems to work.

  15. TL-WA801ND v2 is now supported by openwrt trunk. Will be part of next openwrt (Barrier Breaker) release.

  16. Hi, i flashed my WA801NDv2 with openwrt and now i want to flash back stock firmware but i dont know how, i try understand instructions from links above but i fail in that task. If someone could help me install stock firmware back i would be thankfull.

    1. Or if someone have stock firmware which i could flash directly from webUI, or if someone can do that step of modifying bin file and sent me file somehow. I would do it myself but i see that it requires linux and programming, but i dont know anything about it :(

    2. It’s not that complicated although it can’t be done from the WEB-UI.
      First you need to get a stock firmware from TP-Link. I suggest you don’t grab the latest one as it comes along with a new bootloader. Take an older one, e.g. TL-WA801ND_V2_120524. Unzip and copy the firmware to the device:

      scp -l root wa801nv2_en_3_13_20_up\(120524\).bin 192.168.1.1:/tmp/tplink.bin

      Then you need to logon to it via ssh and flash the firmware:

      cd /tmp
      mtd -r write tplink.bin firmware

      It will reboot and come back again running the stock firmware.

      1. Do i need linux or i can do this from windows comand prompt ? and do i need to connect AP directly to PC ? because AP is connected to another router.

      2. Well I’ve done that from a Windows machine but you need some tools: a ssh and a scp client. As long as the AP is reachable on the network all is fine.

  17. I’ve been trying to flash original firmware but it doesnt work, i’ve downloaded winscp, i connect to AP, unzip firmware to desktop, then i open console in winscp and enter first command:scp -l root wa801nv2_en_3_13_20_up\(120524\).bin and i got an error

    “Command ´scp -l root wa801nv2_en_3_13_20_up\(120524\).bin ` failed with return code 1 and error message usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
    [-l limit] [-o ssh_option] [-P port] [-S program]
    [[user@]host1:]file1 […] [[user@]host2:]file2

    i didnt try to enter another command: 192.168.0.7:/tmp/tplink.bin (192.168.0.7 because i changed AP IP address)

    I tried to transfer firmware via GUI, right click on firmware and upload to root directory but i got an error: scp: /root/wa801nv2_en_3_13_20_up(120524).bin: No space left on device

    1. If you’re not using command line tools I suggest a different approach.
      Rename the firmware to e.g. ‘tplink.bin’ before copying. Then in WinSCP change to ‘/tmp’ in the destination pane (assuming you’re using commander view). Copy the file there. From WinSCP you can start a ssh session. Login and continued to write the firmware.
      Of course you should adapt the IP address to what you set.

  18. Hi, I have a TPLINK customized with OpenWRT, configured and running normal.
    It`s possible to generate a firmware(.bin) from my TPLINK customized, with all configurations and packages installed?

  19. I am very unfamiliar with the OpenWRT project, have run DD-WRT on most of my atheros based router/switches but have a tp-link TL-WA801ND and it suffers from the broadcast flood that brings down my network when I try to configure it in the Universal Repeater mode or WDS. I am wondering just exactly how to flash this with OpenWRT (more to the point the firmware built in this thread). What is the version of the bin I should download and from what I understand use to flash the firmware of the access point from the factory firmware upgrade page?
    With DD-WRT there is usually a 30/30/30 cycle of the power/reset button, is that necessary with OpenWRT? Does one just flash the firmware with the bin above, reboot and use the TP-Link default passwords?
    Thank you ahead of time and I appreciate any assistance offered even if it is just a point in the right direction!

  20. Hi,
    I have just flashed my wa801nd v2.1 but after that i cannot connect to him.
    DON’T FLASH 2.1! :(

      1. Hello
        Maybe it’s my fault,i will tell you what i done..
        1.i go to her: http://downloads.openwrt.org/snapshots/trunk/ar71xx/
        2.download: openwrt-ar71xx-generic-tl-wa801nd-v2-squashfs-factory.bin
        3.Update my wa801nd v2.1
        3.try to enter from browser IE to 192.168.1.1 ,dosent work.
        4.do ipconfig,my computer see the device with ip address 192.168.1.1 and my computer ip address is 192.168.1.128 (dynamic ip)
        5.change to static ip address of my computer 192.168.1.101 ,doesn’t work and in ipconfig its dont show wa801nd ip address.
        -maybe i doing something wrong and its work..
        help me to fix it if it works.
        thanks

  21. Hi
    i successfully installed openwrt r39762 on my WA801ND v2.1 through Web UI downloaded from your Dropbox folder, i’m very happy with it using it as a range extender but i found a problem with wifi with my Android Sony Xperia L and other mobile devices, i connect normally and internet works well, but after a while i can’t send or receive any wifi data, but apparently is still connected, signal is good and i have to disconnect and reconnect to my wifi network to solve this issue, but after a while it happens again, my phone and devices work well in others AP, so i discard malfunction on them, hope u can do some testing by yourself and find a solution to solve this issue, thank you and great job!!
    Kind regards
    JC

      1. 15-25 min approx, i’ll keep doing some testing today by changing some parameters, (security, HT Mode, TX Power etc. ) to see what happens
        thanks for your fast reply =)
        P.S, i made a mistake, the version i have installed is r39789, sorry.
        JC

      2. Hi again

        Nothing worked only disabling WMM Mode and that’s it!, problem solved…
        JC

      3. Still strange. I’m not experiencing such probs. All APs run with WMM mode enabled, max TX power and HT mode set to 20 Mhz. No interrupts. Could it be that a neighbor AP is interfering with yours? Only mobile devices (smartphones, tablets) affected? Any device not having interrupts?

      4. yeah, it’s so strange, and only happens with mobile devices, not with laptops and my wired PC, just disabled wmm mode and 0 problems, re-enable it and the issue comes back after 15-25 mins aprox, i checked if some neighbord AP was interfering, but i guess not, i’m using a free channel.
        Grets
        JC

  22. Thanks for your work! You made my day! I have been chasing an IPv6 problem for weeks. I finally found that the stock crappy TP-Link FW was not forwarding IPv6 Router Advertisement from the lan to the air when the SSID was fed from a VLAN. It was only working when no VLAN was present, severely limiting to a single SSID. It was apparently a known limitation for many APs. It took me a while to figure out on RAs were filtered out. All other IPv6 messages were going through (DHCPv6, pings, …)

    I was about to throw this AP and order another brand as I have an EnGenius outdoor AP that was behaving properly. I found your post about and bam! After half an hour of flashing, setup and testing, all my network is working as it should.

    Thanks again! BTW, I am running on a v2.1 HW. I took the r40295.

    1. I see that OpenWRT supports WiFi Schedule but I can’t find it in this load. Am I missing something?

  23. Help me! I flashed openwrt on my TL-WA801ND v2 without problems

    After I tried coming back to stock firmware but I got an error, and now my TL-WA801ND v2 dosen’t boot anymore, it stays with all leds blinking and the ethernet port dosen’t work

    Help me please!!

    1. In case that the boot loader is working you can use similar procedures as described on this blog for installing OpenWRT. In the other case read the article about unbricking.

      1. Sorry I’m very newbie, could you tell me just how can I see if the boot loader is working? Thank you

  24. I flashed OpenWrt on my TL-WA801ND v2.1 and all is good except for “hide SSID” function
    when checked “hide SSID” my notebook, tablet, smartphone … can’t connect to wifi.
    By spectrum analyzer I see that signal disappear foe many seconds and than appear for one/two seconds and again disappear …. this is a loop

    I’m wrong something? or it’s a bug??

  25. Hi,
    j want to know if the flash procedure is reversible with the stock firmware from openwrt gui.
    thanks for your work!

  26. Hello first of all i want thank you for the great work.

    I have little Problem. I want to use the Router with WPA Enterprise but there ist no space left to install wpad.
    Is it possible u could made a minimal system and add VLAN QoS Wpad Dropbear?
    If possible also minimal luci.
    I don´t need a firewall because i have already pfsense doing this for me.

    Again thanks for your work!

  27. to connect USB-to-TTL I put the 4 pin?? or should I use only these three
    TxD
    RxD
    GND

    If you do not connect 3.3v works as I want?

  28. Here I am again…
    I try to use the 801nd like repeater with relayd (pseudobridge) because I need to have only one subnet but I have a problem.
    when i power on the wa801nd it starts and i can use it to surf the web: wifi or lan either. after some minute if i want connect another client to it dont works: the client waits for IP but nothing happens. if i reboot the tplink it works fine for some times…
    Here my configuration:
    https://forum.openwrt.org/viewtopic.php?pid=233983#p233983
    Could you try pseudobridge configuration? or do you have tried already without problem?

  29. Hi reopening anold useful tutorial…just wondering…I’ve seen you keep updating this device on Dropbox …I just bought one yesterday….stock firmware sucks…and I’m unable to use it as woreless bridge ap. Just wondering if with your latest release will I achieve the goal ;) thanks in advance for the reply…

  30. Hi and first of all thank your for the Tutorial!

    After config I tried to update the version and now the kernel update fails every time and I cant so anything.. I also tried to get into Failsave but cant get in.. :(

    Would be great if your or anyone else could help me :)

    Thanks!!

    Here the Serial Output,

    U-Boot 1.1.4 (Jan 21 2013 – 19:03:42)

    U-boot AP123

    DRAM: 32 MB
    id read 0x100000ff
    Flash: 4 MB
    Using default environment

    In: serial
    Out: serial
    Err: serial
    Net: ag934x_enet_initialize…
    wasp reset mask:c03300
    WASP —-> S27 PHY
    file: ag934x.c,line: 179==: set LAN&WAN SWAP. –debug by HouXB
    GMAC: cfg1 0x5 cfg2 0x7114
    eth0: ba:be:fa:ce:08:41
    s27 reg init
    athrs27_phy_setup ATHR_PHY_CONTROL 4: 0x1000
    athrs27_phy_setup ATHR_PHY_SPEC_STAUS 4: 0x10
    eth0 up
    WASP —-> S27 PHY
    file: ag934x.c,line: 179==: set LAN&WAN SWAP. –debug by HouXB
    GMAC: cfg1 0x7 cfg2 0x7214
    eth1: ba:be:fa:ce:08:41
    s27 reg init lan
    ATHRS27: resetting s27
    ATHRS27: s27 reset done
    athrs27_phy_setup ATHR_PHY_CONTROL 0: 0x1000
    athrs27_phy_setup ATHR_PHY_SPEC_STAUS 0: 0x10
    athrs27_phy_setup ATHR_PHY_CONTROL 1: 0x1000
    athrs27_phy_setup ATHR_PHY_SPEC_STAUS 1: 0x10
    athrs27_phy_setup ATHR_PHY_CONTROL 2: 0x1000
    athrs27_phy_setup ATHR_PHY_SPEC_STAUS 2: 0x10
    athrs27_phy_setup ATHR_PHY_CONTROL 3: 0x1000
    athrs27_phy_setup ATHR_PHY_SPEC_STAUS 3: 0x10
    eth1 up
    eth0, eth1
    Autobooting in 1 seconds
    ## Booting image at 9f020000 …
    Uncompressing Kernel Image … OK

    Starting kernel …

    [ 0.000000] Linux version 3.10.36 (openwrt@localhost.home.org) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r40876) ) #6 Thu May 29 21:27:36 CEST 2014
    [ 0.000000] bootconsole [early0] enabled
    [ 0.000000] CPU revision is: 0001974c (MIPS 74Kc)
    [ 0.000000] SoC: Atheros AR9341 rev 1
    [ 0.000000] Clocks: CPU:535.000MHz, DDR:400.000MHz, AHB:200.000MHz, Ref:25.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 ranges:
    [ 0.000000] Normal [mem 0x00000000-0x01ffffff]
    [ 0.000000] Movable zone start for each node
    [ 0.000000] Early memory node ranges
    [ 0.000000] node 0: [mem 0x00000000-0x01ffffff]
    [ 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] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128
    [ 0.000000] Kernel command line: board=TL-WA801ND-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] Writing ErrCtl register=00000000
    [ 0.000000] Readback ErrCtl register=00000000
    [ 0.000000] Memory: 28976k/32768k available (2223k kernel code, 3792k reserved, 426k data, 228k init, 0k highmem)
    [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [ 0.000000] NR_IRQS:51
    [ 0.000000] Calibrating delay loop… 266.64 BogoMIPS (lpj=1333248)
    [ 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] MIPS: machine is TP-LINK TL-WA801ND v2
    [ 0.310000] bio: create slab at 0
    [ 0.310000] Switching to clocksource MIPS
    [ 0.320000] NET: Registered protocol family 2
    [ 0.320000] TCP established hash table entries: 512 (order: 0, 4096 bytes)
    [ 0.330000] TCP bind hash table entries: 512 (order: -1, 2048 bytes)
    [ 0.340000] TCP: Hash tables configured (established 512 bind 512)
    [ 0.340000] TCP: reno registered
    [ 0.340000] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [ 0.350000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [ 0.360000] NET: Registered protocol family 1
    [ 0.380000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [ 0.380000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
    [ 0.390000] msgmni has been set to 56
    [ 0.400000] io scheduler noop registered
    [ 0.400000] io scheduler deadline registered (default)
    [ 0.410000] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
    …..r……..serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11) is a 16550A
    [ 0.440000] console [ttyS0] enabled, bootconsole disabled
    [ 0.440000] console [ttyS0] enabled, bootconsole disabled
    [ 0.450000] ath79-spi ath79-spi: master is unqueued, this is deprecated
    [ 0.460000] m25p80 spi0.0: found en25q32b, expected m25p80
    [ 0.470000] m25p80 spi0.0: en25q32b (4096 Kbytes)
    [ 0.470000] 5 tp-link partitions found on MTD device spi0.0
    [ 0.480000] Creating 5 MTD partitions on “spi0.0”:
    [ 0.480000] 0x000000000000-0x000000020000 : “u-boot”
    [ 0.490000] 0x000000020000-0x000000109820 : “kernel”
    [ 0.500000] mtd: partition “kernel” must either start or end on erase block boundary or be smaller than an erase block — forcing read-only
    [ 0.510000] 0x000000109820-0x0000003f0000 : “rootfs”
    [ 0.520000] mtd: partition “rootfs” must either start or end on erase block boundary or be smaller than an erase block — forcing read-only
    [ 0.530000] mtd: device 2 (rootfs) set to be root filesystem
    [ 0.540000] 1 squashfs-split partitions found on MTD device rootfs
    [ 0.540000] 0x000000380000-0x0000003f0000 : “rootfs_data”
    [ 0.550000] 0x0000003f0000-0x000000400000 : “art”
    [ 0.560000] 0x000000020000-0x0000003f0000 : “firmware”
    [ 0.580000] libphy: ag71xx_mdio: probed
    [ 1.140000] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.1:00 [uid=004dd042, driver=Generic PHY]
    [ 1.150000] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode:MII
    [ 1.160000] TCP: cubic registered
    [ 1.160000] NET: Registered protocol family 17
    [ 1.160000] 8021q: 802.1Q VLAN Support v1.8
    [ 1.170000] SQUASHFS error: unable to read id index table
    [ 1.180000] jffs2: Flash size not aligned to erasesize, reducing to 2944KiB
    [ 1.190000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000000: 0x6873 instead
    [ 1.200000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000004: 0xab04 instead
    [ 1.200000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000008: 0x408a instead
    [ 1.210000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000010: 0x1600 instead
    [ 1.220000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000014: 0x0400 instead
    [ 1.230000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000018: 0xc006 instead
    [ 1.240000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000001c: 0x0400 instead
    [ 1.250000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000020: 0x1c1a instead
    [ 1.260000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000028: 0x1d5e instead
    [ 1.270000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000030: 0x155e instead
    [ 1.280000] jffs2: Further such events for this erase block will not be printed
    [ 1.290000] jffs2: Empty flash at 0x00000038 ends at 0x00000040
    [ 1.330000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010000: 0x4d52 instead
    [ 1.340000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010004: 0x3e12 instead
    [ 1.350000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010008: 0x54a7 instead
    [ 1.360000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001000c: 0xa1b5 instead
    [ 1.370000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010010: 0xb8fd instead
    [ 1.380000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010014: 0xf809 instead
    [ 1.390000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010018: 0x51db instead
    [ 1.400000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001001c: 0x348a instead
    [ 1.410000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010020: 0x6544 instead
    [ 1.420000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010024: 0x5fb1 instead
    [ 1.430000] jffs2: Further such events for this erase block will not be printed
    [ 1.460000] jffs2: Old JFFS2 bitmask found at 0x0001c678
    [ 1.460000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
    [ 1.480000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020000: 0xa53a instead
    [ 1.490000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020004: 0xfe78 instead
    [ 1.500000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020008: 0xb997 instead
    [ 1.510000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002000c: 0xa7d3 instead
    [ 1.520000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020010: 0xa352 instead
    [ 1.530000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020014: 0x8163 instead
    [ 1.540000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020018: 0x4055 instead
    [ 1.550000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002001c: 0xc191 instead
    [ 1.550000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020020: 0x2e0a instead
    [ 1.560000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00020024: 0x6b99 instead
    [ 1.570000] jffs2: Further such events for this erase block will not be printed
    [ 1.610000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030000: 0x9247 instead
    [ 1.620000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030004: 0x33b4 instead
    [ 1.630000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030008: 0x3700 instead
    [ 1.640000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0003000c: 0x1e5f instead
    [ 1.650000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030010: 0xeadf instead
    [ 1.660000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030014: 0xc8ad instead
    [ 1.670000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030018: 0x04e4 instead
    [ 1.680000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0003001c: 0xd24a instead
    [ 1.690000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030020: 0x7003 instead
    [ 1.700000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00030024: 0x7fe2 instead
    [ 1.710000] jffs2: Further such events for this erase block will not be printed
    [ 1.750000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040000: 0x03f9 instead
    [ 1.760000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040004: 0x47b2 instead
    [ 1.770000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040008: 0x5943 instead
    [ 1.780000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0004000c: 0xef58 instead
    [ 1.790000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040010: 0x4c24 instead
    [ 1.800000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040014: 0xd701 instead
    [ 1.810000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040018: 0x5313 instead
    [ 1.820000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0004001c: 0x1f1c instead
    [ 1.830000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040020: 0xd74c instead
    [ 1.840000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040024: 0xcc01 instead
    [ 1.850000] jffs2: Further such events for this erase block will not be printed
    [ 1.870000] jffs2: Old JFFS2 bitmask found at 0x00049c78
    [ 1.880000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
    [ 1.900000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00050000: 0xd416 instead
    [ 1.910000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00050004: 0x17b2 instead
    [ 1.920000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00050008: 0x03d5 instead
    [ 1.930000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0005000c: 0x5e52 instead
    [ 1.940000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00050010: 0xf5e7 instead
    [ 1.950000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00050014: 0x81ae instead
    [ 1.960000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00050018: 0xf680 instead
    [ 1.970000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0005001c: 0x0a4a instead
    [ 1.980000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00050020: 0x3c67 instead
    [ 1.990000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00050024: 0xc57a instead
    [ 2.000000] jffs2: Further such events for this erase block will not be printed
    [ 2.030000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00060000: 0xf407 instead
    [ 2.040000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00060004: 0xca4a instead
    [ 2.050000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00060008: 0x7a42 instead
    [ 2.060000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0006000c: 0x911e instead
    [ 2.070000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00060010: 0x2859 instead
    [ 2.080000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00060014: 0xba8a instead
    [ 2.090000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00060018: 0x90ca instead
    [ 2.100000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0006001c: 0x70c8 instead
    [ 2.110000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00060020: 0x0bac instead
    [ 2.120000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00060024: 0x1517 instead
    [ 2.130000] jffs2: Further such events for this erase block will not be printed
    [ 2.170000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00070000: 0x7774 instead
    [ 2.180000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00070004: 0x3966 instead
    [ 2.190000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00070008: 0xd9f5 instead
    [ 2.200000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0007000c: 0x37a0 instead
    [ 2.210000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00070010: 0xafef instead
    [ 2.220000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00070014: 0xa019 instead
    [ 2.230000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00070018: 0xbcc8 instead
    [ 2.240000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0007001c: 0xdfa7 instead
    [ 2.250000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00070020: 0x54c5 instead
    [ 2.260000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00070024: 0xfe96 instead
    [ 2.270000] jffs2: Further such events for this erase block will not be printed
    [ 2.300000] jffs2: Old JFFS2 bitmask found at 0x0007dc6c
    [ 2.310000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
    [ 2.320000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00080000: 0x4ac4 instead
    [ 2.330000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00080004: 0x7ee8 instead
    [ 2.340000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00080008: 0x222c instead
    [ 2.350000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0008000c: 0xf1ea instead
    [ 2.360000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00080010: 0x2cdb instead
    [ 2.370000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00080014: 0x29b2 instead
    [ 2.380000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00080018: 0x38c0 instead
    [ 2.390000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0008001c: 0x5498 instead
    [ 2.400000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00080020: 0xc6ef instead
    [ 2.410000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00080024: 0x1910 instead
    [ 2.420000] jffs2: Further such events for this erase block will not be printed
    [ 2.450000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00090000: 0x10b7 instead
    [ 2.460000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00090004: 0x2b17 instead
    [ 2.470000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00090008: 0x5eac instead
    [ 2.480000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0009000c: 0xfebe instead
    [ 2.490000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00090010: 0xc3fd instead
    [ 2.500000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00090014: 0xcd3e instead
    [ 2.510000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00090018: 0x3426 instead
    [ 2.520000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0009001c: 0x81d5 instead
    [ 2.530000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00090020: 0x27ec instead
    [ 2.540000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00090024: 0xdfa6 instead
    [ 2.550000] jffs2: Further such events for this erase block will not be printed
    [ 2.590000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000a0000: 0xb1a1 instead
    [ 2.600000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000a0004: 0x0b67 instead
    [ 2.610000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000a0008: 0xb3e4 instead
    [ 2.620000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000a000c: 0x5cab instead
    [ 2.630000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000a0010: 0x854b instead
    [ 2.640000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000a0014: 0x5776 instead
    [ 2.650000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000a0018: 0x04fd instead
    [ 2.660000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000a001c: 0xebb1 instead
    [ 2.670000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000a0020: 0x3630 instead
    [ 2.680000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000a0024: 0x2e7f instead
    [ 2.690000] jffs2: Further such events for this erase block will not be printed
    [ 2.730000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000b0000: 0xe81e instead
    [ 2.740000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000b0004: 0x292b instead
    [ 2.750000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000b0008: 0x6d14 instead
    [ 2.760000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000b000c: 0x2401 instead
    [ 2.770000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000b0010: 0x763e instead
    [ 2.780000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000b0014: 0x9f96 instead
    [ 2.790000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000b0018: 0x3337 instead
    [ 2.790000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000b001c: 0x2290 instead
    [ 2.800000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000b0020: 0x0ab9 instead
    [ 2.810000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000b0024: 0x5ec6 instead
    [ 2.820000] jffs2: Further such events for this erase block will not be printed
    [ 2.860000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000c0000: 0xbdc9 instead
    [ 2.870000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000c0004: 0x83d4 instead
    [ 2.880000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000c0008: 0x3f42 instead
    [ 2.890000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000c000c: 0x915e instead
    [ 2.900000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000c0010: 0xbdcb instead
    [ 2.910000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000c0014: 0x7c6c instead
    [ 2.920000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000c0018: 0xbc73 instead
    [ 2.930000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000c001c: 0x1f3e instead
    [ 2.940000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000c0020: 0x967c instead
    [ 2.950000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000c0024: 0x8e4c instead
    [ 2.960000] jffs2: Further such events for this erase block will not be printed
    [ 3.000000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000d0000: 0x8e75 instead
    [ 3.010000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000d0004: 0x136c instead
    [ 3.020000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000d0008: 0x08c2 instead
    [ 3.030000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000d000c: 0x7d84 instead
    [ 3.040000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000d0010: 0x557d instead
    [ 3.050000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000d0014: 0x958a instead
    [ 3.060000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000d0018: 0x05e9 instead
    [ 3.070000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000d001c: 0xda50 instead
    [ 3.080000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000d0020: 0xd749 instead
    [ 3.090000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000d0024: 0x6f27 instead
    [ 3.100000] jffs2: Further such events for this erase block will not be printed
    [ 3.130000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000e0000: 0xd3c7 instead
    [ 3.140000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000e0004: 0xbdb5 instead
    [ 3.150000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000e0008: 0xa725 instead
    [ 3.160000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000e000c: 0xf4cf instead
    [ 3.170000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000e0010: 0xcacf instead
    [ 3.180000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000e0014: 0xb832 instead
    [ 3.190000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000e0018: 0x3502 instead
    [ 3.200000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000e001c: 0xda0f instead
    [ 3.210000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000e0020: 0x43aa instead
    [ 3.220000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000e0024: 0xc61f instead
    [ 3.230000] jffs2: Further such events for this erase block will not be printed
    [ 3.270000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000f0000: 0xc873 instead
    [ 3.280000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000f0004: 0x4d1f instead
    [ 3.290000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000f0008: 0xe7a5 instead
    [ 3.300000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000f000c: 0x5a49 instead
    [ 3.310000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000f0010: 0x49b4 instead
    [ 3.320000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000f0014: 0xa021 instead
    [ 3.330000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000f0018: 0x5bfe instead
    [ 3.340000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000f001c: 0x5e84 instead
    [ 3.350000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000f0020: 0xb064 instead
    [ 3.360000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x000f0024: 0x3af1 instead
    [ 3.370000] jffs2: Further such events for this erase block will not be printed
    [ 3.410000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00100000: 0x2265 instead
    [ 3.420000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00100004: 0xbd7b instead
    [ 3.430000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00100008: 0x9d82 instead
    [ 3.440000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0010000c: 0xcce9 instead
    [ 3.450000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00100010: 0xe4a0 instead
    [ 3.460000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00100014: 0x50d8 instead
    [ 3.470000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00100018: 0x72cd instead
    [ 3.480000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0010001c: 0x1376 instead
    [ 3.480000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00100020: 0x5168 instead
    [ 3.490000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00100024: 0x2d3a instead
    [ 3.500000] jffs2: Further such events for this erase block will not be printed
    [ 3.540000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00110000: 0x06a0 instead
    [ 3.550000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00110004: 0xc65e instead
    [ 3.560000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00110008: 0x9392 instead
    [ 3.570000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0011000c: 0xd194 instead
    [ 3.580000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00110010: 0x42ec instead
    [ 3.590000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00110014: 0x811c instead
    [ 3.600000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00110018: 0x8174 instead
    [ 3.610000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0011001c: 0x2e73 instead
    [ 3.620000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00110020: 0x7189 instead
    [ 3.630000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00110024: 0xe522 instead
    [ 3.640000] jffs2: Further such events for this erase block will not be printed
    [ 3.680000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00120000: 0xef34 instead
    [ 3.690000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00120004: 0x2321 instead
    [ 3.700000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00120008: 0xff86 instead
    [ 3.710000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0012000c: 0x0f72 instead
    [ 3.720000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00120010: 0xd493 instead
    [ 3.730000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00120014: 0x52a6 instead
    [ 3.740000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00120018: 0xb92d instead
    [ 3.750000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0012001c: 0x4c44 instead
    [ 3.760000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00120020: 0x0e71 instead
    [ 3.770000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00120024: 0xdc9e instead
    [ 3.780000] jffs2: Further such events for this erase block will not be printed
    [ 3.810000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00130000: 0xcc34 instead
    [ 3.820000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00130004: 0x02c1 instead
    [ 3.830000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00130008: 0x1757 instead
    [ 3.840000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0013000c: 0x6206 instead
    [ 3.850000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00130010: 0x6f6b instead
    [ 3.860000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00130014: 0xd15d instead
    [ 3.870000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00130018: 0x7c26 instead
    [ 3.880000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0013001c: 0x4e3c instead
    [ 3.890000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00130020: 0x50f0 instead
    [ 3.900000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00130024: 0xdd21 instead
    [ 3.910000] jffs2: Further such events for this erase block will not be printed
    [ 3.950000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00140000: 0xd470 instead
    [ 3.960000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00140004: 0xc547 instead
    [ 3.970000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00140008: 0x5b4a instead
    [ 3.980000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0014000c: 0xabf1 instead
    [ 3.990000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00140010: 0x7c28 instead
    [ 4.000000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00140014: 0xc05d instead
    [ 4.010000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00140018: 0xe64a instead
    [ 4.020000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0014001c: 0xd1f1 instead
    [ 4.030000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00140020: 0x72be instead
    [ 4.040000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00140024: 0x6ba0 instead
    [ 4.050000] jffs2: Further such events for this erase block will not be printed
    [ 4.090000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00150000: 0x05be instead
    [ 4.100000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00150004: 0xe536 instead
    [ 4.110000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00150008: 0xb341 instead
    [ 4.120000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0015000c: 0xecfb instead
    [ 4.130000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00150010: 0xe131 instead
    [ 4.140000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00150014: 0xf124 instead
    [ 4.150000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00150018: 0xc889 instead
    [ 4.160000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0015001c: 0x60dc instead
    [ 4.170000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00150020: 0xa1d8 instead
    [ 4.170000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00150024: 0x26ef instead
    [ 4.180000] jffs2: Further such events for this erase block will not be printed
    [ 4.220000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00160000: 0xa560 instead
    [ 4.230000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00160004: 0x4c7a instead
    [ 4.240000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00160008: 0x6f1a instead
    [ 4.250000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0016000c: 0x0ac2 instead
    [ 4.260000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00160010: 0x7e04 instead
    [ 4.270000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00160014: 0x4abc instead
    [ 4.280000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00160018: 0x083e instead
    [ 4.290000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0016001c: 0x865a instead
    [ 4.300000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00160020: 0xf64b instead
    [ 4.310000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00160024: 0x178d instead
    [ 4.320000] jffs2: Further such events for this erase block will not be printed
    [ 4.340000] jffs2: Old JFFS2 bitmask found at 0x001657ec
    [ 4.340000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
    [ 4.370000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00170000: 0xfe4a instead
    [ 4.380000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00170004: 0xfed7 instead
    [ 4.390000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00170008: 0x72d1 instead
    [ 4.400000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0017000c: 0x82c5 instead
    [ 4.410000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00170010: 0x1bfa instead
    [ 4.420000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00170014: 0x311b instead
    [ 4.430000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00170018: 0xbcb0 instead
    [ 4.440000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0017001c: 0x38db instead
    [ 4.450000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00170020: 0x3e61 instead
    [ 4.460000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00170024: 0x2a02 instead
    [ 4.470000] jffs2: Further such events for this erase block will not be printed
    [ 4.510000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00180000: 0xf171 instead
    [ 4.520000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00180004: 0x989c instead
    [ 4.530000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00180008: 0xe96d instead
    [ 4.540000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0018000c: 0x0afd instead
    [ 4.550000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00180010: 0xbafc instead
    [ 4.560000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00180014: 0x6c63 instead
    [ 4.570000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00180018: 0x7d8f instead
    [ 4.580000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0018001c: 0xc46b instead
    [ 4.590000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00180020: 0xf56c instead
    [ 4.600000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00180024: 0xa870 instead
    [ 4.610000] jffs2: Further such events for this erase block will not be printed
    [ 4.640000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00190000: 0x8c2e instead
    [ 4.650000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00190004: 0xbcc1 instead
    [ 4.660000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00190008: 0x7572 instead
    [ 4.670000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0019000c: 0x6860 instead
    [ 4.680000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00190010: 0x2c75 instead
    [ 4.690000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00190014: 0x656b instead
    [ 4.700000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00190018: 0xa562 instead
    [ 4.710000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0019001c: 0x7b40 instead
    [ 4.720000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00190020: 0xd4ae instead
    [ 4.730000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00190024: 0x64a1 instead
    [ 4.740000] jffs2: Further such events for this erase block will not be printed
    [ 4.760000] jffs2: Old JFFS2 bitmask found at 0x00196520
    [ 4.770000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
    [ 4.790000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001a0000: 0x8ccd instead
    [ 4.800000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001a0004: 0xebd8 instead
    [ 4.810000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001a0008: 0x6d2e instead
    [ 4.820000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001a000c: 0xaad4 instead
    [ 4.830000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001a0010: 0xedd5 instead
    [ 4.840000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001a0014: 0x0c54 instead
    [ 4.850000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001a0018: 0x9b05 instead
    [ 4.860000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001a001c: 0xe796 instead
    [ 4.870000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001a0020: 0x8fdb instead
    [ 4.880000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001a0024: 0x487b instead
    [ 4.890000] jffs2: Further such events for this erase block will not be printed
    [ 4.930000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001b0000: 0xbecf instead
    [ 4.940000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001b0004: 0xfeb7 instead
    [ 4.950000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001b0008: 0x6811 instead
    [ 4.960000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001b000c: 0x0e56 instead
    [ 4.970000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001b0010: 0x79de instead
    [ 4.980000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001b0014: 0xe086 instead
    [ 4.990000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001b0018: 0x1ecd instead
    [ 5.000000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001b001c: 0xd296 instead
    [ 5.010000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001b0020: 0xc527 instead
    [ 5.020000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001b0024: 0x01e5 instead
    [ 5.030000] jffs2: Further such events for this erase block will not be printed
    [ 5.060000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001c0000: 0x7608 instead
    [ 5.070000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001c0004: 0x74b2 instead
    [ 5.080000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001c0008: 0xc678 instead
    [ 5.090000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001c000c: 0xc0d4 instead
    [ 5.100000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001c0010: 0xe651 instead
    [ 5.110000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001c0014: 0xe08c instead
    [ 5.120000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001c0018: 0xd150 instead
    [ 5.130000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001c001c: 0x8476 instead
    [ 5.140000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001c0020: 0x7229 instead
    [ 5.150000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001c0024: 0xc4d6 instead
    [ 5.160000] jffs2: Further such events for this erase block will not be printed
    [ 5.170000] jffs2: Old JFFS2 bitmask found at 0x001c0dc4
    [ 5.180000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
    [ 5.210000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d0000: 0xd56f instead
    [ 5.220000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d0004: 0x6ee1 instead
    [ 5.230000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d0008: 0xad64 instead
    [ 5.240000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d000c: 0xce27 instead
    [ 5.250000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d0010: 0xd7c4 instead
    [ 5.260000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d0014: 0x7fee instead
    [ 5.270000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d0018: 0x234c instead
    [ 5.280000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d001c: 0x3aed instead
    [ 5.290000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d0020: 0xba36 instead
    [ 5.300000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d0024: 0xef19 instead
    [ 5.310000] jffs2: Further such events for this erase block will not be printed
    [ 5.350000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001e0000: 0x47b2 instead
    [ 5.360000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001e0004: 0xf892 instead
    [ 5.370000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001e0008: 0xb611 instead
    [ 5.380000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001e000c: 0xf817 instead
    [ 5.390000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001e0010: 0x1225 instead
    [ 5.400000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001e0014: 0x3a0a instead
    [ 5.410000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001e0018: 0x13ed instead
    [ 5.420000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001e001c: 0x0e63 instead
    [ 5.430000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001e0020: 0xa0dc instead
    [ 5.440000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001e0024: 0x6fdf instead
    [ 5.450000] jffs2: Further such events for this erase block will not be printed
    [ 5.490000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001f0000: 0x7f71 instead
    [ 5.500000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001f0004: 0x2bc8 instead
    [ 5.500000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001f0008: 0xe57d instead
    [ 5.510000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001f000c: 0x0d72 instead
    [ 5.520000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001f0010: 0xc97c instead
    [ 5.530000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001f0014: 0x5bbe instead
    [ 5.540000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001f0018: 0xee2b instead
    [ 5.550000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001f001c: 0xbc5d instead
    [ 5.560000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001f0020: 0xd0f5 instead
    [ 5.570000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001f0024: 0x6d0b instead
    [ 5.580000] jffs2: Further such events for this erase block will not be printed
    [ 5.620000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00200000: 0xe9c2 instead
    [ 5.630000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00200004: 0xcdd1 instead
    [ 5.640000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00200008: 0xafdf instead
    [ 5.650000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0020000c: 0x6cc6 instead
    [ 5.660000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00200010: 0x5458 instead
    [ 5.670000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00200014: 0x5c71 instead
    [ 5.680000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00200018: 0x8f52 instead
    [ 5.690000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0020001c: 0xb87b instead
    [ 5.700000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00200020: 0xe287 instead
    [ 5.710000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00200024: 0xe41a instead
    [ 5.720000] jffs2: Further such events for this erase block will not be printed
    [ 5.750000] jffs2: Old JFFS2 bitmask found at 0x0020c70c
    [ 5.760000] jffs2: You cannot use older JFFS2 filesystems with newer kernels
    [ 5.770000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00210000: 0x429f instead
    [ 5.780000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00210004: 0x3b84 instead
    [ 5.790000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00210008: 0x36c4 instead
    [ 5.800000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0021000c: 0xd28a instead
    [ 5.810000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00210010: 0xd46b instead
    [ 5.820000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00210014: 0x2be7 instead
    [ 5.830000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00210018: 0x9936 instead
    [ 5.840000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0021001c: 0x34db instead
    [ 5.850000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00210020: 0xf307 instead
    [ 5.860000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00210024: 0x12a1 instead
    [ 5.870000] jffs2: Further such events for this erase block will not be printed
    [ 5.910000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00220000: 0xe3d1 instead
    [ 5.920000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00220004: 0xfc79 instead
    [ 5.930000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00220008: 0x3f29 instead
    [ 5.940000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0022000c: 0x3cd1 instead
    [ 5.950000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00220010: 0xa292 instead
    [ 5.960000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00220014: 0xba3a instead
    [ 5.970000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00220018: 0xfbbc instead
    [ 5.970000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0022001c: 0xb341 instead
    [ 5.980000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00220020: 0x75da instead
    [ 5.990000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00220024: 0xf9c6 instead
    [ 6.000000] jffs2: Further such events for this erase block will not be printed
    [ 6.040000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00230000: 0xdf3c instead
    [ 6.050000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00230004: 0xd7a9 instead
    [ 6.060000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00230008: 0x10cc instead
    [ 6.070000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0023000c: 0x738f instead
    [ 6.080000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00230010: 0x4f6c instead
    [ 6.090000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00230014: 0xea49 instead
    [ 6.100000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00230018: 0xa974 instead
    [ 6.110000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0023001c: 0x8bda instead
    [ 6.120000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00230020: 0x4666 instead
    [ 6.130000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00230024: 0x6b0f instead
    [ 6.140000] jffs2: Further such events for this erase block will not be printed
    [ 6.180000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00240000: 0x6cae instead
    [ 6.190000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00240004: 0xc34c instead
    [ 6.200000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00240008: 0xbf8c instead
    [ 6.210000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0024000c: 0xb7fd instead
    [ 6.220000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00240010: 0x49d5 instead
    [ 6.230000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00240014: 0xa414 instead
    [ 6.240000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00240018: 0x901d instead
    [ 6.250000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0024001c: 0x687f instead
    [ 6.260000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00240020: 0x16fa instead
    [ 6.270000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00240024: 0xa8f9 instead
    [ 6.280000] jffs2: Further such events for this erase block will not be printed
    [ 6.310000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00250000: 0xd4bd instead
    [ 6.320000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00250004: 0x7cbf instead
    [ 6.330000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00250008: 0x6823 instead
    [ 6.340000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0025000c: 0x3b9f instead
    [ 6.350000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00250010: 0x248d instead
    [ 6.360000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00250014: 0xdad6 instead
    [ 6.370000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00250018: 0x1217 instead
    [ 6.380000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0025001c: 0xcd2b instead
    [ 6.390000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00250020: 0x2750 instead
    [ 6.400000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00250024: 0xd22f instead
    [ 6.410000] jffs2: Further such events for this erase block will not be printed
    [ 6.430000] jffs2: CLEANMARKER node found at 0x002567e0, not first node in block (0x00250000)
    [ 6.460000] jffs2: Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes
    [ 6.470000] jffs2: empty_blocks 8, bad_blocks 0, c->nr_blocks 46
    [ 6.470000] VFS: Cannot open root device “(null)” or unknown-block(31,2): error -5
    [ 6.480000] Please append a correct “root=” boot option; here are the available partitions:
    [ 6.490000] 1f00 128 mtdblock0 (driver?)
    [ 6.500000] 1f01 934 mtdblock1 (driver?)
    [ 6.500000] 1f02 2969 mtdblock2 (driver?)
    [ 6.510000] 1f03 448 mtdblock3 (driver?)
    [ 6.510000] 1f04 64 mtdblock4 (driver?)
    [ 6.520000] 1f05 3904 mtdblock5 (driver?)
    [ 6.520000] Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(31,2)

  31. Concernce: Luci crashes – WA801ND v2.1!!

    Hi,

    After installing the newest firmware from the mentionned links i cant acces the luci webinterface…it loads and then Crashs.

    I can Access the router via Telnet and tried several other firmwars but always the same.
    What could be the Problem for the v2.1??

    Thank you very much in advance for your help.

    Regards

  32. Hey!, many thanks for your work! I’ve downloaded the latest build and flashed. Works like a charm! Thanks again! Greets Jesse

  33. Hey, thank you very much for this! I’ve bricked my last TP-LINK AP this way so I hope you can answer me.

    Does this build include a web UI for configuration? I heard OpenWRT is normally configured via SSH only.

    I can just download the latest file (9 days ago, openwrt-ar71xx-generic-tl-wa801nd-v2-squashfs-factory r42068.bin) from your Dropbox for the TL-WA801ND v2 and simply flash it using the web UI like a normal firmware upgrade and that’s it, right? I know there’s always a chance it can go wrong but it should work?

    Also I’m currently experiencing short timeouts randomly (ping and websites are not responding for a few seconds), is this “normal” in the TP-LINK firmware (I heard it’s pretty buggy) or should I return it?

    Thanks again!

    1. I installed it and it works perfectly! The web GUI is very nice also. Much better than the TP-LINK firmware and DD-WRT. Thanks!

  34. I flashed my TL-WA801ND v2 using latest squashfs-factory r42420 now I cant access web interface or ping my device.

  35. Since which build was the default login page changed ??

    At this moment in time any person who gains non authorised access to the device can flash a new image on the device without any sort of prompt !!!

    Is this by design ?

    If so, how can we remove this ‘feature’ i.e. default page is the ‘administration’ page NOT the ‘Fail-safe’ page ??

    Really appreciate the work you have done with this, just dont understand why you have left such a huge security hole.

    Thanks

    1. The fail-safe feature is something you really appreciate when you’re developing custom firmware. If you feel uncomfortable with it simply remove the “luci-mod-failsafe” package and it’s gone.

      1. Thank you ever so much for your quick response.

        I fully understand the reason why it is a great feature, but as I am sure you are aware, a person with unauthorised access to the device, could easily brick the unit.

        Really appreciate you taking the time to respond.

  36. Sir every time i set the Transmit Power to 20dbm after a while or a restart a status shows transmit power:18dbm only, but when i set it to only 19dbm status shows 19dbm,works fine.
    i want to use 20dbm of course. please help.
    thank you sir!

  37. Quick question, I see on the OpenWRT site, that this hardware is not supported. Have you contacted OpenWRT to add support for the WA801ND v2 to the official version?

    1. Hello, I was looking for an official version too. While the device is not on the wiki, firmware is available from OpenWrt’s download servers. I have been running that version for a few weeks now and it’s working perfectly. I can provide a link if you can’t find it.

  38. Thank You for your work!!!,

    It has saved the planet from another piece of electronic waste, it saved me some money and not least it ended a lot of frustration with the original firmware.

    I was ready to throw my WA801ND V2 in the bin, had constant loss of internet connection, had to reboot every day it was driving our family mad with frustration.

    Installed OpenWRT (downloaded from your dropbox) and it’s been running smooth ever since.
    It’s a litle more geeky to setup OpenWRT, but it’s rock solid.

    Cheers
    Jesper, Skanderborg, Denmark

Leave a reply to gabriel Cancel reply