Merge pull request #5413 from stangri/21.02-luci-app-advanced-reboot
[21.02] luci-app-advanced-reboot: bugfix for Linksys E4200v2
This commit is contained in:
commit
2e0ff79865
5 changed files with 44 additions and 17 deletions
|
@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-3.0-or-later
|
PKG_LICENSE:=GPL-3.0-or-later
|
||||||
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
|
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
|
||||||
PKG_VERSION:=1.0.0-1
|
PKG_VERSION:=1.0.1-3
|
||||||
|
|
||||||
LUCI_TITLE:=Advanced Linksys Reboot Web UI
|
LUCI_TITLE:=Advanced Linksys Reboot Web UI
|
||||||
LUCI_URL:=https://docs.openwrt.melmac.net/luci-app-advanced-reboot/
|
LUCI_URL:=https://docs.openwrt.melmac.net/luci-app-advanced-reboot/
|
||||||
|
|
|
@ -9,6 +9,7 @@ return view.extend({
|
||||||
translateTable: {
|
translateTable: {
|
||||||
NO_BOARD_NAME : function(args) { return _('Unable to find Device Board Name.')},
|
NO_BOARD_NAME : function(args) { return _('Unable to find Device Board Name.')},
|
||||||
NO_DUAL_FLAG: function (args) { return _('Unable to find Dual Boot Flag Partition.') },
|
NO_DUAL_FLAG: function (args) { return _('Unable to find Dual Boot Flag Partition.') },
|
||||||
|
NO_DUAL_FLAG_BLOCK: function (args) { return _('The Dual Boot Flag Partition: %s is not a block device.').format(args[0])},
|
||||||
ERR_SET_DUAL_FLAG : function(args) { return _('Unable to set Dual Boot Flag Partition entry for partition: %s.').format(args[0])},
|
ERR_SET_DUAL_FLAG : function(args) { return _('Unable to set Dual Boot Flag Partition entry for partition: %s.').format(args[0])},
|
||||||
NO_FIRM_ENV : function(args) { return _('Unable to obtain firmware environment variable: %s.').format(args[0])},
|
NO_FIRM_ENV : function(args) { return _('Unable to obtain firmware environment variable: %s.').format(args[0])},
|
||||||
ERR_SET_ENV : function(args) { return _('Unable to set firmware environment variable: %s to %s.').format(args[0],args[1])}
|
ERR_SET_ENV : function(args) { return _('Unable to set firmware environment variable: %s to %s.').format(args[0],args[1])}
|
||||||
|
@ -196,7 +197,7 @@ return view.extend({
|
||||||
if (device_info.error)
|
if (device_info.error)
|
||||||
body.appendChild(E('p', { 'class' : 'alert-message warning'}, _("ERROR: ") + this.translateTable[device_info.error]()));
|
body.appendChild(E('p', { 'class' : 'alert-message warning'}, _("ERROR: ") + this.translateTable[device_info.error]()));
|
||||||
|
|
||||||
body.appendChild(E('h3', device_info.device_name + _(' Partitions')));
|
body.appendChild(E('h3', (device_info.device_name || '') + _(' Partitions')));
|
||||||
if (device_info.device_name) {
|
if (device_info.device_name) {
|
||||||
var partitions_table = E('table', { 'class': 'table' }, [
|
var partitions_table = E('table', { 'class': 'table' }, [
|
||||||
E('tr', { 'class': 'tr table-titles' }, [
|
E('tr', { 'class': 'tr table-titles' }, [
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Copyright 2017-2020 Stan Grishin (stangri@melmac.net)
|
# Copyright 2017-2020 Stan Grishin (stangri@melmac.net)
|
||||||
# shellcheck disable=SC2039,SC1091
|
# shellcheck disable=SC2039,SC1091,SC3043,SC3057,SC3060
|
||||||
|
|
||||||
readonly devices_dir="/usr/share/advanced-reboot/devices/"
|
readonly devices_dir="/usr/share/advanced-reboot/devices/"
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ find_device_data(){
|
||||||
print_json() { json_init; json_add_string "$1" "$2"; json_dump; json_cleanup; }
|
print_json() { json_init; json_add_string "$1" "$2"; json_dump; json_cleanup; }
|
||||||
|
|
||||||
obtain_device_info(){
|
obtain_device_info(){
|
||||||
local romBoardName p zyxelFlagPartition
|
local romBoardName p zyxelFlagPartition i
|
||||||
local vendorName deviceName partition1MTD partition2MTD labelOffset
|
local vendorName deviceName partition1MTD partition2MTD labelOffset
|
||||||
local bootEnv1 bootEnv1Partition1Value bootEnv1Partition2Value
|
local bootEnv1 bootEnv1Partition1Value bootEnv1Partition2Value
|
||||||
local bootEnv2 bootEnv2Partition1Value bootEnv2Partition2Value
|
local bootEnv2 bootEnv2Partition1Value bootEnv2Partition2Value
|
||||||
|
@ -167,15 +167,20 @@ obtain_device_info(){
|
||||||
current_partition="$(/usr/sbin/fw_printenv -n "${bootEnv1}")"
|
current_partition="$(/usr/sbin/fw_printenv -n "${bootEnv1}")"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
for i in '0:dual_flag' '0:DUAL_FLAG'; do
|
||||||
|
zyxelFlagPartition="$(find_mtd_part "$i" 2>/dev/null)"
|
||||||
|
[ -n "$zyxelFlagPartition" ] && break
|
||||||
|
done
|
||||||
if [ -z "$zyxelFlagPartition" ]; then
|
if [ -z "$zyxelFlagPartition" ]; then
|
||||||
zyxelFlagPartition="$(find_mtd_part 0:DUAL_FLAG 2>/dev/null)"
|
|
||||||
fi
|
|
||||||
if [ -n "$zyxelFlagPartition" ]; then
|
|
||||||
current_partition="$(dd if="${zyxelFlagPartition}" bs=1 count=1 2>/dev/null | hexdump -n 1 -e '1/1 "%d"')"
|
|
||||||
else
|
|
||||||
print_json 'error' 'NO_DUAL_FLAG'
|
print_json 'error' 'NO_DUAL_FLAG'
|
||||||
logger "Unable to find Dual Boot Environment or Dual Boot Flag Partition."
|
logger "Unable to find Dual Boot Environment or Dual Boot Flag Partition."
|
||||||
return
|
return
|
||||||
|
elif [ ! -b "$zyxelFlagPartition" ]; then
|
||||||
|
print_json 'error' 'NO_DUAL_FLAG_BLOCK'
|
||||||
|
logger "The Dual Boot Flag Partition: $zyxelFlagPartition is not block device."
|
||||||
|
return
|
||||||
|
else
|
||||||
|
current_partition="$(dd if="${zyxelFlagPartition}" bs=1 count=1 2>/dev/null | hexdump -n 1 -e '1/1 "%d"')"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -202,7 +207,6 @@ obtain_device_info(){
|
||||||
p2_os="$p2_os (Linux ${p2_version})"
|
p2_os="$p2_os (Linux ${p2_version})"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
json_init
|
json_init
|
||||||
json_add_int 'current_partition' "$current_partition"
|
json_add_int 'current_partition' "$current_partition"
|
||||||
json_add_string 'device_name' "$vendorName $deviceName"
|
json_add_string 'device_name' "$vendorName $deviceName"
|
||||||
|
@ -231,7 +235,7 @@ obtain_device_info(){
|
||||||
}
|
}
|
||||||
|
|
||||||
toggle_boot_partition(){
|
toggle_boot_partition(){
|
||||||
local zyxelFlagPartition zyxelBootFlag zyxelNewBootFlag curEnvSetting newEnvSetting
|
local zyxelFlagPartition i zyxelBootFlag zyxelNewBootFlag curEnvSetting newEnvSetting
|
||||||
local romBoardName p
|
local romBoardName p
|
||||||
local bev1 bev2 bev1p1 bev1p2 bev2p1 bev2p2
|
local bev1 bev2 bev1p1 bev1p2 bev2p1 bev2p2
|
||||||
local vendorName deviceName partition1MTD partition2MTD labelOffset
|
local vendorName deviceName partition1MTD partition2MTD labelOffset
|
||||||
|
@ -333,12 +337,17 @@ toggle_boot_partition(){
|
||||||
json_init
|
json_init
|
||||||
json_dump; json_cleanup;
|
json_dump; json_cleanup;
|
||||||
else # NetGear device
|
else # NetGear device
|
||||||
|
for i in '0:dual_flag' '0:DUAL_FLAG'; do
|
||||||
|
zyxelFlagPartition="$(find_mtd_part "$i" 2>/dev/null)"
|
||||||
|
[ -n "$zyxelFlagPartition" ] && break
|
||||||
|
done
|
||||||
if [ -z "$zyxelFlagPartition" ]; then
|
if [ -z "$zyxelFlagPartition" ]; then
|
||||||
zyxelFlagPartition="$(find_mtd_part 0:DUAL_FLAG 2>/dev/null)"
|
|
||||||
fi
|
|
||||||
if [ -z "$zyxelFlagPartition" ]; then
|
|
||||||
logger "Unable to find Dual Boot Flag Partition."
|
|
||||||
print_json 'error' 'NO_DUAL_FLAG'
|
print_json 'error' 'NO_DUAL_FLAG'
|
||||||
|
logger "Unable to find Dual Boot Environment or Dual Boot Flag Partition."
|
||||||
|
return
|
||||||
|
elif [ ! -b "$zyxelFlagPartition" ]; then
|
||||||
|
print_json 'error' 'NO_DUAL_FLAG_BLOCK'
|
||||||
|
logger "The Dual Boot Flag Partition: $zyxelFlagPartition is not block device."
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
zyxelBootFlag="$(dd if="${zyxelFlagPartition}" bs=1 count=1 2>/dev/null | hexdump -n 1 -e '1/1 "%d"')"
|
zyxelBootFlag="$(dd if="${zyxelFlagPartition}" bs=1 count=1 2>/dev/null | hexdump -n 1 -e '1/1 "%d"')"
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
{
|
{
|
||||||
"vendorName": "Linksys",
|
"vendorName": "Linksys",
|
||||||
"deviceName": "E4200v2",
|
"deviceName": "E4200v2",
|
||||||
"boardNames": [ "linksys-e4200v2", "linksys,e4200v2" ],
|
"boardNames": [
|
||||||
|
"linksys-e4200v2",
|
||||||
|
"linksys,e4200-v2"
|
||||||
|
],
|
||||||
"partition1MTD": "mtd3",
|
"partition1MTD": "mtd3",
|
||||||
"partition2MTD": "mtd5",
|
"partition2MTD": "mtd5",
|
||||||
"labelOffset": 32,
|
"labelOffset": 32,
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"vendorName": "Linksys",
|
||||||
|
"deviceName": "EA7500v1",
|
||||||
|
"boardNames": [ "linksys,ea7500-v1" ],
|
||||||
|
"partition1MTD": "mtd13",
|
||||||
|
"partition2MTD": "mtd15",
|
||||||
|
"labelOffset": 32,
|
||||||
|
"bootEnv1": "boot_part",
|
||||||
|
"bootEnv1Partition1Value": 1,
|
||||||
|
"bootEnv1Partition2Value": 2,
|
||||||
|
"bootEnv2": null,
|
||||||
|
"bootEnv2Partition1Value": null,
|
||||||
|
"bootEnv2Partition2Value": null
|
||||||
|
}
|
Loading…
Reference in a new issue