summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/upgrade/README106
-rwxr-xr-xscripts/upgrade/build.sh13
-rwxr-xr-xscripts/upgrade/install.sh148
-rwxr-xr-xscripts/upgrade/install.template108
-rw-r--r--scripts/upgrade/install_list.txt1
-rw-r--r--scripts/upgrade/log.txt579
-rw-r--r--scripts/upgrade/model2
-rw-r--r--scripts/upgrade/upgrade-4.0.0-4.0.1/install_list.txt0
-rw-r--r--scripts/upgrade/upgrade-4.0.0-4.0.1/local.conf (renamed from scripts/upgrade/local.conf)5
-rw-r--r--scripts/upgrade/upgrade-4.0.0-4.0.1/repo/Packages0
-rw-r--r--scripts/upgrade/upgrade-4.0.0-4.0.1/repo/arm926ejste/Packages179
-rw-r--r--scripts/upgrade/upgrade-4.0.0-4.0.1/repo/mtcap/Packages31
-rw-r--r--scripts/upgrade/upgrade-4.0.0-4.0.1/repo/mtcdt/Packages31
13 files changed, 995 insertions, 208 deletions
diff --git a/scripts/upgrade/README b/scripts/upgrade/README
index 6d5a1b6..c94f72f 100644
--- a/scripts/upgrade/README
+++ b/scripts/upgrade/README
@@ -1,62 +1,54 @@
The upgrade scripts goes in a tarball with local.conf at the top level.
-The tree is a follows:
-.
-|-- install_list.txt
-|-- install_list.txt.md5
-|-- install.sh*
-|-- install.sh.md5
-|-- local.conf
-|-- local.conf.md5
-|-- model
-`-- repo/
- |-- arm926ejste/
- | |-- busybox_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
- | |-- busybox-hwclock_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
- | |-- busybox-ifplugd_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
- | |-- busybox-syslog_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
- | |-- busybox-udhcpc_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
- | |-- initscripts_1.0-r155.3.40.0_arm926ejste.ipk
- | |-- initscripts-functions_1.0-r155.3.40.0_arm926ejste.ipk
- | |-- Packages
- | |-- Packages.gz
- | `-- Packages.stamps
- `-- Packages
-
-
-
-install.sh gets executed if it exists by /etc/init.d/umountfs
-
-The files are placed in a tarball called upgrade.bin, and it
-should be located in either /var/volatile/flash-upgrade or
-/media/card/flash-upgrade to be compatible with umountfs.
-
-The file /var/volatile/do_flash_upgrade must exist and
-be owned by root for umountfs to execute the upgrade
-procedure.
-
-install_list.txt is a list of packages to
-install after the upgrade. If some packages
-have mutual dependencies on each other, they should
-be put on the same line.
+log.txt shows what happens when the package is installed.
-The file local.conf should contain a list of
-architectures with priorities, and a list of
-repositories.
-
-The md5sums are created as follows:
-
-cat install.sh | md5sum -c install.sh.md5
-md5sum install.sh >install.sh.md5
-md5sum local.conf >local.conf.md5
-
-model is from the part of the hardware
-version before the first hyphen.
-
-Example:
-
-MTCAP-0.1 Would be MTCAP
-MTCDT-0.0 Would be MTCDT
-MTCDTIP-0.1 Would be MTCDTIP
+The script build.sh is used to create the binary update package
+used by mlinux-firmware-update.
+The tree is a follows:
+upgrade-4.0.0-4.0.1/
+├── install_list.txt
+├── local.conf
+└── repo
+ ├── arm926ejste
+ │   ├── bluez5_5.47-m3.0_arm926ejste.ipk
+ │   ├── bluez5-noinst-tools_5.47-m3.0_arm926ejste.ipk
+ │   ├── bluez5-obex_5.47-m3.0_arm926ejste.ipk
+ │   ├── bluez5-pand_5.47-m3.0_arm926ejste.ipk
+ │   ├── bluez5-rfcomm_5.47-m3.0_arm926ejste.ipk
+ │   ├── bluez5-testtools_5.47-m3.0_arm926ejste.ipk
+ │   ├── libasound-module-bluez_5.47-m3.0_arm926ejste.ipk
+ │   ├── libmts-io0_1.0.8-r0.0_arm926ejste.ipk
+ │   ├── lora-network-server_2.0.19-r4.0_arm926ejste.ipk
+ │   ├── Packages
+ │   ├── Packages.gz
+ │   ├── Packages.stamps
+ │   └── python-pybluez_0.22-r0.0_arm926ejste.ipk
+ ├── mtcap
+ │   ├── mlinux-version_4.0.1_ea6ba1e5fb287003fea33522af39a771102713b2-r2.0_mtcap.ipk
+ │   ├── mts-id-eeprom_0.3.8-r1.0.0_mtcap.ipk
+ │   ├── Packages
+ │   ├── Packages.gz
+ │   └── Packages.stamps
+ ├── mtcdt
+ │   ├── mlinux-version_4.0.1_ea6ba1e5fb287003fea33522af39a771102713b2-r2.0_mtcdt.ipk
+ │   ├── mts-id-eeprom_0.3.8-r1.0.0_mtcdt.ipk
+ │   ├── Packages
+ │   ├── Packages.gz
+ │   └── Packages.stamps
+ └── Packages
+
+
+If one puts the packages in a build tree at build/tmp/deploy/ipk,
+and run bitbake package-index, the Packages* files are refreshed.
+
+In this example, all MTCDT-like models as of today are supported.
+
+That is MTCDT, MTCDTIP, MTCDTIPHP, and MTCAP are supported in this
+update.
+
+install_list.txt would be a list of extra packages to install.
+
+We should probably have a remove_list.txt for cases where packages
+are obsolete.
diff --git a/scripts/upgrade/build.sh b/scripts/upgrade/build.sh
new file mode 100755
index 0000000..a796c2c
--- /dev/null
+++ b/scripts/upgrade/build.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+dir=$(ls -d upgrade-*)
+sed "s/UPGRADE_DIR/${dir}/" install.template >install.sh
+echo "Upgrade directory is ${dir}"
+cat install.sh | md5sum >install.sh.md5
+cd upgrade-*
+cat local.conf | md5sum >local.conf.md5
+cat install_list.txt | md5sum >install_list.txt.md5
+cd ..
+set -x
+chmod +x install.sh
+tar --owner=0 --group=0 -cJf ~/${dir}.bin model install.sh* upgrade-*
diff --git a/scripts/upgrade/install.sh b/scripts/upgrade/install.sh
deleted file mode 100755
index 4928d88..0000000
--- a/scripts/upgrade/install.sh
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/bin/bash
-# This script works with a tar archvie
-# called upgrade.bin in either /var/volatile
-# or on the SD card.
-#
-# This is what the tar file upgrade file
-# should look like to create an ipk upgrade
-# file. IPK files should be in all,
-# arm926ejste, and mtcdt (for mtcdt)
-cat <<'!EOF' >/dev/null
-.
-|-- install_list.txt
-|-- install_list.txt.md5
-|-- install.sh*
-|-- install.sh.md5
-|-- local.conf
-|-- local.conf.md5
-|-- model
-|-- repo/
-| |-- arm926ejste/
-| | |-- busybox_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
-| | |-- busybox-hwclock_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
-| | |-- busybox-ifplugd_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
-| | |-- busybox-syslog_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
-| | |-- busybox-udhcpc_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
-| | |-- initscripts_1.0-r155.3.40.0_arm926ejste.ipk
-| | |-- initscripts-functions_1.0-r155.3.40.0_arm926ejste.ipk
-| | |-- Packages
-| | |-- Packages.gz
-| | `-- Packages.stamps
-| `-- Packages
-!EOF
-#
-# The tarball must be called upgrade.bin.
-#
-# The file /var/volatile/do_flash_upgrade must exist and
-# be owned by root.
-#
-# The tar file, upgrade.bin must be either in
-# /var/volatile/flash-upgrade or
-# /media/card/flash-upgrade
-#
-# Note that when this script is started, the
-# tar file is already unpacked, since this script
-# is in the tarball.
-
-# This script assumes that the rootfs and maybe /var
-# are writable. For MTR, we may need to set
-# root and var to read/write
-
-NAME=install.sh
-echo "$NAME starting"
-
-umount_all() {
- if [[ $1 == "error" ]] ; then
- echo "Cannot continue"
- err_leds
- sleep 10
- fi
- echo "Deactivating swap..."
- swapoff -a
-
- # We leave /proc mounted.
- echo "Unmounting local filesystems..."
- grep -q /mnt/ram /proc/mounts && mount -o remount,ro /mnt/ram
- umount -f -a -r > /dev/null 2>&1
-
- mount -o remount,ro /
- ${up_dir}/upgrade-reboot
-
- # Should not get here normally
- echo "upgrade-reboot failed"
- /sbin/reboot
- exit 1
-}
-err_leds() {
- led_dir=/sys/class/leds
- # blink all programmable LEDs except status
- leds=$(ls $led_dir/ | grep -v status)
- nleds=$(echo "$leds" | wc -w)
-
- # turn LEDs off
- for led in $leds; do
- echo "timer" > $led_dir/$led/trigger
- echo 0 > $led_dir/$led/delay_off
- done
-
- int=200
- total=$(( int * (nleds+1) ))
- on=$(( total - int ))
- off=$(( total - on ))
-
- # make a pattern
- for led in $leds; do
- echo "$on" > $led_dir/$led/delay_on
- echo "$off" > $led_dir/$led/delay_off
- done
- sleep 5
-}
-flash_dir="$1"
-up_dir="${flash_dir}/flash-upgrade"
-if ! [[ -d ${up_dir} ]] ; then
- echo "\"${up_dir}\" is not present"
- umount_all error
-fi
-echo "ls -l ${flash_dir}"
-ls -l ${flash_dir}
-echo "ls -l ${up_dir}"
-ls -l "${up_dir}"
-cd "${up_dir}"
-if ! md5sum -c local.conf.md5 >/dev/null ; then
- echo "md5sum of local.conf is bad"
- umount_all error
-fi
-
-# opkg needs /tmp, so recreate it.
-# On a Conduit, this is always /var/volatile
-mkdir -m 01777 /var/volatile/tmp
-localcnf="${up_dir}/local.conf"
-echo "Local configuration file: ${localcnf}"
-echo mounts ...
-cat /proc/mounts
-echo "Update package list ... /usr/bin/opkg -f ${localcnf} update"
-/usr/bin/opkg -f "${localcnf}" update
-echo "List upgradable packages ... /usr/bin/opkg -f ${localcnf} list-upgradable"
-/usr/bin/opkg -f "${localcnf}" list-upgradable
-echo "Do package upgrade /usr/bin/opkg -f ${localcnf} upgrade"
-/usr/bin/opkg -f "${localcnf}" upgrade
-pkglist_file="install_list.txt"
-if [[ -r ${pkglist_file} ]] ; then
- if ! md5sum -c ${pkglist_file}.md5 ; then
- echo "md5sum bad on ${pkglist_file}"
- umount_all error
- fi
- OIFS="${IFS}"
- IFS=$'\n'
- for p in $(cat ${pkglist_file}) ; do
- echo /usr/bin/opkg -f "${localcnf}" install $p
- /usr/bin/opkg -f "${localcnf}" install $p
- done
- IFS="${OIFS}"
-fi
-echo "Rebooting..."
-
-umount_all ok
-echo "upgrade-reboot failed"
-exit 1
-
diff --git a/scripts/upgrade/install.template b/scripts/upgrade/install.template
new file mode 100755
index 0000000..191dcf7
--- /dev/null
+++ b/scripts/upgrade/install.template
@@ -0,0 +1,108 @@
+#!/bin/bash
+# This script works with a tar archvie
+# called upgrade.bin in either /var/volatile
+# or on the SD card.
+#
+# This is what the tar file upgrade file
+# should look like to create an ipk upgrade
+# file. IPK files should be in all,
+# arm926ejste, and mtcdt (for mtcdt)
+cat <<'!EOF' >/dev/null
+.
+|-- install_list.txt
+|-- install_list.txt.md5
+|-- install.sh*
+|-- local.conf
+|-- repo/
+| |-- arm926ejste/
+| | |-- busybox_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
+| | |-- busybox-hwclock_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
+| | |-- busybox-ifplugd_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
+| | |-- busybox-syslog_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
+| | |-- busybox-udhcpc_1.24.1-r0.mlinux2.mlinux2.1_arm926ejste.ipk
+| | |-- initscripts_1.0-r155.3.40.0_arm926ejste.ipk
+| | |-- initscripts-functions_1.0-r155.3.40.0_arm926ejste.ipk
+| | |-- Packages
+| | |-- Packages.gz
+| | `-- Packages.stamps
+| `-- Packages
+!EOF
+#
+# The tarball must be called upgrade.bin.
+#
+# The file /var/volatile/do_flash_upgrade must exist and
+# be owned by root.
+#
+# The tar file, upgrade.bin must be either in
+# /var/volatile/flash-upgrade or
+# /media/card/flash-upgrade
+#
+# Note that when this script is started, the
+# tar file is already unpacked, since this script
+# is in the tarball.
+
+# This script assumes that the rootfs and maybe /var
+# are writable. For MTR, we may need to set
+# root and var to read/write
+
+NAME=install.sh
+echo "$NAME starting in directory $(pwd)"
+cd flash-upgrade/UPGRADE_DIR
+
+id=$(id -u)
+if ((id != 0)) ; then
+ echo 'You must be root (admin in AEP) to install packages.'
+ exit 1
+fi
+
+cat /proc/mounts
+ls /
+ls -l /tmp
+
+localcnf=local.conf
+
+if ! [[ -f ${localcnf} ]] ; then
+ echo "Cannot find ${localcnf}"
+ echo "This file must be in the current directory."
+ exit 1
+fi
+
+dir=$(pwd)
+
+sed -i "s?FLASHDIR?${dir}?" ${localcnf}
+machine=$(mts-io-sysfs show product-id | sed 's/-.*//')
+if [[ $machine == MTCAP ]] ; then
+ # remove mtcdt
+ sed -i '/mtcdt/d' ${localcnf}
+else
+ # remove mtcap
+ sed -i '/mtcap/d' ${localcnf}
+fi
+
+cat ${localcnf}
+pkglist_file="install_list.txt"
+cat ${pkglist_file} |
+(if ! md5sum -c ${pkglist_file}.md5 ; then
+ echo "md5sum bad on ${pkglist_file}"
+ umount_all error
+fi)
+
+echo "Update package list ... /usr/bin/opkg -f ${localcnf} update"
+/usr/bin/opkg -t /var/volatile/ -f "${localcnf}" update
+if [[ -r ${pkglist_file} ]] ; then
+ OIFS="${IFS}"
+ IFS=$'\n'
+ for p in $(cat ${pkglist_file}) ; do
+ echo /usr/bin/opkg -f "${localcnf}" install $p
+ /usr/bin/opkg -t /var/volatile/ -f "${localcnf}" install $p
+ done
+ IFS="${OIFS}"
+fi
+
+/usr/bin/opkg -t /var/volatile/ -f "${localcnf}" upgrade
+
+
+version=$(grep mLinux /etc/mlinux-version | sed 's/mLinux //')
+
+sed -ri "s/mLinux [0-9][^ ]* /mLinux ${version} /" /etc/issue
+sed -ri "s/Version: [0-9][^ ]*/Version: ${version} /" /etc/issue
diff --git a/scripts/upgrade/install_list.txt b/scripts/upgrade/install_list.txt
deleted file mode 100644
index 2e46397..0000000
--- a/scripts/upgrade/install_list.txt
+++ /dev/null
@@ -1 +0,0 @@
-busybox-ifplugd
diff --git a/scripts/upgrade/log.txt b/scripts/upgrade/log.txt
new file mode 100644
index 0000000..550218a
--- /dev/null
+++ b/scripts/upgrade/log.txt
@@ -0,0 +1,579 @@
+
+ _ _
+ _ __ ___ | | (_)_ __ _ ___ __
+ | '_ ` _ \| | | | '_ \| | | \ \/ /
+ | | | | | | |___| | | | | |_| |> <
+ |_| |_| |_|_____|_|_| |_|\__,_/_/\_\
+
+MultiTech Systems mLinux GNU/Linux
+mLinux 4.0.0 mtcdt /dev/ttyS0
+
+
+Version: 4.0.1
+Date: 2018-06-12T11:04:17
+mtcdt login: mtadm
+Password:
+mtcdt:~$ cd /var/volatile
+mtcdt:/var/volatile$ ls
+log tmp upgrade-mts-io-2.1.0-3.12.70r20.bin
+mtcdt:/var/volatile$ sudo -s
+Password:
+mtcdt:/var/volatile# mlinux-firmware-upgrade upgrade-mts-io-2.1.0-3.12.70r20.bin
+firmware_upgrade: Checking MD5 for install.sh...
+-: OK
+firmware_upgrade: Rebooting
+
+Broadcast message from root@mtcdt (ttyS0) (Wed Jun 20 15:33:59 2018):
+
+The system is going down for reboot NOW!
+INIT: Switching to runlevel: 6
+mtcdt:/var/volatile# INIT: Sending processes the TERM signal
+Stopping ifplugd: done
+Stopping OpenBSD Secure Shell server: sshdstopped /usr/sbin/sshd (pid 557)
+.
+Stopping GPS (Global Positioning System) daemon gpsd
+monit: disabled in /etc/default
+Stopping bluetooth
+/usr/libexec/bluetooth/bluetoothd
+Stopping system message bus: macb f802c000.ethernet eth0: link down
+dbus.
+Stopping HOSTAP Daemon: no /usr/sbin/hostapd found; none killed
+Stopping ntpd: done
+Stopping syslogd/klogd: stopped syslogd (pid 604)
+stopped klogd (pid 607)
+done
+bt-pan: disabled in /etc/default
+No /usr/bin/python2.7 found running; none killed.
+Stopping
+Stopping lora-network-server: OK
+Stopping Mosquitto...
+Stopping crond: OK
+Gracefully shutting down php-fpm warning, no pid file found - php-fpm is not running ?
+lighttpd: disabled in /etc/default
+Deconfiguring network interfaces... ifdown: interface eth0 not configured
+done.
+Sending all processes the TERM signal...
+Sending all processes the KILL signal...
+Unmounting remote filesystems...
+Found /var/volatile/flash-upgrade/upgrade.bin
+Checking MD5s
+-: OK
+
+Starting flash upgrade from /var/volatile/flash-upgrade/upgrade.bin...
+install.sh starting in directory /var/volatile
+rootfs / rootfs rw 0 0
+/dev/root / jffs2 rw,relatime 0 0
+devtmpfs /dev devtmpfs rw,relatime,size=126852k,nr_inodes=31713,mode=755 0 0
+proc /proc proc rw,relatime 0 0
+sysfs /sys sysfs rw,relatime 0 0
+tmpfs /run tmpfs rw,nosuid,nodev,mode=755 0 0
+tmpfs /var/volatile tmpfs rw,relatime 0 0
+/dev/mtdblock6 /var/config jffs2 rw,relatime 0 0
+/dev/mtdblock7 /var/oem jffs2 ro,relatime 0 0
+devpts /dev/pts devpts rw,relatime,gid=5,mode=620 0 0
+bin boot dev etc home lib media mnt opt proc run sbin sys tmp usr var www
+lrwxrwxrwx 1 root root 8 Jun 12 12:13 /tmp -> /var/tmp
+kernel-module-atmel-mci - 3.12.70-r20.1
+Upgradable kernel is installed
+-: OK
+Update package list ... /usr/bin/opkg -f local.conf update
+Downloading file:///var/volatile/flash-upgrade/upgrade-mts-io-2.1.0-3.12.70r20/repo/mtcdt/Packages.gz.
+Updated source 'mlinux-mtcdt'.
+/usr/bin/opkg -f local.conf install kernel-module-mts-io
+Upgrading kernel-module-mts-io from 2.0.4-r0.0-3.12.70r20.0 to 2.1.0-r0.0-3.12.70r20.0 on root.
+Installing kernel-module-mts-io (2.1.0-r0.0) on root.
+Downloading file:///var/volatile/flash-upgrade/upgrade-mts-io-2.1.0-3.12.70r20/repo/mtcdt/kernel-module-mts-io_2.1.0-r0.0-3.12.70r20.0_mtcdt.ipk.
+Configuring kernel-module-mts-io.
+Configuring useradd.
+PATH=${PATH}:/sbin:/usr/sbin
+/usr/bin/opkg -f local.conf install mts-io-noarch
+Upgrading mts-io-noarch from 2.0.4-r0.0-3.12.70r20.0 to 2.1.0-r0.0-3.12.70r20.0 on root.
+Installing mts-io-noarch (2.1.0-r0.0) on root.
+Downloading file:///var/volatile/flash-upgrade/upgrade-mts-io-2.1.0-3.12.70r20/repo/mtcdt/mts-io-noarch_2.1.0-r0.0-3.12.70r20.0_mtcdt.ipk.
+mts-io: Unloading mts-io module
+[INFO] mts-io:cleanup:1138: cleaning up....
+[INFO] mts-io:lora_teardown:203: unloading LORA accessory card in port 1
+[INFO] mts-io:mts_io_exit:1221: exiting
+OK
+mts-io: Unloading mts-io module
+OK
+update-rc.d: /etc/init.d/mts-io exists during rc.d purge (continuing)
+ Removing any system startup links for mts-io ...
+ /etc/rcS.d/S39mts-io
+update-rc.d: /etc/init.d/mts-io exists during rc.d purge (continuing)
+ Removing any system startup links for mts-io ...
+Configuring mts-io-noarch.
+ Adding system startup for /etc/init.d/mts-io.
+mts-io: Unloading mts-io module
+OK
+mts-io: Loading mts-io module
+[INFO] mts-io:mts_io_init:1046: init: v2.1.0
+[INFO] mts-io:mts_id_eeprom_load:853: Pruning radio feature from mts-io
+[INFO] mts-io:mts_id_eeprom_load:872: Adding WiFi/BT to mts-io driver
+[INFO] mts-io:mts_id_eeprom_load:877: Adding GPS to mts-io driver
+[INFO] mts-io:mts_id_eeprom_load:889: detected board MTCDT-0.1
+[INFO] mts-io:mts_id_eeprom_load:960: sizeof: 512
+[INFO] mts-io:mts_id_eeprom_load:961: vendor-id: Multi-Tech Systems
+[INFO] mts-io:mts_id_eeprom_load:962: product-id: MTCDT-247L
+[INFO] mts-io:mts_id_eeprom_load:963: device-id: 12345678
+[INFO] mts-io:mts_id_eeprom_load:964: hw-version: MTCDT-0.1
+[INFO] mts-io:mts_id_eeprom_load:971: mac-addr: 00:08:00:10:00:00
+[INFO] mts-io:mts_id_eeprom_load:973: imei: 123456789123456789
+[INFO] mts-io:mts_id_eeprom_load:974: capa-gps: yes
+[INFO] mts-io:mts_id_eeprom_load:975: capa-din: no
+[INFO] mts-io:mts_id_eeprom_load:976: capa-dout: no
+[INFO] mts-io:mts_id_eeprom_load:977: capa-adc: no
+[INFO] mts-io:mts_id_eeprom_load:978: capa-wifi: yes
+[INFO] mts-io:mts_id_eeprom_load:979: capa-bluetooth: yes
+[INFO] mts-io:mts_id_eeprom_load:980: capa-lora: no
+[INFO] mts-io:mts_id_eeprom_load:989: mac-bluetooth: 00:00:00:00:00:00
+[INFO] mts-io:mts_id_eeprom_load:998: mac-wifi: 00:00:00:00:00:00
+[INFO] mts-io:mts_id_eeprom_load:1005: uuid: AAA00000000000000000000000000021
+[INFO] mts-io:load_port:663: accessory card 1 vendor-id: Multi-Tech Systems
+[INFO] mts-io:load_port:664: accessory card 1 product-id: MTAC-LORA-H-915
+[INFO] mts-io:load_port:665: accessory card 1 device-id: P87040004
+[INFO] mts-io:load_port:666: accessory card 1 hw-version: MTAC-LORA-1.5
+[INFO] mts-io:load_port:687: accessory card 1 eui: 00:80:00:00:00:00:00:A4
+[INFO] mts-io:lora_setup:60: loading LORA accessory card in port 1
+[INFO] mts-io:lora_setup:90: created link [lora] to [ap1], success:0
+[INFO] mts-io:lora_setup:126: Substitute pins
+[INFO] mts-io:lora_setup:131: LORA H: Replace name AP1_GPIO1 with name AP1_CDONE
+[INFO] mts-io:lora_setup:132: LORA H: Replace pin number 70 with number 70
+[INFO] mts-io:lora_setup:131: LORA H: Replace name AP1_GPIO2 with name AP1_CRESET
+[INFO] mts-io:lora_setup:132: LORA H: Replace pin number 71 with number 71
+[INFO] mts-io:lora_setup:189: ap_subdirs[port_index=0] = ce97bc60 ap_subdirs[port_index=0]=bf2b921c
+[INFO] mts-io:load_port:622: no accessory card inserted in port 2
+mts-io: Resetting system modules
+usb 1-2.2: USB disconnect, device number 8
+usb 1-2.2: new high-speed USB device number 9 using atmel-ehci
+usb 1-2.2: New USB device found, idVendor=1618, idProduct=9113
+usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=6
+usb 1-2.2: Product: Wireless USB Network Module
+usb 1-2.2: Manufacturer: Redpine Signals, Inc.
+usb 1-2.2: SerialNumber: 000000000001
+usb 1-2: USB disconnect, device number 5
+usb 1-2.1: USB disconnect, device number 6
+usb 1-2.2: USB disconnect, device number 9
+usb 1-2: new high-speed USB device number 10 using atmel-ehci
+usb 1-2: New USB device found, idVendor=0424, idProduct=2534
+usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
+hub 1-2:1.0: USB hub found
+hub 1-2:1.0: 4 ports detected
+usb 1-2.1: new high-speed USB device number 11 using atmel-ehci
+usb 1-2.1: New USB device found, idVendor=0424, idProduct=2534
+usb 1-2.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
+hub 1-2.1:1.0: USB hub found
+hub 1-2.1:1.0: 4 ports detected
+usb 1-2.2: new high-speed USB device number 12 using atmel-ehci
+usb 1-2.2: new high-speed USB device number 13 using atmel-ehci
+usb 1-2.2: New USB device found, idVendor=1618, idProduct=9113
+usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=6
+usb 1-2.2: Product: Wireless USB Network Module
+usb 1-2.2: Manufacturer: Redpine Signals, Inc.
+usb 1-2.2: SerialNumber: 000000000001
+OK
+Rebooting... reboot: Restarting systemþRomBOOT
+
+
+AT91Bootstrap 3.5.3-r3 (Tue Jun 12 10:40:06 CDT 2018)
+
+NAND: ONFI flash detected
+NAND: Manufacturer ID: 0x2c Chip ID: 0x32
+NAND: Disable On-Die ECC
+NAND: Initialize PMECC params, cap: 0x4, sector: 0x200
+NAND: Image: Copy 0x80000 bytes from 0x40000 to 0x2ef00000
+NAND: Done to load image
+
+
+U-Boot 2016.09.01 (Jun 12 2018 - 10:40:13 -0500)
+
+CPU: AT91SAM9G25
+Crystal frequency: 12 MHz
+CPU clock : 400 MHz
+Master clock : 133.333 MHz
+ Watchdog enabled
+I2C: ready
+DRAM: 256 MiB
+WARNING: Caches not enabled
+NAND: 256 MiB
+MMC: mci: 0
+env_relocate_spec: crc1_ok=0 saved crc=0xffffffff calculated crc=0xf9137807 flags=255
+env_relocate_spec: crc2_ok=0 saved crc=0xffffffff calculated crc=0xf9137807 flags=255
+*** Warning - bad CRC, using default environment
+
+In: serial
+Out: serial
+Err: serial
+vendor-id: Multi-Tech Systems
+product-id: MTCDT-247L
+device-id: 12345678
+hw-version: MTCDT-0.1
+mac-addr: 00:08:00:10:00:00
+Net: macb0
+Hit any key to stop autoboot: 0
+
+Loading from nand0, offset 0x200000
+ Image Name: mLinux/3.12.70/mtcdt
+ Image Type: ARM Linux Kernel Image (uncompressed)
+ Data Size: 3095397 Bytes = 3 MiB
+ Load Address: 20008000
+ Entry Point: 20008000
+## Booting kernel from Legacy Image at 22000000 ...
+ Image Name: mLinux/3.12.70/mtcdt
+ Image Type: ARM Linux Kernel Image (uncompressed)
+ Data Size: 3095397 Bytes = 3 MiB
+ Load Address: 20008000
+ Entry Point: 20008000
+ Verifying Checksum ... OK
+ Loading Kernel Image ... OK
+
+Starting kernel ...
+
+Uncompressing Linux... done, booting the kernel.
+Booting Linux on physical CPU 0x0
+Linux version 3.12.70 (jenkins@frylock) (gcc version 6.2.0 (GCC) ) #1 PREEMPT Tue Jun 12 10:38:30 CDT 2018
+Machine: Atmel AT91SAM (Device Tree), model: Multi-Tech Systems MTCDT
+AT91: Detected soc type: at91sam9x5
+AT91: Detected soc subtype: at91sam9g25
+AT91: sram at 0x300000 of 0x8000 mapped at 0xfef70000
+Kernel command line: mem=256M console=ttyS0,115200 root=/dev/mtdblock8 ro rootfstype=jffs2
+PID hash table entries: 1024 (order: 0, 4096 bytes)
+Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
+Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
+Virtual kernel memory layout:
+ vector : 0xffff0000 - 0xffff1000 ( 4 kB)
+ fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
+ vmalloc : 0xd0800000 - 0xff000000 ( 744 MB)
+ lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)
+ modules : 0xbf000000 - 0xc0000000 ( 16 MB)
+ .text : 0xc0008000 - 0xc0579324 (5573 kB)
+ .init : 0xc057a000 - 0xc05a4f84 ( 172 kB)
+ .data : 0xc05a6000 - 0xc05d1720 ( 174 kB)
+ .bss : 0xc05d172c - 0xc05f1d3c ( 130 kB)
+Preemptible hierarchical RCU implementation.
+NR_IRQS:16 nr_irqs:16 16
+sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 4294967286ms
+Calibrating delay loop... 199.06 BogoMIPS (lpj=995328)
+pid_max: default: 32768 minimum: 301
+Mount-cache hash table entries: 512
+Initializing cgroup subsys blkio
+CPU: Testing write buffer coherency: ok
+Setting up static identity map for 0xc0420670 - 0xc04206c8
+devtmpfs: initialized
+pinctrl core: initialized pinctrl subsystem
+NET: Registered protocol family 16
+DMA: preallocated 256 KiB pool for atomic coherent allocations
+AT91: Power Management (with slow clock mode)
+AT91: Starting after software reset
+gpio-at91 fffff400.gpio: at address fefff400
+gpio-at91 fffff600.gpio: at address fefff600
+gpio-at91 fffff800.gpio: at address fefff800
+gpio-at91 fffffa00.gpio: at address fefffa00
+pinctrl-at91 pinctrl.2: initialized AT91 pinctrl driver
+bio: create slab <bio-0> at 0
+at_hdmac ffffec00.dma-controller: Atmel AHB DMA Controller ( cpy slave ), 8 channels
+at_hdmac ffffee00.dma-controller: Atmel AHB DMA Controller ( cpy slave ), 8 channels
+SCSI subsystem initialized
+usbcore: registered new interface driver usbfs
+usbcore: registered new interface driver hub
+usbcore: registered new device driver usb
+i2c-gpio i2c.3: using pins 30 (SDA) and 31 (SCL)
+i2c-gpio i2c.4: using pins 64 (SDA) and 65 (SCL)
+Switched to clocksource tcb_clksrc
+NET: Registered protocol family 2
+TCP established hash table entries: 2048 (order: 2, 16384 bytes)
+TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
+TCP: Hash tables configured (established 2048 bind 2048)
+TCP: reno registered
+UDP hash table entries: 256 (order: 0, 4096 bytes)
+UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
+NET: Registered protocol family 1
+RPC: Registered named UNIX socket transport module.
+RPC: Registered udp transport module.
+RPC: Registered tcp transport module.
+RPC: Registered tcp NFSv4.1 backchannel transport module.
+NFS: Registering the id_resolver key type
+Key type id_resolver registered
+Key type id_legacy registered
+jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
+ROMFS MTD (C) 2007 Red Hat, Inc.
+msgmni has been set to 495
+Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
+io scheduler noop registered (default)
+io scheduler deadline registered
+io scheduler cfq registered
+fffff200.serial: ttyS0 at MMIO 0xfffff200 (irq = 16, base_baud = 8333333) is a ATMEL_SERIAL
+console [ttyS0] enabled
+f8040000.serial: ttyS1 at MMIO 0xf8040000 (irq = 26, base_baud = 8333333) is a ATMEL_SERIAL
+brd: module loaded
+loop: module loaded
+at24_get_setup: found a match for eeprom at 56
+at24 0-0056: 512 byte 24c04 EEPROM, writable, 16 bytes/write
+sam9x5: read 512 bytes from id eeprom
+at24_get_setup: found a match for eeprom at 50
+at24 1-0050: 512 byte 24c04 EEPROM, writable, 16 bytes/write
+sam9x5: read 512 bytes from ap1 eeprom
+at24_get_setup: found a match for eeprom at 52
+at24 1-0052: 512 byte 24c04 EEPROM, writable, 16 bytes/write
+sam9x5: ap2 eeprom read failed: -110
+atmel_nand 40000000.nand: Using dma0chan0 for DMA transfers.
+ONFI param page 0 valid
+ONFI flash detected
+NAND device: Manufacturer ID: 0x2c, Chip ID: 0xaa (Micron MT29F2G08ABBEAHC), 256MiB, page size: 2048, OOB size: 64
+atmel_nand 40000000.nand: ONFI params, minimum required ECC: 4 bits in 512 bytes
+atmel_nand 40000000.nand: Initialize PMECC params, cap: 4, sector: 512
+Scanning device for bad blocks
+9 ofpart partitions found on MTD device atmel_nand
+Creating 9 MTD partitions on "atmel_nand":
+0x000000000000-0x000010000000 : "NANDFlash"
+0x000000000000-0x000000040000 : "at91bootstrap"
+0x000000040000-0x0000000c0000 : "u-Boot"
+0x0000000c0000-0x000000160000 : "u-Boot Config"
+0x000000160000-0x000000200000 : "u-Boot Redundant Config"
+0x000000200000-0x000000800000 : "uImage"
+0x000000800000-0x000001000000 : "Config"
+0x000001000000-0x000001800000 : "OEM Config"
+0x000001800000-0x000010000000 : "Rootfs"
+tun: Universal TUN/TAP device driver, 1.6
+tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
+libphy: MACB_mii_bus: probed
+macb f802c000.ethernet eth0: Cadence MACB at 0xf802c000 irq 23 (00:08:00:10:00:00)
+macb f802c000.ethernet eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=f802c000.etherne:00, irq=-1)
+PPP generic driver version 2.4.2
+PPP BSD Compression module registered
+PPP Deflate Compression module registered
+ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
+ehci-atmel: EHCI Atmel driver
+atmel-ehci 700000.ehci: EHCI Host Controller
+atmel-ehci 700000.ehci: new USB bus registered, assigned bus number 1
+atmel-ehci 700000.ehci: irq 31, io mem 0x00700000
+atmel-ehci 700000.ehci: USB 2.0 started, EHCI 1.00
+usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
+usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
+usb usb1: Product: EHCI Host Controller
+usb usb1: Manufacturer: Linux 3.12.70 ehci_hcd
+usb usb1: SerialNumber: 700000.ehci
+hub 1-0:1.0: USB hub found
+hub 1-0:1.0: 3 ports detected
+ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
+at91_ohci 600000.ohci: AT91 OHCI
+at91_ohci 600000.ohci: new USB bus registered, assigned bus number 2
+at91_ohci 600000.ohci: irq 31, io mem 0x00600000
+usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
+usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
+usb usb2: Product: AT91 OHCI
+usb usb2: Manufacturer: Linux 3.12.70 ohci_hcd
+usb usb2: SerialNumber: at91
+hub 2-0:1.0: USB hub found
+hub 2-0:1.0: 3 ports detected
+rtc (null): invalid alarm value: 1900-1-1 0:0:0
+at91_rtc fffffeb0.rtc: rtc core: registered fffffeb0.rtc as rtc0
+at91_rtc fffffeb0.rtc: AT91 Real Time Clock driver.
+i2c /dev entries driver
+at91sam9_wdt: enabled (heartbeat=15 sec, nowayout=0)
+Netfilter messages via NETLINK v0.30.
+nf_conntrack version 0.5.0 (3964 buckets, 15856 max)
+xt_time: kernel timezone is -0000
+ipip: IPv4 over IPv4 tunneling driver
+gre: GRE over IPv4 demultiplexor driver
+ip_gre: GRE over IPv4 tunneling driver
+IPv4 over IPSec tunneling driver
+ip_tables: (C) 2000-2006 Netfilter Core Team
+TCP: cubic registered
+Initializing XFRM netlink socket
+NET: Registered protocol family 10
+mip6: Mobile IPv6
+sit: IPv6 over IPv4 tunneling driver
+NET: Registered protocol family 17
+NET: Registered protocol family 15
+l2tp_core: L2TP core driver, V2.0
+Key type dns_resolver registered
+at91_rtc fffffeb0.rtc: setting system clock to 2018-06-20 20:34:34 UTC (1529526874)
+usb 2-3: new full-speed USB device number 2 using at91_ohci
+usb 2-3: New USB device found, idVendor=04e2, idProduct=1414
+usb 2-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
+jffs2: notice: (1) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
+VFS: Mounted root (jffs2 filesystem) readonly on device 31:8.
+devtmpfs: mounted
+Freeing unused kernel memory: 168K (c057a000 - c05a4000)
+INIT: version 2.88 booting
+jffs2: notice: (76) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
+jffs2: notice: (76) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
+Starting udev
+udevd[86]: starting version 3.2
+udevd[87]: starting eudev-3.2
+atmel_spi f0000000.spi: version: 0x212
+atmel_spi f0000000.spi: Using dma0chan1 (tx) and dma0chan2 (rx) for DMA transfers
+atmel_spi f0000000.spi: Atmel SPI Controller at 0xf0000000 (irq 28)
+atmel_spi f0000000.spi: master is unqueued, this is deprecated
+usbcore: registered new interface driver cdc_acm
+cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
+vizzini 2-3:1.0: This device cannot do calls on its own. It is not a modem.
+vizzini 2-3:1.0: ttyXRUSB0: XR21v14x usb uart device
+vizzini 2-3:1.2: This device cannot do calls on its own. It is not a modem.
+vizzini 2-3:1.2: ttyXRUSB1: XR21v14x usb uart device
+vizzini 2-3:1.4: This device cannot do calls on its own. It is not a modem.
+vizzini 2-3:1.4: ttyXRUSB2: XR21v14x usb uart device
+vizzini 2-3:1.6: This device cannot do calls on its own. It is not a modem.
+vizzini 2-3:1.6: ttyXRUSB3: XR21v14x usb uart device
+usbcore: registered new interface driver vizzini
+vizzini: Exar USB UART Driver for XR21V141x
+atmel_spi f0004000.spi: version: 0x212
+atmel_spi f0004000.spi: Using dma1chan0 (tx) and dma1chan1 (rx) for DMA transfers
+atmel_spi f0004000.spi: Atmel SPI Controller at 0xf0004000 (irq 29)
+atmel_spi f0004000.spi: master is unqueued, this is deprecated
+tmp102 0-0048: initialized
+pps_core: LinuxPPS API ver. 1 registered
+pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
+pps pps0: new PPS source pps.7.-1
+pps pps0: Registered IRQ 32 as PPS source
+atmel_usba_udc 500000.gadget: MMIO registers at 0xf803c000 mapped at d0b5e000
+atmel_usba_udc 500000.gadget: FIFO at 0x00500000 mapped at e1100000
+atmel_mci f0008000.mmc: version: 0x504
+atmel_mci f0008000.mmc: using dma0chan3 for DMA transfers
+atmel_mci f0008000.mmc: Atmel MCI controller at 0xf0008000 irq 22, 1 slots
+/var/config already mounted
+/var/oem already mounted
+directory bluetooth operations
+directory dnsmasq.d operations
+directory modprobe.d operations
+mts-io: Loading mts-io module
+[INFO] mts-io:mts_io_init:1046: init: v2.1.0
+[INFO] mts-io:mts_id_eeprom_load:853: Pruning radio feature from mts-io
+[INFO] mts-io:mts_id_eeprom_load:872: Adding WiFi/BT to mts-io driver
+[INFO] mts-io:mts_id_eeprom_load:877: Adding GPS to mts-io driver
+[INFO] mts-io:mts_id_eeprom_load:889: detected board MTCDT-0.1
+[INFO] mts-io:mts_id_eeprom_load:960: sizeof: 512
+[INFO] mts-io:mts_id_eeprom_load:961: vendor-id: Multi-Tech Systems
+[INFO] mts-io:mts_id_eeprom_load:962: product-id: MTCDT-247L
+[INFO] mts-io:mts_id_eeprom_load:963: device-id: 12345678
+[INFO] mts-io:mts_id_eeprom_load:964: hw-version: MTCDT-0.1
+[INFO] mts-io:mts_id_eeprom_load:971: mac-addr: 00:08:00:10:00:00
+[INFO] mts-io:mts_id_eeprom_load:973: imei: 123456789123456789
+[INFO] mts-io:mts_id_eeprom_load:974: capa-gps: yes
+[INFO] mts-io:mts_id_eeprom_load:975: capa-din: no
+[INFO] mts-io:mts_id_eeprom_load:976: capa-dout: no
+[INFO] mts-io:mts_id_eeprom_load:977: capa-adc: no
+[INFO] mts-io:mts_id_eeprom_load:978: capa-wifi: yes
+[INFO] mts-io:mts_id_eeprom_load:979: capa-bluetooth: yes
+[INFO] mts-io:mts_id_eeprom_load:980: capa-lora: no
+[INFO] mts-io:mts_id_eeprom_load:989: mac-bluetooth: 00:00:00:00:00:00
+[INFO] mts-io:mts_id_eeprom_load:998: mac-wifi: 00:00:00:00:00:00
+[INFO] mts-io:mts_id_eeprom_load:1005: uuid: AAA00000000000000000000000000021
+[INFO] mts-io:load_port:663: accessory card 1 vendor-id: Multi-Tech Systems
+[INFO] mts-io:load_port:664: accessory card 1 product-id: MTAC-LORA-H-915
+[INFO] mts-io:load_port:665: accessory card 1 device-id: P87040004
+[INFO] mts-io:load_port:666: accessory card 1 hw-version: MTAC-LORA-1.5
+[INFO] mts-io:load_port:687: accessory card 1 eui: 00:80:00:00:00:00:00:A4
+[INFO] mts-io:lora_setup:60: loading LORA accessory card in port 1
+[INFO] mts-io:lora_setup:90: created link [lora] to [ap1], success:0
+[INFO] mts-io:lora_setup:126: Substitute pins
+[INFO] mts-io:lora_setup:131: LORA H: Replace name AP1_GPIO1 with name AP1_CDONE
+[INFO] mts-io:lora_setup:132: LORA H: Replace pin number 70 with number 70
+[INFO] mts-io:lora_setup:131: LORA H: Replace name AP1_GPIO2 with name AP1_CRESET
+[INFO] mts-io:lora_setup:132: LORA H: Replace pin number 71 with number 71
+[INFO] mts-io:lora_setup:189: ap_subdirs[port_index=0] = cf0ccca0 ap_subdirs[port_index=0]=bf0d521c
+[INFO] mts-io:load_port:622: no accessory card inserted in port 2
+mts-io: Resetting system modules
+usb 1-2: new high-speed USB device number 2 using atmel-ehci
+usb 1-2: New USB device found, idVendor=0424, idProduct=2534
+usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
+hub 1-2:1.0: USB hub found
+hub 1-2:1.0: 4 ports detected
+usb 1-2.1: new high-speed USB device number 3 using atmel-ehci
+usb 1-2.1: New USB device found, idVendor=0424, idProduct=2534
+usb 1-2.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
+hub 1-2.1:1.0: USB hub found
+hub 1-2.1:1.0: 4 ports detected
+usb 1-2.2: new high-speed USB device number 4 using atmel-ehci
+usb 1-2.2: New USB device found, idVendor=1618, idProduct=9113
+usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=6
+usb 1-2.2: Product: Wireless USB Network Module
+usb 1-2.2: Manufacturer: Redpine Signals, Inc.
+usb 1-2.2: SerialNumber: 000000000001
+usb 1-2: USB disconnect, device number 2
+usb 1-2.1: USB disconnect, device number 3
+usb 1-2.2: USB disconnect, device number 4
+usb 1-2: new high-speed USB device number 5 using atmel-ehci
+usb 1-2: New USB device found, idVendor=0424, idProduct=2534
+usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
+hub 1-2:1.0: USB hub found
+hub 1-2:1.0: 4 ports detected
+usb 1-2.1: new high-speed USB device number 6 using atmel-ehci
+usb 1-2.1: New USB device found, idVendor=0424, idProduct=2534
+usb 1-2.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
+hub 1-2.1:1.0: USB hub found
+hub 1-2.1:1.0: 4 ports detected
+usb 1-2.2: new high-speed USB device number 7 using atmel-ehci
+usb 1-2.2: New USB device found, idVendor=1618, idProduct=9113
+usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=6
+usb 1-2.2: Product: Wireless USB Network Module
+usb 1-2.2: Manufacturer: Redpine Signals, Inc.
+usb 1-2.2: SerialNumber: 000000000001
+OK
+[INFO] ../../git/src/eeprom_main.c:main:580: loaded id eeprom from /sys/bus/i2c/devices/i2c-0/0-0056/eeprom successfully
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:291: sizeof: 512
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:292: vendor-id: Multi-Tech Systems
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:293: product-id: MTCDT-247L
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:294: device-id: 12345678
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:295: hw-version: MTCDT-0.1
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:302: mac-addr: 00:08:00:10:00:00
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:303: imei: 123456789123456789
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:304: capa-gps: yes
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:305: capa-din: no
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:306: capa-dout: no
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:307: capa-adc: no
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:308: capa-wifi: yes
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:309: capa-bluetooth: yes
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:310: capa-lora: no
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:318: mac-bluetooth: 00:00:00:00:00:00
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:325: mac-wifi: 00:00:00:00:00:00
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:331: uuid: AAA00000000000000000000000000021
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:341: lora-eui: "00:00:00:00:00:00:00:00"
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:343: lora-product-id:
+[INFO] ../../git/src/eeprom_main.c:mts_id_eeprom_inspect:344: lora-hw-version:
+Reading accessory cards data
+Adding accessory cards data
+rs9113: Loading rs9113 modules with COEX=6 and Country=0
+usb 1-2.2: USB disconnect, device number 7
+cfg80211: Calling CRDA to update world regulatory domain
+usb 1-2.2: new high-speed USB device number 8 using atmel-ehci
+usb 1-2.2: New USB device found, idVendor=1618, idProduct=9113
+usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=6
+usb 1-2.2: Product: Wireless USB Network Module
+usb 1-2.2: Manufacturer: Redpine Signals, Inc.
+usb 1-2.2: SerialNumber: 000000000001
+Bluetooth: Core ver 2.16
+NET: Registered protocol family 31
+Bluetooth: HCI device and connection manager initialized
+Bluetooth: HCI socket layer initialized
+Bluetooth: L2CAP socket layer initialized
+Bluetooth: SCO socket layer initialized
+onebox_wlan_nongpl: module license 'unspecified' taints kernel.
+Disabling lock debugging due to kernel taint
+usbcore: registered new interface driver Onebox-USB
+WLAN protocol selected
+BT protocol selected
+Driver initialization is done
+OK
+INIT: Entering runlevel: 5
+Configuring network interfaces... IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
+done.
+Starting system message bus: dbus.
+Starting ifplugd: Starting /usr/sbin/ifplugd...
+done
+macb f802c000.ethernet eth0: link up (100/Full)
+IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
+Starting OpenBSD Secure Shell server: sshd
+done.
+Starting bluetooth
+Bluetooth: BNEP (Ethernet Emulation) ver 1.3
+Bluetooth: BNEP filters: protocol multicast
+Bluetooth: BNEP socket layer initialized
+bluetoothd
+Would start /usr/sbin/ntpd -u ntp:ntp -p /var/run/ntp.pid -g -c /etc/ntp.conf , and add -20 to the priority.
+gpsd_ubx_settime: GPS does not have a fix yet. Try again later.
+Starting syslogd/klogd: done
+bt-pan: disabled in /etc/default
+Starting rfcomm
+/usr/sbin/start-stop-daemon -S -p /run/rfcomm.pid -x /usr/bin/python2.7 -b -- /usr/libexec/bluetooth/rfcomm --login
diff --git a/scripts/upgrade/model b/scripts/upgrade/model
index d792d51..04501b0 100644
--- a/scripts/upgrade/model
+++ b/scripts/upgrade/model
@@ -1 +1 @@
-mtcdt|mtcdtip
+mtcdt|mtcdtip|mtcdtiphp|mtcap
diff --git a/scripts/upgrade/upgrade-4.0.0-4.0.1/install_list.txt b/scripts/upgrade/upgrade-4.0.0-4.0.1/install_list.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/scripts/upgrade/upgrade-4.0.0-4.0.1/install_list.txt
diff --git a/scripts/upgrade/local.conf b/scripts/upgrade/upgrade-4.0.0-4.0.1/local.conf
index d623c37..04caa02 100644
--- a/scripts/upgrade/local.conf
+++ b/scripts/upgrade/upgrade-4.0.0-4.0.1/local.conf
@@ -12,5 +12,8 @@ arch armv5te 46
arch arm926ejste 51
arch arm926ejse 56
arch mtcdt 61
+arch mtcap 61
-src/gz mlinux-arm926ejste file://var/volatile/flash-upgrade/repo/arm926ejste
+src/gz mlinux-mtcdt file://FLASHDIR/repo/mtcdt
+src/gz mlinux-mtcap file://FLASHDIR/repo/mtcap
+src/gz mlinux-arm926ejste file://FLASHDIR/repo/arm926ejste
diff --git a/scripts/upgrade/upgrade-4.0.0-4.0.1/repo/Packages b/scripts/upgrade/upgrade-4.0.0-4.0.1/repo/Packages
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/scripts/upgrade/upgrade-4.0.0-4.0.1/repo/Packages
diff --git a/scripts/upgrade/upgrade-4.0.0-4.0.1/repo/arm926ejste/Packages b/scripts/upgrade/upgrade-4.0.0-4.0.1/repo/arm926ejste/Packages
new file mode 100644
index 0000000..6cc98bc
--- /dev/null
+++ b/scripts/upgrade/upgrade-4.0.0-4.0.1/repo/arm926ejste/Packages
@@ -0,0 +1,179 @@
+Package: bluez5-noinst-tools
+Version: 5.47-m3.0
+Depends: libc6 (>= 2.24), libdbus-1-3 (>= 1.10.10), libglib-2.0-0 (>= 2.48.2), libreadline6 (>= 6.3)
+Section: libs
+Architecture: arm926ejste
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: 2a7b0332fe89390f0f3d805ef7796caa
+Size: 322974
+Filename: bluez5-noinst-tools_5.47-m3.0_arm926ejste.ipk
+Source: http://kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz file://out-of-tree.patch file://init file://run-ptest file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch file://0001-tests-add-a-target-for-building-tests-without-runnin.patch file://default file://main.conf file://bt-pan/init file://bt-pan/default file://bt-pan/bt-pan file://rfcomm/rfcomm.py file://rfcomm/init file://rfcomm/default
+Description: Linux Bluetooth Stack Userland V5 Linux Bluetooth stack V5 userland
+ components. These include a system configurations, daemons, tools and
+ system libraries.
+OE: bluez5
+HomePage: http://www.bluez.org
+License: GPLv2+ & LGPLv2.1+
+Priority: optional
+
+Package: bluez5-obex
+Version: 5.47-m3.0
+Depends: libc6 (>= 2.24), libdbus-1-3 (>= 1.10.10), libglib-2.0-0 (>= 2.48.2), libical (>= 2.0.0)
+Section: libs
+Architecture: arm926ejste
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: 928d09adf783379abfc9e9b0edb36e64
+Size: 166574
+Filename: bluez5-obex_5.47-m3.0_arm926ejste.ipk
+Source: http://kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz file://out-of-tree.patch file://init file://run-ptest file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch file://0001-tests-add-a-target-for-building-tests-without-runnin.patch file://default file://main.conf file://bt-pan/init file://bt-pan/default file://bt-pan/bt-pan file://rfcomm/rfcomm.py file://rfcomm/init file://rfcomm/default
+Description: Linux Bluetooth Stack Userland V5 Linux Bluetooth stack V5 userland
+ components. These include a system configurations, daemons, tools and
+ system libraries.
+OE: bluez5
+HomePage: http://www.bluez.org
+License: GPLv2+ & LGPLv2.1+
+Priority: optional
+
+Package: bluez5-pand
+Version: 5.47-m3.0
+Depends: bash, python-dbus, python-logging, python-syslog
+Recommends: update-rc.d
+Section: libs
+Architecture: arm926ejste
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: ce90e092bdba63e29afc17977bd5292d
+Size: 6602
+Filename: bluez5-pand_5.47-m3.0_arm926ejste.ipk
+Source: http://kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz file://out-of-tree.patch file://init file://run-ptest file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch file://0001-tests-add-a-target-for-building-tests-without-runnin.patch file://default file://main.conf file://bt-pan/init file://bt-pan/default file://bt-pan/bt-pan file://rfcomm/rfcomm.py file://rfcomm/init file://rfcomm/default
+Description: Linux Bluetooth Stack Userland V5 Linux Bluetooth stack V5 userland
+ components. These include a system configurations, daemons, tools and
+ system libraries.
+OE: bluez5
+HomePage: http://www.bluez.org
+License: GPLv2+ & LGPLv2.1+
+Priority: optional
+
+Package: bluez5-rfcomm
+Version: 5.47-m3.0
+Depends: bash, python-dbus, python-logging, python-pybluez, python-pygobject, python-syslog
+Recommends: update-rc.d
+Section: libs
+Architecture: arm926ejste
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: a58b19fd37eea490eceecb0f44fef25a
+Size: 8252
+Filename: bluez5-rfcomm_5.47-m3.0_arm926ejste.ipk
+Source: http://kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz file://out-of-tree.patch file://init file://run-ptest file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch file://0001-tests-add-a-target-for-building-tests-without-runnin.patch file://default file://main.conf file://bt-pan/init file://bt-pan/default file://bt-pan/bt-pan file://rfcomm/rfcomm.py file://rfcomm/init file://rfcomm/default
+Description: Linux Bluetooth Stack Userland V5 Linux Bluetooth stack V5 userland
+ components. These include a system configurations, daemons, tools and
+ system libraries.
+OE: bluez5
+HomePage: http://www.bluez.org
+License: GPLv2+ & LGPLv2.1+
+Priority: optional
+
+Package: bluez5-testtools
+Version: 5.47-m3.0
+Depends: python3, python3-dbus, python3-pygobject
+Section: libs
+Architecture: arm926ejste
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: e28b13ca304efc9664dad104a3873961
+Size: 30356
+Filename: bluez5-testtools_5.47-m3.0_arm926ejste.ipk
+Source: http://kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz file://out-of-tree.patch file://init file://run-ptest file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch file://0001-tests-add-a-target-for-building-tests-without-runnin.patch file://default file://main.conf file://bt-pan/init file://bt-pan/default file://bt-pan/bt-pan file://rfcomm/rfcomm.py file://rfcomm/init file://rfcomm/default
+Description: Linux Bluetooth Stack Userland V5 Linux Bluetooth stack V5 userland
+ components. These include a system configurations, daemons, tools and
+ system libraries.
+OE: bluez5
+HomePage: http://www.bluez.org
+License: GPLv2+ & LGPLv2.1+
+Priority: optional
+
+Package: bluez5
+Version: 5.47-m3.0
+Depends: libc6 (>= 2.24), libdbus-1-3 (>= 1.10.10), libglib-2.0-0 (>= 2.48.2), libreadline6 (>= 6.3), libudev1 (>= 3.2)
+Provides: bluez-hcidump
+Conflicts: bluez4
+Recommends: update-rc.d
+Section: libs
+Architecture: arm926ejste
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: f4fa7697d5c944362509c0836a3b94d8
+Size: 1363450
+Filename: bluez5_5.47-m3.0_arm926ejste.ipk
+Source: http://kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz file://out-of-tree.patch file://init file://run-ptest file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch file://0001-tests-add-a-target-for-building-tests-without-runnin.patch file://default file://main.conf file://bt-pan/init file://bt-pan/default file://bt-pan/bt-pan file://rfcomm/rfcomm.py file://rfcomm/init file://rfcomm/default
+Description: Linux Bluetooth Stack Userland V5 Linux Bluetooth stack V5 userland
+ components. These include a system configurations, daemons, tools and
+ system libraries.
+OE: bluez5
+HomePage: http://www.bluez.org
+License: GPLv2+ & LGPLv2.1+
+Priority: optional
+
+Package: libasound-module-bluez
+Version: 5.47-m3.0
+Section: libs
+Architecture: arm926ejste
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: fcd41d3eee2580c29f356168f41993fe
+Size: 906
+Filename: libasound-module-bluez_5.47-m3.0_arm926ejste.ipk
+Source: http://kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz file://out-of-tree.patch file://init file://run-ptest file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch file://0001-tests-add-a-target-for-building-tests-without-runnin.patch file://default file://main.conf file://bt-pan/init file://bt-pan/default file://bt-pan/bt-pan file://rfcomm/rfcomm.py file://rfcomm/init file://rfcomm/default
+Description: Linux Bluetooth Stack Userland V5 Linux Bluetooth stack V5 userland
+ components. These include a system configurations, daemons, tools and
+ system libraries.
+OE: bluez5
+HomePage: http://www.bluez.org
+License: GPLv2+ & LGPLv2.1+
+Priority: optional
+
+Package: libmts-io0
+Version: 1.0.8-r0.0
+Depends: libc6 (>= 2.24), libgcc1 (>= 6.2.0), libstdc++6 (>= 6.2.0)
+Provides: libmts-io
+Section: base
+Architecture: arm926ejste
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: a96eac97bbc045acdfe56a7cf8668f7d
+Size: 138088
+Filename: libmts-io0_1.0.8-r0.0_arm926ejste.ipk
+Source: git://git.multitech.net/libmts-io;branch=master
+Description: libmts-io version 1.0.8-r0 MultiTech IO C++ Library
+OE: libmts-io
+HomePage: http://www.multitech.net/
+License: LGPL-2.1
+Priority: optional
+
+Package: lora-network-server
+Version: 2.0.19-r4.0
+Depends: bash, libc6 (>= 2.24), libcurl4 (>= 7.50.1), libgcc1 (>= 6.2.0), libmosquittopp1 (>= 1.4.9), libmts0 (>= 0.5), libsqlite3-0 (>= 3.14.1), libstdc++6 (>= 6.2.0), logrotate, lora-packet-forwarder
+Recommends: update-rc.d
+Section: console/utils
+Architecture: arm926ejste
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: d03a28ffacb7c283608513e9353b142a
+Size: 410814
+Filename: lora-network-server_2.0.19-r4.0_arm926ejste.ipk
+Source: http://multitech.net/downloads/lora-network-server_arm926ejste_2.0.19.tar.gz file://lora-network-server.init file://lora-network-server.default file://lora-network-server.logrotate.conf
+Description: lora-network-server version 2.0.19-r4 MultiTech LoRa Network Server
+OE: lora-network-server
+License: Proprietary
+Priority: optional
+
+Package: python-pybluez
+Version: 0.22-r0.0
+Depends: bluez5 (>= 5.47), libc6 (>= 2.24), libpython2.7-1.0 (>= 2.7.12), python-core, python-fcntl
+Section: devel/python
+Architecture: arm926ejste
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: 6b7b742642a4920b21866c3ac7b79a35
+Size: 72028
+Filename: python-pybluez_0.22-r0.0_arm926ejste.ipk
+Source: https://pypi.python.org/packages/c1/98/3149481d508bee174335be6725880f00d297afebe75c15e917af8f6fe169/PyBluez-0.22.zip
+Description: python-pybluez version 0.22-r0 Bluetooth Python extension module
+OE: python-pybluez
+HomePage: http://karulis.github.io/pybluez/
+License: GPL-2.0
+Priority: optional
+
diff --git a/scripts/upgrade/upgrade-4.0.0-4.0.1/repo/mtcap/Packages b/scripts/upgrade/upgrade-4.0.0-4.0.1/repo/mtcap/Packages
new file mode 100644
index 0000000..f908f97
--- /dev/null
+++ b/scripts/upgrade/upgrade-4.0.0-4.0.1/repo/mtcap/Packages
@@ -0,0 +1,31 @@
+Package: mlinux-version
+Version: 1:4.0.1_ea6ba1e5fb287003fea33522af39a771102713b2-r2.0
+Section: base
+Architecture: mtcap
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: ef87d9e1188b15a38c7faa30055f597f
+Size: 1136
+Filename: mlinux-version_4.0.1_ea6ba1e5fb287003fea33522af39a771102713b2-r2.0_mtcap.ipk
+Source: None
+Description: mlinux-version version 4.0.1_ea6ba1e5fb287003fea33522af39a771102713b2-r2
+ mlinux-version version 4.0.1_ea6ba1e5fb287003fea33522af39a771102713b2-r2.
+OE: mlinux-version
+License: MIT
+Priority: optional
+
+Package: mts-id-eeprom
+Version: 0.3.8-r1.0.0
+Depends: bash, libc6 (>= 2.24), libcrypto1.0.0 (>= 1.0.2k), libgcc1 (>= 6.2.0), libstdc++6 (>= 6.2.0)
+Section: console/utils
+Architecture: mtcap
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: 5062858f2201b30097078716a6ae863f
+Size: 69976
+Filename: mts-id-eeprom_0.3.8-r1.0.0_mtcap.ipk
+Source: git://git.multitech.net/mts-id-eeprom.git;protocol=git file://mtcap-fpga-v31.hex file://mtcap-fpga-v33.hex
+Description: mts-id-eeprom version 0.3.8-r1.0 ID EEPROM tool for MTCDP
+OE: mts-id-eeprom
+HomePage: http://www.multitech.net/
+License: GPLv2+
+Priority: optional
+
diff --git a/scripts/upgrade/upgrade-4.0.0-4.0.1/repo/mtcdt/Packages b/scripts/upgrade/upgrade-4.0.0-4.0.1/repo/mtcdt/Packages
new file mode 100644
index 0000000..8cfe25e
--- /dev/null
+++ b/scripts/upgrade/upgrade-4.0.0-4.0.1/repo/mtcdt/Packages
@@ -0,0 +1,31 @@
+Package: mlinux-version
+Version: 1:4.0.1_ea6ba1e5fb287003fea33522af39a771102713b2-r2.0
+Section: base
+Architecture: mtcdt
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: d0cb3ceee3c7f45404cf98ff549b8d7f
+Size: 1134
+Filename: mlinux-version_4.0.1_ea6ba1e5fb287003fea33522af39a771102713b2-r2.0_mtcdt.ipk
+Source: None
+Description: mlinux-version version 4.0.1_ea6ba1e5fb287003fea33522af39a771102713b2-r2
+ mlinux-version version 4.0.1_ea6ba1e5fb287003fea33522af39a771102713b2-r2.
+OE: mlinux-version
+License: MIT
+Priority: optional
+
+Package: mts-id-eeprom
+Version: 0.3.8-r1.0.0
+Depends: bash, libc6 (>= 2.24), libcrypto1.0.0 (>= 1.0.2k), libgcc1 (>= 6.2.0), libstdc++6 (>= 6.2.0)
+Section: console/utils
+Architecture: mtcdt
+Maintainer: MultiTech Systems <oe-devel@multitech.net>
+MD5Sum: 2eb166320621d16b4d96277618bf062b
+Size: 74644
+Filename: mts-id-eeprom_0.3.8-r1.0.0_mtcdt.ipk
+Source: git://git.multitech.net/mts-id-eeprom.git;protocol=git file://mtcdt-fpga-v31.hex file://mtcdt-fpga-v33.hex
+Description: mts-id-eeprom version 0.3.8-r1.0 ID EEPROM tool for MTCDP
+OE: mts-id-eeprom
+HomePage: http://www.multitech.net/
+License: GPLv2+
+Priority: optional
+