Strony

Pokazywanie postów oznaczonych etykietą TL-WR1043ND. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą TL-WR1043ND. Pokaż wszystkie posty

poniedziałek, 8 kwietnia 2013

Reanimacja TP-LINK TL-WR1043ND dla Otzi'ego

Obserwując statystyki mojego bloga zauważyłem, że coraz więcej zainteresowania budzi temat reanimacji routerów i sporo osób czyta posty: Reanimacja TP-LINK TL-WR1043ND oraz  TL-WR1043ND OpenWRT DD-WRT ORIGINAL FIRMWARE

Udało mi się zreanimować routery już kilku osobom dzięki czemu jestem bogatszy o nowe doświadczenia i postaram się je opisać w tym poście.

W ostatnią niedzielę na tapecie pojawił się router Otzi'ego, który napisał do mnie na blogu.

TP-LINK TL-WR1043ND w wersji 1.10 posiada nie zaślepione otwory gotowe do wpięcia kabla więc lutownica była zbędna.

To fota "starego" routera v 1.0, w którym miejsca do podłączenia DKU-5 lub CA-42 są fabrycznie zalutowane

A tutaj już podłączony router w wersji 1.10

Po krótce:
Po podłączeniu kabla DKU-5 startujemy router i w momencie kiedy na konsoli pojawi się "Resetting" wpisujemy kombinację klawiszy "tpl" i pojawia się prompt.

Czyścimy pamięć:
erase 0xbf020000 +7c0000
Ściągamy z serwera tftp firmware:
tftpboot 0x81000000 firmware.bin
Zapisujemy ściągnięty firmware:
cp.b 0x81000000 0xbf020000 0x7c0000
Odpalamy boota:
bootm 0xbf020000
Linki:
Oryginalny firmware producenta:
http://www.tp-link.com/en/support/download/?model=TL-WR1043ND&version=V1



czwartek, 4 kwietnia 2013

OpenWRT WAN as LAN on Asus WL500g Premium v1

Konfiguracja routera Asus WL500g Premium v1 pracującego jako serwer w sieci lokalnej z interfejsami sieciowymi WAN i LAN w trybie bridge oraz wyłączonym WIFI

/etc/config/network
#### VLAN configuration
config switch eth0
        option enable   1

config switch_vlan eth0_0
        option device   "eth0"
        option vlan     0
        option ports    "1 2 3 4 5"

config switch_vlan eth0_1
        option device   "eth0"
        option vlan     1
        option ports    "0 5"

#### Loopback configuration
config interface loopback
        option ifname   "lo"
        option proto    static
        option ipaddr   127.0.0.1
        option netmask  255.0.0.0


#### LAN configuration
config interface lan
        option type     bridge
        option ifname   "eth0.0 eth0.1"
        option proto    static
        option ipaddr   192.168.1.100
        option netmask  255.255.255.0
        option dns      192.168.1.1

config route
        option interface lan
        option target   0.0.0.0
        option netmask  0.0.0.0
        option gateway  192.168.1.1
 /etc/config/dhcp
 config dhcp lan
        option interface        lan
        option start    100
        option limit    150
        option leasetime        12h
        option ignore   1
 /etc/config/wireless
 config wifi-device  radio0
        option type     mac80211
        option channel  6
        option macaddr  00:00:00:00:00:00
        option hwmode   11g

        # REMOVE THIS LINE TO ENABLE WIFI:
        option disabled 1
 ifconfig
 br-lan    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15066 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18683 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1053743 (1.0 MiB)  TX bytes:20562640 (19.6 MiB)

eth0      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15065 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23887 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1385077 (1.3 MiB)  TX bytes:21272740 (20.2 MiB)
          Interrupt:4

eth0.0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5200 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:521511 (509.2 KiB)

eth0.1    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15066 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18683 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1114007 (1.0 MiB)  TX bytes:20637372 (19.6 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:21 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2088 (2.0 KiB)  TX bytes:2088 (2.0 KiB)
 

wtorek, 16 października 2012

SSH Keys - ssh: Exited: String too long


W celu wygenerowania pary kluczy do autoryzacji w usłudze ssh zainstalowałem OpenSSH keygen:
openssh-keygen - 5.8p2-2 - OpenSSH keygen.

Po wygenerowaniu pary kluczy przekopiowałem klucz publiczny na zdalny serwer
Niestety próba połączenia zwróciła błąd:
ssh -i /root/.ssh/id_rsa  root@remotehost
ssh: Exited: String too long

Rozwiązanie:
Klucze trzeba wygenerowac za pomocą dostępnego w OpenWRT dropbearkey

localhost
dropbearkey -t rsa -f /root/.ssh/id_rsa
dropbearkey -y -f /root/.ssh/id_rsa | grep ssh-rsa > /root/.ssh/id_rsa.pub
scp /root/.ssh/id_rsa.pub root@remotehost:/root

Remotehost
cat /root/id_rsa.pub >> /etc/dropbear/authorized_keys
chmod 600 /etc/dropbear/authorized_keys

localhost
ssh -i /root/.ssh/id_rsa root@remotehost

BusyBox v1.15.3 (2011-11-11 18:03:51 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

2011-11-12 - r28934
  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 Backfire (10.03.x, latest version. Always.) -------
  * 1/3 shot Kahlua    In a shot glass, layer Kahlua
  * 1/3 shot Bailey's  on the bottom, then Bailey's,
  * 1/3 shot Vodka     then Vodka.
 ----------( by obsy, http://eko.one.pl/ )----------
Booted from internal flash
root@remotehost:~$


Do czego można to wykorzystać?
Np. Backup
tar czf - /overlay | ssh -i /root/.ssh/id_rsa root@backupserver "cat > /mnt/backupdir/backup-host1-$(date +%Y-%m-%d-%s).tgz"

sobota, 19 listopada 2011

OpenWRT (Backfire) + lighttpd + PHP5 + AUTH + SSL

Instalacja i konfiguracja lighttpd i php z autoryzacją typu digest (htdigest)

UPDATE: 2013-01-15

W skrócie:
Konfiguracja lighttpd wraz z php5, autoryzacją na poziomie serwera www oraz przekierowaniem wybranych katalogów z http na https, a po co ? A po to, żeby bezpiecznie się autoryzować.
Sprzęt:
TP-LINK TL-WR1043ND, alternatywny firmware ze strony http://eko.one.pl, OpenWrt Backfire 10.03.1-RC6 r28934 2011-11-12, skonfigurowany extroot 2GB

1. Instalacja i konfiguracja lighthttp
2. Instalacja i konfiguracja php
3. Włączenie https w lighttpd
4. Autoryzacja w lighttpd
5. Redirect z http na https
6. Firewall
7. Literatura



1. Instalacja i konfiguracja lighthttp
Instalujemy serwer
opkg update
opkg install lighttpd
Modyfikujemy plik konfiguracyjny
#/etc/lighttpd/lighttpd.conf
server.document-root = "/www"
Startujemy serwer i sprawdzamy czy działa
/etc/init.d/lighttpd start
Następnie stopujemy serwer WWW
/etc/init.d/lighttpd stop

2. Instalacja i konfiguracja php
Instalujemy php i moduł do lighttpd
opkg update
opkg install lighttpd-mod-cgi
opkg install php5-cgi
Aby interpreter php pracował poprawnie w pliku konfiguracyjnym /etc/php.ini zmienna doc_root powinna być skonfigurowana identycznie jak zmienna server.document-root w konfiguracji lighttpd
#/etc/php.ini
doc_root = "/www"
Konfiguracja lighttpd
#/etc/lighttpd/lighttpd.conf
server.modules = (
...
        "mod_cgi",
...
)
cgi.assign = ( ".php"  => "/usr/bin/php-cgi" )
index-file.names = ( "index.html", "default.html", "index.htm", "default.htm", "index.php")
Tworzymy plik php i sprawdzamy czy działa
echo "<#? PHP phpinfo(); ?#>" >> /www/index.php
# - usuń to - blogger parsuje kod

Aby interpretować skrypty sh dodajemy:
cgi.assign = ( ".sh"  => "/bin/sh" )

3. Włączenie https w lighttpd
Instalujemy openssl i generujemy certyfikat typu self-sign
opkg update
opkg install openssl-util
cd /etc/lighttpd/
openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
chown root:root server.pem
chmod 400 server.pem

Włączenie SSL można wykonać ją na 2 sposoby:

a. Za pomocą poniższej konfiguracji lighthttp przełączy się w tryb SSL-only, oznacza to, że będzie nasłuchiwał tylko i wyłącznie na porcie 443.
#/etc/lighttpd/lighttpd.conf
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/server.pem"

W dokumentacji jest napisane, ze prawdopodobnie trzeba będzie również zmienić server.port na 443, nic podobnego, w OpenWRT (lighttpd/1.4.28 (ssl)) serwer automatycznie zabindował się do portu 443

b. Aby włączyć SSL obok normalnego HTTP czyli równolegle serwować tą samą stronę po http i https,  należy dodać socket do konfiga.
$SERVER["socket"] == ":443" {
     ssl.engine                  = "enable"
     ssl.pemfile                 = "/etc/lighttpd/server.pem"
 }
4. Autoryzacja w lighttpd
Instalacja modułu AUTH
opkg update
opkg install lighttpd-mod-auth

Włączamy moduł auth
#/etc/lighttpd/lighttpd.conf
server.modules = (
...
        "mod_auth",
...
)

## debugging
# 0 for off, 1 for 'auth-ok' messages, 2 for verbose debugging
auth.debug = 2

# definiujemy metodę autoryzacji

auth.backend = "htdigest"

# wskazujemy plik z loginami i haslami
auth.backend.htdigest.userfile = "/etc/lighttpd/lighttpd-htdigest.user"

#definiujemy gdzie obowiązuje autoryzacja: czyli katalog download, użytkownicy muszą zostać autoryzowani metodą digest, lecz zostaną wpuszczeni tylko ci, którzy należą do strefy "download area"
auth.require = ("/download/" =>
  (
     "method"  => "digest",
     "realm"   => "download area",
     "require" => "valid-user"
  )
)

Tworzymy prosty skrypt dodający użytkowników do pliku o nazwie htdigest.sh
#!/bin/sh
user=$1
realm=$2
pass=$3
hash=`echo -n "$user:$realm:$pass" | md5sum | cut -b -32`
echo "$user:$realm:$hash"

#nadajemy prawa do wykonywania
chmod 755 htdigest.sh

#przykład użycia:
#./htdigest.sh[space]'login'[space]'realm'[space]'password'
./htdigest.sh 'piotr' 'download area' 'password' >>/etc/lighttpd/lighttpd-htdigest.user
5. Redirect z http na https
Instalacja modu REDIRECT
opkg update
opkg install lighttpd-mod-redirect
Włączamy moduł redirect i ustawiamy, aby podczas próby wejścia do katalogu download nastąpiło przekierowanie na ten sam adres lecz po protokole https
#/etc/lighttpd/lighttpd.conf
server.modules = (
...
       "mod_redirect",
...
)

#poniższy kod sprawi, że zostaniemy przekierowani z  adresu http://serwerip/download/ na https://serwerip/download/

$SERVER["socket"] == ":80" {
        $HTTP["url"] =~ "^/download/*" {
                $HTTP["host"] =~ "(.*)" {
                        url.redirect = ( "^/(.*)" => "https://%1/$1" )
                }
        }
}

Jeśli chcemy przekierować wszystko z portu 80 na 443
$SERVER["socket"] == ":80" {
    $HTTP["host"] =~ "(.*)" {
        url.redirect = ( "^/(.*)" => "https://%1/$1" )
    }
}

6. Firewall
Na koniec wypuszczenie serwera w eter, odblokowanie portu 443 lub/i 80 na firewallu na interfejsie WAN
#/etc/config/firewall

config rule
        option src              wan
        option proto            tcp
        option dest_port        443
        option target           ACCEPT

config rule
        option src              wan
        option proto            tcp
        option dest_port        80
        option target           ACCEPT


/etc/init.d/firewall restart

7. Literatura
http://eko.one.pl/?p=openwrt-php
http://eko.one.pl/?p=openwrt-http
http://redmine.lighttpd.net/wiki/lighttpd/Docs:SSL
http://redmine.lighttpd.net/wiki/lighttpd/HowToSimpleSSL
http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModAuth
http://redmine.lighttpd.net/wiki/lighttpd/HowToAuthenticationFromMultipleFiles
https://wiki.archlinux.org/index.php/Lighttpd_for_SSL_and_non-SSL
http://redmine.lighttpd.net/wiki/lighttpd/TutorialLighttpdAndPHP
http://redmine.lighttpd.net/wiki/lighttpd/HowToRedirectHttpToHttps
http://redmine.lighttpd.net/wiki/lighttpd/HowToRedirectWww

czwartek, 17 listopada 2011

OpenWRT (Backfire) + lighttpd + php5 + DokuWiki

Po podstawowej konfiguracji lighttpd + php5 pobrałem stabilną wersję DokuWiki (www.dokuwiki.org)
cd /tmp
wget http://www.splitbrain.org/_media/projects/dokuwiki/dokuwiki-2011-05-25a.tgz
gzip -d dokuwiki-2011-05-25a.tgz
tar -xvf dokuwiki-2011-05-25a.tar
mv dokuwiki-2011-05-25a /home/lighttpd/ssl/html/
Przy próbie instalacji aplikacji
http://server/dokuwiki/install.php
otrzymałem błąd:
The installer found some problems, indicated below. You can not continue until you have fixed them.

    * PHP function session_start is not available. Maybe your hosting provider disabled it for some reason?
    * PHP function utf8_encode is not available. Maybe your hosting provider disabled it for some reason?
    * PHP function utf8_decode is not available. Maybe your hosting provider disabled it for some reason?

Rozwiązaniem było doinstalowanie modułów php:
opkg update
opkg install php5-mod-session
opkg install php5-mod-xml

Nie ma potrzeby ingerencji w plik konfiguracyjny /etc/php.ini
ponieważ po instalacji w lokalizacji /etc/php5/ tworzą się odpowiednie pliki konfiguracyjne .ini
root@server:~$ cat /etc/php5/session.ini
extension=session.so

piątek, 27 maja 2011

Reanimacja TP-LINK TL-WR1043ND

UPDATE: 2013-05-23

Wczoraj popełniłem sromotny błąd...
Postanowiłem zrobić szybki upgrade firmware.
Upgrade przez mtd po wifi ale w screenie.
I niestety nie udało się.
Możliwe że błąd tkwił w tym, że obraz znajdował się na zewnętrznym hdd a nie w /tmp

Objawy po włączeniu zasilania:
  1. zapala się kontrolka PWR
  2. następnie zapalają się wszystkie kontrolki na 1s
  3. po chwili test kontrolek shwitch'a 1s i cisza
  4. ostatecznie świeci się tylko PWR
  5. brak jest jakiejkolwiek komunikacji sieciowej

Próbowałem na wszelkie sposoby uruchomić failsafe, lecz bez skutku.

Dziś zakupię kabelek NOKIA CA-42

Kilka źródeł z których zamierzam skorzystać podczas próby ratowania routera:
  • http://eko.one.pl/?p=openwrt-wr1043nd
  • http://dar3kg.blogspot.com/2010/06/naprawa-tp-link-wr1043nd.html
  • http://www.dd-wrt.com/phpBB2/viewtopic.php?p=450379&sid=13bb89f8e96dd7ebc155415a26f8cab0
  • http://wiki.openwrt.org/toh/tp-link/tl-wr1043nd#opening.the.case
  • http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1261313468/0
Update


Ostatecznie skończyło się na zakupie kabla DKU-5 (15 zł), który jest starszą wersją CA-42.



Sterowniki znajdowały się da dołączonej płycie, kompatybilne z Win XP x86.

Na początku testy przeprowadziłem na maszynie wirtualnej (VMware) lecz komunikacja działała tylko w jedną stronę (brak reakcji na wprowadzanie danych w terminalu).

Przy okazji reanimacji routera dla Otziego okazało się, że wszystko działa na maszynie wirtualnej

Do reanimacji TL-WR1043ND użyłem laptopa Dell D400 z OS Win XP x86.

Przygotowanie przewodu:

Czarny:    GND (8)
Biały:     Rx  (6)
Niebieski: Tx  (7)



Nie wlutowywałem pinów w płytę główną, po prostu za pomocą lutownicy i wykałaczki usunąłem cynę i zrobiłem otwory.


Ciekawym rozwiązaniem jest: Easy Access Mini-Stereo Port

Całość podpiąłem za pomocą ścisku.


Instalujemy sterowniki do kabla i sprawdzamy nr portu COM w menadżerze urządzeń

Konfigurujemy Putty
Podpinamy zasilanie i łączymy się do routera.


U-Boot 1.1.4 (Feb  1 2010 - 10:11:24)

AP83 (ar9100) U-boot 0.0.11
DRAM:
sri
32 MB
id read 0x100000ff
flash size 8MB, sector count = 128
Flash:  8 MB
Using default environment

In:    serial
Out:   serial
Err:   serial
Net:   ag7100_enet_initialize...
No valid address in Flash. Using fixed address
: cfg1 0xf cfg2 0x7114
eth0: 00:03:7f:09:0b:ad
eth0 up
eth0
Autobooting in 1 seconds## Booting image at bf020000 ...
   Uncompressing Kernel Image ... OK

Starting kernel ...

Linux version 2.6.32.27 (cezary@eko.one.pl) (gcc version 4.3.3 (GCC) ) #18 Fri May 20 18:42:50 CEST 2011
bootconsole [early0] enabled
CPU revision is: 00019374 (MIPS 24Kc)
Atheros AR9132 rev 2, CPU:400.000 MHz, AHB:200.000 MHz, DDR:400.000 MHz
Determined physical RAM map:
 memory: 02000000 @ 00000000 (usable)
Initrd not found or empc2fc
[<801370e0>] 0x801370e0
[<801371b0>] 0x801371b0
[<800e4ed0>] 0x800e4ed0
[<800e4fcc>] 0x800e4fcc
[<800fd654>] 0x800fd654
[<800fd76c>] 0x800fd76c
[<800ef280>] 0x800ef280
[<802eccc4>] 0x802eccc4
[<801b80b4>] 0x801b80b4
[<802ed0c4>] 0x802ed0c4
[<800b5150>] 0x800b5150
[<802ec388>] 0x802ec388
[<8006d754>] 0x8006d754
[<802ec26c>] 0x802ec26c
[<8006d744>] 0x8006d744

---[ end trace 8b6952b74c4407b5 ]---
VFS: Cannot open root device "" or unknown-block(31,2)
Please append a correct "root=" boot option; here are the available partitions:
1f00             128 mtdblock0 (driver?)
1f01            1280 mtdblock1 (driver?)
1f02            6720 mtdblock2 (driver?)
1f03            3904 mtdblock3 (driver?)
1f04              64 mtdblock4 (driver?)
1f05            8000 mtdblock5 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)

XXX
Dalej postępowałem analogicznie według opisu na blogu:
http://dar3kg.blogspot.com/2010/06/naprawa-tp-link-wr1043nd.html




    wtorek, 21 grudnia 2010

    TL-WR1043ND OpenWRT DD-WRT ORIGINAL FIRMWARE

    Update: 2012-12-05

    Ten artykuł przeczytało już ponad 3000 osób !!! :)

    Wgrywanie firmware do routera TL-WR1043ND

    Spis treści:
    1. ORIGINAL FIRMWARE -> OpenWRT
    2. ORIGINAL FIRMWARE -> DD-WRT
    3. DD-WRT -> ORIGINAL FIRMWARE
    4. OpenWRT -> ORIGINAL FIRMWARE
    5. FIRMWARE UPGRADE

    1. ORIGINAL FIRMWARE -> OpenWRT

    Aby wgrać inny firmware niż oryginalny należy użyć obrazów, które zawierają "factory" w nazwie.

    Osobiście używam obrazów wyprodukowanych przez Cezarego

    FACTORY

    http://ecco.selfip.net/backfire/openwrt-ar71xx-tl-wr1043nd-v1-squashfs-factory.bin

    Do upgrad'u już wgranego alternatywnego firmware używamy "sysupgrade"

    UPGRADE
    http://ecco.selfip.net/backfire/openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin

    WAŻNE:
    Zdarzyło mi się po ściągnięciu obrazu zmienić jego nazwę dodając datę z "-": taki obraz nie zadziała.

    Firmware openwrt-ar71xx-tl-wr1043nd-v1-squashfs-factory.bin wgrywamy przez interfejs web w tradycyjny sposób.

    Po minucie: telnet 192.168.1.1 ... passwd ... reboot i mamy OpenWRT na pokładzie (Uwaga: Bez Interfejsu Web !!!)

    2. ORIGINAL FIRMWARE -> DD-WRT

    Sprawa wygląda podobnie jw.

    Użyłem najnowszych obrazów z Sambą.

    FACTORY
    http://dd-wrt.com/dd-wrtv2/downloads/others/eko/BrainSlayer-V24-preSP2/12-18-10-r15940/tplink_tl-wr1043nd/factory-to-ddwrt.bin

    UPGRADE
    http://dd-wrt.com/dd-wrtv2/downloads/others/eko/BrainSlayer-V24-preSP2/12-18-10-r15940/tplink_tl-wr1043nd/tl-wr1043nd-webflash.bin

    Firmware factory wgrywamy przez weba na oryginalny firmware TP-Linka

    3. DD-WRT -> ORIGINAL FIRMWARE

    Skorzystałem ze strony Samiux's Blog:
    http://samiux.blogspot.com/2010/03/howto-dd-wrt-on-tp-link-tl-wr1043nd.html

    Który udostępnił oryginalny firmware tplink.bin:
    http://depositfiles.com/en/files/orv90dbqt

    Z uwagi na to, że pod DD-WRT /proc/mtd wygląda następująco:
    root@tplink:~# cat /proc/mtd
    dev: size erasesize name
    mtd0: 00020000 00010000 "RedBoot"
    mtd1: 007c0000 00010000 "linux"
    mtd2: 00630000 00010000 "rootfs"
    mtd3: 00050000 00010000 "ddwrt"
    mtd4: 00010000 00010000 "nvram"
    mtd5: 00010000 00010000 "FIS directory"
    mtd6: 00010000 00010000 "board_config"
    mtd7: 00800000 00010000 "fullflash"
    Użyjemy następującej komendy (tplink.bin wrzucony na pendrive i zamontowany do /mnt):
    mtd -e linux -r write /mnt/tplink.bin linux
    root@tplink:~# mtd -e linux -r write /mnt/tplink.bin linux
    Unlocking linux ...
    Erasing linux ...
    Writing from /mnt/tplink.bin to linux ...
    Unlocking firmware ...
    Rebooting ...

    Po paru minutach logujemy się do interfejsu web http://192.168.1.1
    login:admin
    password:admin
    Można użyć aktualnego obrazu ze strony producenta:
    http://www.tp-link.com/support/download.asp?a=1&m=TL-WR1043ND
    wr1043nv1_en_3_12_2_up(100820).bin

    Ale nie testowałem tego obrazu więc robisz to na własną odpowiedzialność.

    4. OpenWRT -> ORIGINAL FIRMWARE

    Podobnie jak w przypadku DD-WRT użyty został ten sam firmware:
    http://samiux.blogspot.com/2010/03/howto-dd-wrt-on-tp-link-tl-wr1043nd.html

    lecz mtd ma inną budowę:
    root@tplink:~# cat /proc/mtd
    dev: size erasesize name
    mtd0: 00020000 00010000 "u-boot"
    mtd1: 00140000 00010000 "kernel"
    mtd2: 00690000 00010000 "rootfs"
    mtd3: 003d0000 00010000 "rootfs_data"
    mtd4: 00010000 00010000 "art"
    mtd5: 007d0000 00010000 "firmware"
    Pendrive podmontowany do katalogu /mnt

    mtd -e firmware -r write /mnt/tplink.bin firmware

    root@tplink:~# mtd -e firmware -r write /mnt/tplink.bin firmware
    Unlocking firmware ...
    Erasing firmware ...
    Writing from /mnt/tplink.bin to firmware ...
    Rebooting ...
     Update: 2011-06-08
    Lub:
    http://ecco.selfip.net/tl-wr1043nd-luci/wr1043nd_3_9_13.orig.bin.zip
    po rozpakowaniu wgrać przez www

    5. FIRMWARE UPGRADE

    Ściągamy aktualny firmware ze strony producenta:
    http://www.tp-link.com/support/download.asp?a=1&m=TL-WR1043ND
    wr1043nv1_en_3_12_2_up(100820).bin

    Wgrywamy go przez weba.

    ------------------------------
    Update: 2011-03-09
    Jeśli nie ma "weba" jak jak w obrazach od Cezaego (eko.one.pl)
    używany sysupgrade
    sysupgrade -n /tmp/openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin
    ------------------------------

    To tyczy się wszystkich firmware (OpenWRT, DD-WRT i innych) warunek:
    Można upgrade'ować tylko taki firmware jaki mamy wgrany na routerze.

    Wszystko.

    Źródła:
    http://samiux.blogspot.com/2010/03/howto-dd-wrt-on-tp-link-tl-wr1043nd.html
    http://eko.one.pl