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
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 | ??? |
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: | ??? |
Connect serial TTL to pads TP1 and TP2 - 57600 8N1.
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
192.168.2.1
admin
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
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
.