diff mbox

[OpenWrt-Devel] ramips: add support for Intenso Memory 2 Move USB 3.0

Message ID 2766551.4pBuPnbTJq@debian64
State Accepted
Headers show

Commit Message

Christian Lamparter Jan. 15, 2015, 9:47 p.m. UTC
This adds support for a rt5350-based "portable nas" solution
from Intenso. The board comes with 32M RAM and 8M Flash, the
built-in HDD is connected/accessible via a usb3.0<->sata
bridge VLI VL701.

The device has 1 Ethernet port (100M/10M), 1 micro b usb 3.0
socket (for charging the battery, or accessing the hdd directly).
Wireless connectivity is provided by the rt5350 SoC [i.e.:
802.11n 1x1 2.4 GHz with a pcb antenna.]

Serial, leds, wifi, ethernet and usb are tested and
as far as I can tell: they are working fine (tm).

Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
---
Any comments/suggestions or wishes? Most of the work is
based/taken from other devices. So apart from some non-obvious
stuff, it should all be fine too. 

What is a bit unique: the way of flashing the device. This
will require a tftp server [hardcoded to 192.168.1.201]
and a few cables to the uart. I'll write a "how to flash 
openwrt on a m2m" once this patch [or a better version] is
accepted.

Regards,
Christian
---
 target/linux/ramips/base-files/etc/board.d/01_leds |   4 +
 .../linux/ramips/base-files/etc/board.d/02_network |   5 +
 target/linux/ramips/base-files/etc/diag.sh         |   3 +
 target/linux/ramips/base-files/lib/ramips.sh       |   3 +
 .../ramips/base-files/lib/upgrade/platform.sh      |   1 +
 target/linux/ramips/dts/M2M.dts                    | 113 +++++++++++++++++++++
 target/linux/ramips/image/Makefile                 |   3 +
 target/linux/ramips/rt305x/profiles/m2m.mk         |  21 ++++
 8 files changed, 153 insertions(+)
 create mode 100644 target/linux/ramips/dts/M2M.dts
 create mode 100644 target/linux/ramips/rt305x/profiles/m2m.mk

Comments

John Crispin Jan. 17, 2015, 6:48 a.m. UTC | #1
On 15/01/2015 22:47, Christian Lamparter wrote:
> This adds support for a rt5350-based "portable nas" solution
> from Intenso. The board comes with 32M RAM and 8M Flash, the
> built-in HDD is connected/accessible via a usb3.0<->sata
> bridge VLI VL701.
> 

[....]

> diff --git a/target/linux/ramips/rt305x/profiles/m2m.mk b/target/linux/ramips/rt305x/profiles/m2m.mk
> new file mode 100644
> index 0000000..e5cb6b8
> --- /dev/null
> +++ b/target/linux/ramips/rt305x/profiles/m2m.mk
> @@ -0,0 +1,20 @@
> +#
> +# Copyright (C) 2015 OpenWrt.org
> +#
> +# This is free software, licensed under the GNU General Public License v2.
> +# See /LICENSE for more information.
> +#
> +
> +define Profile/M2M
> +	NAME:=Intenso Memory 2 Move
> +	PACKAGES:=\
> +		kmod-ledtrig-netdev kmod-ledtrig-timer kmod-leds-gpio \
> +		kmod-usb-core kmod-usb2 kmod-usb-storage kmod-scsi-core \
> +		kmod-fs-ext4 kmod-fs-vfat block-mount
> +endef
> +

not sure about the filesystem selection. what filesystem is on the disc
when it is shipped ?



> +define Profile/M2M/Description
> +	Package set for Intenso Memory 2 Move USB 3.0
> +endef
> +
> +$(eval $(call Profile,M2M))
>
Christian Lamparter Jan. 17, 2015, 1:49 p.m. UTC | #2
On Saturday, January 17, 2015 07:48:24 AM John Crispin wrote:
> On 15/01/2015 22:47, Christian Lamparter wrote:
> > This adds support for a rt5350-based "portable nas" solution
> > from Intenso. The board comes with 32M RAM and 8M Flash, the
> > built-in HDD is connected/accessible via a usb3.0<->sata
> > bridge VLI VL701.

BTW: In the meantime, I was able to find the Chinese distributor
for this product. The devices seem to be sold by "IOVST" and
they call it the "UIS700HD" [0]. 

However, this might not be the hardware vendor. The RT2860.bin in
the rootfs has ApCliSsid set to "Tenda_501500". But I haven't
found anything remotely close on Tenda's product website. 

my question is: should I rename the profile (and the files) to:
UIS700HD then?
I would like to keep the Intenso name, because they provided 
me/us/anyone with at least a (partially very useful)
"GPL source" for their product on their website [1].

> > diff --git a/target/linux/ramips/rt305x/profiles/m2m.mk b/target/linux/ramips/rt305x/profiles/m2m.mk
> > new file mode 100644
> > index 0000000..e5cb6b8
> > --- /dev/null
> > +++ b/target/linux/ramips/rt305x/profiles/m2m.mk
> > @@ -0,0 +1,20 @@
> > +#
> > +# Copyright (C) 2015 OpenWrt.org
> > +#
> > +# This is free software, licensed under the GNU General Public License v2.
> > +# See /LICENSE for more information.
> > +#
> > +
> > +define Profile/M2M
> > +	NAME:=Intenso Memory 2 Move
> > +	PACKAGES:=\
> > +		kmod-ledtrig-netdev kmod-ledtrig-timer kmod-leds-gpio \
> > +		kmod-usb-core kmod-usb2 kmod-usb-storage kmod-scsi-core \
> > +		kmod-fs-ext4 kmod-fs-vfat block-mount
> > +endef
> > +
> 
> not sure about the filesystem selection. what filesystem is on the disc
> when it is shipped ?

The HDD was originally formatted with a single 500GB (size of the HDD) 
vfat[FAT32] partition. The original firmware supports vfat, exfat (via
fuse), ntfs (via tuxera tntfs module) and ext2 (ext2 is used exclusively
for updating the device firmware. It might be only available for the
ramdisk uimage?! see notes about upfs [2]).

The rootfs has a few traces of additional support [i.e.: they are
listed in scripts or have installed fstools] for hfsplus and xfs.
But as far as I can tell, they won't work.
 
BTW: I would like to generate a ramdisk image by default too 
(I was thinking of adding FEATURES+=ramdisk). The reason is
that this would make flashing the device easier (load the
ramdisk image via tftp and then use sysupgrade with the
squashfs-sysupgrade image).

However, this would of course cause all other rt305x devices
to build the ramdisk too! [which is probably not ideal. So, 
is there another way?]. 

Regards,
Christian

[0] <http://www.iovst.com/product/article-41.html>
[1] <http://www.intenso.de/downloads.php?kategorie=29&&produkt=1357297608>
[2] <http://hckohwnotes.blogspot.de/2014/05/debian-on-intenso-memory-2-move-intenso.html>
John Crispin Jan. 17, 2015, 2:09 p.m. UTC | #3
On 17/01/2015 14:49, Christian Lamparter wrote:
> On Saturday, January 17, 2015 07:48:24 AM John Crispin wrote:
>> On 15/01/2015 22:47, Christian Lamparter wrote:
>>> This adds support for a rt5350-based "portable nas" solution
>>> from Intenso. The board comes with 32M RAM and 8M Flash, the
>>> built-in HDD is connected/accessible via a usb3.0<->sata
>>> bridge VLI VL701.
> 
> BTW: In the meantime, I was able to find the Chinese distributor
> for this product. The devices seem to be sold by "IOVST" and
> they call it the "UIS700HD" [0]. 
> 
> However, this might not be the hardware vendor. The RT2860.bin in
> the rootfs has ApCliSsid set to "Tenda_501500". But I haven't
> found anything remotely close on Tenda's product website. 
> 
> my question is: should I rename the profile (and the files) to:
> UIS700HD then?
> I would like to keep the Intenso name, because they provided 
> me/us/anyone with at least a (partially very useful)
> "GPL source" for their product on their website [1].

feel free to leave it as intenso, just make sure to add a wiki page and
list the alternative SKUs there.


> 
> The HDD was originally formatted with a single 500GB (size of the HDD) 
> vfat[FAT32] partition. The original firmware supports vfat, exfat (via
> fuse), ntfs (via tuxera tntfs module) and ext2 (ext2 is used exclusively
> for updating the device firmware. It might be only available for the
> ramdisk uimage?! see notes about upfs [2]).
> 
> The rootfs has a few traces of additional support [i.e.: they are
> listed in scripts or have installed fstools] for hfsplus and xfs.
> But as far as I can tell, they won't work.
>  
> BTW: I would like to generate a ramdisk image by default too 
> (I was thinking of adding FEATURES+=ramdisk). The reason is
> that this would make flashing the device easier (load the
> ramdisk image via tftp and then use sysupgrade with the
> squashfs-sysupgrade image).
> 

feel free to send a patch.

applied your patch as r44001








> However, this would of course cause all other rt305x devices
> to build the ramdisk too! [which is probably not ideal. So, 
> is there another way?]. 
> 
> Regards,
> Christian
> 
> [0] <http://www.iovst.com/product/article-41.html>
> [1] <http://www.intenso.de/downloads.php?kategorie=29&&produkt=1357297608>
> [2] <http://hckohwnotes.blogspot.de/2014/05/debian-on-intenso-memory-2-move-intenso.html>
>
Christian Lamparter Jan. 17, 2015, 8:58 p.m. UTC | #4
On Saturday, January 17, 2015 03:09:24 PM John Crispin wrote:
> 
> On 17/01/2015 14:49, Christian Lamparter wrote:
> > On Saturday, January 17, 2015 07:48:24 AM John Crispin wrote:
> >> On 15/01/2015 22:47, Christian Lamparter wrote:
> > my question is: should I rename the profile (and the files) to:
> > UIS700HD then?
> > I would like to keep the Intenso name, because they provided 
> > me/us/anyone with at least a (partially very useful)
> > "GPL source" for their product on their website [1].
> 
> feel free to leave it as intenso, just make sure to add a wiki page and
> list the alternative SKUs there.
Thanks. I've started with the wiki page [0].
 
> >  
> > BTW: I would like to generate a ramdisk image by default too 
> > (I was thinking of adding FEATURES+=ramdisk). The reason is
> > that this would make flashing the device easier (load the
> > ramdisk image via tftp and then use sysupgrade with the
> > squashfs-sysupgrade image).
> > 
> 
> feel free to send a patch.
> 
> applied your patch as r44001
Thanks, I'll do that. Since this is a portable unit, I'm still looking for
a way to get access to the battery level. The "fuel gauge" sensor might be
connected via the i2c, but it might be also just the "EC" microcontroller
who has access to it.

Also, do you know of any "power-saving" features of the RT5350-SoC?
The original firmware enables several features like:
  * "SDR precharge powersave"
     - write 0x00000001 into 0x1000031c (SDR_PWR_SAVE_CNT)
     - set bit 28 in 0x10000304 (SDRAM Configuration 1)

  * "DDR self auto refresh"
     - write 0x00000001 into 0x1000031c (SDR_PWR_SAVE_CNT)
     - set bit 4 in 0x10000318

  * "CPU autofrequency"
     - write 0x001f0112 into 0x10000044 (CPU_CLK_AUTO_CFG)
     - write 0x03040101 into 0x1000003c (CPU_SYS_CLKCFG)
     - write 0x00035f41 into 0x10000040 (CLK_LUT_CFG)
     - write 0x80035f41 into 0x10000040 (CLK_LUT_CFG)
  
Which sounds very interesting [although, the biggest power
guzzlers are the HDD and wifi]. However, the settings to
enable the dynamic CPU frequency scaling doesn't really match
up with the RT5350 I know. For example the CPU_AUTO_CLK_EN 
Setting is controlled by bit 31 in 0x10000044. But it isn't 
enabled?! Do you know of any other manufactures who need to
enable powersaving features as well (and are doing a better
job at it)? 

Regards,
Christian

[0] <http://wiki.openwrt.org/toh/intenso/m2m>
diff mbox

Patch

diff --git a/target/linux/ramips/base-files/etc/board.d/01_leds b/target/linux/ramips/base-files/etc/board.d/01_leds
index 405a6c0..7b29ac0 100755
--- a/target/linux/ramips/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/base-files/etc/board.d/01_leds
@@ -148,6 +148,10 @@  case $board in
 	nw718)
 		set_usb_led "nw718:amber:usb"
 		;;
+	m2m)
+		set_wifi_led "m2m:blue:wifi"
+		ucidef_set_led_netdev "eth" "Ethernet" "m2m:green:wan" "eth0"
+		;;
 	omni-emb-hpm)
 		ucidef_set_led_default "power" "POWER" "emb:orange:power" "1"
 		ucidef_set_led_netdev "eth" "ETH" "emb:green:eth" "eth0"
diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
index a86466e..e425510 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -62,6 +62,11 @@  ramips_setup_interfaces()
 		ucidef_set_interface_lan "eth0.2"
 		;;
 
+	m2m)
+		ucidef_add_switch "switch0" "4"
+		ucidef_set_interface_lan "eth0"
+		;;
+
 	wizard8800 | \
 	wl-330n | \
 	wmr300)
diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
index 103dfcd..c43cb54 100755
--- a/target/linux/ramips/base-files/etc/diag.sh
+++ b/target/linux/ramips/base-files/etc/diag.sh
@@ -79,6 +79,9 @@  get_status_led() {
 	hw550-3g)
 		status_led="hw550-3g:green:status"
 		;;
+	m2m)
+		status_led="m2m:blue:wifi"
+		;;
 	m3)
 		status_led="m3:blue:status"
 		;;
diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index 540da33..f783065 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -211,6 +211,9 @@  ramips_board_detect() {
 	*"NW718")
 		name="nw718"
 		;;
+	*"Intenso Memory 2 Move")
+		name="m2m"
+		;;
 	*"Omnima EMB HPM")
 		name="omni-emb-hpm"
 		;;
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index 95cad63..2d48192 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -55,6 +55,7 @@  platform_check_image() {
 	ht-tm02 | \
 	hw550-3g | \
 	ip2202 | \
+	m2m | \
 	m3 | \
 	m4 | \
 	mlw221 | \
diff --git a/target/linux/ramips/dts/M2M.dts b/target/linux/ramips/dts/M2M.dts
new file mode 100644
index 0000000..aa98991
--- /dev/null
+++ b/target/linux/ramips/dts/M2M.dts
@@ -0,0 +1,113 @@ 
+/dts-v1/;
+
+/include/ "rt5350.dtsi"
+
+/ {
+	compatible = "M2M", "ralink,rt5350-soc";
+	model = "Intenso Memory 2 Move";
+
+	chosen {
+		bootargs = "console=ttyS1,57600n8 root=/dev/mtdblock5";
+	};
+
+	palmbus@10000000 {
+		uart@500 {
+			status = "okay";
+		};
+
+		spi@b00 {
+			status = "okay";
+			m25p80@0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "mx25l6405d";
+				reg = <0 0>;
+				linux,modalias = "m25p80", "mx25l6405d";
+				spi-max-frequency = <10000000>;
+
+				partition@0 {
+					label = "Bootloader";
+					reg = <0x0 0x30000>;
+					read-only;
+				};
+
+				partition@30000 {
+					label = "Config";
+					reg = <0x30000 0x10000>;
+					read-only;
+				};
+
+				factory: partition@40000 {
+					label = "Factory";
+					reg = <0x40000 0x10000>;
+					read-only;
+				};
+
+				partition@50000 {
+					label = "firmware";
+					reg = <0x50000 0x7b0000>;
+				};
+			};
+		};
+	};
+
+	pinctrl {
+		state_default: pinctrl0 {
+			gpio {
+				ralink,group = "i2c", "jtag", "uartf";
+				ralink,function = "gpio";
+			};
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+		wifi {
+			label = "m2m:blue:wifi";
+			gpios = <&gpio0 7 1>;
+		};
+		wan {
+			label = "m2m:green:wan";
+			gpios = <&gpio0 12 1>;
+		};
+	};
+
+	gpio-keys-polled {
+		gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+			power {
+				label = "power";
+				gpios = <&gpio0 1 1>;
+				linux,code = <0x116>;
+			};
+			reset {
+				label = "reset";
+				gpios = <&gpio0 10 1>;
+				linux,code = <0x198>;
+			};
+		};
+	};
+
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x28>;
+	};
+
+	esw@10110000 {
+		ralink,portmap = <0x2f>;
+	};
+
+	ehci@101c0000 {
+		status = "okay";
+	};
+
+	ohci@101c1000 {
+		status = "okay";
+	};
+
+	wmac@10180000 {
+		ralink,mtd-eeprom = <&factory 0x0>;
+	};
+};
diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile
index 82cadd7..e385966 100644
--- a/target/linux/ramips/image/Makefile
+++ b/target/linux/ramips/image/Makefile
@@ -546,6 +546,8 @@  Image/Build/Profile/NCS601W=$(call BuildFirmware/Default8M/$(1),$(1),ncs601W,NCS
 nw718_mtd_size=3801088
 Image/Build/Profile/NW718=$(call BuildFirmware/CustomFlashFactory/$(1),$(1),nw718m,NW718,$(nw718_mtd_size),ARA1B4NCRNW718;1,factory)
 
+Image/Build/Profile/M2M=$(call BuildFirmware/Default8M/$(1),$(1),m2m,M2M,Linux Kernel Image)
+
 Image/Build/Profile/OMNI-EMB=$(call BuildFirmware/Default8M/$(1),$(1),omni-emb,OMNI-EMB)
 
 Image/Build/Profile/OMNI-PLUG=$(call BuildFirmware/Default8M/$(1),$(1),omni-plug,OMNI-PLUG)
@@ -694,6 +696,7 @@  define Image/Build/Profile/Default
 	$(call Image/Build/Profile/HT-TM02,$(1))
 	$(call Image/Build/Profile/HW550-3G,$(1))
 	$(call Image/Build/Profile/IP2202,$(1))
+	$(call Image/Build/Profile/M2M,$(1))
 	$(call Image/Build/Profile/M3,$(1))
 	$(call Image/Build/Profile/M4,$(1))
 	$(call Image/Build/Profile/MOFI3500-3GN,$(1))
diff --git a/target/linux/ramips/rt305x/profiles/m2m.mk b/target/linux/ramips/rt305x/profiles/m2m.mk
new file mode 100644
index 0000000..e5cb6b8
--- /dev/null
+++ b/target/linux/ramips/rt305x/profiles/m2m.mk
@@ -0,0 +1,20 @@ 
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Profile/M2M
+	NAME:=Intenso Memory 2 Move
+	PACKAGES:=\
+		kmod-ledtrig-netdev kmod-ledtrig-timer kmod-leds-gpio \
+		kmod-usb-core kmod-usb2 kmod-usb-storage kmod-scsi-core \
+		kmod-fs-ext4 kmod-fs-vfat block-mount
+endef
+
+define Profile/M2M/Description
+	Package set for Intenso Memory 2 Move USB 3.0
+endef
+
+$(eval $(call Profile,M2M))