User Tools

Site Tools


toh:tenda:a6

Tenda A6 (WL0175)

Work in Progress!
This page is a continuous work in progress. You can edit this page to contribute information.

Ralink RT5350F

The device is a mobile 150Mbit wireless N router with

  • Ralink RT5350F
  • single internal antenna
  • single 10/100 Fast-Ethernet Interface
  • 4 MB Flash
  • 32 MB SDRAM
  • USB-powered (no data)
ATTENTION:
The image is not working when flashed through the firmware upgrade function of the original firmware!

Hardware

Model Version CPU Ram Flash Network USB Serial JTag
A6 / WL0175 V1.0 Ralink RT5350F@360MHz 32 MiB 4 MiB 1x FastEthernet 1x 802.11n/g/b 2.0 unsoldered Yes ???

Info

Architecture: MIPS 24KEc
Vendor: Tenda
Bootloader: U-Boot
System-On-Chip: Ralink RT5350F
CPU Speed: 360 Mhz
Flash size / chip: 4 MiB / MX25L3206E
RAM size / chip: 32 MiB / EtronTech EM63A165TS
Wireless: RT3xxx (SoC)
Ethernet: 1 x 10/100 (port 1 of internal switch)
USB: unsoldered contacts: J100
Serial: Yes (contact pads TP1 & TP2 - 57600 8N1)
JTAG: ???

Serial Port

Connect serial TTL to pads TP1 and TP2 - 57600 8N1.

original Firmware

Version 3.00.20 (A6_V3.0.20_en.bin):

  • Linux version 2.6.21 (root@xiongshubo) (gcc version 3.4.2) #56 Sun Dec 2 10:29:58 EST 2012
  • squashfs LZMA packed with swapped fields (patch for squashfs tools)
  • default ip address: 192.168.2.1
  • default password: admin
  • only one service running (http at port 80)
  • BusyBox v1.12.1 (2011-08-13 05:45:45 CST) built-in shell (ash)
  • no telnet, no ssh

Flash Layout

dev:    size   erasesize  name
mtd0: 00400000 00010000 "ALL"
mtd1: 00030000 00010000 "Bootloader"
mtd2: 00010000 00010000 "Config"
mtd3: 00010000 00010000 "Factory"
mtd4: 000ffbe2 00010000 "Kernel"
mtd5: 002b041e 00010000 "RootFS"
mtd6: 003b0000 00010000 "Kernel_RootFS"

kernel command line:

# cat /proc/cmdline 
console=ttyS1,57600n8 root=/dev/mtdblock5

OpenWRT

There are patches for different versions of OpenWRT. It seems that support might be easy.

According this forum thread you can install via original firmware using the initram version.

I adopted the patches above to the following. This compiles well with CHAOS CALMER (Bleeding Edge, r45856).

diff -purN openwrt/target/linux/ramips/base-files/etc/board.d/01_leds prosody/target/linux/ramips/base-files/etc/board.d/01_leds --- openwrt/target/linux/ramips/base-files/etc/board.d/01_leds 2015-06-27 18:53:47.785431411 +0200 +++ prosody/target/linux/ramips/base-files/etc/board.d/01_leds 2015-06-27 19:10:55.881440441 +0200 @@ -35,6 +35,9 @@ case $board in a5-v11) ucidef_set_led_default "power" "POWER" "a5-v11:red:power" "1" ;; + a6) + ucidef_set_led_netdev "eth" "ETH" "tenda:blue:ld1" "eth0" + ;; air3gii) set_wifi_led "airlive:green:wlan" set_usb_led "airlive:green:mobile" diff -purN openwrt/target/linux/ramips/base-files/etc/board.d/02_network prosody/target/linux/ramips/base-files/etc/board.d/02_network --- openwrt/target/linux/ramips/base-files/etc/board.d/02_network 2015-06-27 18:53:47.785431411 +0200 +++ prosody/target/linux/ramips/base-files/etc/board.d/02_network 2015-06-27 19:12:07.445441070 +0200 @@ -42,6 +42,11 @@ ramips_setup_interfaces() ucidef_add_switch "switch0" "1" "1" ucidef_add_switch_vlan "switch0" "1" "0 6t" ;; + a6) + ucidef_set_interface_lan "eth0" + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "0 6" + ;; 3g150b | \ 3g300m | \ diff -purN openwrt/target/linux/ramips/base-files/etc/diag.sh prosody/target/linux/ramips/base-files/etc/diag.sh --- openwrt/target/linux/ramips/base-files/etc/diag.sh 2015-06-27 18:53:47.785431411 +0200 +++ prosody/target/linux/ramips/base-files/etc/diag.sh 2015-06-27 18:56:21.265432759 +0200 @@ -12,6 +12,9 @@ get_status_led() { 3g150b | 3g300m | w150m) status_led="tenda:blue:ap" ;; +# a6) # we use the led for link activity in /etc/rc.local +# status_led="tenda:blue:ld1" +# ;; ai-br100) status_led="aigale:blue:wlan" ;; diff -purN openwrt/target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips prosody/target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips --- openwrt/target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips 2015-06-01 21:32:07.677165670 +0200 +++ prosody/target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips 2015-06-27 19:15:28.037442832 +0200 @@ -6,7 +6,11 @@ . /lib/ramips.sh ramips_set_preinit_iface() { - RT3X5X=`cat /proc/cpuinfo | egrep "(RT3.5|RT5350|MT7628)"` + RT3X5X=`egrep "(RT3.5|RT5350|MT7628)" /proc/cpuinfo` + ifname=eth0 + + local board=$(ramips_board_name) + if [ -n "${RT3X5X}" ]; then swconfig dev rt305x set reset 1 fi @@ -21,13 +25,20 @@ ramips_set_preinit_iface() { # https://www.mail-archive.com/openwrt-devel@lists.openwrt.org/msg19870.html swconfig dev rt305x set enable_vlan 1 swconfig dev rt305x vlan 1 set ports "0 6" - swconfig dev rt305x port 6 set untag 0 + if [ "$board" = "a6" ]; then + swconfig dev rt305x port 0 set doubletag 1 + swconfig dev rt305x port 1 set disable 1 + swconfig dev rt305x port 2 set disable 1 + swconfig dev rt305x port 3 set disable 1 + swconfig dev rt305x port 4 set disable 1 + swconfig dev rt305x port 6 set doubletag 1 + else + swconfig dev rt305x port 6 set untag 0 + vconfig add eth0 1 + ifname=eth0.1 + fi swconfig dev rt305x set apply 1 - vconfig add eth0 1 ifconfig eth0 up - ifname=eth0.1 - else - ifname=eth0 fi } diff -purN openwrt/target/linux/ramips/base-files/lib/ramips.sh prosody/target/linux/ramips/base-files/lib/ramips.sh --- openwrt/target/linux/ramips/base-files/lib/ramips.sh 2015-06-27 18:53:47.785431411 +0200 +++ prosody/target/linux/ramips/base-files/lib/ramips.sh 2015-06-27 19:16:01.989443130 +0200 @@ -343,6 +343,9 @@ ramips_board_detect() { *"Tenda 3G150B") name="3g150b" ;; + *"Tenda A6") + name="a6" + ;; *"Tenda W306R V2.0") name="w306r-v20" ;; diff -purN openwrt/target/linux/ramips/base-files/lib/upgrade/platform.sh prosody/target/linux/ramips/base-files/lib/upgrade/platform.sh --- openwrt/target/linux/ramips/base-files/lib/upgrade/platform.sh 2015-06-27 18:53:47.785431411 +0200 +++ prosody/target/linux/ramips/base-files/lib/upgrade/platform.sh 2015-06-27 19:16:39.653443461 +0200 @@ -19,6 +19,7 @@ platform_check_image() { 3g150b | \ 3g300m | \ a5-v11 | \ + a6 | \ air3gii | \ ai-br100 |\ all0239-3g | \ diff -purN openwrt/target/linux/ramips/dts/A6.dts prosody/target/linux/ramips/dts/A6.dts --- openwrt/target/linux/ramips/dts/A6.dts 1970-01-01 01:00:00.000000000 +0100 +++ prosody/target/linux/ramips/dts/A6.dts 2015-06-27 19:17:56.193444133 +0200 @@ -0,0 +1,94 @@ +/dts-v1/; + +/include/ "rt5350.dtsi" + +/ { + compatible = "A6", "ralink,rt5350-soc"; + model = "Tenda A6"; + + palmbus@10000000 { + spi@b00 { + status = "okay"; + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "mx25l3205d"; + reg = <0 0>; + linux,modalias = "m25p80", "mx25l3205d"; + spi-max-frequency = <10000000>; + + partition@0 { + label = "u-boot"; + reg = <0x0 0x30000>; + read-only; + }; + + partition@30000 { + label = "u-boot-env"; + reg = <0x30000 0x10000>; + read-only; + }; + + factory: partition@40000 { + label = "factory"; + reg = <0x40000 0x10000>; + read-only; + }; + + partition@50000 { + label = "firmware"; + reg = <0x50000 0x1fb0000>; + }; + }; + }; + }; + + pinctrl { + state_default: pinctrl0 { + gpio { + ralink,group = "i2c", "jtag", "uartf"; + ralink,function = "gpio"; + }; + }; + }; + + esw@10110000 { + ralink,portmap = <0x3f>; + }; + + ehci@101c0000 { + status = "okay"; + }; + + ohci@101c1000 { + status = "okay"; + }; + + gpio-leds { + compatible = "gpio-leds"; + ld1 { + label = "tenda:blue:ld1"; + gpios = <&gpio0 7 1>; + }; + }; + + ethernet@10100000 { + mtd-mac-address = <&factory 0x28>; + }; + + wmac@10180000 { + ralink,mtd-eeprom = <&factory 0>; + }; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <20>; + reset_wps { + label = "reset_wps"; + gpios = <&gpio0 0 1>; + linux,code = <0x198>; + }; + }; +}; diff -purN openwrt/target/linux/ramips/image/Makefile prosody/target/linux/ramips/image/Makefile --- openwrt/target/linux/ramips/image/Makefile 2015-06-27 18:53:47.789431411 +0200 +++ prosody/target/linux/ramips/image/Makefile 2015-06-27 19:19:01.969444711 +0200 @@ -426,6 +426,8 @@ Image/Build/Profile/3G300M=$(call BuildF Image/Build/Profile/A5-V11=$(call BuildFirmware/Poray4M/$(1),$(1),a5-v11,A5-V11) +Image/Build/Profile/A6=$(call BuildFirmware/Default4M/$(1),$(1),a6,A6) + Image/Build/Profile/AIR3GII=$(call BuildFirmware/Default4M/$(1),$(1),air3gii,AIR3GII) define BuildFirmware/UIMAGE_8M @@ -692,6 +694,7 @@ define Image/Build/Profile/Default $(call Image/Build/Profile/3G150B,$(1)) $(call Image/Build/Profile/3G300M,$(1)) $(call Image/Build/Profile/A5-11,$(1)) + $(call Image/Build/Profile/A6,$(1)) $(call Image/Build/Profile/AIR3GII,$(1)) $(call Image/Build/Profile/ALL02393G,$(1)) $(call Image/Build/Profile/ALL0256N,$(1)) diff -purN openwrt/target/linux/ramips/rt305x/profiles/tenda.mk prosody/target/linux/ramips/rt305x/profiles/tenda.mk --- openwrt/target/linux/ramips/rt305x/profiles/tenda.mk 2015-06-01 21:32:07.693165670 +0200 +++ prosody/target/linux/ramips/rt305x/profiles/tenda.mk 2015-06-27 19:41:22.257456483 +0200 @@ -31,6 +31,18 @@ endef $(eval $(call Profile,3G300M)) +define Profile/A6 + NAME:=Tenda A6 + PACKAGES:=\ + kmod-ledtrig-netdev kmod-i2c-core kmod-i2c-gpio +endef + +define Profile/A6/Description + Package set for Tenda A6 +endef + +$(eval $(call Profile,A6)) + define Profile/W306R_V20 NAME:=Tenda W306R V2.0 PACKAGES:=


I used the serial interface and the flash funtionality of u-boot.

The initrd image should work being flashed using the update function of the original firmware.

When it works flash the squashfs image using sysupgrade.

Tags

toh/tenda/a6.txt · Last modified: 2015/12/14 11:20 by tmomas