From 646f4ae77a9b0f3590a793fd6d22eae7a468b9b7 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Thu, 7 Mar 2019 19:45:12 +0800 Subject: [PATCH] build: add a script for generating Linksys EA6350v3 factory image --- include/image-commands.mk | 7 ++++ scripts/linksys-image.sh | 67 +++++++++++++++++++++++++++++++++++ target/linux/ipq40xx/Makefile | 4 +-- 3 files changed, 76 insertions(+), 2 deletions(-) create mode 100755 scripts/linksys-image.sh diff --git a/include/image-commands.mk b/include/image-commands.mk index c5b64c751..800029d8b 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -274,6 +274,13 @@ define Build/combined-image @mv $@.new $@ endef +define Build/linksys-image + $(TOPDIR)/scripts/linksys-image.sh \ + "$(call param_get_default,type,$(1),$(DEVICE_NAME))" \ + $@ $@.new + mv $@.new $@ +endef + define Build/openmesh-image $(TOPDIR)/scripts/om-fwupgradecfg-gen.sh \ "$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" \ diff --git a/scripts/linksys-image.sh b/scripts/linksys-image.sh new file mode 100755 index 000000000..36a676d96 --- /dev/null +++ b/scripts/linksys-image.sh @@ -0,0 +1,67 @@ +#!/bin/sh +# +# Copyright (C) 2018 Oceanic Systems (UK) Ltd +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# Maintained by: Ryan Pannell +# +# Write Linksys signature for factory image +# This is appended to the factory image and is tested by the Linksys Upgrader - as observed in civic. +# The footer is 256 bytes. The format is: +# .LINKSYS. This is detected by the Linksys upgrader before continuing with upgrade. (9 bytes) +# The version number of upgrade. Not checked so use arbitary value (8 bytes) +# Model of target device, padded (0x20) to (15 bytes) +# CRC checksum of the image to flash (8 byte) +# Padding (0x20) (7 bytes) +# Signature of signer. Not checked so use Arbitary value (16 bytes) +# Padding (0x00) (192 bytes) +# 0x0A (1 byte) + +## version history +# * version 1: initial commit + +set -e + +ME="${0##*/}" + +usage() { + echo "Usage: $ME " + [ "$IMG_OUT" ] && rm -f "$IMG_OUT" + exit 1 +} + +[ "$#" -lt 3 ] && usage + +TYPE=$1 + +tmpdir="$( mktemp -d 2> /dev/null )" +if [ -z "$tmpdir" ]; then + # try OSX signature + tmpdir="$( mktemp -t 'ubitmp' -d )" +fi + +if [ -z "$tmpdir" ]; then + exit 1 +fi + +trap "rm -rf $tmpdir" EXIT + +IMG_TMP_OUT="${tmpdir}/out" + +IMG_IN=$2 +IMG_OUT="${IMG_IN}.new" + +[ ! -f "$IMG_IN" ] && echo "$ME: Not a valid image: $IMG_IN" && usage + +dd if="${IMG_IN}" of="${IMG_TMP_OUT}" +CRC=$(printf "%08X" $(dd if="${IMG_IN}" bs=$(stat -c%s "${IMG_IN}") count=1|cksum| cut -d ' ' -f1)) + +printf ".LINKSYS.01000409%-15s%-8s%-7s%-16s" "${TYPE}" "${CRC}" "" "K0000000F0246434" >> "${IMG_TMP_OUT}" + +dd if=/dev/zero bs=1 count=192 conv=notrunc >> "${IMG_TMP_OUT}" + +printf '\12' >> "${IMG_TMP_OUT}" + +cp "${IMG_TMP_OUT}" "${IMG_OUT}" diff --git a/target/linux/ipq40xx/Makefile b/target/linux/ipq40xx/Makefile index ab7b174e4..b8e38d4ff 100644 --- a/target/linux/ipq40xx/Makefile +++ b/target/linux/ipq40xx/Makefile @@ -17,7 +17,7 @@ include $(INCLUDE_DIR)/target.mk DEFAULT_PACKAGES += \ kmod-usb-dwc3-of-simple \ kmod-leds-gpio kmod-gpio-button-hotplug swconfig \ - kmod-ath10k-ct wpad-basic \ - kmod-usb3 kmod-usb-dwc3 ath10k-firmware-qca4019-ct + kmod-ath10k wpad \ + kmod-usb3 kmod-usb-dwc3 ath10k-firmware-qca4019 $(eval $(call BuildTarget)) -- GitLab