Milli Personalization

Hardwired Configuration on Integrated Device

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.



  • Milli integrated into end device or as part of the Milli Dev Kit.
  • Milli debug port pins are exposed with a header and can be connected Serial cable such as TTL-232R-RPi
  • Milli reset pin 53 is exposed and can be pulled low (to ground). Alternately re-power the Milli unit to reset.
  • Milli personalization profile settings for your application. These can be obtained from the links on this page and can also be found in Document Center on the Developer Portal under “Personalization Tools and Profiles.” There are currently profiles for development with "aggressive" settings  as well as profiles for production settings where long battery life is required. In addition there are separate profiles for the recommended MQTT implementation for persistent observe type data (i.e. end point generated "bubble-up" messages) as well as alternates with settings for solutions where CoAP Observe is implented in the application layer (not recommended).  For the aggressive settings there are different profiles for Europe (EU) than for the rest of the world. The profiles are provided below.


These examples set the country code 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 here.


MQTT Personalization Profiles (Recommended)

  • Leaf Node Aggressive (Dev Kit) MQTT Ref App EUrecommended configuration for developer kits with more aggressive discovery and listening cycles for supported countries in Europe.
  • Leaf Node Aggressive (Dev Kit) MQTT Ref App - recommended configuration for developer kits with more aggressive discovery and listening cycles for all countries besides Europe.
  • Leaf Node Long Battery Life MQTT Ref App Development - recommended discovery and listening cycles for long (5-20) battery life 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.
  • Leaf Node Long Battery Life MQTT Ref App  - recommended discovery and listening cycles for long (5-20) battery life for production settings.


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.


CoAP Observe Personalization Profiles


Tools Needed

The following tools are needed to perform the personalization configuration:

  • Computer with Windows operating system and serial port.
  • Download and install the Tera Term application from here.
  • Download the sio_load.exe executable from the Developer Portal here.
  • Serial cable such as TTL-232R-RPi.
  • Wire to connect reset pin 53 to ground or mechanism to pull it low if power can’t be cycled.
  • If updating Milli Dev Kit, one or more Arduino boards to power up each Milli under test.

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 like this screenshot with mNIC Hardware Tester, 81.4.0001.123022. The leading 8 in the firmware is for the 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> ~


Note: (EU only) atsysvar 27 4=0x00:0x00:0x05:0x00

  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.