Hardwired personalization of the Milli when integrated on device. Useful for setting country, network, and performance profile of the Milli during manufacturing or prior to deployment.


This page is intended for configuring Milli modules with personalization settings (also known as profiles) when integrating them into end devices. The Milli modules are shipped in a generic, non-customized state.  When placed in a partner device, they need to be configured for the proper RF band (country), network, and with an application specific performance profile. This document describes how to perform this customization/personalization using the Milli hardware test image. It is written as if there will be human interaction and input, however the process can be automated for manufacturing and assembly if desired.



  1. Milli integrated into end device or as part of the Milli Dev Kit.
  2. Milli debug port pins are exposed with a header and can be connected via a serial cable such as TTL-232R-RPI
  3. Milli reset pin 53 is exposed and can be pulled low (to ground). Alternately re-power the Milli unit to reset.
  4. Milli personalization profile settings for your application.
  5. Computer with Windows operating system and serial port.


Milli Personalization Profiles

Below are the recommended MQTT profiles for persistent observe (i.e. end point generated "bubble-up" messages) type data.  They can also be found in Document Center under “Personalization Tools and Profiles.”  Note that CoAP Observe profiles are no longer recommended and are therefore not provided anymore.

  • Milli Developer Aggressive MQTT Profile
    • Recommended configuration for developer kits with more aggressive discovery and listening cycles for all countries including Europe.
  • Milli Developer Long Battery Life MQTT Profile 
    • Recommended discovery and listening cycles for long battery life (5 to 20 years) slightly modified to work when developing on corporate and home networks where firewall UDP timeouts are in effect. UDP timeouts are the norm for most corporate network firewalls as well as many ISP internet providers. Use this configuration on the Itron Starfish Stage network with your Milli device connecting to an IoT Router WAN mode. This will result in slightly higher average power consumption than the production settings.
  • Milli Production Long Battery Life MQTT Profile 
    • Recommended discovery and listening cycles for long battery life (5 to 20 years) for production settings.
These profile examples set the country code (sysvar 3) to EU873 (ISO 3 digit code = 826 = 0x3A 0x03) for the EU profile or USA (ISO 3 digit code = 840 = 0x48 0x03) and network ID to the Starfish Stage network (1711 = 0xAF 0x06) used by the Developer Program. You can find the proper country code in the table below:


Country Code Table











Canada, Jamaica, United States

0x48 0x03






0x24 0x00






0xBE 0x02





Estonia, Finland, GBR, Hungary, Iceland, Ireland, Luxembourg, Portugal, Sweden, Switzerland, United Kingdom

0x3A 0x03





Albania, Denmark, Moldova, Norway, Slovenia

0xD0 0x00

* Country code is used to configure the device for the proper country frequency band. These are based on the ISO Country Codes.

Each of the above MQTT personalization settings files sets the persistent observe URI to the value used for the temperature sensor reference application. To modify for your sensor implementation change the "atsysvar 35" value for your sensor bubble up message URIs. The Milli has 2 concurrent observable resources defined as URIs with Sysvar 35. These URIs define the MQTT topics for sensor initiated bubble-up messages. The sysvar 35 value is 82 bytes long, with 41 bytes for each URI. For each URI the first 32 bytes are for the ASCII encoded URI string, then 1 byte for the token length, and the next 8 bytes for a unique token. The token must be unique relative to the other URI token on the same Milli device. For more detail on this and other integration information see the NIC Integration Guide.

Unit Setup

If you are setting up your Milli Dev Kit for the first time please follow the procedure for Milli Dev Kit firmware update found here.

The following are the steps required to begin configuring the Milli module:

  1. Attach 3-pin serial cable as follows (see datasheet for pin layout):
    • GPIO_26_ADC4 - pin14 (RX)
    • GPIO_27_ADC5 - pin18 (TX)
    • Any ground pin
  2. Connect the serial port to the laptop
  3. Expose the reset pin (Milli pin 53, RSET_N) so that the Milli unit can be restarted. The unit can also be restarted by powering it off and then back on (e.g. pull the battery).
  4. Using a tool such as TeraTerm, connect to the COM port represented by the 3 pin serial connector


Set the Operational Mode of the Milli Module

  1. Apply power to the Milli module.
  2. Open Tera Term.  Select the Serial radio button from the startup page. 
  3. Select the COM port to the module.
  4. Use the Device Manager on your computer to determine the serial port on which the Milli is connected.


  1. Next, click Settings/Serial Port.  Change the rate to 115200 and click OK.


  1. Open a Windows Command session.
  2. All personalization steps will be run against the hardware test image.  To ensure that this is the currently operating image, apply power to the Milli module, and run the sio_load application to change the boot image to the hardware test image with command syntax is as follows:
sio_load.exe –i <COM port> -b – 1
  1. You will be prompted to reset the Milli. This allows the bootloader to receive the upload request. This is done by triggering pin 53 low or re-powering the Milli. If you are working with the Milli on a Dev Kit, click the Blue reset button on the Milli shield.
  2. An example execution is shown here:


  1. You will want to confirm Milli is in the hardware test mode. To do so reset the Milli by triggering pin 53 low or re-powering the Milli. If you are working with the Milli on a Dev Kit, click the Blue reset button on the Milli shield.
  2. The boot should look similar to this screenshot below (e.g. with mNIC Hardware Tester, 81.4.0001.123022). The leading 8 in the firmware denotes a hardware test image and the rest is the firmware version (e.g. 1.4.0001) and build (e.g. 123022).


Configuration Steps

  1. Get the proper personalization profile settings for your application from the additional resources section on this page. The profiles are described in further detail in Requirements section above. These examples set the country code to USA (ISO 3 digit code 840 = 0x48 0x03) and network ID to the Starfish Stage network (1711 = 0xaf 0x06) used by the Developer Program. Modify them for your country code and network ID before using them.
  2. In Tera Term configured as described above, select menu item Edit->Paste<CR> then paste or type the personalization profile setting commands into the Tera Term clipboard window. Each command should be of the form:
atsysvar <ID> <# bytes>=<value in Hex>


<ID> is the system variable (aka sysvar) number

<# bytes> is the number of bytes of data

<value in Hex> is the value in Hex (LSB first)

Or of the following form which resets the sysvar specified to its default value:

atsysvar <ID> ~



  1. The settings from the clipboard are sent to the hardware test image.  The firmware should respond with “OK” for each command processed.


  1. When the configuration commands are finished change the boot image to the final desired image. 
  2. There are three images installed on the milli (HWTEST, PROD, and SELFTEST).  If Milli configuration personalization is required, you may wish to leave the device in hardware test (HWTEST) mode.  You may wish to leave it in self test (SELFTEST) mode for additional testing.  You may wish to place the unit in production (PROD) or standard operational mode because you’re finished with personalization.
  3. To view the images on the device, open Tera Term and set it up as described above. Then open a Windows Command prompt, type: fw images and press Return. Note that in the example below, 1.2.1000 is the standard operating production image, and 111433 is the build number.


Note: There will be three images on the board.  The image numbers are as follows:

  1. Hardware test image (HWTEST) - Typically used when configuring or changing the personalization profile. This image name will start with an 8 followed by version and build number (e.g. 81.2.0000.111433 where version is 1.2.0000 and build number is 111433.
  2. Standard operating image (PROD) - Sometimes referred to as the production image, or PROD, is the image that should be running in normal operational mode connected to a network. This image name be of the form version followed by build number (e.g. 1.2.0000.11433 where version is 1.2.0000 and build number is 111433.
  3. Self-test image (SELFTEST) - Typically used to run a self-test of the Milli module. This image name will start with a letter “c” followed by version and build number (e.g. c1.24.0000.11433 where version is 1.2.0000 and build number is 111433.


  1. To change to the  running firmware image run the following command
sio_load.exe –i <COM port> -b -<image number>

where <image number> is 1, 2 or 3 as described above.

  1. An example of setting the Milli to run the HWTEST test image is shown below.