Contents

Introduction

Prerequisites

Requirements

Components Used

Background Information

Configure

Step 1. Prepare the firmware images (and the USB drive).

Step 2. Connect IXM through console access.

Step 3. Copy the firmware files to the IXM.

Option 1: Using a USB Drive

Option 2: Copy the Files Using the Network

Step 4. Execute the upgrade.

Step 5. Reboot the IXM after the upgrade.

Verify

Troubleshoot

Introduction

This document describes the procedure to upgrade the software of a Cisco Iot Extension Module (IXM) using only the console port and a USB drive.

Prerequisites

Requirements

There are no specific requirements for this document.

Components Used

The information in this document is based on these software and hardware versions:

- RJ45 to Serial Cable

- USB drive (1GB is more than enough) or local network access

- PoE or power supply for the IXM

- Firmware Images

Note: The firmware images can be downloaded from CCO: https://software.cisco.com/download/release.html?mdfid=286311296&softwareid=286311234&release=2.0&relind=AVAILABLE&rellifecycle=&reltype=latest

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.

Background Information

The Cisco IXM or Interface Module for LoRaWAN is able to run in two modes: standalone or virtual. When IXM runs as virtual, an upgrade can be performed from the IR8x9 connected to the IXM. In standalone mode, the upgrade can be performed through the CLI. In some cases it is not possible to upgrade the firmware (for example, when the IXM is configured for virtual mode and no IR8x9 is available) or when the difference in firmware is too big in regards to version compatibility.

Configure

Step 1. Prepare the firmware images (and the USB drive).

The first part is to prepare the firmware images which are required to perform the upgrade.

The goal is to get these files on the IXM, this can be done using a USB drive or local network connection.

When the firmware image is downloaded from CCO, it comes as a gzipped tar file: ixm_mdm_i_k9-2.0.tar.gz.

Extract the .tar.gz and copy the recovery.itb and release.itb files to a USB drive or HTTP server, reachable by the IXM.

Step 2. Connect IXM through console access.

Once the files to perform the upgrade are prepared, you need to connect to the IXM using the console port. The console port is located on the right side of the IXM and is covered by a water proof screw:

Connect the console cable to the RJ45 at the IXM and to the serial port of your PC and open a terminal with these settings: 8/N/1/115200

If all goes well, you should see a prompt with:

[root@lorawan ~]#

Optionally, the IXM requests for you to login with the root account.

Step 3. Copy the firmware files to the IXM.

Option 1: Using a USB Drive

When you use the USB drive, connect the drive to the USB port on the IXM (below the console port). Access to the USB port can be difficult as the entrance is quite narrow, a USB extension cable can help you here.

After you connect the USB drive, this appears on the screen:

root@lorawan ~]# usb 4-1.2: new high-speed USB device number 4 using xhci-hcd

usb 4-1.2: New USB device found, idVendor=058f, idProduct=6387

usb 4-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3

usb 4-1.2: Product: USB Flash Drive

usb 4-1.2: SerialNumber: BE087588

usb-storage 4-1.2:1.0: USB Mass Storage device detected

scsi3 : usb-storage 4-1.2:1.0

scsi 3:0:0:0: Direct-Access              USB Flash Drive  8.07 PQ: 0 ANSI: 2

sd 3:0:0:0: [sdb] 15564800 512-byte logical blocks: (7.96 GB/7.42 GiB)

sd 3:0:0:0: [sdb] Write Protect is off

sd 3:0:0:0: [sdb] No Caching mode page found

sd 3:0:0:0: [sdb] Assuming drive cache: write through

sd 3:0:0:0: [sdb] No Caching mode page found

sd 3:0:0:0: [sdb] Assuming drive cache: write through

sdb: sdb1

sd 3:0:0:0: [sdb] No Caching mode page found

sd 3:0:0:0: [sdb] Assuming drive cache: write through

sd 3:0:0:0: [sdb] Attached SCSI removable disk

Now, mount the USB drive and copy the recovery.itb and release.itb files to /tmp on the IXM:

[root@lorawan ~]# mount /dev/sdb1 /mnt/

[root@lorawan ~]# cp /mnt/*.itb /tmp

Option 2: Copy the Files Using the Network

When you copy the files over the network, connect the network port of the IXM either directly or via a switch to your computer and configure a network address that is reachable.

To configure a network address on the IXM to copy the files, a regular ifconfig command can be used:

[root@lorawan ~]# ifconfig eth0 10.48.43.200

After the device is reachable, you can download the files from the HTTP server prepared in step 1:

[root@lorawan ~]# cd /tmp

[root@lorawan tmp]# wget http://10.48.43.201:1000/recovery.itb

Connecting to 10.48.43.201:1000 (10.48.43.201:1000)

recovery.itb         100% |*******************************| 23684k  0:00:00 ETA

[root@lorawan tmp]# wget http://10.48.43.201:1000/release.itb

Connecting to 10.48.43.201:1000 (10.48.43.201:1000)

release.itb          100% |*******************************| 44794k  0:00:00 ETA

[root@lorawan tmp]#

Step 4. Execute the upgrade.

broot@lorawan ~]# /opt/script/reimage.sh -n /tmp/release.itb -f /tmp/recovery.it

Calling latest reimage.sh...

Could not find out the version. May be using dev builds. Mode update skipped

Writing factory mode image...

47368+1 records in

47368+1 records out

24252422 bytes (23.1MB) copied, 1.318204 seconds, 17.5MB/s

Writing normal mode image1...

89589+1 records in

89589+1 records out

45869754 bytes (43.7MB) copied, 2.453597 seconds, 17.8MB/s

Writing normal mode image2...

89589+1 records in

89589+1 records out

45869754 bytes (43.7MB) copied, 2.458087 seconds, 17.8MB/s

Updating u-boot boot parameters...

Stop lxc container...

Stopping default lxc container...

umount: /mnt/container/rootfs/run: mountpoint not found

umount: /mnt/container/rootfs/var/run: mountpoint not found

lxcbr0: port 1(vethPFLXN1) entered disabled state

umount: /mnt/container/rootfs: mountpoint not found

device vethPFLXN1 left promiscuous mode

lxcbr0: port 1(vethPFLXN1) entered disabled state

Stop logging service...

Stopping syslog-ng daemon: OK

Stop logging signal received

umount: /var/log/: target is busy

(In some cases useful info about processes that

use the device is found by lsof(8) or fuser(1).)

Try to umount log directory again...

2244

Stop mdev...

umount: /data/uflash: mountpoint not found

Repartion internal SD...

Welcome to fdisk (util-linux 2.26.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Command (m for help): Created a new DOS disklabel with disk identifier 0x676d0d95.

Command (m for help): Partition type

p   primary (0 primary, 0 extended, 4 free)

e   extended (container for logical partitions)

Select (default p): Partition number (1-4, default 1): First sector (2048-7618559, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (786432-7618559, default 7618559):

Created a new partition 1 of type 'Linux' and of size 640 MiB.

Command (m for help): Partition type

p   primary (1 primary, 0 extended, 3 free)

e   extended (container for logical partitions)

Select (default p): Partition number (2-4, default 2): First sector (2048-7618559, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2097152-7618559, default 7618559):

Created a new partition 2 of type 'Linux' and of size 2.6 GiB.

Command (m for help): The partition table has been altered.

Calling ioctl() to re-read partition table.

Re-reading the partition table failed.: Device or resource busy

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

Recreate filesystem...

Creating filesystem for system data...

/tmp/_reimage.sh: line 322: cryptkey: command not found

/tmp/_reimage.sh: line 323: cryptsetup: command not found

/tmp/_reimage.sh: line 324: cryptsetup: command not found

/tmp/_reimage.sh: line 325: cryptsetup: command not found

mke2fs 1.42.12 (29-Aug-2014)

The file /dev/mapper/cryptroot does not exist and no size was specified.

Creating filesystem for user data...

mke2fs 1.42.12 (29-Aug-2014)

/dev/sda2 contains a ext3 file system labelled 'APP'

last mounted on Thu Jan  1 00:00:06 1970

/dev/sda2 is mounted; will not make a filesystem here!

Restart mdev...

Starting mdev...

Restart logging service...

Mounting log directory...

Starting syslog-ng daemon: OK

[root@lorawan ~]#

Step 5. Reboot the IXM after the upgrade.

Simply reboot the IXM to complete the upgrade:

[root@lorawan ~]# reboot

[root@lorawan ~]# watchdog watchdog0: watchdog did not stop!

Stopping cron jobs...

Stopping default lxc container...

lab is not running

umount: /tmp/lxc: not mounted

Stopping sshd: OK

Stopping ntpd: OK

Stop lora HAL...

Stopping Network Interface Plugging Daemon: eth0.

Stopping network...ifdown: interface eth0 not configured

Saving random seed... done.

Clear kernel parameters...

Stopping system config...

Stop checking PID...

Save clock...

killall: watchdog: no process killed

Stopping syslog-ng daemon: OK

Stop logging signal received

No handlers could be found for logger "mdm"

The system is going down NOW!

Verify

Through this you can verify whether the upgrade was successful:

Example of an older version:

[root@lorawan ~]# cat /etc/cisco_version

VERSION=1.0.06

BRANCH=warbler_1_0_throttle

VIEW=nburra-warbler_1_0_throttle.warbler_1_0_throttle_nightly_12052016

FREEZE TIME=05-Dec-2016.21:40:46UTC-08:00

Example after the upgrade:

[root@lorawan ~]# cat /etc/cisco_version

VERSION=2.0

BRANCH=corsica_2_0_throttle

VIEW=nburra-corsica_2_0_throttle.corsica_2_0_throttle_NIGHTLY_2.0_05272017_203603

FREEZE TIME=26-May-2017.15:50:34UTC-07:00

Troubleshoot

There is currently no specific troubleshooting information available for this configuration.