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.