This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
toh:tp-link:tl-mr3020 [2012/09/13 17:05] aind |
toh:tp-link:tl-mr3020 [2018/02/08 14:18] (current) phicoh |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== TP-Link TL-MR3020 ====== | ||
+ | See also [[toh:tp-link:TL-MR3040]] and [[toh:tp-link:TL-WR703N]] or [[toh/tp-link/tl-mr10u|TP-Link TL-MR10U]], [[toh/tp-link/tl-mr11u|TP-Link TL-MR11U]], [[toh/tp-link/tl-mr12u|TP-Link TL-MR12U]] and [[toh/tp-link/tl-mr13u|TP-Link TL-MR13U]]\\ **''Note:''** Many of these routers are marketed as a //"3G travel router"// but **none actually include a 3G modem** - the marketing term rather means that the OEM firmware supports a certain range of 3G/4G modems to be externally connected to USB because it contains drivers for those USB modems! Ignore that, because with OpenWrt ANY router with USB supports 3G/4G hardware ... ;-) | ||
+ | |||
+ | The router is powered through a mini-USB socket stub (5V) and comes with a USB power adapter. | ||
+ | |||
+ | {{media:tplink:tl-mr3020:tl-mr3020.jpg?400|TP-Link TL-MR3020}} | ||
+ | |||
+ | ===== Supported Hardware Versions ===== | ||
+ | |||
+ | See [[#Installation]] for images. | ||
+ | |||
+ | ^ Model Version ^ Launch Date ^ Supported since ^ Model Specific Notes ^ | ||
+ | | v1.0 | 2011-12 | [[https://dev.openwrt.org/changeset/29651|r29651]] | AR9331 chipset | | ||
+ | | v1.4 | 2012-01 | [[https://dev.openwrt.org/changeset/29763|r29763]], probably earlier | AR9331 chipset | | ||
+ | | v1.6 | 2012-03 | [[https://dev.openwrt.org/changeset/30753|r30753]], probably earlier | AR9331 chipset | | ||
+ | | v1.7 | 2012-05 | 12.09-RC1, [[https://dev.openwrt.org/changeset/32786|r32786]] | AR9331 chipset | | ||
+ | | v1.8 | ?? | 12.09-RC1 | AR9331-AL1A; internal serial port has no pins, only solder-pads (P1 clearly visible) | | ||
+ | | v1.9 | ?? | 12.09 | AR9331-AL3A | | ||
+ | | v3.0 | ?? | N/A | MT7628NN chipset, no obvious serial pins/pads | | ||
+ | |||
+ | The current release | ||
+ | OEM source code available at: [[http://www.tp-link.com/resources/gpl/150Router.rar]] | ||
+ | |||
+ | ===== Features ===== | ||
+ | ^ CPU ^ Ram ^ Flash ^ Network ^ USB ^ Serial ^ JTag ^ | ||
+ | | Atheros AR9331@400MHz | 32MiB | 4MiB | 1 x 100MBit | 1 x 2.0 | Yes | No | | ||
+ | |||
+ | * SoC: Atheros AR9330 rev 1 | ||
+ | * 802.11 b/g/n 150 Mbps | ||
+ | * Powered via USB B-Mini (5 Volts) | ||
+ | * Tiny form factor | ||
+ | * 5.7 cm x 5.7 cm PCB | ||
+ | * 6.7 cm x 7.4 cm x 2.2 cm case | ||
+ | |||
+ | === Power consumption === | ||
+ | |||
+ | Input voltage: The router will function correctly when powered with voltages as low as 3.3 Volts (determined experimentally) instead of 5V USB-Power. Thus, it can be powered directly from one single Li-Ion battery (which usually starts fully charged at 4.2V and has a nominal voltage of 3.7) without the need for an external 5V adapter. | ||
+ | |||
+ | This router is standardly powered via USB at 5V. The voltage regulators' input voltage should be at least between 3.7V - 5.5V, but not over 5.5V. The device will get damaged at too high voltages*. Maximum current draw at 5V is 255mA (Active Download + LAN + WLAN + USBboot), average current draw with WiFi is 125mA, idle is 68mA. Hence the average router power consumption is 0.6W, which is incredibly low. | ||
+ | |||
+ | Power consumption will be higher if a USB device is attached to its USB port! | ||
+ | More information and a rough diagram here [[https://apollo.open-resource.org/lab:argus|Interesting webpage with more data about power consumption and so on]] | ||
+ | |||
+ | ===== Installation ===== | ||
+ | - → [[doc:howto:obtain.firmware]] | ||
+ | - → [[doc:howto:generic.flashing|Install OpenWrt]] | ||
+ | - → [[about/latest|Latest OpenWrt release]] | ||
+ | |||
+ | ---- datatable ---- | ||
+ | cols : Model, Versions, Supported Current Rel, Firmware OpenWrt Install URL_url, Firmware OpenWrt Upgrade URL_url, Firmware OEM Stock URL_url | ||
+ | align : l,c | ||
+ | filter : Brand=TP-Link | ||
+ | filter : Model=TL-MR3020 | ||
+ | sort : Model | ||
+ | ---- | ||
+ | |||
+ | |||
+ | initial test, Luci is not working after opkg something, 15.05.1 has been found corrected. | ||
+ | |||
+ | ==== Method Using Web GUI (Recommended) ==== | ||
+ | |||
+ | Web GUI upload has been confirmed to work with v1.0, v1.4, v1.6, v1.7, v1.8 and 1.9 hardware revisions and requires no serial or TFTP access unless something goes wrong. | ||
+ | |||
+ | Log in to the router's web GUI (default login/password: **admin** / **admin**) and flash with **openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin** firmware image like a regular firmware update. | ||
+ | |||
+ | Wait for the progress bar to finish twice (the device will reset itself in the process), and proceed with [[toh:tp-link:tl-mr3020#basic configuration|proceed with basic configuration]] as with any fresh OpenWRT install. | ||
+ | |||
+ | See [[https://forum.openwrt.org/viewtopic.php?pid=154203#p154203|forum]] if you encounter problems. | ||
+ | |||
+ | ==== Manual Method Using Serial Console and TFTP (Experts) ==== | ||
+ | |||
+ | To install OpenWrt from the U-Boot console, you need to install a TFTP server on your computer (**tftp-hpa** is recommended). | ||
+ | |||
+ | Then download OpenWrt factory image to /srv/tftp (for example), and execute the TFTP server by typing **tftpd -l -s /srv/tftp**. | ||
+ | |||
+ | |||
+ | Connect the TL-MR3020 using a serial console and power up the TL-MR3020. | ||
+ | |||
+ | After a 1-2 seconds it shows **Autobooting in 1 seconds**, when displaying this enter **tpl** immediately. | ||
+ | |||
+ | <code> | ||
+ | Using default environment | ||
+ | |||
+ | In: serial | ||
+ | Out: serial | ||
+ | Err: serial | ||
+ | Net: ag7240_enet_initialize... | ||
+ | No valid address in Flash. Using fixed address | ||
+ | No valid address in Flash. Using fixed address | ||
+ | : cfg1 0x5 cfg2 0x7114 | ||
+ | eth0: 00:03:7f:09:0b:ad | ||
+ | ag7240_phy_setup | ||
+ | eth0 up | ||
+ | : cfg1 0xf cfg2 0x7214 | ||
+ | eth1: 00:03:7f:09:0b:ad | ||
+ | athrs26_reg_init_lan | ||
+ | ATHRS26: resetting s26 | ||
+ | ATHRS26: s26 reset done | ||
+ | ag7240_phy_setup | ||
+ | eth1 up | ||
+ | eth0, eth1 | ||
+ | Autobooting in 1 seconds | ||
+ | [type tpl here]</code> | ||
+ | |||
+ | You will get a U-Boot-console, it shows as **hornet>**, and you must enter the following commands: | ||
+ | |||
+ | <code>hornet> setenv ipaddr <device-ip, eg. 192.168.1.111> | ||
+ | hornet> setenv serverip <server-ip, eg. 192.168.1.100> | ||
+ | hornet> tftpboot 0x80000000 openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin | ||
+ | eth1 link down | ||
+ | dup 1 speed 100 | ||
+ | Using eth0 device | ||
+ | TFTP from server 192.168.1.100; our IP address is 192.168.1.111 | ||
+ | Filename 'openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin'. | ||
+ | Load address: 0x80000000 | ||
+ | Loading: ################################################################# | ||
+ | ################################################################# | ||
+ | ################################################################# | ||
+ | ################################################################# | ||
+ | ################################################################# | ||
+ | ################################################################# | ||
+ | ################################################################# | ||
+ | ################################################################# | ||
+ | ################################################################# | ||
+ | ################################################################# | ||
+ | ################################################################# | ||
+ | ###################################################### | ||
+ | done | ||
+ | Bytes transferred = 3932160 (3c0000 hex) | ||
+ | hornet> erase 0x9f020000 +0x3c0000 | ||
+ | |||
+ | First 0x2 last 0x3d sector size 0x10000 61 | ||
+ | Erased 60 sectors | ||
+ | hornet> cp.b 0x80000000 0x9f020000 0x3c0000 | ||
+ | Copy to Flash... write addr: 9f020000 | ||
+ | |||
+ | done | ||
+ | hornet> bootm 9f020000 | ||
+ | </code> | ||
+ | |||
+ | ==== OEM Mass Flashing ==== | ||
+ | |||
+ | Flashing hundreds of devices using the web interface can be a real pain. You can use this shell script to automate it: | ||
+ | <code> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # Pass the firmware file to be flashed as the first parameter. | ||
+ | # | ||
+ | # The second curl call will time out, but it's expected. Once the | ||
+ | # script exits you can unplug the ethernet cable and proceed to the | ||
+ | # next router, but KEEP each router ON POWER until the new image is | ||
+ | # fully written! When flashing is done the router automatically | ||
+ | # reboots (as shown by all the leds flashing once). | ||
+ | |||
+ | curl \ | ||
+ | --user admin:admin \ | ||
+ | --user-agent 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0' \ | ||
+ | --referer 'http://192.168.0.254/userRpm/SoftwareUpgradeRpm.htm' \ | ||
+ | --form "Filename=@$1" -F 'Upgrade=Upgrade' \ | ||
+ | http://192.168.0.254/incoming/Firmware.htm > ans.html | ||
+ | # > /dev/null | ||
+ | |||
+ | sleep 1 | ||
+ | |||
+ | session_id=$(sed -n 's/var session_id = \"\(.*\)\".*/\1/p' ans.html) | ||
+ | |||
+ | curl \ | ||
+ | --max-time 2 \ | ||
+ | --user admin:admin \ | ||
+ | --user-agent 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0' \ | ||
+ | --referer 'http://192.168.0.254/incoming/Firmware.htm' \ | ||
+ | http://192.168.0.254/userRpm/FirmwareUpdateTemp.htm?session_id=$session_id > /dev/null | ||
+ | </code> | ||
+ | |||
+ | ==== Install Snapshot Image ==== | ||
+ | |||
+ | If you install openwrt from trunk, the firmware image doesn't include LuCi. You need configure wireless network from telnet to install Luci. You will need already working internet access. | ||
+ | |||
+ | |||
+ | For this example: | ||
+ | |||
+ | Main router: | ||
+ | Ip: '192.168.2.1' | ||
+ | Ssid: 'Example-network' | ||
+ | Bssid: '11:11:11:11:11:11' | ||
+ | Encryption: 'WPA2 - PSK' | ||
+ | Key: 'PaSSworD' | ||
+ | Channel: '9' | ||
+ | ( You need fill these by your network properities ) | ||
+ | |||
+ | Terminal program: | ||
+ | Putty | ||
+ | |||
+ | After install trunk image wait few minutes then recycle power router and set your computer ip address to: | ||
+ | |||
+ | <code> | ||
+ | ip: 192.168.1.2 | ||
+ | subnet: 255.255.255.0 | ||
+ | gateway: 192.168.1.1 | ||
+ | </code> | ||
+ | |||
+ | Start your terminal and connect 192.168.1.1 via telnet ( port 23 ). Right now LAN INTERFACE include wireless too. We need to set wireless to WAN interface. Change wireless configuration below example. | ||
+ | |||
+ | <code> | ||
+ | vi /etc/config/wireless | ||
+ | |||
+ | config wifi-device radio0 | ||
+ | option type mac80211 | ||
+ | option channel 9 | ||
+ | option hwmode 11ng | ||
+ | option path 'platform/ar933x_wmac' | ||
+ | option htmode HT20 | ||
+ | list ht_capab SHORT-GI-20 | ||
+ | list ht_capab SHORT-GI-40 | ||
+ | list ht_capab RX-STBC1 | ||
+ | list ht_capab DSSS_CCK-40 | ||
+ | option disabled 0 | ||
+ | option txpower 27 | ||
+ | |||
+ | config wifi-iface | ||
+ | option device radio0 | ||
+ | option network wan | ||
+ | option mode sta | ||
+ | option ssid Example-network | ||
+ | option encryption psk2 | ||
+ | option bssid 11:11:11:11:11:11 | ||
+ | option key PaSSworD | ||
+ | </code> | ||
+ | |||
+ | Wireless setup completed now we need to get ip WAN interface via main router dhcp server. Set your network config like below example. | ||
+ | |||
+ | <code> | ||
+ | vi /etc/config/network | ||
+ | |||
+ | config interface 'loopback' | ||
+ | option ifname 'lo' | ||
+ | option proto 'static' | ||
+ | option ipaddr '127.0.0.1' | ||
+ | option netmask '255.0.0.0' | ||
+ | |||
+ | config globals 'globals' | ||
+ | option ula_prefix 'fd48:931d:0f42::/48' | ||
+ | |||
+ | config interface 'lan' | ||
+ | option ifname 'eth0' | ||
+ | option type 'bridge' | ||
+ | option proto 'static' | ||
+ | option ipaddr '192.168.1.1' | ||
+ | option netmask '255.255.255.0' | ||
+ | option ip6assign '60' | ||
+ | |||
+ | config interface 'wan' | ||
+ | option proto 'dhcp' | ||
+ | option _orig_ifname radio0 | ||
+ | option _orig_bridge false | ||
+ | </code> | ||
+ | |||
+ | Reboot your router | ||
+ | |||
+ | <code> | ||
+ | reboot | ||
+ | </code> | ||
+ | |||
+ | Your terminal session will be closed. You need reconnect to router. | ||
+ | |||
+ | Test your router: If your router is properly connected to the internet you should get something like the below lines: | ||
+ | |||
+ | <code> | ||
+ | ping -c3 www.google.com | ||
+ | PING www.google.com (xxx.xxx.xxx.xxx): 56 data bytes | ||
+ | 64 bytes from xxx.xxx.xxx.xxx: seq=0 ttl=52 time=88.295 ms | ||
+ | 64 bytes from xxx.xxx.xxx.xxx: seq=1 ttl=52 time=87.783 ms | ||
+ | 64 bytes from xxx.xxx.xxx.xxx: seq=2 ttl=52 time=87.503 ms | ||
+ | |||
+ | --- www.google.com ping statistics --- | ||
+ | 3 packets transmitted, 3 packets received, 0% packet loss | ||
+ | round-trip min/avg/max = 87.503/87.860/88.295 ms | ||
+ | </code> | ||
+ | |||
+ | Now you can install Luci and enable it by below commands: | ||
+ | |||
+ | <code> | ||
+ | opkg update | ||
+ | opkg install luci | ||
+ | /etc/init.d/uhttpd enable | ||
+ | /etc/init.d/uhttpd start | ||
+ | </code> | ||
+ | |||
+ | Now you can access LuCi interface by 192.168.1.1 with your browser. | ||
+ | |||
+ | ===== How To Enable Reset Functionality ===== | ||
+ | By default reset button won't work , as it is only assigned for WPS(in present source code Chaos Calmer 15.0) | ||
+ | |||
+ | *method 1 : | ||
+ | You can enable that functionality , by manually write script in /etc/hotplog.d/button/buttons file, where you can check the $BUTTON type and according to that write action for reset. | ||
+ | |||
+ | *method 2 : | ||
+ | change in | ||
+ | file 1 : openwrt/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.18.36/arch/mips/ath79/mach-tl-mr3020.c | ||
+ | OR | ||
+ | file 2 : openwrt/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr3020.c | ||
+ | | ||
+ | change wps to reset | ||
+ | #define TL_MR3020_GPIO_BTN_RESET 11 | ||
+ | static struct gpio_keys_button tl_mr3020_gpio_keys[] __initdata = { | ||
+ | { | ||
+ | .desc = "Reset button", | ||
+ | .type = EV_KEY, | ||
+ | .code = KEY_RESTART, | ||
+ | .debounce_interval = TL_MR3020_KEYS_DEBOUNCE_INTERVAL, | ||
+ | .gpio = TL_MR3020_GPIO_BTN_RESET, | ||
+ | .active_low = 0, | ||
+ | }, | ||
+ | | ||
+ | TRAC ticket has been raised at https://dev.openwrt.org/ticket/22951 (will delete this line after changes are made in source code) | ||
+ | ===== Failsafe Mode ===== | ||
+ | * Power on the TL-MR3020 | ||
+ | * When the WPS button starts to blink: | ||
+ | * on AA (Attitude Adjustment / 12.09) push the WPS button; | ||
+ | * on BB (Breaking Barrier / trunk) move the sliding switch quickly from one side to the other. | ||
+ | * on CC (Chaos Calmer) ??? not sure try any switches or buttons ??? repeatedly is fine. 12/11/2015: repeatdly pushing the WPS worked. | ||
+ | * Do this until the WPS button starts blinking faster. | ||
+ | * The device is now in Failsafe-Mode | ||
+ | * Connect the TL-MR3020 to your computer via ethernet | ||
+ | |||
+ | Follow further instructions at: [[:doc:howto:generic.failsafe#in.failsafe.mode|generic.failsafe]] | ||
+ | |||
+ | ==== Downgrade Attitute Adjustment from Trunk ==== | ||
+ | |||
+ | Downgraded wrong image ( jff2 instead of squashfs ) cause cant get ip or connect to luci. Failsafe mode still working but firstboot command wont work because it is already on working. You can upload correct firmware and write it with mtd command but failsafe mode can't connect internet. You need to local tftp server to get firmware. | ||
+ | |||
+ | Set your pc ip 192.168.1.10/24 and gateway 192.168.1.1. Download [[http://code.google.com/p/mongoose/|mongoose http server]] and correct firmware same folder and start mongoose. It will host all files in his path ( if you start it from downloads folder it will host all files in downloads folder ) | ||
+ | |||
+ | now we can get firmware via failsafe telnet: | ||
+ | |||
+ | <code> | ||
+ | wget http://192.168.1.10:8080/openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin | ||
+ | mtd -r write /tmp/openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin firmware | ||
+ | Writing from /tmp/openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin to firmware ... | ||
+ | Rebooting ... | ||
+ | /bin/sh: /sbin/reboot: Input/output error | ||
+ | </code> | ||
+ | |||
+ | DONT DO ANYTHING. Just wait and router reboot itself. wait few minutes and you will able to reach Luci via 192.168.1.1. | ||
+ | |||
+ | ===== Restoring Original Firmware ===== | ||
+ | -> [[doc:howto:generic.uninstall]] | ||
+ | |||
+ | {{page>meta:infobox:dangerous&noheader&nofooter&noeditbtn}} | ||
+ | |||
+ | With the TL-MR3020 router, there is a catch: the stock firmware is obtained from the OEM: http://www.tplink.com/en/support/download/?model=TL-MR3020 | ||
+ | |||
+ | * in case the file name of this firmware file does not contain the word **//"boot"//** in it, you can simply revert back to original firmware | ||
+ | * in case the file name of this firmware file does contain the word **//"boot"//** in it, you need to cut off parts of the image file //before// flashing it: | ||
+ | |||
+ | |||
+ | An example of an image file with the word "boot" in it is ''mr3020nv1_en_3_17_2_up_boot(140408).bin''. | ||
+ | |||
+ | Cut the first 0x20200 (that is 131,584 = 257*512) Bytes from original firmware: | ||
+ | <code> | ||
+ | dd if=orig.bin of=tplink.bin skip=257 bs=512 | ||
+ | </code> | ||
+ | |||
+ | You should transfer the firmeware image to the /tmp folder and revert back to original firmware (if availlable you can flash the firmware via the webinterface as well): | ||
+ | |||
+ | Via the safer method using sysupgrade: | ||
+ | <code> | ||
+ | sysupgrade /tmp/tplink.bin | ||
+ | </code> | ||
+ | |||
+ | Or you use the mtd method: | ||
+ | <code> | ||
+ | mtd -r write /tmp/tplink.bin firmware | ||
+ | </code> | ||
+ | |||
+ | It is also possible to revert to the stock firmware using the method with tftp described in "Manual Method Using Serial Console and TFTP (Experts)". (you still need the firmware images without the boot part). | ||
+ | |||
+ | OEM TP-Link firmware for the TL-MR3020 with the **//boot part removed//** to revert to the original OEM firmware: | ||
+ | * TL-MR3020 **//V1//** [[http://www.friedzombie.com/tplink-stripped-firmware]] search for TL-MR3020-V1 | ||
+ | |||
+ | ===== Basic Configuration ===== | ||
+ | Since this part is identical to the one recommended for generic devices, see [[doc:howto:basic.config|Basic configuration]]. | ||
+ | |||
+ | ===== Original Flash Layout ===== | ||
+ | Please read the article [[doc:techref:Flash.Layout]] for a better understanding. It contains a couple of explanations. Then let's have a quick view at flash layout of this particular device: | ||
+ | |||
+ | ^ TP-Link MR3020 Flash Layout stock firmware ^^^^^^ | ||
+ | ^ Layer0 | spi0.0: 4096KiB ||||| | ||
+ | ^ Layer1 | mtd0 | mtd1 | mtd2 | mtd3 | mtd4 | | ||
+ | ^ Size in KiB | 128KiB | 1024KiB | 2816 KiB | 64KiB | 64KiB | | ||
+ | ^ Name | **//u-boot//** | **//kernel//** | **//rootfs//** | **//config//** | **//art//** | | ||
+ | ^ mountpoint | none | none | / | none | none | | ||
+ | ^ filesystem | none | none | SquashFS | none | none | | ||
+ | |||
+ | ART = Atheros Radio Test - it contains RF calibration data for the wifi. If it is missing or corrupt, wireless won't come up anymore.\\ | ||
+ | |||
+ | |||
+ | ===== Hardware ===== | ||
+ | |||
+ | ==== Opening the Case ==== | ||
+ | |||
+ | The case consists of two parts: a white base and a gray lid. The lid has two snap hinges, one right above the mini USB connector and one on the opposite side about 10 mm left of the "TP-LINK" logo. The lid is additionally glued in place on the underside on all four sides. You can try to pry it open with a thin but very stable blade tool. Start above the ethernet port where the case is not glued, and work your way around the glued corner towards the "3G USB" port (no glue there) until you reach the logo side. You should now be able to peek inside the case on the lose corner. | ||
+ | |||
+ | Next proceed along to the LED side, but beware of the fragile light conductors running straight down beneath the clear plastic. They easily bend or break when you push-in your tool too far. Once three sides are open, you can steadily lift the lid until the remaining side breaks lose and neatly frees the second hinge in the process. If you work carefully and manage not to break either one of the two hinges, the gray lid should snap neatly back into place after some manual cleaning with a cutter knife. | ||
+ | |||
+ | | @#cd0505: | {{:meta:icons:tango:48px-dialog-warning.svg.png}} | **Warning!**\\ **Be careful not to scratch PCB traces if you use a flat screwdriver to open the case.**\\ Don't apply downwards pressure on the PCB itself with the tip of the screwdriver. Always point the tip of the screwdriver upwards, practicing a pressure from bottom to top.\\ **I just managed to practically kill an MR3020 because I scratched the ethernet port trace!** | | ||
+ | |||
+ | ==== Internal Pictures ==== | ||
+ | {{media:tplink:tl-mr3020:tl-mr3020_top-pcb.jpg?450}} | ||
+ | {{media:tplink:tl-mr3020:tl-mr3020_bottom-pcb.jpg?450}} | ||
+ | |||
+ | ==== Hardware summary ==== | ||
+ | | ^ IC ^ Info / Datasheet ^ | ||
+ | ^ Chipset (WiSoC)| AR9331 | https://wikidevi.com/wiki/Atheros_AR9331 | | ||
+ | ^ Flash ROM| Spansion S25FL032P | http://www.spansion.com/Support/Datasheets/S25FL032P_00.pdf | | ||
+ | ^ SDRAM| Windbond W9425G6JH | http://www.winbond.com/NR/rdonlyres/11505884-F632-41F9-9438-A3EC025FEAED/0/W9425G6JH.pdf | | ||
+ | ^ | Zentel A3S56D40FTP-G5 | | | ||
+ | |||
+ | |||
+ | ==== Serial Console ==== | ||
+ | == Pinout == | ||
+ | |||
+ | ^1 ^2 ^3 ^4| | ||
+ | |TX|RX|GND|VCC| |SJ1| | ||
+ | |||
+ | Pin 1 is clearly marked on the board. | ||
+ | |||
+ | {{media:tplink:tl-mr3020:tl-mr3020_serial_connector.jpg?250}} | ||
+ | |||
+ | To get a reliable serial connection, **you might have to connect a 10k pullup resistor** between TX and VCC. This is because the TX pin is connected to a voltage divider (2x5.6k) and a capacitor is put between the real pin and the TX connector. Some serial adaptors might work without the pullup resistor (confirmed for one ST3232-based adaptor), but others definitely require it (confirmed for a FTDI FT232RL-based model). | ||
+ | |||
+ | If you need a serial adaptor, you can build a [[http://buffalo.nas-central.org/index.php/Use_a_Nokia_Serial_Cable_on_an_ARM9_Linkstation#Preparing_the_Cable|serial hack adapter]] (DKU-5, CA-42). Relatively cheap, off-the-shelf and known-to-work alternatives would be SparkFun's [[http://www.sparkfun.com/products/9873|FTDI Basic Breakout 3.3V]] and [[http://www.sparkfun.com/products/9717|FTDI Serial Cable 3.3V]] (the resistor is not needed with this specific cable). | ||
+ | |||
+ | The right settings for accessing the serial console are as follows: | ||
+ | |||
+ | Bits per second: **115200**\\ | ||
+ | Data bits: **8**\\ | ||
+ | Stop bits: **1**\\ | ||
+ | Parity: **None**\\ | ||
+ | Flow control: **None**\\ | ||
+ | |||
+ | If you are using a Linux or Mac system, the easiest way to connect to the serial console would be the **screen** command. It comes pre-installed on OS X, but must usually be installed on Linux systems. When installed, just type in a terminal: | ||
+ | <code>screen /dev/[device name] 115200 | ||
+ | </code> | ||
+ | |||
+ | where [device name] is the name of your serial adaptor, usually tty.usbserial* on Mac and ttyUSB* on Linux. To quit screen, press CTRL-a, followed by CTRL-k, followed by y. | ||
+ | |||
+ | === U-Boot Bootloader Console === | ||
+ | |||
+ | The password to get the U-Boot prompt is **tpl**. You must type it quickly while the serial console is displaying: | ||
+ | <code>[...] | ||
+ | ag7240_phy_setup | ||
+ | eth1 up | ||
+ | eth0, eth1 | ||
+ | Autobooting in 1 seconds | ||
+ | [type tpl here]</code> | ||
+ | |||
+ | U-Boot accepts several commands. Type **help** to display the list of available commands. | ||
+ | |||
+ | <code>hornet> help | ||
+ | ? - alias for 'help' | ||
+ | bootm - boot application image from memory | ||
+ | cp - memory copy | ||
+ | erase - erase FLASH memory | ||
+ | help - print online help | ||
+ | md - memory display | ||
+ | mm - memory modify (auto-incrementing) | ||
+ | mtest - simple RAM test | ||
+ | mw - memory write (fill) | ||
+ | nm - memory modify (constant address) | ||
+ | printenv- print environment variables | ||
+ | progmac - Set ethernet MAC addresses | ||
+ | reset - Perform RESET of the CPU | ||
+ | setenv - set environment variables | ||
+ | tftpboot- boot image via network using TFTP protocol | ||
+ | version - print monitor version</code> | ||
+ | |||
+ | === Linux Console === | ||
+ | |||
+ | Once the original firmware has booted up completely, you can press **return** to activate the Linux login prompt. | ||
+ | |||
+ | The password to get a root Shell access is **5up**: | ||
+ | |||
+ | <code>TL-MR3020 mips #185 Fri Oct 21 16:26:50 CST 2011 (none) | ||
+ | TL-MR3020 login: root | ||
+ | password: 5up</code> | ||
+ | |||
+ | ==== GPIOs ==== | ||
+ | -> [[doc:hardware:port.GPIO]] | ||
+ | The AR933x platform provides 30 GPIOs. Some of them are used by the router for status LEDs, buttons and other stuff. The table below shows the results of some investigation: | ||
+ | |||
+ | ^ ^ ^ ^ Voltage level at GPIO in output-mode ^^ gpioX/value in input-mode when GPIO is: ^^^ | ||
+ | ^ GPIO ^ Common Name ^ PCB Name ^ gpioX/value=1 ^ gpioX/value=0 ^ Floating ^ Pulled to GND ^ Pulled to Vcc ^ | ||
+ | | 0 | WLAN LED | LED4 | | | | | | | ||
+ | | 1 | unknown. pulled high | R2 | | | | | | | ||
+ | | 2 | | | | | | | | | ||
+ | | 3 | | | | | | | | | ||
+ | | 4 | | | | | | | | | ||
+ | | 5 | | | | | | | | | ||
+ | | 6 | USB Power | R107 | | | | | | | ||
+ | | 7 | unused Pulled to ground | R15 | | | | | | | ||
+ | | 8 | USB power | R112 | 2.8V | | | | | | ||
+ | | 9 | | | | | | | | | ||
+ | | 10 | | | | | | | | | ||
+ | | 11 | WPS button | | | | | | | | ||
+ | | 12 | | | | | | | | | ||
+ | | 13 | | | | | | | | | ||
+ | | 14 | | | | | | | | | ||
+ | | 15 | | | | | | | | | ||
+ | | 16 | | | | | | | | | ||
+ | | 17 | Ethernet LED | LED5 | | | | | | | ||
+ | | 18 | Sliding Sw. | | | | | | | | ||
+ | | 19 | | | | | | | | | ||
+ | | 20 | Sliding Sw. | | | | | | | | ||
+ | | 21 | | | | | | | | | ||
+ | | 22 | | | | | | | | | ||
+ | | 23 | | | | | | | | | ||
+ | | 24 | | | | | | | | | ||
+ | | 25 | | | | | | | | | ||
+ | | 26 | WPS LED | LED2 | | | | | | | ||
+ | | 27 | Internet LED | LED3 | | | | | | | ||
+ | | 28 | | | | | | | | | ||
+ | | 29 | unused Pulled to ground | R17 | | | | | | | ||
+ | |||
+ | To make the GPIOs available via sysfs, the required ones have to be exported to userspace, as it is explained on a page of the [[http://squidge.sourceforge.net/gpio/|Squidge-Project]]. Kernel modules occupying that resource need to be removed before (e.g. "leds-gpio" and "gpio-buttons"). In output-mode, voltage levels of the GPIOs were measured against GND, after the value 1 or 0 had been written to /sys/class/gpio/gpioX/value. In input-mode, the value of the file /sys/class/gpio/gpioX/value was read when the GPIO was floating (initial state), pulled to GND or pulled to Vcc. | ||
+ | |||
+ | The sliding switch has the following truth table: | ||
+ | ^ Mode Switch ^ GPIO18 ^ GPIO20 ^ | ||
+ | | 3G | 1 | 0 | | ||
+ | | WISP | 0 | 1 | | ||
+ | | AP | 1 | 1 | | ||
+ | |||
+ | ==== LEDs ==== | ||
+ | How to configure LEDs in general, see the LED section in the [[doc/uci/system]]. | ||
+ | |||
+ | The TL-MR3020 has 5 LEDs: | ||
+ | |||
+ | ^ LED name ^ LED print ^ Internal name ^ Trigger ^ | ||
+ | | Power | Power symbol | N/A (fixed supply) | N/A | | ||
+ | | 3G | Internet symbol | tl-mr3020:green:3g| ''USB:1-1'' | | ||
+ | | Wireless LAN | WLAN symbol | tl-mr3020:green:wlan | ''phy0tpt'' | | ||
+ | | LAN | LAN symbol| tl-mr3020:green:lan | ''netdev:eth0'' | | ||
+ | | WPS | WPS | tl-mr3020:green:wps | User preference | | ||
+ | |||
+ | ==== Buttons ==== | ||
+ | -> [[doc:howto:hardware.button]] | ||
+ | The TP-Link TL-MR3020 has one button and one sliding switch with three positions: | ||
+ | ^ BUTTON ^ Event ^ | ||
+ | | Sliding Switch | BTN_0 and BTN_1 | | ||
+ | | WPS Button | WPS | | ||
+ | |||
+ | The WPS button is located at the top (illuminated by the WPS LED) and can be easily pressed with a finger. The sliding switch is located at the side and has three positions: 3G, WISP, AP. | ||
+ | |||
+ | Sample scripts to read the sliding switch: [[https://forum.openwrt.org/viewtopic.php?pid=172111#p172111|on boot]], [[https://forum.openwrt.org/viewtopic.php?pid=172110#p172110|on switch change]], [[https://gist.github.com/jefferyto/8010733|to change network configurations]] | ||
+ | |||
+ | |||
+ | ===== Bootloader Mods ===== | ||
+ | |||
+ | Information about [[doc:techref:bootloader]] in general and [[doc:techref:bootloader:uboot|Das U-Boot]] in particular. | ||
+ | |||
+ | ==== U-Boot 1.1.4 modification for routers ==== | ||
+ | Forum member [[https://forum.openwrt.org/profile.php?id=72549|pepe2k]] made a modification of **U-Boot 1.1.4** for **Qualcomm Atheros** SoCs based devices (the project is still being developed, so new devices and SoCs will be supported in the future). | ||
+ | |||
+ | This modification started from [[http://code.google.com/p/wr703n-uboot-with-web-failsafe/|wr703n-uboot-with-web-failsafe]] project, but supports more devices, all modern web browsers, has a lot of improvements and other modifications (like U-Boot NetConsole, custom commands, overclocking possibilities etc.). | ||
+ | |||
+ | More information: | ||
+ | |||
+ | * Official repository on GitHub: [[https://github.com/pepe2k/u-boot_mod|U-Boot 1.1.4 modification for routers]] | ||
+ | * Discussion about this project on [[https://forum.openwrt.org/viewtopic.php?id=43237|OpenWrt forum]] | ||
+ | * An article (in Polish) about one of the first version of this project on [[http://www.tech-blog.pl/2013/03/29/zmodyfikowany-u-boot-dla-routerow-tp-link-z-atheros-ar9331-z-trybem-aktualizacji-oprogramowania-przez-www-i-konsola-sieciowa-netconsole/|www.tech-blog.pl]] | ||
+ | |||
+ | ===== Version 3.0 ===== | ||
+ | |||
+ | [[http://stereo.hq.phicoh.net/~philip/tp-link-mr3020-v3.0.jpg]] | ||
+ | |||
+ | The serial console is on the pad TP1 and TP2. TP2 is TX (console output) and TP1 is RX (keyboard input). | ||
+ | |||
+ | |||
+ | ===== Hardware Hacks ===== | ||
+ | |||
+ | ==== Simple directional antenna ==== | ||
+ | |||
+ | Swedish FreiFunk community [[http://pjodd.se|Pjodd]] have a tutorial for how to put MR3020 in a small metall bowl from IKEA and weather proofing it for outdoor use in order to give the router a directional gain of what seems to be about 5 dBi, allowing for two such installations to communicate with each other at a distance of perhaps 1 km. | ||
+ | |||
+ | http://wiki.pjodd.se/mediawiki/index.php/Blandtenna | ||
+ | |||
+ | {{:media:tplink:tl-mr3020:blandtenna_0.jpg?400|}} | ||
+ | |||
+ | ==== External Antenna Hack ==== | ||
+ | |||
+ | {{media:tplink:tl-mr3020:tl-mr3020_antenna-rpsmamod.jpg?450}} | ||
+ | {{media:tplink:tl-mr3020:tl-mr3020_antenna-pigtailmod.jpg?450}} | ||
+ | |||
+ | If you want to add an external antenna connector or would like to know more about the MR3020 power consumption in different op-states you can find more info [[https://apollo.open-resource.org/lab:argus#modifications|Apollo-NG MR3020 External Antenna Hack]] | ||
+ | |||
+ | ==== External antenna output power ==== | ||
+ | |||
+ | TL;DR: The signal dBm and signal distortion level sweetspot is somewhere between txpower 1000 and 1200. | ||
+ | |||
+ | Using region SE ''iw reg set SE'', a 20MHz wide signal on channel 9, I measured the following output power from one of my TL-MR3020 with external antenna: | ||
+ | |||
+ | || Signal dBm || Noise dB || txpower || | ||
+ | || -6 || >41 || 100 || | ||
+ | || -2 || >41 || 500 || | ||
+ | || 0 || >41 || 800 || | ||
+ | || 0.5 || >41 || 900 || | ||
+ | || 2 || || 1000 || | ||
+ | || 3 || || 1200 || | ||
+ | || 6 || 35 || 1500 || | ||
+ | || 7 || || 1800 || | ||
+ | || 7.5 || 28 || 2700 || | ||
+ | |||
+ | Where txpower was set using ''iw phy0 set txpower fixed n'' | ||
+ | and noise is the leaking distortion outside of the 20MHz signal bandwidth. | ||
+ | |||
+ | As a control I made a few measurements on a second TL-MR3020 with external antenna and got the following results: | ||
+ | |||
+ | || Signal dBm || Noise dB || txpower || | ||
+ | || -2 || >41 || 800 || | ||
+ | || 2 || 40 || 1200 || | ||
+ | || 4 || 36 || 1500 || | ||
+ | || 6 || 32 || 2600 || | ||
+ | |||
+ | The difference is rather small and probably due to soldering and possibly quality of analogue components on the PCB. Noise level is rather constant between the two tests though. | ||
+ | |||
+ | At the time of these tests the RP-SMA connectors was soldered on rather quick and dirty, and plenty of room was left between the connector and the PCB. | ||
+ | |||
+ | {{:media:tplink:tl-mr3020:not_so_well_soldered_rp-sma_on_pcb.png?400|Image of not so well soldered connector}} | ||
+ | |||
+ | Image of not so well soldered connector | ||
+ | |||
+ | I've now cut the top side connector pins shorter and soldered the connector very close to the PCB instead, plus scratched up a bit more ground on the back side of the PCB, which I also soldered the back side connector ground pins to. Both for a better signal and to make it more sturdy. With some luck this can have increased the signal strength by 1dBm and lowered the signal distortion. Didn't measure again though, just seen that it works better with less noise and greater connection speed. | ||
+ | |||
+ | {{:media:tplink:tl-mr3020:cut_rp-sma_connector_pins.png?400|Image of RP-SMA connector with cut pins}} | ||
+ | |||
+ | Image of RP-SMA connector with cut pins | ||
+ | |||
+ | {{:media:tplink:tl-mr3020:rp-sma_soldered_close_to_pcb.png?400|Image of RP-SMA with cut pins soldered close to PCB}} | ||
+ | |||
+ | Image of RP-SMA with cut pins soldered close to PCB | ||
+ | |||
+ | {{:media:tplink:tl-mr3020:scratch_backside_for_more_ground_to_rp-sma.png?400|Image of backside of PCB scratch to get more ground}} | ||
+ | |||
+ | Image of backside of PCB scratch to get more ground. Notice that I've only scratched for one pin on this image. In the end I scratched for both legs and soldered them on there, visible in the next image. | ||
+ | |||
+ | {{:media:tplink:tl-mr3020:rp-sma_soldered_to_ground_on_backside_of_pcb.png?400|Image of RP-SMA soldered also to ground of backside of PCB}} | ||
+ | |||
+ | Image of RP-SMA soldered also to ground of backside of PCB | ||
+ | |||
+ | ==== Signal distortion ==== | ||
+ | |||
+ | Is is very evident that the greater txpower, the greater amount of noise and distortion in the signal. The signal is very clear around txpower 800, while rather terrible when set to 1800 and more. | ||
+ | |||
+ | {{:media:tplink:tl-mr3020:800.png?200|Image of analysis of the 20MHz signal at txpower 800}} | ||
+ | Image of analysis of the 20MHz signal at txpower 800 | ||
+ | |||
+ | {{:media:tplink:tl-mr3020:900.png?200|Image of analysis of the 20MHz signal at txpower 900}} | ||
+ | Image of analysis of the 20MHz signal at txpower 900 | ||
+ | |||
+ | {{:media:tplink:tl-mr3020:1200.png?200|Image of analysis of the 20MHz signal at txpower 1200}} | ||
+ | Image of analysis of the 20MHz signal at txpower 1200 | ||
+ | |||
+ | {{:media:tplink:tl-mr3020:1800.png?200|Image of analysis of the 20MHz signal at txpower 1800}} | ||
+ | Image of analysis of the 20MHz signal at txpower 1800 | ||
+ | |||
+ | {{:media:tplink:tl-mr3020:2700.png?200|Image of analysis of the 20MHz signal at txpower 2700}} | ||
+ | Image of analysis of the 20MHz signal at txpower 2700 | ||
+ | |||
+ | |||
+ | Image of txpower 2700 is analyzed on a different rounter than the previous lower txpower images, mainly visible on the dBm and not the distortion. | ||
+ | |||
+ | Notice the amount of distortion outside of the 20MHz signal at 1800 compared to 1200 or 900. It is hard to say how much of this distortion is also available in the 20MHz signal, my guess is at least as much. This cripples the signal, making a greater txpower probably a worse signal with less speed than one without the distortion. | ||
+ | |||
+ | The txpower sweetspot is therefor estimated to be 1000-1200. This would equal a signal strength of 2-4dBm (1.5-2.5mW). To max that up to the common legal maximum of 100mW ERP you'll need an 18-21dBi antenna. You'll be much better of with a clean signal and a high gain antenna than attempting to crank up the signal strength to a level where it only cripple the signal with distortion. | ||
+ | |||
+ | ==== Adding I2C Bus ==== | ||
+ | |||
+ | If you want to add I2C bus to your MR3020, you can use GPIO 7 and 29. Remove R15 and R17, then add pullup between 3.3v and gpio pin. | ||
+ | |||
+ | {{media:tplink:tl-mr3020:tl-mr3020_i2c_01.jpg?600}} | ||
+ | |||
+ | {{media:tplink:tl-mr3020:tl-mr3020_i2c_02.jpg?600}} | ||
+ | |||
+ | Next step, add this line | ||
+ | <code> | ||
+ | i2c-gpio-custom bus0=0,7,29 | ||
+ | </code> | ||
+ | to /etc/modules.d/99-i2c | ||
+ | |||
+ | and load i2c-gpio-custom | ||
+ | |||
+ | You can find more info in french here http://www.equinoxefr.org/post/2012/11/12/mr3020-et-i2c-avec-les-gpio/ | ||
+ | |||
+ | |||
+ | ==== USB Hub Hack ==== | ||
+ | |||
+ | You can embedded usb hub to add more peripheral to your best router. | ||
+ | |||
+ | I hack a 3$ STOREX usb hub, a 2$ µSD card reader and a 10$ webcam to build a robot with my MR3020. | ||
+ | |||
+ | {{media:tplink:tl-mr3020:tl-mr3020_usbhub.jpg?600}} | ||
+ | |||
+ | |||
+ | More info in french on http://www.equinoxefr.org/post/2012/11/05/projet-de-robot-wifi-torture-dun-routeur-tplink-mr3020/ | ||
+ | |||
+ | ==== GPIO Pinout ==== | ||
+ | |||
+ | {{media:tplink:tl-mr3020:tl-mr3020_top-pcb-gpio-pins.jpg?400|}} | ||
+ | |||
+ | ===== USB port and monitoring Serial Console via USB-Serial ===== | ||
+ | |||
+ | The USB port on the TL-MR3020 is not compatible with USB devices that use low-speed (1.5Mbps) and only works properly with USB devices that use fast-speed (12Mbps) or high-speed (480Mbps). You can however plug a USB-Serial adapter as long as you plug that through a <$10 USB 2.0 hub that reports itself in dmesg as using high-speed (480Mbps); USB hubs that use fast-speed (even if they are marketed as USB 2.0) do not work in the TL-MR3020 when a low-speed device is connected in one of its ports. While you're at it, use another port of the USB hub to plug in a USB thumb drive and write data there (like serial console logs) so as not to wear out the built-in flash. | ||
+ | |||
+ | You can check if your device is using low, fast or high speed with dmesg command. | ||
+ | |||
+ | See this page for more tips and how to create a serial console server out of your TL-MR3020: | ||
+ | [[http://marc.merlins.org/perso/linux/post_2012-12-05_Serial-Console-With-WR703N.html]] | ||
+ | |||
+ | See this forum thread for more info about why the USB port does not work with low speed devices: | ||
+ | [[https://forum.openwrt.org/viewtopic.php?id=39956]] | ||
+ | |||
+ | ===== Boot log ===== | ||
+ | |||
+ | ==== OEM Bootlog ==== | ||
+ | |||
+ | |||
+ | <WRAP bootlog> | ||
+ | <nowiki>U-Boot 1.1.4 (Aug 17 2011 - 09:25:09) | ||
+ | |||
+ | AP121-2MB (ar9330) U-boot | ||
+ | |||
+ | DRAM: 32 MB | ||
+ | led turning on for 1s... | ||
+ | id read 0x100000ff | ||
+ | flash size 4194304, sector count = 64 | ||
+ | Flash: 4 MB | ||
+ | Using default environment | ||
+ | |||
+ | In: serial | ||
+ | Out: serial | ||
+ | Err: serial | ||
+ | Net: ag7240_enet_initialize... | ||
+ | No valid address in Flash. Using fixed address | ||
+ | No valid address in Flash. Using fixed address | ||
+ | : cfg1 0x5 cfg2 0x7114 | ||
+ | eth0: 00:03:7f:09:0b:ad | ||
+ | ag7240_phy_setup | ||
+ | eth0 up | ||
+ | : cfg1 0xf cfg2 0x7214 | ||
+ | eth1: 00:03:7f:09:0b:ad | ||
+ | athrs26_reg_init_lan | ||
+ | ATHRS26: resetting s26 | ||
+ | ATHRS26: s26 reset done | ||
+ | ag7240_phy_setup | ||
+ | eth1 up | ||
+ | eth0, eth1 | ||
+ | Autobooting in 1 seconds | ||
+ | ## Booting image at 9f020000 ... | ||
+ | Uncompressing Kernel Image ... OK | ||
+ | |||
+ | Starting kernel ... | ||
+ | |||
+ | Booting AR9330(Hornet)... | ||
+ | Linux version 2.6.31--LSDK-9.2.0.312 (root@bogon) (gcc version 4.3.3 (GCC) ) #185 Fri Oct 21 16:26:50 CST 2011 | ||
+ | flash_size passed from bootloader = 4 | ||
+ | CPU revision is: 00019374 (MIPS 24Kc) | ||
+ | Determined physical RAM map: | ||
+ | memory: 02000000 @ 00000000 (usable) | ||
+ | User-defined physical RAM map: | ||
+ | memory: 02000000 @ 00000000 (usable) | ||
+ | Zone PFN ranges: | ||
+ | Normal 0x00000000 -> 0x00002000 | ||
+ | Movable zone start PFN for each node | ||
+ | early_node_map[1] active PFN ranges | ||
+ | 0: 0x00000000 -> 0x00002000 | ||
+ | Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128 | ||
+ | Kernel command line: 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 | ||
+ | PID hash table entries: 128 (order: 7, 512 bytes) | ||
+ | Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) | ||
+ | Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) | ||
+ | Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes. | ||
+ | Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes | ||
+ | Writing ErrCtl register=00000000 | ||
+ | Readback ErrCtl register=00000000 | ||
+ | Memory: 29864k/32768k available (1889k kernel code, 2904k reserved, 524k data, 116k init, 0k highmem) | ||
+ | Hierarchical RCU implementation. | ||
+ | NR_IRQS:128 | ||
+ | plat_time_init: plat time init done | ||
+ | Calibrating delay loop... 266.24 BogoMIPS (lpj=532480) | ||
+ | Mount-cache hash table entries: 512 | ||
+ | NET: Registered protocol family 16 | ||
+ | ===== ar7240_platform_init: 0 | ||
+ | |||
+ | |||
+ | Whoops! This kernel is for product mr3020 v1.0! | ||
+ | |||
+ | bio: create slab <bio-0> at 0 | ||
+ | SCSI subsystem initialized | ||
+ | usbcore: registered new interface driver usbfs | ||
+ | usbcore: registered new interface driver hub | ||
+ | usbcore: registered new device driver usb | ||
+ | NET: Registered protocol family 2 | ||
+ | IP route cache hash table entries: 1024 (order: 0, 4096 bytes) | ||
+ | TCP established hash table entries: 1024 (order: 1, 8192 bytes) | ||
+ | TCP bind hash table entries: 1024 (order: 0, 4096 bytes) | ||
+ | TCP: Hash tables configured (established 1024 bind 1024) | ||
+ | TCP reno registered | ||
+ | NET: Registered protocol family 1 | ||
+ | AR7240 GPIOC major 0 | ||
+ | squashfs: version 4.0 (2009/01/31) Phillip Lougher | ||
+ | NTFS driver 2.1.29 [Flags: R/O]. | ||
+ | msgmni has been set to 58 | ||
+ | alg: No test for lzma (lzma-generic) | ||
+ | alg: No test for stdrng (krng) | ||
+ | io scheduler noop registered | ||
+ | io scheduler anticipatory registered | ||
+ | io scheduler deadline registered | ||
+ | io scheduler cfq registered (default) | ||
+ | Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled | ||
+ | ttyS0: detected caps 00000000 should be 00000100 | ||
+ | serial8250.0: ttyS0 at MMIO 0xb8020000 (irq = 19) is a 16550A | ||
+ | console [ttyS0] enabled | ||
+ | PPP generic driver version 2.4.2 | ||
+ | NET: Registered protocol family 24 | ||
+ | cmdlinepart partition parsing not available | ||
+ | set partition boot | ||
+ | set partition kernel | ||
+ | set partition rootfs | ||
+ | set partition config | ||
+ | set partition art | ||
+ | set partition ÿ | ||
+ | Searching for RedBoot partition table | ||
+ | 5 RedBoot partitions found on MTD device ar7240-nor0 | ||
+ | Creating 5 MTD partitions on "ar7240-nor0": | ||
+ | 0x000000000000-0x000000020000 : "boot" | ||
+ | 0x000000020000-0x000000120000 : "kernel" | ||
+ | 0x000000120000-0x0000003e0000 : "rootfs" | ||
+ | 0x0000003e0000-0x0000003f0000 : "config" | ||
+ | 0x0000003f0000-0x000000400000 : "art" | ||
+ | ->Oops: flash id 0x10215 . | ||
+ | ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver | ||
+ | Port Status 1c000004 | ||
+ | ar7240-ehci ar7240-ehci.0: ATH EHCI | ||
+ | ar7240-ehci ar7240-ehci.0: new USB bus registered, assigned bus number 1 | ||
+ | ehci_reset Intialize USB CONTROLLER in host mode: 3 | ||
+ | ehci_reset Port Status 1c000000 | ||
+ | ar7240-ehci ar7240-ehci.0: irq 3, io mem 0x1b000000 | ||
+ | ehci_reset Intialize USB CONTROLLER in host mode: 3 | ||
+ | ehci_reset Port Status 1c000000 | ||
+ | ar7240-ehci ar7240-ehci.0: USB 2.0 started, EHCI 1.00 | ||
+ | usb usb1: configuration #1 chosen from 1 choice | ||
+ | hub 1-0:1.0: USB hub found | ||
+ | hub 1-0:1.0: 1 port detected | ||
+ | TCP cubic registered | ||
+ | NET: Registered protocol family 17 | ||
+ | 802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com> | ||
+ | All bugs added by David S. Miller <davem@redhat.com> | ||
+ | ar7240wdt_init: Registering WDT success | ||
+ | VFS: Mounted root (squashfs filesystem) readonly on device 31:2. | ||
+ | Freeing unused kernel memory: 116k freed | ||
+ | init started: BusyBox v1.01 (2011.04.01-07:49+0000) multi-call binary | ||
+ | This Board use 2.6.31 | ||
+ | xt_time: kernel timezone is -0000 | ||
+ | nf_conntrack version 0.5.0 (512 buckets, 5120 max) | ||
+ | ip_tables: (C) 2000-2006 Netfilter Core Team | ||
+ | insmod: cannot open module `/lib/modules/2.6.31/kernel/iptable_raw.ko': No such file or directory | ||
+ | insmod: cannot open module `/lib/modules/2.6.31/kernel/flashid.ko': No such file or directory | ||
+ | PPPoL2TP kernel driver, V1.0 | ||
+ | PPTP driver version 0.8.3 | ||
+ | insmod: cannot open module `/lib/modules/2.6.31/kernel/harmony.ko': No such file or directory | ||
+ | |||
+ | (none) mips #185 Now flash open! | ||
+ | Fri Oct 21 16:26:50 CST 2011 (none) | ||
+ | (none) login: Now flash open! | ||
+ | ATHR_GMAC: Length per segment 1536 | ||
+ | ATHR_GMAC: fifo cfg 3 01f00140 | ||
+ | ATHR_GMAC: Mac address for unit 1:bf1f0006 | ||
+ | ATHR_GMAC: 6e:09:80:e4:67:1b | ||
+ | ATHR_GMAC: Max segments per packet : 1 | ||
+ | ATHR_GMAC: Max tx descriptor count : 40 | ||
+ | ATHR_GMAC: Max rx descriptor count : 96 | ||
+ | ATHR_GMAC: Mac capability flags : 4D83 | ||
+ | ATHR_GMAC: Mac address for unit 0:bf1f0000 | ||
+ | ATHR_GMAC: 12:03:cb:60:38:f7 | ||
+ | ATHR_GMAC: Max segments per packet : 1 | ||
+ | ATHR_GMAC: Max tx descriptor count : 40 | ||
+ | ATHR_GMAC: Max rx descriptor count : 252 | ||
+ | ATHR_GMAC: Mac capability flags : 4403 | ||
+ | athr_gmac_ring_alloc Allocated 640 at 0x81e79800 | ||
+ | athr_gmac_ring_alloc Allocated 4032 at 0x81d63000 | ||
+ | Setting Drop CRC Errors, Pause Frames and Length Error frames | ||
+ | Setting PHY...mac 0 | ||
+ | athr_gmac_ring_alloc Allocated 640 at 0x81e79400 | ||
+ | athr_gmac_ring_alloc Allocated 1536 at 0x81f22000 | ||
+ | athr_gmac_mii_setup: MDC check failed | ||
+ | Setting Drop CRC Errors, Pause Frames and Length Error frames | ||
+ | ATHRS26: resetting s26 | ||
+ | ATHRS26: s26 reset done | ||
+ | Setting PHY...mac 1 | ||
+ | device eth0 entered promiscuous mode | ||
+ | Now flash open! | ||
+ | nf_conntrack_rtsp v0.6.21 loading | ||
+ | nf_nat_rtsp v0.6.21 loading | ||
+ | asf: module license 'Proprietary' taints kernel. | ||
+ | Disabling lock debugging due to kernel taint | ||
+ | ath_hal: 0.9.17.1 (AR9380, DEBUG, REGOPS_FUNC, WRITE_EEPROM, 11D) | ||
+ | ath_rate_atheros: Copyright (c) 2001-2005 Atheros Communications, Inc, All Rights Reserved | ||
+ | ath_dev: Copyright (c) 2001-2007 Atheros Communications, Inc, All Rights Reserved | ||
+ | ath_ahb: 9.2.0_U5.508 (Atheros/multi-bss) | ||
+ | Boostrap clock 25MHz | ||
+ | ar9300RadioAttach: Need analog access recipe!! | ||
+ | Restoring Cal data from Flash | ||
+ | ath_get_caps[4735] rx chainmask mismatch actual 1 sc_chainmak 0 | ||
+ | ath_get_caps[4710] tx chainmask mismatch actual 1 sc_chainmak 0 | ||
+ | wifi0: Atheros 9380: mem=0xb8100000, irq=2 | ||
+ | wlan_vap_create : enter. devhandle=0x80c042c0, opmode=IEEE80211_M_HOSTAP, flags=0x1 | ||
+ | wlan_vap_create : exit. devhandle=0x80c042c0, opmode=IEEE80211_M_HOSTAP, flags=0x1. | ||
+ | VAP device ath0 created | ||
+ | |||
+ | DES SSID SET=TP-LINK_POCKET_3020_3ABB7A | ||
+ | ieee80211_scan_unregister_event_handler: Failed to unregister evhandler=c0a048a0 arg=81e9e2c0 | ||
+ | wlan_vap_delete : enter. vaphandle=0x81e9c000 | ||
+ | wlan_vap_delete : exit. vaphandle=0x81e9c000 | ||
+ | wlan_vap_create : enter. devhandle=0x80c042c0, opmode=IEEE80211_M_HOSTAP, flags=0x1 | ||
+ | wlan_vap_create : exit. devhandle=0x80c042c0, opmode=IEEE80211_M_HOSTAP, flags=0x1. | ||
+ | VAP device ath0 created | ||
+ | |||
+ | DES SSID SET=TP-LINK_POCKET_3020_3ABB7A | ||
+ | ieee80211_ioctl_siwmode: imr.ifm_active=393856, new mode=3, valid=1 | ||
+ | WARNING: Fragmentation with HT mode NOT ALLOWED!! | ||
+ | device ath0 entered promiscuous mode | ||
+ | br0: port 2(ath0) entering forwarding state | ||
+ | ieee80211_ioctl_siwmode: imr.ifm_active=1442432, new mode=3, valid=1 | ||
+ | br0: port 2(ath0) entering disabled state | ||
+ | |||
+ | DES SSID SET=TP-LINK_POCKET_3020_3ABB7A | ||
+ | br0: port 2(ath0) entering forwarding state | ||
+ | gpio_tricolor_led_write 699 | ||
+ | green_led_onoff = 1 | ||
+ | |||
+ | TL-MR3020 mips #185 Fri Oct 21 16:26:50 CST 2011 (none) | ||
+ | TL-MR3020 login:</nowiki> | ||
+ | </WRAP>\\ | ||
+ | |||
+ | ==== OpenWrt Boot Log and Info ==== | ||
+ | * [[https://gist.github.com/2059480#file_dmesg|dmesg TP-Link TL-MR3020]] | ||
+ | |||
+ | ===== Link Dump ===== | ||
+ | * Product web-page : [[http://www.tp-link.com/en/products/details/?model=TL-MR3020#fea|TL-MR3020]] | ||
+ | * The latest official firmware is available [[http://www.tp-link.com/en/support/download/?model=TL-MR3020|here]] | ||
+ | * The official GPL code is available [[http://www.tp-link.com/resources/gpl/150Router.tar|here]]. | ||
+ | * <del>A backup of the whole original SPI flash content is available from [[|here(DEAD LINK)]].</del> | ||
+ | * [[http://www.heise.de/netze/artikel/Taschenrouter-als-IPv6-Verteiler-1440851.html|Taschenrouter als IPv6-Verteiler (auf Deutsch)]] | ||
+ | * [[https://apollo.open-resource.org/lab:argus|Interesting webpage with more data about power consumption and so on]] | ||
+ | |||
+ | ==== Relevant Forum Links ==== | ||
+ | [[https://forum.openwrt.org/viewtopic.php?id=33429|TP-Link TL-MR3020 Support]] | ||
+ | |||
+ | |||
+ | ===== Additional Photos===== | ||
+ | |||
+ | {{media:tplink:tl-mr3020:tl-mr3020_unit_bottom_00.jpg?0x300| TL-MR3020 Unit Underside}} | ||
+ | {{media:tplink:tl-mr3020:tl-mr3020_identification_bottom_00.jpg?0x300|TL-MR3020 Bottom Info}} | ||
+ | {{media:tplink:tl-mr3020:tl-mr3020_identification_bottom_01.jpg?0x300|TL-MR3020 Bottom Info Closeup}} | ||
+ | {{media:tplink:tl-mr3020:tl-mr3020_identification_side_00.jpg?0x300|TL-MR3020 Side Info}} | ||
+ | {{media:tplink:tl-mr3020:tl-mr3020_usb_psu_uk_00.jpg?0x300|TL-MR3020 PSU UK}} | ||
+ | |||
+ | ===== Tags ===== | ||
+ | {{tag>FastEthernet 1NIC 1WNIC no_switch 1Ant USB2.0 1USB Serial integrated 802.11bgn AR9331 ath9k 32RAM 4Flash MIPS MIPS32 24Kc AP121 portable_router usb_powered}} |