OpenWRT on TP-Link TL-WR743ND

    TP-Link TL-WR743ND is the PoE brother of the common TL-WR741ND wireless router which is supported flawlessly by openwrt. Since I’ve got one WR743ND, I wanted to convert it into a useful OpenWRT router but I figured out that, unfortunately, the WR743ND is not supported by OpenWRT (at least officially). Given the similarity to the supported WR741ND, I’ve decided to hack it a bit to get it work with OpenWRT.

    The first step is to get a working serial console. The procedure is similar to the one shown in the openwrt’s page dedicated to the WR741ND with the exception that (at least on the WR743ND which I got) the capacitor C496 and the resistor R610 were missing, so it was necessary to:

    1. Shortcut the C496 pins
    2. Solder a 2.7K resistor in place of R610 (I think short circuit would work as well — untested)

    Follows a photo (low resolution, sorry) indicating where the soldering should be made:

    console

    Be aware that this hack requires some attention given the tiny dimension of SMD components.

    Next step is to connect to the console via a serial cable and level converter. In my case I’ve assembled some circuitry with a MAX232 which was externally powered with 5v. Since the TX pin of the router is providing a positive level at 3.3v there is no issue with the MAX232 which is able to recognize the logic level, on contrary with the RX line we should care to not send +5v to the router which is using 3.3v logic levels (it may burn the router?). To accomplish that I’ve used a zener diode shunt to clamp the signal at 3.3v.

    The whole thing was connected via a Profilic 232-to-USB adapter.

    232-to-USB

    To test  the serial link connection, just boot the router and blind type tpl when the autoboot prompt is shown. The U-Boot loader will show a > prompt:

    U-Boot 1.1.4 (Jan 18 2010 - 14:26:54)
    
    AP91 (ar7240) U-boot
    DRAM:
    sri
    #### TAP VALUE 1 = a, 2 = b
    32 MB
    id read 0x100000ff
    flash size 4194304, sector count = 64
    Flash:  4 MB
    Using default environment
    
    In:    serial
    Out:   serial
    Err:   serial
    Net:   ag7240_enet_initialize...
    No valid address in Flash. Using fixed address
    : cfg1 0xf cfg2 0x7014
    eth0: 00:03:7f:09:0b:ad
    eth0 up
    No valid address in Flash. Using fixed address
    : cfg1 0xf cfg2 0x7214
    eth1: 00:03:7f:09:0b:ad
    ATHRS26: resetting s26
    ATHRS26: s26 reset done
    eth1 up
    eth0, eth1
    Autobooting in 1 seconds
    tlp
    ar7240>
    

    Now that the console is working it’s time to proceed with the flashing. Download openwrt-ar71xx-tl-wr741nd-v1-squashfs-factory.bin from the OpenWRT website and have it published by a tftp server in your local network. Then connect the router to such a network and issue the following commands (here the tftp server is 192.168.1.45):

    ar7240> setenv ipaddr 192.168.1.60
    ar7240> setenv serverip 192.168.1.45
    ar7240> printenv
    bootargs=console=ttyS0,115200 root=31:02 rootfstype=jffs2 init=/sbin/init mtdparts=ar7240-nor0:256k(u-boot),64k(u-boot-env),2752k(rootfs),896k(uImage),64k(NVRAM),64k(ART)
    bootcmd=bootm 0x9f020000
    bootdelay=1
    baudrate=115200
    ethaddr=0x00:0xaa:0xbb:0xcc:0xdd:0xee
    stdin=serial
    stdout=serial
    stderr=serial
    ethact=eth0
    serverip=192.168.1.45
    ipaddr=192.168.1.60
    
    Environment size: 357/65532 bytes
    ar7240> tftpboot 0x80000000 openwrt-ar71xx-tl-wr741nd-v1-squashfs-factory.bin
    dup 1 speed 1000
    Using eth1 device
    TFTP from server 192.168.1.45; our IP address is 192.168.1.60
    Filename 'openwrt-ar71xx-tl-wr741nd-v1-squashfs-factory.bin'.
    Load address: 0x80000000
    Loading: #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     ######################################################
    done
    Bytes transferred = 3932160 (3c0000 hex)
    ar7240> erase 0x9f020000 +0x3c0000
    
    First 0x2 last 0x3d sector size 0x10000
     61
    Erased 60 sectors
    ar7240> cp.b 0x80000000 0x9f020000 0x3c0000
    Copy to Flash... write addr: 9f020000
    done
    ar7240> bootm 0x9f020000
    ## Booting image at 9f020000 ...
     Uncompressing Kernel Image ... OK
    
    Starting kernel ...
    
    Linux version 2.6.32.10 (openwrt@wrt1.marcant.net) (gcc version 4.3.3 (GCC) ) #20 Tue Apr 6 15:01:26 CEST 2010
    bootconsole [early0] enabled
    CPU revision is: 00019374 (MIPS 24Kc)
    Atheros AR7240 rev 2, CPU:350.000 MHz, AHB:175.000 MHz, DDR:350.000 MHz
    Determined physical RAM map:
     memory: 02000000 @ 00000000 (usable)
    Initrd not found or empty - disabling initrd
    Zone PFN ranges:
     Normal   0x00000000 -> 0x00002000
    Movable zone start PFN for each node
    early_node_map[1] active PFN ranges
     0: 0x00000000 -> 0x00002000
    Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 8128
    Kernel command line: rootfstype=squashfs,yaffs,jffs2 noinitrd console=ttyS0,115200 board=TL-WR741ND
    PID hash table entries: 128 (order: -3, 512 bytes)
    Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
    

    Enjoy your new OpenWRT router!

    NOTE: in case you would like to use the WT743ND as an access point and not as a router, OpenWRT documentation suggest to simply ignore the WAN interface and connect the AP via a LAN port. Unfortunately If you’re willing to use PoE the WAN port is the only port capable to receive power! In my case I successfully connected the PoE pins from the WAN to the first LAN port, having the router powered-on via PoE on the first LAN port (thus acting as an access point).

    Andrea Leofreddi

    Read more posts by this author.

    OpenWRT on TP-Link TL-WR743ND