MR3020 HACK

37
[Hack] TL-MR3020 + hack = OpenWRT USB / WiFi / Ethernet Posted by skywodd September 22, 2012 15 comments Filed under madeinfr , openwrt Hello everyone! To continue my project "Blyss box DIY" I started using a small router usb / wifi / ethernet. That it will serve as a "link" between an arduino board (and my code BlyssSpoofer / BlyssSniffer) and a web interface (or other, to see). Other members of the forum arduino.cc have also embarked on the adventure, here's a topic of many on the subject: http://arduino.cc/forum/index.php?topic=115889 The biggest problem was finding a wifi router that can handle the situation. That must comply with the following criteria: - Be small, ideally the size of a map arduino UNO - Have a USB port (or default serial port) to connect the arduino board - Be compatible with OpenWRT (Linux distribution for routers) - Have a network interface: wifi, ethernet or both After much research and advice of the forum members arduino two candidates out of the lot: - TL-WR703N the (available only in China) - TL-MR3020 the (available in France but more expensive) Hardware level is almost the same (same Atheros chipset, same RAM, same Flash) with some differences ready (Ethernet shielded vs. unshielded number of leds, ...). For my part I chose to use the TL-MR3020 with OpenWRT (trunk version): http://wiki.openwrt.org/toh/tp-link/tl-mr3020 Why TL-MR3020 and not the Chinese clone the TL-WR703N? - Over GPIO LED = more = more opportunities for hacking - 2.54mm pitch connector series (no = standard not to break the head with son "flying") Against by good price level is not the same thing ... 17 € for the TL-WR703N on ebay against almost double for the TL- MR3020 on amazon, LDLC, ... You choose In this first article I will detail only the hardware part. I will discuss the software part in a separate article. - The box: If you read my articles for some time now you must have noticed that I love unpacking everything I receive a picture This router is no exception, so here is what the box looks like:

description

MR3020 TPLINK

Transcript of MR3020 HACK

Page 1: MR3020 HACK

[Hack] TL-MR3020 + hack = OpenWRT USB / WiFi /

Ethernet

Posted by skywodd ⋅ September 22, 2012 ⋅ 15 comments

Filed under madeinfr , openwrt

Hello everyone!

To continue my project "Blyss box DIY" I started using a small router usb / wifi / ethernet.

That it will serve as a "link" between an arduino board (and my code BlyssSpoofer / BlyssSniffer) and a web interface

(or other, to see).

Other members of the forum arduino.cc have also embarked on the adventure, here's a topic of many on the subject:

http://arduino.cc/forum/index.php?topic=115889

The biggest problem was finding a wifi router that can handle the situation.

That must comply with the following criteria:

- Be small, ideally the size of a map arduino UNO

- Have a USB port (or default serial port) to connect the arduino board

- Be compatible with OpenWRT (Linux distribution for routers)

- Have a network interface: wifi, ethernet or both

After much research and advice of the forum members arduino two candidates out of the lot:

- TL-WR703N the (available only in China)

- TL-MR3020 the (available in France but more expensive)

Hardware level is almost the same (same Atheros chipset, same RAM, same Flash) with some differences ready

(Ethernet shielded vs. unshielded number of leds, ...).

For my part I chose to use the TL-MR3020 with OpenWRT (trunk version):

http://wiki.openwrt.org/toh/tp-link/tl-mr3020

Why TL-MR3020 and not the Chinese clone the TL-WR703N?

- Over GPIO LED = more = more opportunities for hacking

- 2.54mm pitch connector series (no = standard not to break the head with son "flying")

Against by good price level is not the same thing ... 17 € for the TL-WR703N on ebay against almost double for the TL-

MR3020 on amazon, LDLC, ...

You choose

In this first article I will detail only the hardware part. I will discuss the software part in a separate article.

-

The box:

If you read my articles for some time now you must have noticed that I love unpacking everything I receive a picture

This router is no exception, so here is what the box looks like:

Page 2: MR3020 HACK

The router inside the box with its protective film:

Page 3: MR3020 HACK

And all accessories many and varied:

Cable mini usb power, adapter 5v sector, an ethernet cable in short, everything you need for a user "classic".

Page 4: MR3020 HACK

-

Router, small tower owner:

The router as a whole:

Besides the color (gray instead of blue) and the duo led + button there is no aesthetic difference with the TL-WR703N.

At the front:

Page 5: MR3020 HACK

Include:

- Ethernet port

- Port usb FOOD ONLY

- The switch to select the operating mode of the router (with original firmware)

On the right side:

We find the usb port to (usually) to connect a 3G dongle.

In my case it will be a hub with a USB key (for rootfs) and a map that will be connected to the Arduino USB port.

Page 6: MR3020 HACK

On top:

5 LEDs:

- Power

- 3G

- Wifi

- Ethernet

- WPS

And WPS buttons.

-> First difference with the TL-WR703N, it has only 2 LED (one of which is not installed by default) and a reset button.

Ps: this is an ethernet cable ... I do not really trust his strength ^ ^ "

-

Hulling operation, or how to open a box can not be opened:

Open TL-MR3020 box is just impossible without a knife with a very fine blade (and solid) and lots and lots of patience

...

Page 7: MR3020 HACK

To open the case you have to jump two clips of colorful covers, while sliding a knife around the cap to break the glue

dots.

The first clip is just above the port mini usb, the second face-to ~ 1.5cm to the left of TP-LINK logo.

This is what it looks once the box open:

Page 8: MR3020 HACK
Page 9: MR3020 HACK

You will notice the small squares around the box are ALL stuck Ultrasound top cover.

Ps: Be careful not to injure yourself by sliding the knife blade into the slot of the case, an accident can happen so quickly

...

-

The electronic circuit:

Once the box is open (finally) possible to see what is hiding in the beast:

Page 10: MR3020 HACK

The revision number of the circuit is on the ethernet connector:

Page 11: MR3020 HACK

As you can see I have a version 1 revision 7.

-> 2nd difference with the TL-WR703N, TL-WR703N the ethernet port is screened, the TL-MR3020 it is not ...

-

The details of the hardware:

I have not really followed any particular order, it is a little loose

+ Atheros chipset antenna:

Page 12: MR3020 HACK

The Atheros chipset is the heart of the router, it is composed of CPU and some ethernet / wifi.

It is an Atheros chipset AR9330 revision 1 (= AR9331).

The cpu is within the range of AR72xx and more precisely a turning AR7240 400MHz.

The party supports a maximum of wifi 802.11 b / g / n 150Mbps.

Part ethernet when her 10Mpbs modes and supports 100Mbps.

Mini usb port and power port usb "classic":

Page 13: MR3020 HACK

Mini usb port is only there to provide the +5 v circuit.

It can not be used or other usb device.

According to the wiki the TL-MR3020 OpenWRT can operate with relatively low voltages of about 2.6/2.7v.

This leaves the possibility of using 1S 3.7V lipo battery for power (I'll have to test to see).

The second USB port, more "classic" can still be used to it by usb host like any normal USB port.

Just have the proper drivers in his image OpenWRT and all will be well

RAM and LEDs:

RAM is 32MB in size which leaves a lot of room for the user.

Page 14: MR3020 HACK

When the LEDs are the numbers 5 As I mentioned a little earlier.

Detailed wiring leds is available on the OpenWRT wiki:

# http://wiki.openwrt.org/toh/tp-link/tl-mr3020 leds

SPI flash memory:

SPI is the flash memory of 4 MB in size, it is cut along the plane memory if below: mtd0 (128Ko) : u-boot

mtd1 (1Mo) : kernel

mtd2 (2.75Mo) : rootfs

mtd3 (64Ko) : configuration

mtd4 (64Ko) : art (= Atheros Radio Test)

Especially not touch the memory area called "ART" if the wifi chipset will not work any more.

If you ever brickez bootloader router it is possible to salvage by unsoldering the flash by connecting a programmer.

Page 15: MR3020 HACK

The OpenWRT wiki provided even a factory image of the entire flash:

http://wiki.openwrt.org/toh/tp-link/tl-mr3020 # restoring.original.firmware

(2nd link in "link dump")

For safety I'll do a full dump area and mtd0 mtd4 ...

But I will discuss in the article on the software

Buttons:

There are two buttons, wired three GPIO.

The first button is labeled "button" is normally used to activate WPS wifi authentication.

The second button is labeled "slide" and has three positions, it is normally used to select the operating mode of the router.

Detailed wiring buttons are available on the wiki OpenWrt:

http://wiki.openwrt.org/toh/tp-link/tl-mr3020 # buttons

The serial port:

Page 16: MR3020 HACK

This is the most interesting because it is this one that allows access to the bootloader (u-boot) and fundamentally change

the linux kernel and rootfs router.

I do not use the flash method through the web interface, I find it too wobbly.

Method by flash bootloader requires extreme vigilance to avoid bricker router but when we used it is much more reliable.

The serial port is wired as follows: | (vcc) (gnd) (rx) [tx] |

() Represents a round pad and [] the square pad (pin 1 mark).

The serial port is configured for 115200 baud, 8 data bits, 1 start bit, 1 stop bit, no parity and no flow control.

Problem: The serial port is wired a little strange, so that with some serial adapters -> USB that does not work properly.

I tested with my sparkfun ftdi basic of, actually it was not working base.

But do not panic, just put a resistor between VCC and 10K Tx to solve the problem

(Thanks to those who took the time to add a note about it in the OpenWRT wiki, otherwise I would still be looking for

the problem ^ ^)

History of doing things I did own a serial adapter -> FTDI basic with a piece of pcb that was lying:

Page 17: MR3020 HACK

Note: I have not connected the VCC pin connector FTDI basic circuit to VCC, so I can use a ftdi basic 5v or 3v3 without

problems

Once the serial connector soldered it looks like this:

Page 18: MR3020 HACK

Then simply plug the adapter into the serial connector:

Page 19: MR3020 HACK

Basic and ftdi on the adapter:

Page 20: MR3020 HACK

Then you plug the usb power hop and all lights!

Page 21: MR3020 HACK

And the serial monitor gives a nice serial console:

001 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">U-Boot 1.1.4 (Mar 20 2012 - 11:37:54)</span> U-Boot

1.1.4 (Mar 20 2012 - 11:37:54)</span>

002

003 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">AP121 (ar9330) U-boot</span> AP121 (ar9330) U-

boot</span>

004

005 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">DRAM: 32 MB</span> DRAM: 32 MB</span>

006 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">led turning on for 1s...</span> LED turning on for

1s ...</span>

007 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">id read 0x100000ff</span> id read 0x100000ff</span>

008 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">flash size 4194304, sector count = 64</span> flash

size 4194304, sector count = 64</span>

009 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Flash: 4 MB</span> Flash: 4 MB</span>

010 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

Page 22: MR3020 HACK

style="direction: ltr; text-align: left">Using default environment</span> Using default

environment</span>

011

012 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">In: serial</span> In: serial</span>

013 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Out: serial</span> Out: serial</span>

014 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Err: serial</span> Err: serial</span>

015 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Net: ag7240_enet_initialize...</span> Net

ag7240_enet_initialize ...</span>

016

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">No valid address in Flash.</span> No valid address

in Flash.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-

src-text" style="direction: ltr; text-align: left">Using fixed address</span> Using fixed

address</span>

017

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">No valid address in Flash.</span> No valid address

in Flash.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-

src-text" style="direction: ltr; text-align: left">Using fixed address</span> Using fixed

address</span>

018 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">: cfg1 0x5 cfg2 0x7114</span> : CFG1 0x5 0x7114

CFG2</span>

019 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">eth0: 00:03:7f:09:0b:ad</span> eth0: 00:03:7 f: 09:0

b: ad</span>

020 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ag7240_phy_setup</span> ag7240_phy_setup</span>

021 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">eth0 up</span> eth0 up</span>

022 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">: cfg1 0xf cfg2 0x7214</span> : 0xf CFG1 CFG2

0x7214</span>

023 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">eth1: 00:03:7f:09:0b:ad</span> eth1: 00:03:7 f: 09:0

b: ad</span>

024 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">athrs26_reg_init_lan</span>

athrs26_reg_init_lan</span>

025 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHRS26: resetting s26</span> ATHRS26: resetting

s26</span>

026 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHRS26: s26 reset done</span> ATHRS26: s26 reset

done</span>

027 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ag7240_phy_setup</span> ag7240_phy_setup</span>

028 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">eth1 up</span> eth1 up</span>

029 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">eth0, eth1</span> eth0, eth1</span>

030 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Autobooting in 1 seconds</span> Autobooting in 1

second</span>

031 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">## Booting image at 9f020000 ...</span> # # Booting

image at 9f020000 ...</span>

032

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Uncompressing Kernel Image ...</span> Uncompressing

Kernel Image ...</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span

class="google-src-text" style="direction: ltr; text-align: left">OK</span> OK</span>

033

034 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Starting kernel ...</span> Starting kernel

...</span>

035

Page 23: MR3020 HACK

036 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Booting AR9330(Hornet)...</span> Booting AR9330

(Hornet) ...</span>

037

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Linux version 2.6.31--LSDK-9.2.0.312

([email protected]) (gcc version 4.3.3 (GCC) ) #199 Tue Mar 20 11:38:41 CST

2012</span> Linux version 2.6.31 - LSDK-9.2.0.312 ([email protected]) (gcc version

4.3.3 (GCC)) # 199 Tue Mar 20 11:38:41 CT 2012</span>

038 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">flash_size passed from bootloader = 4</span>

flash_size Passed from bootloader = 4</span>

039 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">CPU revision is: 00019374 (MIPS 24Kc)</span> CPU

revision is: 00019374 (MIPS 24Kc)</span>

040 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Determined physical RAM map:</span> Determined

physical RAM map:</span>

041 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">memory: 02000000 @ 00000000 (usable)</span> memory:

02000000 @ 00000000 (usable)</span>

042 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">User-defined physical RAM map:</span> User-defined

physical RAM map:</span>

043 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">memory: 02000000 @ 00000000 (usable)</span> memory:

02000000 @ 00000000 (usable)</span>

044 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Zone PFN ranges:</span> Zone PFN ranges:</span>

045 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Normal 0x00000000 -> 0x00002000</span> Normal

0x00000000 -> 0x00002000</span>

046 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Movable zone start PFN for each node</span> Movable

start PFN for each Stock area node</span>

047 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">early_node_map[1] active PFN ranges</span>

early_node_map [1] active PFN ranges</span>

048 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">0: 0x00000000 -> 0x00002000</span> 0: 0x00000000 ->

0x00002000</span>

049

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Built 1 zonelists in Zone order, mobility grouping

on.</span> Built 1 zonelists in Zone order, mobility grouping on.</span> <span

onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Total pages: 8128</span> Total pages: 8128</span>

050

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Kernel command line: console=ttyS0,115200 root=31:02

rootfstype=squashfs init=/sbin/init mtdparts=ar7240-nor0:128k(u-

boot),1024k(kernel),2816(rootfs),64k(config),64k(ART) mem=32M</span> Kernel command line:

console = ttyS0, 115200 root = 31:02 rootfstype = squashfs init = / sbin / init mtdparts =

ar7240-nor0: 128k (u-boot), 1024k (kernel), 2816 (rootfs), 64k (config) , 64k (ART) mem =

32M</span>

051 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">PID hash table entries: 128 (order: 7, 512

bytes)</span> PID hash table entries: 128 (order: 7, 512 bytes)</span>

052 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Dentry cache hash table entries: 4096 (order: 2,

16384 bytes)</span> Dentry hash table entries cached: 4096 (order: 2, 16384 bytes)</span>

053 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Inode-cache hash table entries: 2048 (order: 1, 8192

bytes)</span> Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)</span>

054

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Primary instruction cache 64kB, VIPT, 4-way,

linesize 32 bytes.</span> Primary Cache 64kB instruction, VIPT, 4-way, linesize 32

bytes.</span>

055

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Primary data cache 32kB, 4-way, VIPT, cache aliases,

linesize 32 bytes</span> Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32

bytes</span>

056 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Writing ErrCtl register=00000000</span> Writing

Page 24: MR3020 HACK

ErrCtl register = 00000000</span>

057 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Readback ErrCtl register=00000000</span> ErrCtl

readback register = 00000000</span>

058

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Memory: 29876k/32768k available (1884k kernel code,

2892k reserved, 521k data, 116k init, 0k highmem)</span> Memory: 29876k/32768k available

(1884k kernel code, 2892k reserved, 521k data, 116k init, 0k highmem)</span>

059 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Hierarchical RCU implementation.</span> Hierarchical

RCU implementation.</span>

060 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">NR_IRQS:128</span> NR_IRQS: 128</span>

061 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">plat_time_init: plat time init done</span>

plat_time_init: plat time init done</span>

062

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Calibrating delay loop...</span> Calibrating delay

loop ...</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-

src-text" style="direction: ltr; text-align: left">266.24 BogoMIPS (lpj=532480)</span> 266.24

BogoMIPS (lpj = 532480)</span>

063 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Mount-cache hash table entries: 512</span> Mount-

cache hash table entries: 512</span>

064 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">NET: Registered protocol family 16</span> NET:

Registered protocol family 16</span>

065 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">===== ar7240_platform_init: 0</span>

Ar7240_platform_init =====: 0</span>

066

067

068

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Whoops!</span> Whoops!</span> <span

onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">This kernel is for product mr3020 v1.0!</span> This

product is for kernel v1.0 mr3020!</span>

069

070 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">bio: create slab <bio-0> at 0</span> bio: create

slab at 0 <bio-0></span>

071 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">SCSI subsystem initialized</span> SCSI subsystem

initialized</span>

072 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">usbcore: registered new interface driver

usbfs</span> usbcore: registered new interface driver usbfs</span>

073 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">usbcore: registered new interface driver hub</span>

usbcore: registered new interface driver hub</span>

074 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">usbcore: registered new device driver usb</span>

usbcore: registered new device driver usb</span>

075 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">NET: Registered protocol family 2</span> NET:

Registered protocol family 2</span>

076 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">IP route cache hash table entries: 1024 (order: 0,

4096 bytes)</span> IP route caching hash table entries: 1024 (order: 0, 4096 bytes)</span>

077 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">TCP established hash table entries: 1024 (order: 1,

8192 bytes)</span> TCP, established hash table entries: 1024 (order: 1, 8192 bytes)</span>

078 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">TCP bind hash table entries: 1024 (order: 0, 4096

bytes)</span> TCP bind hash table entries: 1024 (order: 0, 4096 bytes)</span>

079 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">TCP: Hash tables configured (established 1024 bind

1024)</span> TCP: Hash tables configured (established 1024 bind 1024)</span>

080 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

Page 25: MR3020 HACK

style="direction: ltr; text-align: left">TCP reno registered</span> TCP reno

registered</span>

081 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">NET: Registered protocol family 1</span> NET:

Registered protocol family 1</span>

082 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">AR7240 GPIOC major 0</span> AR7240 GPIOC Staff

0</span>

083 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">squashfs: version 4.0 (2009/01/31) Phillip

Lougher</span> squashfs: version 4.0 (2009/01/31) Phillip Lougher</span>

084 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">NTFS driver 2.1.29 [Flags: R/O].</span> NTFS driver

2.1.29 [Flags: R / O].</span>

085 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">msgmni has been set to 58</span> msgmni has-been set

to 58</span>

086 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">alg: No test for lzma (lzma-generic)</span> alg: No

test for lzma (lzma-generic)</span>

087 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">alg: No test for stdrng (krng)</span> alg: No test

for stdrng (krng)</span>

088 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">io scheduler noop registered</span> io scheduler

noop registered</span>

089 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">io scheduler anticipatory registered</span> io

scheduler anticipatory registered</span>

090 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">io scheduler deadline registered</span> io scheduler

deadline registered</span>

091 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">io scheduler cfq registered (default)</span> io

scheduler cfq registered (default)</span>

092 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Serial: 8250/16550 driver, 1 ports, IRQ sharing

disabled</span> Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled</span>

093 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ttyS0: detected caps 00000000 should be

00000100</span> ttyS0: detected caps 00000000 00000100 shoulds be</span>

094 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">serial8250.0: ttyS0 at MMIO 0xb8020000 (irq = 19) is

a 16550A</span> serial8250.0: ttyS0 at MMIO 0xb8020000 (irq = 19) is a 16550A</span>

095 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">console [ttyS0] enabled</span> console [ttyS0]

enabled</span>

096 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">PPP generic driver version 2.4.2</span> PPP generic

driver version 2.4.2</span>

097 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">NET: Registered protocol family 24</span> NET:

Registered protocol family 24</span>

098 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">cmdlinepart partition parsing not available</span>

cmdlinepart partition parsing not available</span>

099 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">set partition boot</span> set boot partition</span>

100 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">set partition kernel</span> kernel set

partition</span>

101 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">set partition rootfs</span> set partition

rootfs</span>

102 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">set partition config</span> set partition

config</span>

103 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">set partition art</span> art set partition</span>

104 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

Page 26: MR3020 HACK

style="direction: ltr; text-align: left">set partition ÿ</span> set partition ÿ</span>

105 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Searching for RedBoot partition table</span>

Searching for RedBoot partition table</span>

106 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">5 RedBoot partitions found on MTD device ar7240-

nor0</span> 5 RedBoot partitions found on MTD device ar7240-nor0</span>

107 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Creating 5 MTD partitions on "ar7240-nor0":</span>

Creating 5 MTD partitions on "ar7240-nor0"</span>

108 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">0x000000000000-0x000000020000 : "boot"</span>

0x000000000000-0x000000020000: "boot"</span>

109 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">0x000000020000-0x000000120000 : "kernel"</span>

0x000000020000-0x000000120000: "kernel"</span>

110 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">0x000000120000-0x0000003e0000 : "rootfs"</span>

0x0000003e0000-0x000000120000: "rootfs"</span>

111 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">0x0000003e0000-0x0000003f0000 : "config"</span>

0x0000003e0000-0x0000003f0000 "config"</span>

112 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">0x0000003f0000-0x000000400000 : "art"</span>

0x0000003f0000-0x000000400000: "art"</span>

113 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">->Oops: flash id 0x10215 .</span> -> Oops: flash id

0x10215.</span>

114 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI)

Driver</span> ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver</span>

115 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Port Status 1c000004</span> Port Status

1c000004</span>

116 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ar7240-ehci ar7240-ehci.0: ATH EHCI</span> ar7240

ar7240-ehci-ehci.0: ATH EHCI</span>

117

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ar7240-ehci ar7240-ehci.0: new USB bus registered,

assigned bus number 1</span> ar7240 ar7240-ehci-ehci.0: new USB bus registered, assigned bus

number 1</span>

118 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ehci_reset Intialize USB CONTROLLER in host mode:

3</span> ehci_reset intialize USB CONTROLLER in host mode: 3</span>

119 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ehci_reset Port Status 1c000000</span> Port Status

1c000000 ehci_reset</span>

120 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ar7240-ehci ar7240-ehci.0: irq 3, io mem

0x1b000000</span> ar7240 ar7240-ehci-ehci.0: irq 3, io mem 0x1b000000</span>

121 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ehci_reset Intialize USB CONTROLLER in host mode:

3</span> ehci_reset intialize USB CONTROLLER in host mode: 3</span>

122 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ehci_reset Port Status 1c000000</span> Port Status

1c000000 ehci_reset</span>

123 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ar7240-ehci ar7240-ehci.0: USB 2.0 started, EHCI

1.00</span> ar7240 ar7240-ehci-ehci.0: USB 2.0 started, EHCI 1.00</span>

124 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">usb usb1: configuration #1 chosen from 1

choice</span> usb usb1: configuration # 1 chosen from 1 choice</span>

125 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">hub 1-0:1.0: USB hub found</span> hub 1-0:1.0: USB

hub found</span>

126 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">hub 1-0:1.0: 1 port detected</span> hub 1-0:1.0: 1

port detected</span>

127 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">TCP cubic registered</span> TCP cubic

Page 27: MR3020 HACK

registered</span>

128 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">NET: Registered protocol family 17</span> NET:

Registered protocol family 17</span>

129

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">802.1Q VLAN Support v1.8 Ben Greear

<[email protected]></span> 802.1Q VLAN Support v1.8 Ben Greear

<[email protected]></span>

130

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">All bugs added by David S.</span> All bugs added by

David S.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-

src-text" style="direction: ltr; text-align: left">Miller <[email protected]></span> Miller

<[email protected]></span>

131 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ar7240wdt_init: Registering WDT success</span>

ar7240wdt_init: Registering WDT success</span>

132 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">VFS: Mounted root (squashfs filesystem) readonly on

device 31:2.</span> VFS: Mounted root (squashfs filesystem) readonly on device 31:2.</span>

133 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Freeing unused kernel memory: 116k freed</span>

Freeing unused kernel memory: 116k freed</span>

134

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">init started: BusyBox v1.01 (2012.01.16-03:21+0000)

multi-call binary</span> init started: BusyBox v1.01 (2012.01.16-03:21 +0000) multi-call

binary</span>

135 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">This Board use 2.6.31</span> This board uses

2.6.31</span>

136 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">xt_time: kernel timezone is -0000</span> xt_time:

kernel timezone is -0000</span>

137 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">nf_conntrack version 0.5.0 (512 buckets, 5120

max)</span> nf_conntrack version 0.5.0 (512 buckets, 5120 max)</span>

138 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ip_tables: (C) 2000-2006 Netfilter Core Team</span>

ip_tables: (C) 2000-2006 Netfilter Core Team</span>

139

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">insmod: cannot open module

`/lib/modules/2.6.31/kernel/iptable_raw.ko': No such file or directory</span> insmod: can not

open module `/ lib/modules/2.6.31/kernel/iptable_raw.ko ': No such file or directory</span>

140

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">insmod: cannot open module

`/lib/modules/2.6.31/kernel/flashid.ko': No such file or directory</span> insmod: can not

open module `/ lib/modules/2.6.31/kernel/flashid.ko ': No such file or directory</span>

141 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">PPPoL2TP kernel driver, V1.0</span> PPPoL2TP kernel

driver, V1.0</span>

142 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">PPTP driver version 0.8.3</span> PPTP driver version

0.8.3</span>

143

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">insmod: cannot open module

`/lib/modules/2.6.31/kernel/harmony.ko': No such file or directory</span> insmod: can not

open module `/ lib/modules/2.6.31/kernel/harmony.ko ': No such file or directory</span>

144

145 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">(none) mips #199 Tue Mar 20 11:38:41 CST 2012

(none)</span> (None) mips # 199 Tue Mar 20 11:38:41 CT 2012 (none)</span>

146 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">(none) login: Now flash open!</span> (None) login:

Now flash open!</span>

147 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Now flash open!</span> Now flash open!</span>

148 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: Length per segment 1536</span> ATHR_GMAC:

Length per segment 1536</span>

149 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: fifo cfg 3 01f00140</span> ATHR_GMAC:

Page 28: MR3020 HACK

fifo cfg 3 01f00140</span>

150 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: Mac address for unit 1:bf1f0006</span>

ATHR_GMAC: Mac address for unit 1: bf1f0006</span>

151 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: 25:51:9d:db:e0:5c</span> ATHR_GMAC:

25:51:9 d: db: e0: 5c</span>

152 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: Max segments per packet : 1</span>

ATHR_GMAC: Max segments per packet: 1</span>

153 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: Max tx descriptor count : 40</span>

ATHR_GMAC: Max tx descriptor count: 40</span>

154 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: Max rx descriptor count : 96</span>

ATHR_GMAC: Max rx descriptor count: 96</span>

155 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: Mac capability flags : 4D83</span>

ATHR_GMAC: Mac capability flags: 4D83</span>

156 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: Mac address for unit 0:bf1f0000</span>

ATHR_GMAC: Mac address for unit 0: bf1f0000</span>

157 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: 03:30:dc:d3:6e:49</span> ATHR_GMAC:

03:30: dc: d3: 6e: 49</span>

158 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: Max segments per packet : 1</span>

ATHR_GMAC: Max segments per packet: 1</span>

159 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: Max tx descriptor count : 40</span>

ATHR_GMAC: Max tx descriptor count: 40</span>

160 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: Max rx descriptor count : 252</span>

ATHR_GMAC: Max rx descriptor count: 252</span>

161 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHR_GMAC: Mac capability flags : 4403</span>

ATHR_GMAC: Mac capability flags: 4403</span>

162 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">athr_gmac_ring_alloc Allocated 640 at

0x81e7d800</span> athr_gmac_ring_alloc Allocated 640 at 0x81e7d800</span>

163 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">athr_gmac_ring_alloc Allocated 4032 at

0x81d61000</span> Allocated 4032 at 0x81d61000 athr_gmac_ring_alloc</span>

164 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Setting Drop CRC Errors, Pause Frames and Length

Error frames</span> Setting Drop CRC Errors, Pause Frames and Length Error Frames</span>

165 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Setting PHY...mac 0</span> Setting PHY ... mac

0</span>

166 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">athr_gmac_ring_alloc Allocated 640 at

0x81e7d400</span> athr_gmac_ring_alloc Allocated 640 at 0x81e7d400</span>

167 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">athr_gmac_ring_alloc Allocated 1536 at

0x81f2b000</span> athr_gmac_ring_alloc Allocated 1536 at 0x81f2b000</span>

168 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">athr_gmac_mii_setup: MDC check failed</span>

athr_gmac_mii_setup: MDC check failed</span>

169 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Setting Drop CRC Errors, Pause Frames and Length

Error frames</span> Setting Drop CRC Errors, Pause Frames and Length Error Frames</span>

170 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHRS26: resetting s26</span> ATHRS26: resetting

s26</span>

171 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ATHRS26: s26 reset done</span> ATHRS26: s26 reset

done</span>

172 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Setting PHY...mac 1</span> Setting PHY ... mac

1</span>

Page 29: MR3020 HACK

173 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">device eth0 entered promiscuous mode</span> Entered

promiscuous mode device eth0</span>

174 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Now flash open!</span> Now flash open!</span>

175 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">nf_conntrack_rtsp v0.6.21 loading</span>

nf_conntrack_rtsp v0.6.21 loading</span>

176 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">nf_nat_rtsp v0.6.21 loading</span> nf_nat_rtsp

v0.6.21 loading</span>

177 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">asf: module license 'Proprietary' taints

kernel.</span> asf: module license 'Proprietary' TINTING kernel.</span>

178 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Disabling lock debugging due to kernel taint</span>

Disabling lock debugging due to kernel taint</span>

179

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ath_hal: 0.9.17.1 (AR9380, DEBUG, REGOPS_FUNC,

WRITE_EEPROM, 11D)</span> ath_hal: 0.9.17.1 (AR9380, DEBUG, REGOPS_FUNC, WRITE_EEPROM,

11D)</span>

180

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ath_rate_atheros: Copyright (c) 2001-2005 Atheros

Communications, Inc, All Rights Reserved</span> ath_rate_atheros: Copyright (c) 2001-2005

Atheros Communications, Inc. All Rights Reserved</span>

181

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ath_dev: Copyright (c) 2001-2007 Atheros

Communications, Inc, All Rights Reserved</span> ath_dev: Copyright (c) 2001-2007 Atheros

Communications, Inc. All Rights Reserved</span>

182 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ath_ahb: 9.2.0_U5.508 (Atheros/multi-bss)</span>

ath_ahb: 9.2.0_U5.508 (Atheros / multi-bss)</span>

183 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Boostrap clock 25MHz</span> Bootstrap clock

25MHz</span>

184 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ar9300RadioAttach: Need analog access

recipe!!</span> ar9300RadioAttach: Need access analog recipe!</span>

185 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Restoring Cal data from Flash</span> Restoring data

from Cal Flash</span>

186 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ath_get_caps[4735] rx chainmask mismatch actual 1

sc_chainmak 0</span> ath_get_caps [4735] rx chainmask mismatch actual 1 0 sc_chainmak</span>

187 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ath_get_caps[4710] tx chainmask mismatch actual 1

sc_chainmak 0</span> ath_get_caps [4710] tx chainmask mismatch actual 1 0 sc_chainmak</span>

188 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">wifi0: Atheros 9380: mem=0xb8100000, irq=2</span>

wifi0: Atheros 9380: mem = 0xb8100000, irq = 2</span>

189

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">wlan_vap_create : enter.</span> wlan_vap_create:

enter.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-

src-text" style="direction: ltr; text-align: left">devhandle=0x80d202c0,

opmode=IEEE80211_M_HOSTAP, flags=0x1</span> devhandle = 0x80d202c0, opmode IEEE80211_M_HOSTAP

=, flags = 0x1</span>

190

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">wlan_vap_create : exit.</span> wlan_vap_create:

exit.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-

text" style="direction: ltr; text-align: left">devhandle=0x80d202c0,

opmode=IEEE80211_M_HOSTAP, flags=0x1.</span> devhandle = 0x80d202c0, opmode

IEEE80211_M_HOSTAP =, flags = 0x1.</span>

191 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">VAP device ath0 created</span> VAP device ath0

created</span>

192

193 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">DES SSID SET=TP-LINK_POCKET_3020_D6E207</span> DES

SSID SET = TP-LINK_POCKET_3020_D6E207</span>

194 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

Page 30: MR3020 HACK

style="direction: ltr; text-align: left">ieee80211_scan_unregister_event_handler: Failed to

unregister evhandler=c0aeb860 arg=80c1aac0</span> ieee80211_scan_unregister_event_handler:

Failed to unregister evhandler c0aeb860 = arg = 80c1aac0</span>

195

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">wlan_vap_delete : enter.</span> wlan_vap_delete:

enter.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-

src-text" style="direction: ltr; text-align: left">vaphandle=0x81eaa000</span> vaphandle =

0x81eaa000</span>

196

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">wlan_vap_delete : exit.</span> wlan_vap_delete:

exit.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-

text" style="direction: ltr; text-align: left">vaphandle=0x81eaa000</span> vaphandle =

0x81eaa000</span>

197

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">wlan_vap_create : enter.</span> wlan_vap_create:

enter.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-

src-text" style="direction: ltr; text-align: left">devhandle=0x80d202c0,

opmode=IEEE80211_M_HOSTAP, flags=0x1</span> devhandle = 0x80d202c0, opmode IEEE80211_M_HOSTAP

=, flags = 0x1</span>

198

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">wlan_vap_create : exit.</span> wlan_vap_create:

exit.</span> <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-

text" style="direction: ltr; text-align: left">devhandle=0x80d202c0,

opmode=IEEE80211_M_HOSTAP, flags=0x1.</span> devhandle = 0x80d202c0, opmode

IEEE80211_M_HOSTAP =, flags = 0x1.</span>

199 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">VAP device ath0 created</span> VAP device ath0

created</span>

200

201 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">DES SSID SET=TP-LINK_POCKET_3020_D6E207</span> DES

SSID SET = TP-LINK_POCKET_3020_D6E207</span>

202

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ieee80211_ioctl_siwmode: imr.ifm_active=393856, new

mode=3, valid=1</span> ieee80211_ioctl_siwmode: imr.ifm_active = 393856, new mode = 3, valid

= 1</span>

203 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">WARNING: Fragmentation with HT mode NOT

ALLOWED!!</span> WARNING: Fragmentation with HT fashion NOT ALLOWED!</span>

204 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">device ath0 entered promiscuous mode</span> Entered

promiscuous mode device ath0</span>

205 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">br0: port 2(ath0) entering forwarding state</span>

br0: port 2 (ath0) Entering forwarding state</span>

206

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">ieee80211_ioctl_siwmode: imr.ifm_active=918144, new

mode=3, valid=1</span> ieee80211_ioctl_siwmode: imr.ifm_active = 918144, new mode = 3, valid

= 1</span>

207 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">br0: port 2(ath0) entering disabled state</span>

br0: port 2 (ath0) Entering disabled state</span>

208

209 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">DES SSID SET=TP-LINK_POCKET_3020_D6E207</span> DES

SSID SET = TP-LINK_POCKET_3020_D6E207</span>

210 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">br0: port 2(ath0) entering forwarding state</span>

br0: port 2 (ath0) Entering forwarding state</span>

211

212 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">TL-MR3020 mips #199 Tue Mar 20 11:38:41 CST 2012

(none)</span> TL-MR3020 # 199 mips Tue Mar 20 11:38:41 CT 2012 (none)</span>

213 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">TL-MR3020 login: root</span> TL-MR3020 login:

root</span>

214 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Password: 5up</span> Password: 5up</span>

215 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Jan 1 00:01:13 login[150]: root login on

Page 31: MR3020 HACK

`ttyS0'</span> January 1 0:01:13 login [150]: root login on `ttyS0 '</span>

216

217

218

219 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">BusyBox v1.01 (2012.01.16-03:21+0000) Built-in shell

(msh)</span> BusyBox v1.01 (2012.01.16-03:21 +0000) Built-in shell (msh)</span>

220 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Enter 'help' for a list of built-in commands.</span>

Enter 'help' for a list of built-in commands.</span>

221

222 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left"># help</span> # Help</span>

223

224 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">Built-in commands:</span> Built-in commands:</span>

225 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">-------------------</span> -------------------

</span>

226

<span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">.</span> .</span> <span onmouseover="_tipon(this)"

onmouseout="_tipoff()"><span class="google-src-text" style="direction: ltr; text-align:

left">: break cd continue eval exec exit export help login newgrp</span> : Break cd continue

eval exec exit export help login newgrp</span>

227 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">read readonly set shift times trap umask wait</span>

read readonly set shift times trap umask wait</span>

228

229 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left"># cd /bin</span> # Cd / bin</span>

230 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left"># ls</span> # Ls</span>

231 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">busybox df kill msh sh</span> busybox df msh kill

sh</span>

232 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">cat echo login ping true</span> ping echo true cat

login</span>

233 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">chmod false ls ps umount</span> ls ps umount chmod

false</span>

234 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">date iptables-xml mount rm</span> Date iptables-xml

mount rm</span>

235 <span onmouseover="_tipon(this)" onmouseout="_tipoff()"><span class="google-src-text"

style="direction: ltr; text-align: left">#</span> #</span>

Default password for serial console:

login = root

password = 5up

Default password for the web interface:

login = admin

password = admin

Ps: I have not taken the time to look at the web interface based ...

I just booted the router to make sure it worked and then immediately after I removed

-

Next steps to take:

- Compiling OpenWrt trunk for TL-MR3020

- Flash the new firmware

- Update u-boot bootloader (though the original seems already up to date)

- Boot the uImage and rootfs on a partition of the USB key

Page 32: MR3020 HACK

- Integration of the card with my arduino code BlyssSpoofer / BlyssSniffer

- Implementation of a GUI html + cgi

-

Bonus for the curious:

Both sides of the pcb in high resolution

Page 33: MR3020 HACK

-

Good weekend and hack at all!

Share:

• Twitter

• Facebook2

• Google +1

"Skyduino landed on github!

Editorial 29/09 "

Discussion

15 Responses to "[hack] TL-MR3020 + hack = OpenWRT USB / WiFi / Ethernet"

1.

Page 34: MR3020 HACK

Mmhh .. Project forward.

Posted by Alex (@ venedesign) | September 23, 2012, 10 h 48 min

Reply to this comment

2.

Hello,

I'm still your wonderful blog with attention, great job!

Questions about the project, why not directly interface with which you Raspbery Pi permettera to have a web

interface and interact directly with arduino via usb? Maybe I haven not quite understand the purpose of your

interface with the wireless router, but I was able to do that with 2 arduino + Pi and it works pretty well!

a +

Posted by tibo | September 24, 2012, 1 h 30 min

Reply to this comment

o

Because it's cheating

I prefer to use a 400MHz ARM linux kernel homemade, modified debian iso that I do not really know

how.

Posted by skywodd | September 24, 2012, 20 h 29 min

Reply to this comment

3.

Great project!

I have the same router and I confess I use RBP to have a web interface and control the Arduino.

The advantage is that your project you'll save probalement RBP and therefore if the project is embedded ca will

make you save a lot in energy consol!

To be continued!

Published by vlp | September 24, 2012, 8 h 25 min

Reply to this comment

o

Consolidated level is unbeatable, managing the power supply properly wifi chipset should be able to run

the same mounting lipo battery for a long time.

Posted by skywodd | September 24, 2012, 20 h 30 min

Reply to this comment

4.

Superb article, I'm impressed.

I just (re) order * this router to use for a tablet more basic,

but it makes me want to dig even that for the usb host with open wrt

Page 35: MR3020 HACK

* The first refurbished I received did not

Posted by Joel | September 25, 2012, 22 h 58 min

Reply to this comment

5.

Hello

great article

For my part, I started a project based on an equivalent basis OpenRD Marvell

I use this box in addition to NAS / firewall / router

Posted by David | October 18, 2012, 13 h 49 min

Reply to this comment

6.

Skywood salvation,

I find this post particularly interested in, I myself on one MR3020 lequelle I experimente, but only in software. I

have installed openwrt version and I must say it makes me learn a lot about the administration of a network under

linux, I spend a lot of time on the distribution site and I am determined to know clearly all subtlety this router. I

also have a small question to answer if you know because in the configuration files of network interfaces by

adding an option "option macadrr 'xx: xx: xx: xx: xx: xx' is supposed to be there and changed the mac address of

wifi chipset slab but its not work ...

On that after I read it that semblerais to change the mac address should rewrite the mtd4 which contains test and

notement radio address in question, precisely, does not recommend you touch ... you need to say I burned with

desire finally good if you know a little more I'd love to listen to your good advice before potentielement a

big mistake, especially since I have no way to rewrite the flash.

And if not when is write what you think the rest of the article?!

Posted by karol | December 28, 2012, 23 h 54 min

Reply to this comment

o

On >> after that I read that it semblerais to change the mac address should rewrite the mtd4 which

contains test and notement radio address in question, precisely, does not recommend you touch ...

If you made a backup of your bootloader mtd4 and is in good health you can try.

But without knowing the proper data architecture config is little chance to do something functional (a

checksum is surely some pars) ...

Usually you can alter the MAC address at the bootloader (uboot), Linux kernel (macchanger) or hardware

(by cons ... how I know).

Especially >> I have no way to rewrite the flash.

If the bootloader is alive you can always reflash a backup TFTP.

Or with the tool if the linux mtd boot even after your changes.

And if >> when is write what you think the rest of the article?!

For now I know I put almost a month to compile custom OpenWRT image because full problem with my

linux ...

Now compile the kernel I'm trying to compile the latest version of uboot and throw everything on the

router.

Page 36: MR3020 HACK

Posted by skywodd | December 29, 2012, 0 h 51 min

Reply to this comment

thank you to respond as quickly

is what you have links / books or any other documentation to advise me because you're a response,

I realize that I am missing ... you're conaissances really comfortable with the handling of the genre:

install a bootloader or use the mtd (this is a command asser obscure for me ...)

PS: I is part of a community of computer security http://www.zenk-security.com/ there is more

info but I focused mainly animates the category "electronic" forum. I invite you to come pay a

visit; D (just to prove through some test to be reached in order to avoid anyone does come, but you

ca is gifted and should not ask you to problem) was also on Rizon irc # Zenk-Security

Posted by karol | December 29, 2012, 1 h 22 min

Is >> that you have links / books or any other documentation to advise me because you're a

response, I realize that I lack knowledge ...

Not really, I only look at doc / manuals and "how to" projects that I use.

It is in English, but at least it is always up to date and (mostly) is very comprehensive.

You're really a >> comfortable with handling like: install a bootloader or use the mtd (this is a

command asser obscure for me ...)

Really comfortable, not completely freak, yes

I compile and flash without me I take the lead, in the worst case I know what I reflash by

unsoldering the memory chip so good.

At the "instinct as they say ^ ^

>> PS: I is part of a community of computer security http://www.zenk-security.com/ there is more

info but I focused mainly animates the category "electronic" forum.

I know, this is the forum with a kind of diode as logo ^ ^

I had seen pictures of your team on the website of the ndh (by the way I never have to go to the

ndh ... sniff).

Posted by skywodd | December 29, 2012, 22 h 21 min

7.

I was just thinking that you was rather kind to draw the right information to the left for your projects, but

sometimes it feel good to pick up a good book / doc reference and be guided by the expert.

I should invest in gear type: programateur for microcontroller eeprom or give me a ca autonomy and can be

faciliterai things to experiment myself .. I seemed to have read to you that your father was electronics, I guess it

helps a little?

In fact it is us! I never go either to the NDH .. but may be this year, who knows? I am of course with some

members so maybe there is a way I tick.

Regards

Posted by karol | January 2, 2013, 16 h 56 min

Page 37: MR3020 HACK

Reply to this comment

o

I should >> invest in gear type: eeprom programmer for microcontrollers or give me a ca autonomy and

can be faciliterai things to experiment myself ..

I'm just a map and a bus pirate programmer Pocket April.

Not need special gear well, most of the time I go tinkering that I need a card with arduino, arm or another.

By cons by the end of the month I will take a digital oscilloscope (my old cuckoo analog hs), this is really

a tool to tinker with hardware requirement.

I seemed to have >> read you your father was electronics, I guess it helps a little?

Yep, and I get to pick nice stuff at times.

Posted by skywodd | January 2, 2013, 17 h 26 min

Reply to this comment

Source :

http://skyduino.wordpress.com/2012/09/22/hack-tl-mr3020-openwrt-bidouillage-usb-wifi-ethernet/