Tenda A6 (WL0175)
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)
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
.