diff mbox series

[OpenWrt-Devel,v2] ramips: Add support for ZBT WE826-E

Message ID 20190516130231.31513-1-kristian.evensen@gmail.com
State Deferred
Delegated to: Petr Štetiar
Headers show
Series [OpenWrt-Devel,v2] ramips: Add support for ZBT WE826-E | expand

Commit Message

Kristian Evensen May 16, 2019, 1:02 p.m. UTC
ZBT WE826-E is a dual-SIM version of the ZBT WE826. The router has the
following specifications:

- MT7620A (580 MHz)
- 128MB RAM
- 32MB of flash (SPI NOR)
- 5x 10/100Mbps Ethernet (MT7620A built-in switch)
- 1x microSD slot
- 1x miniPCIe slot (only USB2.0 bus)
- 2x SIM card slots (standard size)
- 1x USB2.0 port
- 1x 2.4GHz wifi (rt2800)
- 10x LEDs (4 GPIO-controlled)
- 1x reset button

The following have been tested and working:
- Ethernet switch
- wifi
- miniPCIe slot
- USB port
- microSD slot
- sysupgrade
- reset button

Installation:

The router ships with an older version of OpenWRT, but with a broken web
user interface. In order to install the image, you need to SSH into the
router and run sysupgrade. The default address of the router is
192.168.1.1, user is root and password admin. Once you are in, run the
following command:

sysupgrade -n -F
openwrt-ramips-mt7620-zbtlink_zbt-we826-e-squashfs-sysupgrade.bin

Recovery:

The router ships with a web-based recovery system. If you need to
recover the router, keep the reset button pressed during boot and access
192.168.1.1 in your browser when your machine obtains an IP address.
Upload the firmware to start the recovery process.

How to swap SIMs:

You control which SIM slot to use by writing 0/1 to
/sys/class/gpio/gpio13/value. In order for the change to take effect,
you can either use AT-commands (AT+CFUN) or power-cycle the modem (write
0/1 to /sys/class/gpio/gpio14/value).

Signed-off-by: Kristian Evensen <kristian.evensen@gmail.com>
---
v1->v2:
* Use generic board/model detection, updated the match in 01_leds and
02_network (thanks Petr Štetiar).
* Changed the device/target device in the Makefile to match the
compatible-string in the DTS (thanks Petr Štetiar).
* Use the user-space gpio-switch alternative instead of gpio-export in
the DTS (thanks Petr Štetiar).
* Update name of flash node in DTS to the more generic "flash0" (thanks
Petr Štetiar).
* Fix image size in the Makefile (thanks Petr Štetiar).
* Group the wifi-LED together with other devices (thanks Petr Štetiar).
* Updated commit message.
* While the device can be ordered without a modem, I imagine most
devices will be delivered with a modem. I have therefore enabled support
for QMI and Option, so that most modems can be used out of the box.
---
 .../ramips/base-files/etc/board.d/01_leds     |  3 +-
 .../ramips/base-files/etc/board.d/02_network  |  1 +
 .../base-files/etc/board.d/03_gpio_switches   |  4 +
 target/linux/ramips/dts/ZBT-WE826-E.dts       | 83 +++++++++++++++++++
 target/linux/ramips/image/mt7620.mk           |  9 ++
 5 files changed, 99 insertions(+), 1 deletion(-)
 create mode 100644 target/linux/ramips/dts/ZBT-WE826-E.dts

Comments

Petr Štetiar May 16, 2019, 1:17 p.m. UTC | #1
Kristian Evensen <kristian.evensen@gmail.com> [2019-05-16 15:02:31]:

Hi,

> The router ships with an older version of OpenWRT, but with a broken web
> user interface. In order to install the image, you need to SSH into the
> router and run sysupgrade. The default address of the router is
> 192.168.1.1, user is root and password admin. Once you are in, run the
> following command:
> 
> sysupgrade -n -F
> openwrt-ramips-mt7620-zbtlink_zbt-we826-e-squashfs-sysupgrade.bin
> 
> Recovery:
> 
> The router ships with a web-based recovery system. If you need to
> recover the router, keep the reset button pressed during boot and access
> 192.168.1.1 in your browser when your machine obtains an IP address.
> Upload the firmware to start the recovery process.

it's not mandatory, so you're not obliged to do so, but it makes me wonder if
it would be possible to generate factory image which could be flashed with the
same recovery mechanism, thus avoiding the -F in the sysupgrade above
(considered dangerous).

> +++ b/target/linux/ramips/dts/ZBT-WE826-E.dts
> @@ -0,0 +1,83 @@
> +/dts-v1/;

Please can you consider adding `SPDX-License-Identifier: GPL-2.0-or-later OR
MIT` ?

Otherwise LGTM.

-- ynezz
Kristian Evensen May 16, 2019, 1:24 p.m. UTC | #2
Hi,

On Thu, May 16, 2019 at 3:17 PM Petr Štetiar <ynezz@true.cz> wrote:
> it's not mandatory, so you're not obliged to do so, but it makes me wonder if
> it would be possible to generate factory image which could be flashed with the
> same recovery mechanism, thus avoiding the -F in the sysupgrade above
> (considered dangerous).

If my memory serves me right, then it is possible to use the
sysupgrade-images with the recovery mechanism. I will test again and
then update the commit message if so.

>
> > +++ b/target/linux/ramips/dts/ZBT-WE826-E.dts
> > @@ -0,0 +1,83 @@
> > +/dts-v1/;
>
> Please can you consider adding `SPDX-License-Identifier: GPL-2.0-or-later OR
> MIT` ?

And I thought I had remembered to incorporate all the comments from
adding the HDRM200 .... :)

BR,
Kristian
diff mbox series

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 fa20ab0714..941b4b109b 100755
--- a/target/linux/ramips/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/base-files/etc/board.d/01_leds
@@ -251,7 +251,8 @@  mr200)
 mtc,wr1201)
 	ucidef_set_led_switch "eth_link" "LAN link" "$boardname:green:eth_link" "switch0" "0x0f"
 	;;
-mzk-ex750np)
+mzk-ex750np|\
+zbtlink,zbt-we826-e)
 	set_wifi_led "$boardname:red:wifi"
 	;;
 netgear,r6120)
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 c2646876a2..63bfab2486 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -133,6 +133,7 @@  ramips_setup_interfaces()
 	youku,yk-l2|\
 	zbt-ape522ii|\
 	zbt-we1326|\
+	zbtlink,zbt-we826-e|\
 	zbtlink,zbt-we3526|\
 	zbt-we826-16M|\
 	zbt-we826-32M|\
diff --git a/target/linux/ramips/base-files/etc/board.d/03_gpio_switches b/target/linux/ramips/base-files/etc/board.d/03_gpio_switches
index 80e3c4c41f..6119d7c485 100755
--- a/target/linux/ramips/base-files/etc/board.d/03_gpio_switches
+++ b/target/linux/ramips/base-files/etc/board.d/03_gpio_switches
@@ -24,6 +24,10 @@  ubnt-erx-sfp)
 	ucidef_add_gpio_switch "poe_power_port3" "PoE Power Port3" "499"
 	ucidef_add_gpio_switch "poe_power_port4" "PoE Power Port4" "500"
 	;;
+zbtlink,zbt-we826-e)
+	ucidef_add_gpio_switch "sim_switch" "SIM slot switch" "13"
+	ucidef_add_gpio_switch "power_mpcie" "mPCIe power" "14" "1"
+	;;
 esac
 
 board_config_flush
diff --git a/target/linux/ramips/dts/ZBT-WE826-E.dts b/target/linux/ramips/dts/ZBT-WE826-E.dts
new file mode 100644
index 0000000000..a1f71c7144
--- /dev/null
+++ b/target/linux/ramips/dts/ZBT-WE826-E.dts
@@ -0,0 +1,83 @@ 
+/dts-v1/;
+
+#include "ZBT-WE826.dtsi"
+
+/ {
+	compatible = "zbtlink,zbt-we826-e", "zbtlink,zbt-we826", "ralink,mt7620a-soc";
+	model = "ZBT-WE826-E";
+
+	/delete-node/ leds;
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power: gsm {
+			label = "zbt-we826-e:blue:gsm";
+			gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
+		};
+
+		signal {
+			label = "zbt-we826-e:green:signal";
+			gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
+		};
+
+		sim {
+			label = "zbt-we826-e:red:sim";
+			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
+		};
+
+		air {
+			label = "zbt-we826-e:red:wifi";
+			gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&spi0 {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <10000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			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;
+			};
+
+			firmware: partition@50000 {
+				compatible = "denx,uimage";
+				label = "firmware";
+				reg = <0x50000 0x1fb0000>;
+			};
+		};
+	};
+};
+
+&pinctrl {
+	state_default: pinctrl0 {
+		default {
+			ralink,group = "i2c", "uartf", "wled";
+			ralink,function = "gpio";
+		};
+	};
+};
diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk
index da90568df0..35fecb9ac6 100644
--- a/target/linux/ramips/image/mt7620.mk
+++ b/target/linux/ramips/image/mt7620.mk
@@ -809,6 +809,15 @@  define Device/zbt-we826-32M
 endef
 TARGET_DEVICES += zbt-we826-32M
 
+define Device/zbtlink_zbt-we826-e
+  DTS := ZBT-WE826-E
+  IMAGE_SIZE := 32448k
+  DEVICE_TITLE := Zbtlink ZBT-WE826-E
+  DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-sdhci-mt7620 uqmi \
+		     kmod-usb-serial kmod-usb-serial-option
+endef
+TARGET_DEVICES += zbtlink_zbt-we826-e
+
 define Device/zbt-wr8305rt
   DTS := ZBT-WR8305RT
   DEVICE_TITLE := Zbtlink ZBT-WR8305RT