 3098b4bf07
			
		
	
	3098b4bf07
	
	
	
		
			
			The larger switches of the Linksys LGS series (e.g. LGS352C) make use of NAND. So the vendor firmware uses other commands to upload an image through the WebUI. Add the required scripts. With this we can upload an image to all devices of that series. Independant of NOR or NAND. Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de> Link: https://github.com/openwrt/openwrt/pull/16711 Signed-off-by: Robert Marko <robimarko@gmail.com>
		
			
				
	
	
		
			95 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| # SPDX-License-Identifier: GPL-2.0-or-later
 | |
| #
 | |
| # Copyright (C) 2024 OpenWrt.org
 | |
| #
 | |
| # This script creates a tar file for the Linksys switches of the LGS3xxC/LGS3xxMPC
 | |
| # series. It contains not only the OpenWrt firmware but additional scripts that
 | |
| # are needed for the upgrade.
 | |
| #
 | |
| # ./linksys-image.py <ImageFile> <ImageFileOut> <LinksysModel>
 | |
| #
 | |
| # Known values for LinksysModel are currently
 | |
| #
 | |
| # LGS310MPC		60402010
 | |
| # LGS310C		60402060
 | |
| # LGS328PC		60401070
 | |
| # LGS328PC(RTL8218D)	60401080
 | |
| # LGS310MPCv2		60402090
 | |
| # LGS328MPC		60412020
 | |
| # LGS328C		60412040
 | |
| # LGS328MPCv2		60412060
 | |
| # LGS352MPC		60422030
 | |
| # LGS352C		60422050
 | |
| # LGS352MPCv2		60422070
 | |
| 
 | |
| # The check script that verifies if the images matches the hardware model
 | |
| gen_imagecheck() {
 | |
| 	echo '#!/bin/sh'
 | |
| 	echo 'if [ "$1" = "'${1}'" ]; then'
 | |
| 	echo 'echo 0'
 | |
| 	echo 'else'
 | |
| 	echo 'echo 1'
 | |
| 	echo 'fi'
 | |
| }
 | |
| 
 | |
| # Generic attributes
 | |
| gen_fwinfo() {
 | |
| 	echo 'FW_VERSION=1.01.100\nBOOT_VERSION=01.00.01'
 | |
| }
 | |
| 
 | |
| # NOR upgrade script. It allows to install OpenWrt only to first partition.
 | |
| gen_nor_upgrade() {
 | |
| 	echo '#!/bin/sh'
 | |
| 	echo 'flash_bank=65536'
 | |
| 	echo 'filesize=`stat --format=%s ./series_vmlinux.bix`'
 | |
| 	echo 'num_bank=`expr \( ${filesize} + ${flash_bank} - 1 \) / ${flash_bank}`'
 | |
| 	echo 'filesize_bank=`expr ${num_bank} \* ${flash_bank}`'
 | |
| 	echo 'case $1 in'
 | |
| 	echo '1)'
 | |
| 	echo 'mtd_debug erase $2 0 ${filesize_bank} >/dev/null 2>&1'
 | |
| 	echo 'mtd_debug write $2 0 ${filesize} ./series_vmlinux.bix >/dev/null 2>&1'
 | |
| 	echo 'mtd_debug read $2 0 100 image1.img >/dev/null 2>&1'
 | |
| 	echo 'CreateImage -r ./image1.img > /tmp/app/image1.txt'
 | |
| 	echo 'echo 0'
 | |
| 	echo ';;'
 | |
| 	echo '*)'
 | |
| 	echo 'echo 1'
 | |
| 	echo 'esac'
 | |
| }
 | |
| 
 | |
| # NAND upgrade script. It allows to install OpenWrt only to first partition.
 | |
| gen_nand_upgrade() {
 | |
| 	echo '#!/bin/sh'
 | |
| 	echo 'case $1 in'
 | |
| 	echo '1)'
 | |
| 	echo 'flash_eraseall $2 >/dev/null 2>&1'
 | |
| 	echo 'nandwrite -p $2 ./series_vmlinux.bix >/dev/null 2>&1'
 | |
| 	echo 'mtd_debug read $2 0 100 image1.img >/dev/null 2>&1'
 | |
| 	echo 'CreateImage -r ./image1.img > /tmp/app/image1.txt'
 | |
| 	echo 'echo 0'
 | |
| 	echo ';;'
 | |
| 	echo '*)'
 | |
| 	echo 'echo 1'
 | |
| 	echo 'esac'
 | |
| }
 | |
| 
 | |
| tmpdir="$( mktemp -d 2> /dev/null )"
 | |
| imgdir=$tmpdir/image
 | |
| mkdir $imgdir
 | |
| 
 | |
| gen_imagecheck $3 > $imgdir/iss_imagecheck.sh
 | |
| gen_nor_upgrade > $imgdir/iss_imageupgrade.sh
 | |
| gen_nand_upgrade > $imgdir/iss_nand_imageupgrade.sh
 | |
| gen_fwinfo > $imgdir/firmware_information.txt
 | |
| 
 | |
| chmod +x $imgdir/iss_imagecheck.sh
 | |
| chmod +x $imgdir/iss_imageupgrade.sh
 | |
| chmod +x $imgdir/iss_nand_imageupgrade.sh
 | |
| 
 | |
| cp $1 $imgdir/series_vmlinux.bix
 | |
| 
 | |
| tar cf $2 -C $tmpdir image/
 | |
| 
 | |
| rm -rf $tmpdir
 |