-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ramips: mt7621: Add DNA Valokuitu Plus EX400
Specifications: - Device: DNA Valokuitu Plus EX400 - SoC: MT7621A - Flash: 256MB NAND - RAM: 256MB - Ethernet: Built-in, 2 x 1GbE - Wifi: MT7603 2.4 GHz, MT7615 5 GHz (4x internal antennas) - USB: 1x 3.0 - LED: 1x green/red, 1x green - Buttons: Reset MAC addresses: - LAN: u-boot 'ethaddr' (label) - WAN: label + 1 - 2.4 GHz: label + 6 - 5 GHz: label + 7 Serial: There is a black block connector next to the red ethernet connector. It is accessible also through holes in the casing. Pinout (TTL 3.3V) +---+---+ |Tx |Rx | +---+---+ |Vcc|Gnd| +---+---+ Firmware: The vendor firmware is a fork of OpenWrt (Reboot) with a kernel version 4.4.93. The flash is arranged as below and there is a dual boot mechanism alternating between rootfs_0 and rootfs_1. +-------+------+------+-----------+-----------+ | | env1 | env2 | rootfs_0 | rootfs_1 | | +------+------+-----------+-----------+ | | UBI volumes | +-------+-------------------------------------+ |U-Boot | UBI | +-------+-------------------------------------+ |mtd0 | mtd1 | +-------+-------------------------------------+ | NAND | +---------------------------------------------+ In OpenWrt rootfs_0 will be used as a boot partition that will contain the kernel and the dtb. The squashfs rootfs and overlay are standard OpenWrt behaviour. +-------+------+------+-----------+--------+------------+ | | env1 | env2 | rootfs_0 | rootfs | rootfs_data| | +------+------+-----------+--------+------------+ | | UBI volumes | +-------+-----------------------------------------------+ |U-Boot | UBI | +-------+-----------------------------------------------+ |mtd0 | mtd1 | +-------+-----------------------------------------------+ | NAND | +-------------------------------------------------------+ U-boot: With proper serial access booting can be halted to U-boot by pressing any key. TFTP and flash writes are available, but only the first one has been tested. NOTE: Recovery mode can be accessed by holding down the reset button while powering on the device. The led 'Update' will show a solid green light once ready. A web server will be running at 192.168.1.1:80 and it will allow flashing a firmware package. You can cycle between rootfs_0 and rootfs_1 by pressing the reset button once. Root password: With the vendor web UI create a backup of your settings and download the archive to your computer. Within the archive in the file /etc/shadow replace the password hash for root with that of a password you know. Restore the configuration with the vendor web UI and you will have changed the root password. SSH access: You might need to enable the SSH service for LAN interface as by default it's enabled for WAN only. Installing OpenWrt: With the vendor web UI install the OpenWrt factory image. Alternatively, ssh to the device and use sysupgrade -n from cli. Finalize by installing the OpenWrt sysupgrade image to get a fully functioning system. Reverting to the vendor firmware: Boot with OpenWrt initramfs image - Remove volumes rootfs_0, rootfs and rootfs_data and create vendor volumes. ubirmvol /dev/ubi0 -n 2 ubirmvol /dev/ubi0 -n 3 ubirmvol /dev/ubi0 -n 4 ubimkvol /dev/ubi0 -N rootfs_0 -S 990 ubimkvol /dev/ubi0 -N rootfs_1 -S 990 Power off and enter to the U-boot recovery to install the vendor firmware. Known issues: - MACs for wifi are stored in currently unknown place but it seems to persist over power-off. They might be stored on the chip. Signed-off-by: Mauri Sandberg <[email protected]> [rmilecki: try NVMEM for MACs] Signed-off-by: Rafał Miłecki <[email protected]>
- Loading branch information
Showing
7 changed files
with
273 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
130 changes: 130 additions & 0 deletions
130
target/linux/ramips/dts/mt7621_dna_valokuitu-plus-ex400.dts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT | ||
|
||
#include "mt7621.dtsi" | ||
|
||
#include <dt-bindings/gpio/gpio.h> | ||
#include <dt-bindings/input/input.h> | ||
#include <dt-bindings/leds/common.h> | ||
|
||
/ { | ||
compatible = "dna,valokuitu-plus-ex400", "mediatek,mt7621-soc"; | ||
model = "DNA Valokuitu Plus EX400"; | ||
|
||
aliases { | ||
ethernet0 = &gmac0; | ||
label-mac-device = &gmac0; | ||
led-boot = &led_status_red; | ||
led-failsafe = &led_status_red; | ||
led-running = &led_status_green; | ||
led-upgrade = &led_update_green; | ||
}; | ||
|
||
chosen { | ||
bootargs-override = "console=ttyS0,115200 rootfstype=squashfs,jffs2"; | ||
}; | ||
|
||
keys { | ||
compatible = "gpio-keys"; | ||
|
||
reset { | ||
label = "reset"; | ||
gpios = <&gpio 18 GPIO_ACTIVE_LOW>; | ||
linux,code = <KEY_RESTART>; | ||
}; | ||
}; | ||
|
||
leds { | ||
compatible = "gpio-leds"; | ||
|
||
led_status_green: led-0 { | ||
color = <LED_COLOR_ID_GREEN>; | ||
function = LED_FUNCTION_STATUS; | ||
gpios = <&gpio 8 GPIO_ACTIVE_LOW>; | ||
}; | ||
|
||
led_status_red: led-1 { | ||
color = <LED_COLOR_ID_RED>; | ||
function = LED_FUNCTION_STATUS; | ||
gpios = <&gpio 11 GPIO_ACTIVE_HIGH>; | ||
}; | ||
|
||
led_update_green: led-2 { | ||
color = <LED_COLOR_ID_GREEN>; | ||
function = LED_FUNCTION_PROGRAMMING; | ||
gpios = <&gpio 12 GPIO_ACTIVE_LOW>; | ||
}; | ||
}; | ||
}; | ||
|
||
&pcie { | ||
status = "okay"; | ||
}; | ||
|
||
&nand { | ||
status = "okay"; | ||
|
||
partitions { | ||
compatible = "fixed-partitions"; | ||
#address-cells = <1>; | ||
#size-cells = <1>; | ||
|
||
partition@0 { | ||
reg = <0x00 0x100000>; | ||
label = "uboot"; | ||
read-only; | ||
}; | ||
|
||
partition@100000 { | ||
reg = <0x100000 0xff00000>; | ||
label = "ubi"; | ||
|
||
volumes { | ||
ubi-volume-env1 { | ||
volname = "env1"; | ||
|
||
nvmem-layout { | ||
compatible = "u-boot,env"; | ||
|
||
ethaddr: ethaddr { | ||
#nvmem-cell-cells = <1>; | ||
}; | ||
}; | ||
}; | ||
}; | ||
}; | ||
}; | ||
}; | ||
|
||
&gmac1 { | ||
label = "wan"; | ||
phy-handle = <ðphy0>; | ||
nvmem-cells = <ðaddr 1>; | ||
nvmem-cell-names = "mac-address"; | ||
status = "okay"; | ||
}; | ||
|
||
&i2c { | ||
status = "okay"; | ||
}; | ||
|
||
ðphy0 { | ||
/delete-property/ interrupts; | ||
}; | ||
|
||
&state_default { | ||
gpio { | ||
groups = "uart2", "uart3"; | ||
function = "gpio"; | ||
}; | ||
}; | ||
|
||
&switch0 { | ||
ports { | ||
port@1 { | ||
label = "lan"; | ||
nvmem-cells = <ðaddr 0>; | ||
nvmem-cell-names = "mac-address"; | ||
status = "okay"; | ||
}; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
# | ||
# Copyright (C) 2023 Mauri Sandberg | ||
# | ||
|
||
# The vendor UBI is split in volumes 0-3. Volumes 0 and 1 contain U-Boot | ||
# environments env1 and env2, respectively. The vendor root file systems | ||
# are in volumes 2 (rootfs_0) and 3 (rootfs_1). Drop the two roots and | ||
# explicitly use rootfs_0 as a boot partition that contains the dtb and the | ||
# OpenWrt kernel. This is because the vendor U-Boot expects to find them there. | ||
# Then continue upgrade with the default method - a SquashFS rootfs will be | ||
# installed and the rest of UBI will be used as an overlay. | ||
|
||
# The 'kernel' inside the sysupgrage.tar is an UBIFS image that contains | ||
# /boot/dtb and /boot/kernel. The 'root' is an OpenWrt SquashFS root | ||
|
||
. /lib/functions.sh | ||
. /lib/upgrade/nand.sh | ||
|
||
dna_do_upgrade () { | ||
tar -xaf $1 | ||
|
||
# get the size of the new bootfs | ||
local _bootfs_size=$(wc -c < ./sysupgrade-dna_valokuitu-plus-ex400/kernel) | ||
[ -n "$_bootfs_size" -a "$_bootfs_size" -gt "0" ] || nand_do_upgrade_failed | ||
|
||
# remove existing rootfses and recreate rootfs_0 | ||
ubirmvol /dev/ubi0 --name=rootfs_0 > /dev/null 2>&1 | ||
ubirmvol /dev/ubi0 --name=rootfs_1 > /dev/null 2>&1 | ||
ubirmvol /dev/ubi0 --name=rootfs > /dev/null 2>&1 | ||
ubirmvol /dev/ubi0 --name=rootfs_data > /dev/null 2>&1 | ||
ubimkvol /dev/ubi0 --type=static --size=${_bootfs_size} --name=rootfs_0 | ||
|
||
# update the rootfs_0 contents | ||
local _kern_ubivol=$( nand_find_volume "ubi0" "rootfs_0" ) | ||
ubiupdatevol /dev/${_kern_ubivol} sysupgrade-dna_valokuitu-plus-ex400/kernel | ||
|
||
fw_setenv root_vol rootfs_0 | ||
fw_setenv boot_cnt_primary 0 | ||
fw_setenv boot_cnt_alt 0 | ||
|
||
# proceed to upgrade the default way | ||
CI_KERNPART=none | ||
nand_do_upgrade "$1" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters