From 8d54b0ff470aaa53cae0640f9093eff0b781202c Mon Sep 17 00:00:00 2001 From: Mykyta Dorokhin Date: Tue, 27 Sep 2016 22:29:21 +0300 Subject: mtp: add firmware upgrade support for mlinux builds --- recipes-core/images/mlinux-firmware-upgrade.inc | 25 ++++++++++ recipes-core/images/mlinux-picocell-image.bb | 1 + recipes-core/mlinux-scripts/mlinux-scripts-1.0.inc | 5 +- .../mlinux-scripts-1.0/mlinux-firmware-upgrade | 57 ++++++++++++++++++++++ recipes-core/mlinux-scripts/mlinux-scripts_1.0.bb | 2 +- 5 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 recipes-core/images/mlinux-firmware-upgrade.inc create mode 100755 recipes-core/mlinux-scripts/mlinux-scripts-1.0/mlinux-firmware-upgrade diff --git a/recipes-core/images/mlinux-firmware-upgrade.inc b/recipes-core/images/mlinux-firmware-upgrade.inc new file mode 100644 index 0000000..c3c7c8d --- /dev/null +++ b/recipes-core/images/mlinux-firmware-upgrade.inc @@ -0,0 +1,25 @@ +# generate mlinux firmware upgrade files + +FIRMWARE_UPGRADE_FILE_NAME ?= "${IMAGE_BASENAME}-${MACHINE}-upgrade.bin" + +do_firmware () { + cd ${DEPLOY_DIR_IMAGE} + rm -f bstrap.bin* uboot.bin* uImage.bin* rootfs.jffs2* model + + cp at91bootstrap_pmecc_padded.bin bstrap.bin + cp u-boot-${MACHINE}.bin uboot.bin + cp uImage-${MACHINE}.bin uImage.bin + cp ${IMAGE_BASENAME}-${MACHINE}.jffs2 rootfs.jffs2 + + cat bstrap.bin | md5sum > bstrap.bin.md5 + cat uboot.bin | md5sum > uboot.bin.md5 + cat uImage.bin | md5sum > uImage.bin.md5 + cat rootfs.jffs2 | md5sum > rootfs.jffs2.md5 + + echo "${MACHINE}" > model + + tar cvf ${FIRMWARE_UPGRADE_FILE_NAME} bstrap.bin* uboot.bin* uImage.bin* rootfs.jffs2* model + rm -f bstrap.bin* uboot.bin* uImage.bin* rootfs.jffs2* model +} + +addtask firmware after do_rootfs before do_build diff --git a/recipes-core/images/mlinux-picocell-image.bb b/recipes-core/images/mlinux-picocell-image.bb index 49670a9..f59793d 100644 --- a/recipes-core/images/mlinux-picocell-image.bb +++ b/recipes-core/images/mlinux-picocell-image.bb @@ -1,6 +1,7 @@ DESCRIPTION = "mLinux PicoCell image" require mlinux-minimal-image.bb +require mlinux-firmware-upgrade.inc FILESYSTEM_FEATURES = "dosfstools \ cifs-utils \ diff --git a/recipes-core/mlinux-scripts/mlinux-scripts-1.0.inc b/recipes-core/mlinux-scripts/mlinux-scripts-1.0.inc index fd75904..979fc4c 100644 --- a/recipes-core/mlinux-scripts/mlinux-scripts-1.0.inc +++ b/recipes-core/mlinux-scripts/mlinux-scripts-1.0.inc @@ -6,7 +6,9 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda SRC_URI = "file://mlinux-wifi-ap \ file://mlinux-dhcpd \ file://mlinux-set-apn \ - file://mlinux-cell-router" + file://mlinux-cell-router \ + file://mlinux-firmware-upgrade \ +" do_install() { @@ -15,4 +17,5 @@ do_install() { install -m 755 ${WORKDIR}/mlinux-dhcpd ${D}${sbindir} install -m 755 ${WORKDIR}/mlinux-set-apn ${D}${sbindir} install -m 755 ${WORKDIR}/mlinux-cell-router ${D}${sbindir} + install -m 755 ${WORKDIR}/mlinux-firmware-upgrade ${D}${sbindir} } diff --git a/recipes-core/mlinux-scripts/mlinux-scripts-1.0/mlinux-firmware-upgrade b/recipes-core/mlinux-scripts/mlinux-scripts-1.0/mlinux-firmware-upgrade new file mode 100755 index 0000000..94027d5 --- /dev/null +++ b/recipes-core/mlinux-scripts/mlinux-scripts-1.0/mlinux-firmware-upgrade @@ -0,0 +1,57 @@ +#!/bin/bash + +if [ $# != 1 ]; then + echo "Usage: $0 upgrade.bin" + exit 1 +fi + +set -e +upgrade=$1 + +mkdir -p /var/volatile +cd /var/volatile + +# make sure firmware is for this device +hw_version=$(cat /sys/devices/platform/mts-io/hw-version) +firmware_model=$(tar -xO -f $upgrade model) +shopt -s nocasematch +if [[ ! "$hw_version" =~ ^$firmware_model- ]]; then + logger -s -t firmware_upgrade "Wrong firmware for this hardware" + logger -s -t firmware_upgrade "hw version: $hw_version" + logger -s -t firmware_upgrade "firmware model: $firmware_model" + exit 1 +fi + +files=(bstrap.bin uboot.bin uImage.bin config.jffs2 oem.jffs2 rootfs.jffs2) + +tobeflashed=0 +# verify all MD5 sums +for (( i = 0; i < ${#files[@]}; i++ )); do + file=${files[i]} + # if the file is in the tar, md5sum it + if tar -t -f $upgrade | grep -F -q "$file"; then + logger -s -t firmware_upgrade "Checking MD5 for $file..." + if ! tar -x -f $upgrade $file.md5; then + logger -s -t firmware_upgrade "MD5 is not found for the $file, upgrade aborted" + exit 1 + fi + if ! tar -xO -f $upgrade $file | md5sum -c $file.md5; then + logger -s -t firmware_upgrade "MD5 check failed, upgrade aborted" + exit 1 + fi + tobeflashed=1 + fi +done + +if (( $tobeflashed )); then + mkdir -p /var/volatile/flash-upgrade + mv -f $upgrade /var/volatile/flash-upgrade/upgrade.bin + touch /var/volatile/do_flash_upgrade + logger -s -t firmware_upgrade "Rebooting" + sleep 1 + reboot + exit 0 +else + logger -s -t firmware_upgrade "Nothing to be flashed!" + exit 1 +fi diff --git a/recipes-core/mlinux-scripts/mlinux-scripts_1.0.bb b/recipes-core/mlinux-scripts/mlinux-scripts_1.0.bb index 6b0d37f..9fb8fbd 100644 --- a/recipes-core/mlinux-scripts/mlinux-scripts_1.0.bb +++ b/recipes-core/mlinux-scripts/mlinux-scripts_1.0.bb @@ -2,6 +2,6 @@ DESCRIPTION = "Scripts to easily get started with common mLinux use cases" require mlinux-scripts-1.0.inc -PR = "r4" +PR = "r5" S = "${WORKDIR}/mlinux-scripts-${PV}" -- cgit v1.2.3 From 5c3b0bfb5aa34e76614db03b85cd05a25e1fc522 Mon Sep 17 00:00:00 2001 From: Mykyta Dorokhin Date: Thu, 29 Sep 2016 00:42:43 +0300 Subject: mtp: add ppp UP timestamp into ip-up ppp script --- recipes-connectivity/ppp/ppp-2.4.7/ip-up | 5 +++++ recipes-connectivity/ppp/ppp_2.4.7.bb | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/recipes-connectivity/ppp/ppp-2.4.7/ip-up b/recipes-connectivity/ppp/ppp-2.4.7/ip-up index fc2fae9..b78e688 100755 --- a/recipes-connectivity/ppp/ppp-2.4.7/ip-up +++ b/recipes-connectivity/ppp/ppp-2.4.7/ip-up @@ -41,4 +41,9 @@ export PPP_TTYNAME run-parts /etc/ppp/ip-up.d +# save timestamp +linkuptime=$(cat /proc/uptime) +linkuptime=${linkuptime%%.*} +echo "$linkuptime" > /var/run/pppisup-$PPP_IFACE.sec + # last line diff --git a/recipes-connectivity/ppp/ppp_2.4.7.bb b/recipes-connectivity/ppp/ppp_2.4.7.bb index 8a94318..881c40e 100644 --- a/recipes-connectivity/ppp/ppp_2.4.7.bb +++ b/recipes-connectivity/ppp/ppp_2.4.7.bb @@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://pppd/ccp.c;beginline=1;endline=29;md5=e2c43fe6e81ff77 file://pppd/plugins/passprompt.c;beginline=1;endline=10;md5=3bcbcdbf0e369c9a3e0b8c8275b065d8 \ file://pppd/tdb.c;beginline=1;endline=27;md5=4ca3a9991b011038d085d6675ae7c4e6 \ file://chat/chat.c;beginline=1;endline=15;md5=0d374b8545ee5c62d7aff1acbd38add2" -PR = "r7" +PR = "r8" SRC_URI = "http://ppp.samba.org/ftp/ppp/ppp-${PV}.tar.gz \ file://makefile.patch \ -- cgit v1.2.3 From d3759b99f4fe025e82a507fb8fa6caddbeae4940 Mon Sep 17 00:00:00 2001 From: Mykyta Dorokhin Date: Thu, 29 Sep 2016 21:42:34 +0300 Subject: mtp: delete mlinux-firmware-upgrade.inc since the functionality is already defined in mlinux-image.bbclass --- recipes-core/images/mlinux-firmware-upgrade.inc | 25 ------------------------- recipes-core/images/mlinux-picocell-image.bb | 2 +- 2 files changed, 1 insertion(+), 26 deletions(-) delete mode 100644 recipes-core/images/mlinux-firmware-upgrade.inc diff --git a/recipes-core/images/mlinux-firmware-upgrade.inc b/recipes-core/images/mlinux-firmware-upgrade.inc deleted file mode 100644 index c3c7c8d..0000000 --- a/recipes-core/images/mlinux-firmware-upgrade.inc +++ /dev/null @@ -1,25 +0,0 @@ -# generate mlinux firmware upgrade files - -FIRMWARE_UPGRADE_FILE_NAME ?= "${IMAGE_BASENAME}-${MACHINE}-upgrade.bin" - -do_firmware () { - cd ${DEPLOY_DIR_IMAGE} - rm -f bstrap.bin* uboot.bin* uImage.bin* rootfs.jffs2* model - - cp at91bootstrap_pmecc_padded.bin bstrap.bin - cp u-boot-${MACHINE}.bin uboot.bin - cp uImage-${MACHINE}.bin uImage.bin - cp ${IMAGE_BASENAME}-${MACHINE}.jffs2 rootfs.jffs2 - - cat bstrap.bin | md5sum > bstrap.bin.md5 - cat uboot.bin | md5sum > uboot.bin.md5 - cat uImage.bin | md5sum > uImage.bin.md5 - cat rootfs.jffs2 | md5sum > rootfs.jffs2.md5 - - echo "${MACHINE}" > model - - tar cvf ${FIRMWARE_UPGRADE_FILE_NAME} bstrap.bin* uboot.bin* uImage.bin* rootfs.jffs2* model - rm -f bstrap.bin* uboot.bin* uImage.bin* rootfs.jffs2* model -} - -addtask firmware after do_rootfs before do_build diff --git a/recipes-core/images/mlinux-picocell-image.bb b/recipes-core/images/mlinux-picocell-image.bb index f59793d..1740ce9 100644 --- a/recipes-core/images/mlinux-picocell-image.bb +++ b/recipes-core/images/mlinux-picocell-image.bb @@ -1,7 +1,6 @@ DESCRIPTION = "mLinux PicoCell image" require mlinux-minimal-image.bb -require mlinux-firmware-upgrade.inc FILESYSTEM_FEATURES = "dosfstools \ cifs-utils \ @@ -33,6 +32,7 @@ MULTITECH_FEATURES += " \ reset-handler \ radio-cmd radio-query \ jsparser \ + annex-client \ " LORA_FEATURES = "lora-packet-forwarder \ -- cgit v1.2.3 From 4ef2f4846db7ddf0a5895506552f6c45295eb01a Mon Sep 17 00:00:00 2001 From: Mykyta Dorokhin Date: Thu, 29 Sep 2016 23:03:22 +0300 Subject: mtp: added mlinux_set_product_version to ROOTFS_POSTPROCESS_COMMAND. If ${FIRMWARE_PRODUCT_VER} variable is set it will be appended to /etc/issue file. --- classes/mlinux-image.bbclass | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/classes/mlinux-image.bbclass b/classes/mlinux-image.bbclass index 3f49a94..13cacb5 100644 --- a/classes/mlinux-image.bbclass +++ b/classes/mlinux-image.bbclass @@ -12,6 +12,24 @@ mlinux_set_root_password () { } ROOTFS_POSTPROCESS_COMMAND += "mlinux_set_root_password;" +# set custom product sw version to /etc/issue file if $FIRMWARE_PRODUCT_VER is set +mlinux_set_product_version () { + if [ -n "${FIRMWARE_PRODUCT_VER}" ]; then + # set issue + if cat ${IMAGE_ROOTFS}/etc/issue | grep "Version: " > /dev/null 2>&1 ; then + # replace + sed -i "s/^Version: .*$/Version: $FIRMWARE_PRODUCT_VER/g" ${IMAGE_ROOTFS}/etc/issue + sed -i "s/^Date: .*$/Date: $FIRMWARE_PRODUCT_DATE/g" ${IMAGE_ROOTFS}/etc/issue + else + # add + echo "" >> ${IMAGE_ROOTFS}/etc/issue + echo "Version: ${FIRMWARE_PRODUCT_VER}" >> ${IMAGE_ROOTFS}/etc/issue + echo "Date: $(date +%Y-%m-%dT%H:%M:%S)" >> ${IMAGE_ROOTFS}/etc/issue + fi + fi +} +ROOTFS_POSTPROCESS_COMMAND += "mlinux_set_product_version;" + # generate upgrade.bin files -- provides single file for upgrades do_firmware () { cd ${DEPLOY_DIR_IMAGE} -- cgit v1.2.3 From ebbb49d7bcfa7874cb820e6106164ea42d05f723 Mon Sep 17 00:00:00 2001 From: Mykyta Dorokhin Date: Fri, 7 Oct 2016 13:43:28 +0300 Subject: mtp: remove annex-client from picocell image recipe --- recipes-core/images/mlinux-picocell-image.bb | 1 - 1 file changed, 1 deletion(-) diff --git a/recipes-core/images/mlinux-picocell-image.bb b/recipes-core/images/mlinux-picocell-image.bb index 1740ce9..49670a9 100644 --- a/recipes-core/images/mlinux-picocell-image.bb +++ b/recipes-core/images/mlinux-picocell-image.bb @@ -32,7 +32,6 @@ MULTITECH_FEATURES += " \ reset-handler \ radio-cmd radio-query \ jsparser \ - annex-client \ " LORA_FEATURES = "lora-packet-forwarder \ -- cgit v1.2.3