Evaluating The Infineon AIROC™ Cloud Connectivity Manager

Unknown
Unknown

View table of contents ...  

RoadTest: Enroll to Review the Infineon AIROC™ Cloud Connectivity Manager Eval Kit

Author: Unknown

Creation date:

Evaluation Type: Evaluation Boards

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: USB-NORA-W256AWS, NORA-W256AWS,NORA-W251AWS,AWS IoT ExpressLink SARA-R5 Starter Kit V2,Bravo LE910C1-WWXD with AWS IoT ExpressLink,ESP32-C3 AWS IoT ExpressLink Module,Telit LE910C1-WWXD AWS IoT ExpressLink,Realtek Ameba Z2 AWS IoT ExpressLink,SARA-R5 AWS IoT ExpressLink Module

What were the biggest problems encountered?: None, in the beginning there was restriction on registering with free gmail account (resolved)

Detailed Review:

Thanks for choosing me to review and evaluate The Infineon AIROCTm Cloud Connectivity Manager. 

What this Evaluation Kit is and Where it can be used ?

In simple words, the evaluation kit is like a USB dongle, and a Wi-Fi networking system for connecting IoT products to AWS IoT ExpressLink with in-built security features. In general or it might now have become past, such connectivies required software programming, extensive firmware development, testing and maintenance. But with these competitive products, it is now only a plug and a play thing. Due to this, the evaluation kit can be used by non-technical humans as it simplifies IT systems and processes and has potential applications in industrial automation, smart building, smart medical / healthcare and smart appliance. More specifically, the key applications include

  • Industrial automation
  • Factory automation
  • Industrial robotics
  • Smart building: HVAC, occupancy management, door is opened 
  • Smart electricity meters can connect to the cloud to report on usage
  • Remote automation
  • Smart medical/healthcare: Blood pressure monitors, connected patient room equipment
  • Smart appliances: Coffee maker, white goods

But now the question arises how AWS IoT ExpressLink is used in these applications ?

It's simple - according to report(Source : Infineon), in the development of IOT product, connectivity issues amount to 40%, and thus adding cloud connectivity to an existing product or an IOT product can be a daunting task. There are AWS-mandated security requirements and for connecting to AWS one may need to be knowledgeable or an expert in networking, cryptography, and authentication protocols. IFW56810-00 CCM module has preprogrammed these requirements in its module.

Source : Infineon

Fig : Top challenges in IoT product development

I have divided this review in ten (10) sections (mentioned in Table of Contents).  

Table of Contents

  1.  Unboxing Single-Band CCM, IFW56810,Infineon AIROCTm CCM Eval Kit 
  2.  Understanding the Infineon AIROC TmCloud Connectivity Manager Eval Kit 
    1. Evaluation Kit Overview
      • Jumpers
      • IFW956810 Antenna
      • USB Cable
    2. Functional Block Diagram
    3. Cloud Management Features
    4. Networking Features
    5. Wireless Connectivity Features
    6. BlueTooth Features
    7. On-Board Security Features
      • Why cryptographic modules are needed ?
    8. AWS IoT ExpressLink
      • AWS IoT services
    9. Electrical Characteristics & Power Measurement
      • Absolute Maximum Ratings
      • Recommended Operating Conditions
      • Power Measurement
  3. Understanding the Technology behind Infineon AIROCTm IFW56810 
    • PSoC 64 Secure MCU (Dual-Core)
    • FreeRTOS
    • CIRRENT
    • Six Trusted Benefits
    • AWS IoT ExpressLink Commands State Machine
  4. Registration of Kit & Connection Settings
    • Step 1 Product Registration
    • Step 2 Set up AWS Account
    • Step 3 Connect the kit to the PC & Setting up Serial Terminal
    • Step 4 Login, Manage AWS account
    • Step 5 Change Region
    • Step 6 Create the policy
    • Step 7 Configure AWS Thing
    • Step 8 Configure Endpoint
    • Step 9 Connect the kit to Wi-Fi
    • Step 10 Connect Device
  5. AWS Free Tier
    • 5.1 Three Types of Offers
    • 5.2 AWS Free Tier Categories
    • 5.3 AWS IoT Services Pricing
  6. AT Commands Type and List
    • 6.1 Command Types
    • 6.2 23 Error Codes
    • 6.3 31 Useful Commands
      • Syntax/General Format
      • Useful Commands
    • 6.4 ExpressLink Event Codes
    • 6.5 Reserved OTA File Type Codes (0-255)
    • 6.6 ExpressLink Defender Metrics
  7. Evaluating the Infineon AIROCTm IFW56810 Cloud Connectivity Manager
    • 7.1 MQTT Test Client, Interacting with the AWS Cloud
    • 7.2 Subscribe and Publish Messages to AWS IOT Cloud Console
    • 7.3 Subscribe and Receive Messages from AWS IOT Cloud Console
    • 7.4 Playing with Jumper of Header J61
    • 7.5 Connecting with AES-Ultra96V2G
  8. Connecting Method with Any FPGA or Any Microcontroller
    • 8.1 Jumpers of Headers J60 and J61
    • 8.2 Different Connections
    • 8.3 Configuration : 2-wire + 2 wire 3.3VDC supply
    • 8.4 Configuration : 3-wire + 2 wire 3.3VDC supply
    • 8.5 Configuration : 4-wire + 2 wire 3.3VDC supply
    • 8.6 Configuration : 5-wire + 2 wire 3.3VDC supply
    • 8.7 Setup on AWS Console
    • 8.8 Code Snippets for Microchip SAM E51 Nano Curiosity Kit
  9. Comparable Products
  10. Conclusion

List of Evaluation Videos

  1. Publish Messages to AWS IOT Cloud Console,series of sent messages-1
  2. Publish Messages to AWS IOT Cloud Console,series of sent messages-2
  3. Receive Messages from AWS IOT Cloud Console
  4. Pin 1 and Pin 2 on J61
  5. Pin 2 and Pin 3 on J61

 

1. Unboxing Single-Band CCM, IFW56810, Infineon AIROCTm CCM Eval Kit

{gallery} Single-Band CCM, IFW56810, Infineon AIROCTm CCM Eval Kit

This sticker I have removed from the box and used as Ist picture to emphasize, the evaluation kit is ESD sensitive.

with cellophane film

with cellophane film

Side of the box with cellophane film and ESD Warning Sticker

Front of the box

Back of the box

Invoice

Box after opening

Thickness of Protective pad (double pads are used)

Quick Start Guide is hidden behind protective pad

Front of Quick Start Guide

One end of the USB cable

USB Type-A (male) to Type-C (female) cable

Its written High Speed Cable USB 2.0

80°C , 30 V, VW -1 28AWG/1P and 24AWG/2C

Evaluation Board Front (default packaging with 5 jumpers), Top View

Back of Evaluation Board. 

Unique ID numbers are masked with white.

Back of Evaluation Board. 

Top View, FTDI chip on IFW56810-00 CCM module

Unique ID numbers are masked with white.

Unique ID numbers are masked with white.

The evaluation kit comes in excellent double protective pads with ESD protection warning and the complete box is sealed with plastic film. The delivery of the kit was very fast than anticipated. The kit includes

  • IFW956810 Single-Band Wi-Fi 4 CCM,
  • USB Type-A (male) to Type-C (female) cable,
  • Quick start guide.

The USB cable is High Speed Cable USB 2.0, 80°C , 30 V, VW -1 28AWG/1P and 24AWG/2C; and is Type-A (male) to Type-C (female) cable.


2.  Understanding the Infineon AIROCTm Cloud Connectivity Manager Eval Kit

The given evaluation kit is available in the market by following synonymous names

  • INFINEON IFW956810
  • Evaluation Kit, Single-Band CCM, IFW56810, Wi-Fi 4, Wireless Connectivity
  • Infineon AIROCTm Cloud Connectivity Manager Eval Kit
  •  AIROCTm  IFW56810-00 Wi-Fi 4 Cloud Connectivity Manager (CCM) module
  • IFW956810 Single-Band Wi-Fi 4 CCM

2.1 Evaluation Kit Overview

The board displayed below is the evaluation kit and the Infineon IFW956810 Single-Band Wi-Fi 4 CCM. 

Figure 1 : IFW56810 AIROCTM CCM evaluation kit board details

Source : Quick Start Guide

It can be seen the IFW956810 module has inside green pcb which is mentioned as printed antenna. The unique module ID given to me is different and I have masked in white.

Jumpers 

Below it is 16-pin header, arranged in two rows, 8x2, and from the following picture, it can be seen 4 jumpers are placed (by default). Also, the printed odd numbered pins of J60 can be clearly seen.


Figure 2 : Top view,  IFW956810 module

Comparing Fig.2 with Fig. 1, it can be seen, the default jumpers are 

  • FTDI_UART_TXD and RXD, that is, pin 3 to pin 4.
  • NC and EN, that is, pin 5 to pin 6.
  • VDD_33_USB and VDD_33, that is, pin 9 to pin 10.
  • NC and INT, that is, pin 11 to pin 12.

There is one more jumper on J61, where by default VDD_33 and VBACKUP pins have 1 jumper connected, that is, pin 1 to pin 2.

2.1.1 IFW956810 Antenna

{gallery} IFW956810 Antenna

2.1.2 USB Cable

The given USB cable is Type-A (male) to Type-C (female) cable and has following print on it :  

E238846  AWM 2725 80°C , 30 V, VW -1 28AWG/1P and 24AWG/2C  HIGH SPEED USB 2.0  CABLE 

Below are my guesses (can be or may be not slightly incorrect )

  • E238846 is MPN
  • AWM 2725 : AWM stands for Appliance wiring material, and is Underwriters Laboratory (UL) category of cable. The given number '2725' means the it is 'Multiconductor, thermoplastic-insulated and -jacketed wire'
  • 80°C  is temperature rating which this cable can withstand.
  • 30 V is maximum voltage rating (Low Voltage)
  • VW-1 means cable is UL flame rated, which is a vertical flame rating 
  • 28AWG/1P - is 28 AWG gauge, 1 Pair and is used for Data. I also guess this 1P is twisted pair for data lines with surrounding shield.
  • 24AWG/2C - is 24 AWG gauge, 2 Conductors and is used for Power. I also guess this is neither twisted pair nor has surrounding shield.

One thing good about this USB cable is, it can be connected in any way with Infineon AIROC CCM, and it works and gets connected in both ways, that is,

2.2 Functional Block Diagram

Source : Infineon

Figure 3 : System architecture for products using the IFW56810-00 CCM module

Source : Infineon

Figure 4 : System architecture for products using the IFW56810-00 CCM module

Source : Infineon

Figure 5 : IFW56810-00 module showing host interface signals

Source : Infineon

Figure 6 : QSPI external flash connection to module diagram

Source : Infineon

Figure 7 : Power connection diagram

2.3 Cloud Management Features

  • Powered by AWS IoT ExpressLink
  • AWS OTA update support
  • AWS host OTA update support

2.4 Networking Features

  • Full network stack offloaded from the host: TCP/IP, TLS, DNS, HTTP, and MQTT
  • Simple configuration from the host processor

2.5 Wireless Connectivity Features

1) WLAN standard : IEEE 802.11b/g/n, Wi-Fi compliant, Wi Fi  4

2) Frequency range of WLAN: 2.4-GHz band

3) Modulation :  

  • DSSS (Direct Sequence Spread Spectrum)
  • DBPSK(Differential Binary Phase Shift Keying) - 1 Mbps
  • DQPSK(Differential Quadrature Phase Shift Keying) - 2 Mbps
  • CCK(Complementary Code Keying) - 11/5.5 Mbps
  • OFDM (Orthogonal Frequency Division Multiplexing)
  • BPSK (Binary Phase Shift Keying) - 9/6 Mbps
  • QPSK (Quadrature Phase Shift Keying) - 18/12 Mbps
  • 16-QAM (16-Quadrature Amplitude Modulation) - 36/24 Mbps
  • 64-QAM (64-Quadrature Amplitude Modulation- 72.2/54/48 Mbps

4) Data rate

  • 802.11b: 1, 2, 5.5, 11 Mbps
  • 802.11g: 6, 9, 12, 18, 24, 36, 48, 54 Mbps
  • 802.11n: MCS0~7 HT20 65 Mbps

The data rates 802.11n mentioned in different sources are different, like 65 Mbps, 70 Mbps, 72 Mbps.

5) Output power (2.4 G)

6) Receiver sensitivity  (2.4 G)

7)  Bluetooth® LE along with Soft AP are available for Wi-Fi onboarding.

2.6 BlueTooth Features

  • Bluetooth® standard : Bluetooth® LE 5.2
  • Frequency range : 2400~2483.5 MHz
  • Modulation : GFSK (Gaussian Frequency Shift Keying)
  • Output power : 8 dBm+/-3 dBm 
  • Receiver sensitivity (GFSK) :  -91 dBM (Typical) and -76 dBM (Maximum)

2.7 On-Board Security Features

  • WPA/WPA2 (Personal) for powerful encryption and authentication
  • WPA3
  • AES and TKIP acceleration hardware for faster data encryption and 802.11i compatibility
  • Cisco compatible extension- (CCX, CCX 2.0, CCX 3.0, CCX 4.0, CCX5.0) certified
  • TLS 1.2
  • Arm® Platform Security Architecture (PSA) Level 2 certified
  • Secure enclave and secure boot – only operates with Infineon-signed firmware
  • CIRRENTTm  Cloud ID: Unique device ID for safe, convenient provisioning
  • Wi-Fi Protected Setup (WPS)
  • WEP (Wired Equivalent Privacy)
  • WMM / WMM-SA, Wireless Multimedia Extensions
  • CKIP (software)
  • Ongoing security updates

Why cryptographic modules are needed ?

  • Sharing of private room/buildings, factory manufacturing facilites
  • Remote monitoring of these facilites 24hrs.
  • Sharing of patient's personal details, health-related information, health records,  lab results, medications, X-Rays,CTs, etc

In all these situations, one generally do not feel comfortable or feel exposed. Thus, it's obvious security and privacy reasons.

2.8 AWS IoT ExpressLink

AWS IoT ExpressLink is the main feature of this evaluation kit, and is one of the fastest ways to link IoT devices with the AWS cloud.

Source : Infineon

Figure 8 : Without AWS IoT ExpressLink

Source : Infineon

Figure 9 : With AWS IoT ExpressLink

As can be seen from the above 2 pictures, the security module - 'Hardware Security' is inside AWS IOT Express Link but when IoT devices are connected to AWS using conventional methods, then 'Hardware Security' has to be provided as a separate module which means one may need to be knowledgeable or an expert in networking, cryptography, and authentication protocols to develop secure IoT devices. Morever, there are AWS-mandated security requirements.

This special need (to be an expert) is eliminated if one uses Infineon AIROC IFW956810, as these secuirty features are in-built.

If the Infineon AIROC IFW956810 CCM or alike product is not used then with conventional designs, the 'host processor' need networking stack to run on the host processor, whereas with Infineon AIROC IFW956810 CCM, a UART serial interface is used to communicate and only a few lines of code (known and copy/paste work is done) is required.

So, what Features this AWS IoT ExpressLink has ?

Besides, cloud connectivity AWS IoT ExpressLink  allows easy integration with over 200 AWS IoT services, the popular ones are 

 AWS IoT services

  • AWS IoT Core messaging
  • AWS IoT Device Shadow
  • AWS IoT Device Defender
  • Amazon Simple Storage Service (Amazon S3)
  • Amazon Elastic Compute Cloud (Amazon EC2)
  • AWS IoT Core
  • AWS IoT SiteWise
  • Amazon SageMaker

2.9 Electrical Characteristics & Power Measurement

a) Absolute Maximum Ratings

Source : Infineon


b) Recommended Operating Conditions

Source : Infineon


c) Power Measurement

Source : Infineon


3.  Understanding the Technology behind Infineon AIROCTm  IFW56810

3.1  PSoC 64 Secure MCU (Dual-Core)

Besides an integrated printed antenna , this Infineon AIROC IFW956810 kit uses 32-bit PSOC 64 line asymmetric dual-core Arm® Cortex®-M4 and Arm Cortex-M0+ micro-processors.

{gallery}PSoC

3.2 FreeRTOS

As I have mentioned above, Infineon AIROC IFW956810 eliminates the requirement to be knowledgeable or an expert in networking, cryptography, and authentication protocols.
But how does Infineon AIROC achieves this?

If one uses only microcontroller and IFW956810/PSoC chip (not module or kit) then even though it can run an operating system (if allowed to be), it do not has built-in functionality to connect to local networks or the cloud, which make IoT applications a challenge.

So, Infineon AIROC IFW956810 uses FreeRTOS  which allows to run core operating system, software libraries that make it easy to securely connect to the cloud or other edge devices. 

You can also collect data from cloud or other edge devices, store, and analyze across IoT applications.

 

3.3 CIRRENTTm

Source : Infineon

Figure 10 : Quick device provisioning with AWS IoT ExpressLink and CCM modules

3.4 Six Trusted Benefits

Infineon AIROC IFW956810 comes with specially labelled six 'trusted' benefits.

So what this 'trusted' has relevance and how it makes Infineon AIROC IFW956810 different ?

As I have mentioned in 'FreeRTOS', - "You can also collect data from cloud or other edge devices, store, and analyze across IoT applications". So, following questions arises 

  • Can you Trust data or rather I should question Can you Trust your own data! 
  • Is the security implemented correctly?
  • Is data not altered or compromised?
  • Does the data come from a trusted device?

Infineon AIROC IFW956810 achieves this using FreeRTOS which implements Root-of-Trust (RoT) and Services, Secure Processing Environment (SPE), Trusted Firmware-M, CY Secure Crypto Bootloader on Cortex-M0+, providing following six benefits-

  1. Trusted source- Does the device come from a trusted source?
  2. Trusted configuration - Was it configured by authorized personnel?
  3. Trusted connection - Is the connection authenticated and encrypted?
  4. Trusted software - Does the device run most recent version of software?
  5. Trusted operation - Does the device operate as expected?
  6. Trusted analytics - Does the data come from a trusted device?

3.5 AWS IoT ExpressLink Commands State Machine

In this, I will explain how AWS IoT ExpressLink commandsinteract with the Infineon AIROC and AWS.  In simple words, it operates as a state machine which moves through a number of internal states. Below is partial state diagram

  1. Networking : TCP/IP, TLS, DNS, HTTP
  2. Networking : MQTT
  3. Wi Fi 4
  4. Modulation Techniques
  5. BlueTooth Soft AP
  6. WEP
  7. WPA,WPA2 and WPA3
  8. AES
  9. TKIP
  10. WMM
  11. AWS IoT services
  12. CIRRENT


4. Registration of Kit & Connection Settings

Step 1 Product Registration

1) Firstly, the kit has to be registered on Infineon Developer Center, www.infineon.com, with the unique ID (which I have masked in white).

The complete URL printed in Fig.1 will be different than the URL printed on anyone's evaluation board as it is unique module ID. Also, this URL (in Fig.1) is same as mentioned in the printed 'Quick start guide', which comes with the module. 

However the online version with new datasheet and overview (also online) has other URLs mentioned instead of https://ifxcloud.io/<unique_module_id> . There are 4 different URL versions and all work.

Note : 

a) The module identifier is case-sensitive

b) If the https://qr.infineon.io/  is seeked without unique module ID, the screen prompts message -{"message":"Missing Authentication Token"}

c) Similarly, if the https://ifxcloud.io/ is seeked without unique module ID, the screen prompts message -{"message":"Missing Authentication Token"}

2) Now, lets see what the URLs displays page

1) URL 3 : https://softwaretools.infineon.com/projects/create/details

2)  URL 4 :  www.infineon.com

3)  URL 2 : https://qr.infineon.io/<unique_module_id>

The device id is masked

{gallery}Registration

 

Note : In case the complete registration is not showing up, check email and click on "Go To Your Project Space" 

(This problem I faced and resolved after wasting 30 min, after clicking on  "Go To Your Project Space" , link of the email.)

Step 2  Set up AWS Account

{gallery}AWS

Step 3  Connect the kit to the PC & Setting up Serial Terminal

Ubuntu

1) The user manual has given settings for Windows but I will try for Ubuntu and GTKTerm. GTKTerm is a simple GTK+ terminal used to communicate with the serial port. It can be installed from https://github.com/Jeija/gtkterm . 

Ubuntu Specifications

Description:	Ubuntu 22.04.3 LTS
Release:	22.04
Codename:	jammy
Kernel : 6.2.0-36-generic
x86_64 x86_64 x86_64 GNU/Linux

GTKTerm version : 1.1.1

2) As soon as the Infineon AIROC is connected using USB, there is blue light which flashes momemtarily

3) Now type lsusb in the terminal.

Here, instead of the COM port number, here in Ubuntu, the port is /dev/tty/USB1.  Now do serial terminal settings in GTKTerm

Port : /dev/tty/USB1
Speed: 115200
− Data: 8 bit
− Parity: none
− Stop bits: 1 bit
− Flow control: none

{gallery} Serial Terminal, USB

Step 4  Login, Manage AWS account

AWS Management or IOT Console

1)  https://aws.amazon.com

{gallery}AWS Management Console

Step 5  Change Region

You will need to change location as per your region. As I m from India, I changed code from eu-north-1 to ap-south-1, which is for Asia Pacific (Mumbai). Following are other regions

{gallery}Regions

Step 6  Create the policy

1) Now open http://console.aws.amazon.com/iot 

2) From the left pane, under Manage, select Security, and then select policies.  Click Create to create a policy.

3) Enter the policy name - “TestPolicy” 

4) Click JSON under policy statements tab , which is in 'Policy document tab'

 

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*"
    }
  ]
}

Here, if the version is changed to latest date of 2024 instead of  "Version": "2012-10-17", it gives error.

{gallery}Policy

Step 7  Configure  AWS Thing

1) Now open http://console.aws.amazon.com/iot 

2) From the left pane, under Manage, select All devices, and then select Things.

3) Click Create Things.

4) On the Create things page, select Create single thing, and then click Next.

5) Now come back to computer and open GTKTerm. After connecting the kit using GTKTerm, type  " AT+CONF? ThingName"

Note : here the "ThingName" is not setted yet (I will soon name on AWS IoT Console as TestThing in the coming steps).  Here you have to type word ThingName only.

6) On typing " AT+CONF? ThingName", a  string (a sequence of alphanumeric characters) is returned from the terminal. Copy this returned string.

7) Now come to AWS Thing , point 4  http://console.aws.amazon.com/iot .  The returned string (a sequence of alphanumeric characters)  of the previous point  will be the "ThingName".

So, paste this returned string of point 6 into Thing name field under Thing properties of the  AWS Thing.

8) Leave other fields at their default values, and then click Next.

9) After entering the "string" and after clicking on Next,  "Configure device certificate - optional" , window appears. Though it's optional but you will have to "Configure device certificate".

10)  To configure Device certificate, four options are given but instead auto generate, we will upload certificate.

  • Auto-generate a new certificate (recommended)
  • Use my certificate
  • Upload CSR
  • Skip creating a certificate at this time

11) Before uploading certificate, we will have to retrieve from the kit and prepare certificate. Now, again come back to computer and open GTKTerm. After connecting the kit using GTKTerm, type " AT+CONF? Certificate pem"

12) This " AT+CONF? Certificate pem" will return certificate on the terminal, and is a longer sequence of alphanumeric symbols, as shown in gallery. Copy the entire certificate from "Begin Certificate - End certificate" and paste it into a text file.

13) Save this certificate file as “ThingName.cert.pem”. Copy the "ThingName" from point 6.

14) It automatically creates certicates with fields

Subject Name
C (Country):	DE
ST (State):	Bavaria
L (Locality):	Neubiberg
O (Organization):	Infineon Technologies AG
OU (Organizational Unit):	CCM
CN (Common Name):	 


Issuer Name
C (Country):	DE
ST (State):	Bavaria
L (Locality):	Neubiberg
O (Organization):	Infineon Technologies AG
OU (Organizational Unit):	CCM
CN (Common Name):	AIROC(TM) IFW56810 Intermediate CA


Issued Certificate
Version:	 
Serial Number:	 
Not Valid Before:	2022-07-12
Not Valid After:	2042-07-07

Certificate Fingerprints
SHA1:	
MD5:	

Public Key Info
Key Algorithm:	Elliptic Curve
Key Parameters:	 
Key Size:	256
Key SHA1 Fingerprint: 
Public Key:	 

Subject Key Identifier
Key Identifier:	 
Critical:	No

Extension
Identifier:	
Value:	 
Critical:	No

Basic Constraints
Certificate Authority:	No
Max Path Length:	Unlimited
Critical:	No

Extension
Identifier:
Value:	
Critical:	No

Signature
Signature Algorithm:	 
Signature:	 

15) Now come to point 9,   "Configure device certificate - optional", window . 

16) Select Use my certificate, and then choose CA is not registered with AWS IoT.

17) Under Certificate, select Choose file. Upload this ThingName.cert.pem file created

18) Under Certificate Status, select Active. Then click Next.

19) Now, window "Attach policies to certificate - optional" appears.

20) Select the Policy created in "Step 6  Create the policy" with name “TestPolicy”

21) Click "Create thing".

22) Now, window appears 

You successfully created thing Inineon_...

You successfully created certificate ..........

 

{gallery}Things

Step 8 Configure Endpoint

1) Now open http://console.aws.amazon.com/iot 

2) From the left pane, below Manage, select Settings, and then select Settings.

3)  Copy your account endpoint string under "Device data endpoint".

4) Now come back to computer and open GTKTerm. After connecting the kit using GTKTerm, type  " AT+CONF Endpoint=   copied endpoint string under Device data endpoint", that is 

type " AT+CONF Endpoint=  ............iot.ap-south-1.amazonaws.com" (Complete endpoint string under Device data endpoint)

5) The previous step replaces the configured default endpoint.

{gallery}Configure Endpoint

Step 9 Connect the kit to Wi-Fi

Now, the kit has to be connected to WiFi. As this kit has no user interface to click to select Wi-Fi connection, again GTKTerm will used to set the Wi-Fisettings with password. This will be accomplished like earlier, and typing following commands 

  • AT+CONF SSID=<your router or Wifi ssid>
  • AT+CONF Passphrase=<your router or Wifi passphrase>

Here, SSID is simple word is the name of your Wi-Fi Connection,

and Passphrase is simply the password

Thus, type in GTKTerm terminal

AT+CONF SSID= Abhishek

AT+CONF Passphrase=Abhishek

Note : For debugging  purposes, the SSID or Wifi name can be retrieved but one can feel relieved as the password or passphrase cannot be retrieved. If one tried to hack password or retrieve password, kit will return an error.

One can check whether the kit is successfully connected or not by using ping command

ping endpoint   This endpoint is same as of  Step 8 Configure endpoint, that is, 

 ............iot.ap-south-1.amazonaws.com" (Complete endpoint string under Device data endpoint)

 ping  ............iot.ap-south-1.amazonaws.com

Step 10 Connect Device

1) Now open http://console.aws.amazon.com/iot 

2) From the left pane, under Connect, there is "Connect one device".

3) Similarly, on the right side, under "Get started with AWS IoT", there is "Connect device".

4) Both point 2 and 3 directs to same page as shown in gallery.

7) You can see its showing "connected".

8) I disconnected it and is shown in gallery.

9) I reconnected 

 

{gallery}Connect Device

 Extra Policies


5. AWS Free Tier

5.1  Three Types of Offers

AWS provides three types of offers in Free Tier : 

  • 12 Months Free
  • Always Free
  • Trials

5.2  AWS Free Tier Categories

 AWS categorizes these free tiers as following product categories

  • Analytics
  • Application Integration
  • Business Productivity
  • Compute
  • Containers
  • Customer Engagement
  • Database
  • Developer tools
  • End User Computing
  • Front-End Web & Mobile
  • Game Tech
  • Internet of Things
  • Machine Learning
  • Management & Governance
  • Media Services
  • Migration & Transfer
  • Networking & Content Delivery
  • Robotics
  • Security, Identity, & Compliance
  • Serverless
  • Storage

More details on these free services can be seen at https://aws.amazon.com/free/ 

5.3  AWS IoT Services Pricing

As I will use AWS IoT,so I am mentioning free tier limits after which cost will apply. Following is copy and paste from https://aws.amazon.com/iot-core/pricing/ 

AWS Free Tier is available to AWS IoT Core customers for 12 months starting with the date you create your AWS account. When your free usage expires or if your application use exceeds the free usage tiers as outlined below, you pay the AWS IoT Core pricing rates.

  • 2,250,000 minutes of connection 
  • 500,000 messages
  • 225,000 Registry or Device Shadow operations
  • 250,000 rules triggered and 250,000 actions applied

For example, the AWS Free Tier would help you run a 50-device workload, where each device:

  • Connects for 24 hours a day
  • Exchanges 300 messages per day (message size 5 KB or smaller) 
  • Makes 130 registry or Device Shadow operations per day (registry or Device Shadow record size 1 KB or smaller) 
  • Initiates 150 rule executions per day that invoke one action (processed message size 5 KB or smaller) 

The free usage tier applies across all AWS Regions except the AWS GovCloud (US) Region. Your usage is calculated each month across all Regions and is automatically applied to your bill. Free usage does not accumulate from one billing period to the next.
5.3.1 Pricing
Pricing are different according to regions. For Asia Pacific (Mumbai), ap-south-1, the region where I fall according to AWS, the pricings for four IOT services are as: 

a) Connectivity pricing: $0.092 (per million minutes of connection)

b) MQTT and HTTP messaging pricing

  • Up to 1 billion messages: $1.05 (per million messages)
  • Next 4 billion messages: $0.84 (per million messages)
  • Over 5 billion messages: $0.74 (per million messages)

c) Device Shadow and Registry pricing: $1.31 (per million operations)

d) Rules Engine pricing
  • Rules initiated: $0.158 (per million rules triggered / per million actions applied)
  • Actions applied: $0.158 (per million rules triggered / per million actions applied)

5.3.2 Following services are not available for all regions, including Asia Pacific (Mumbai), ap-south-1

  • LoRaWAN messaging pricing
  • Sidewalk messaging pricing
  • LoRaWAN FUOTA pricing
  • AWS IoT Core for LoRaWAN Public Network Support
  • Device Shadow and registry
  • Device Location,Location Solvers pricing

More can be looked here : https://aws.amazon.com/iot-core/pricing/ 

5.3.3 You can also calculate using AWS Cost calculator 


6. AT Commands Type and List

6.1 Command Types

AT commands are of four types: Test command, Query command, Set command and Execute command.

Below is another classification

  • Basic AT Commands
  • Wi-Fi AT Commands
  • TCP-IP AT Commands
  • Bluetooth® Low Energy AT Commands
  • Bluetooth® AT Commands
  • MQTT AT Commands
  • HTTP AT Commands
  • FileSystem AT Commands
  • WebSocket AT Commands
  • Ethernet AT Commands
  • Signaling Test AT Commands
  • Web server AT Commands
  • Driver AT Commands
  • User AT Commands

6.2 23 Error Codes

Following are 23 error codes   

6.3  31 Useful Commands

Besides the commands mentioned in the 'product registration' and 'settings', I will mention here another 31 useful commands but before it I will first explain the syntax rules.

6.3.1 Syntax/General Format

The general format or the syntax of ExpressLink command is

The individual tokens from the above syntax are:

  • {command} : choose commands from any of the allowed commands
  • [#] : An optional decimal  suffix qualifier, only used by few commands.
  • [?] : A query marker used with some commands to indicate that information is being requested.
  • {separator} : A single ASCII space character (0x20)
  • [parameter] : An (escaped) ASCII string with the data required for the command.
  • {eol} : A single ASCII newline character (0x0a)

6.3.2  Useful Commands

AT
CONF
CONF {certificate key}=pem
CONF?
CONF? {certificate} pem
CONFMODE
CONNECT
CONNECT?
DEFENDER
DIAG
DISCONNECT
EVENT?
FACTORY_RESET
GET 
GET{#}
GET0
JOB
OTA APPLY
OTA CLOSE
OTA FLUSH
OTA READ
OTA SEEK
OTA?
RESET
SEND
SHADOW
SLEEP#
SUBSCRIBE#
TIME?
UNSUBSCRIBE#
WHERE?

6.4  ExpressLink Event Codes

6.5  Reserved OTA File Type Codes (0-255)

6.6 ExpressLink Defender Metrics


7.  Evaluating the Infineon AIROCTm  IFW56810  Cloud Connectivity Manager

 

The Infineon AIROC IFW956810 

Source : Infineon

Figure : System architecture for products using the IFW56810-00 CCM module

7.1  MQTT Test Client, Interacting with the AWS Cloud

 We will test this kit and its connection with AWS Cloud as MQTT test client. 

1) Now open http://console.aws.amazon.com/iot 

2) From the left pane, under Test, select MQTT test client.

3)  You can see in Connection details,  its showing "connected". This connected is shown even when the Infineon AIROC kit is not connected physically to PC.

4) I disconnected it and is shown in gallery.

5) I reconnected it in software.

6) Now go to to 'Subscribe to a topic' and inside this tab under 'Topic filter', open 'Additional configuration'

7) You will see

  • Number of messages to keep
  • Quality of service
  • MQTT payload display

8) In the 'Topic filter', type #

but I have saved it with even same name 'Display payloads as strings (more accurate)'; though it got saved by this name but the message was not displayed on AWS IOT Console.

9)  Under 'MQTT payload display', change 'Auto-format JSON payloads (improves readability)' to 'Display payloads as strings (more accurate)' by selecting it. Then click 'Subscribe'

10)  Now come back to computer and open GTKTerm. After connecting the kit using GTKTerm, type  'AT+CONNECT'.

11) After a few seconds, the device will connect to the AWS IoT Core and you will receive the message
“OK 1 CONNECTED”

This means  Infineon AIROC kit is connected to AWS IoT Core.

{gallery}MQTT Test Client

7.2 Subscribe and Publish Messages to AWS IOT Cloud Console

1) Continuing with 7.1 MQTT Test Client, Interacting with the AWS Cloud

2) Now come back to computer and open GTKTerm. After connecting the kit using GTKTerm, type 

AT+DIAG PING 8.8.8.8   (this command is not required as it is connected)

 'AT+CONNECT'.

3) Enter the following commands in sequence in the serial terminal:

AT+CONF Topic1=/MyPubTopic
AT+SEND1 hello world

4) Now again, enter the following commands in sequence in the serial terminal:
AT+CONF Topic1=/MyPubTopic

AT+SEND1 Welcome to Element14 Road Test The  Infineon AIROC

5)  Now come back to AWS IOT console  http://console.aws.amazon.com/iot  and on the left pane click Monitor, check

6) To view the message go to 'MQTT test client' and under Subscriptions check the message

{gallery}  Subscribe and Publish Messages

Now check series of sent messages

7.3 Subscribe and Receive Messages from AWS IOT Cloud Console

Now, in this, I will type from AWS IoT Console , that is from Cloud and receive message on my PC.

1) Firstly, come back to computer and open GTKTerm. After connecting the kit using GTKTerm, type following commands in sequence in the serial terminal:
AT+CONF Topic2=/MySubTopic
AT+SUBSCRIBE2

2) Now, go to AWS IOT console, http://console.aws.amazon.com/iot ,  and on the left pane click MQTT test client' and under Subscriptions, type /MySubTopic in the Topic filter and press Subscribe.

3) Now, go to Publish to a topic tab and type /MySubTopic in the Topic name field.

Keep the “Hello from the AWS IoT Console” message. Then Click Publish.

4) Now, come back to computer and open GTKTerm. After connecting the kit using GTKTerm, type following commands in sequence in the serial terminal:
AT+GET2
You will receive the following message:

One can create applications. Below is dummy application which I will modify to connect with Microchip SAM E51  in 7.6

{gallery}Create Application

7.4 Playing with Jumper of Header J61

As I have mentioned above in the jumpers section, there is jumper on J61, where by default  the jumper settings connect  pin 1 to pin 2, that is pins VDD_33 and VBACKUP are  connected.

The third pin is VDD_25, in this experiment, I connect the pins VDD_25 and VBACKUP instead VDD_33. 

This is working because VDD_25 is 2.5V and VDD_33 is 3.3 V.

Note : One should stick to jumper settings as per manual and even I have returned to default jumper settings after this experiment.

a) Pin 1 and Pin 2 on J61

b) Pin 2 and Pin 3  on J61

7.5 Connecting with AES-Ultra96V2G 

Attempt 1  with FPGA AES-Ultra96V2G

Conclusion : Currently Unsuccessful as code is incomplete.

As I need to address personal works & court works also, I cannot do testing but

the method would be same whether FPGA  or Microcontroller- any board, which I am explaining in the following section 8.

Now, even if I logout from AWS IoT Console.

AT+CONNECT  shows connected even if AWS IoT Console webpage is not opened.


8.  Connecting Method with Any FPGA  or Any Microcontroller

Before I explain method to connect with any microcontroller or FPGA, I firstly explain headers J60 and J61

8.1 Jumpers of Headers J60 and J61

a) Original Infineon AIROC on delivery

b) Bare Pins ; Jumpers from J61 and J60 removed

c) Below two jumpers which will be used 

d) Jumper on J61 , note all the jumpers from J60 must be removed

e) Lets see what pins on J60 are and which pin row will be used. J60 has 2 pin in 1 row.

So, in this experiment, I will use one side with golden/yellow of odd pin numbers in connection with any microcontroller or FPGA.

8.2  Different Connections

Below is different connections gallery

{gallery}connections gallayaw

image

IMAGE TITLE: THEN IMAGE DESCRIPTION

image

IMAGE TITLE: THEN IMAGE DESCRIPTION

image

IMAGE TITLE: THEN IMAGE DESCRIPTION

image

IMAGE TITLE: THEN IMAGE DESCRIPTION

image

IMAGE TITLE: THEN IMAGE DESCRIPTION

image

IMAGE TITLE: THEN IMAGE DESCRIPTION

8.3 Configuration : 2-wire + 2 wire 3.3VDC supply

8.3.1 AVNET AES Ultra96V2G MPSoC FPGA

Any of Rx and Tx can be used

8.3.2 Microchip SAM E51 Curiosity Nano

Any of Rx and Tx can be used

8.3.3  Microchip SAM E51 Curiosity 

8.4 Configuration : 3-wire + 2 wire 3.3VDC supply

8.5 Configuration : 4-wire + 2 wire 3.3VDC supply

8.6 Configuration : 5-wire + 2 wire 3.3VDC supply

8.7  Setup on AWS Console

Now, I will login to AWS IoT Console, and Create Things and Application

8.7.1 Create thing gallery

{gallery} Create thing gallery

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

8.7..2 Policy 

In the policy, I have masked id by xxxxxx  

//Created by Mr. Abhishek Bansal
//Company: New Era Consultancy Services

{
  "Version": "2024-02-06",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "arn:aws:iot:ap-south-1:5xxxxxxx:client/client1"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "arn:aws:iot:ap-south-1:5xxxxxxx:client/${iot:Connection.Thing.ThingName}"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Publish",
      "Resource": "arn:aws:iot:ap-south-1:5xxxxxxx:client/${iot:Connection.Thing.ThingName}"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "arn:aws:iot:ap-south-1:5xxxxxxx:client/${iot:Connection.Thing.ThingName}"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": "arn:aws:iot:ap-south-1:5xxxxxxx:topicfilter/${iot:Connection.Thing.ThingName}/room*"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Receive",
      "Resource": "arn:aws:iot:ap-south-1:5xxxxxxx:topic/${iot:Connection.Thing.ThingName}/room*"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "arn:aws:iot:ap-south-1:5xxxxxxx:client/${iot:Connection.Thing.ThingName}"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": [
        "arn:aws:iot:ap-south-1:5xxxxxxx:topicfilter/my/topic",
        "arn:aws:iot:ap-south-1:5xxxxxxx:topicfilter/my/othertopic"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "arn:aws:iot:ap-south-1:5xxxxxxx:client/${iot:Connection.Thing.ThingName}"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": "arn:aws:iot:ap-south-1:5xxxxxxx:topicfilter/my/topic"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Receive",
      "Resource": "arn:aws:iot:ap-south-1:5xxxxxxx:topic/my/topic"
    },
    {
      "Condition": {
        "ForAllValues:StringEquals": {
          "iot:ConnectAttributes": [
            "LastWill"
          ]
        }
      },
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": "arn:aws:iot:ap-south-1:5xxxxxxx:client/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish",
        "iot:RetainPublish"
      ],
      "Resource": "arn:aws:iot:ap-south-1:5xxxxxxx:topic/will"
    }
  ]
}

8.7.3 Cryptography, digital certifcate, elliptic curve cryptography, sha  certicate, fingerprints

{gallery}elliptic curve cryptography

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

IMAGE TITLE: THEN IMAGE DESCRIPTION

8.8 Code Snippets for  Microchip SAM E51 Nano Curiosity Kit 

One need not do so much programming, as the APIs may be available, anyway I m taking hard route for this review

Below are not pseduo codes, but working codes. I still have to write full code. This is the same code on which I will work on if given project.

a) Basic Microcontroller. Microchip SAM E 51 setting

 

//Created by Mr. Abhishek Bansal
//Company: New Era Consultancy Services

#define CPU_CLOCK_FREQUENCY 120000000
#pragma config BOD33_DIS = SET
#pragma config BOD33USERLEVEL = 0x1cU
#pragma config BOD33_ACTION = RESET
#pragma config BOD33_HYST = 0x2U
#pragma config NVMCTRL_BOOTPROT = 0
#pragma config NVMCTRL_SEESBLK = 0x0U
#pragma config NVMCTRL_SEEPSZ = 0x0U
#pragma config RAMECC_ECCDIS = SET
#pragma config WDT_ENABLE = CLEAR
#pragma config WDT_ALWAYSON = CLEAR
#pragma config WDT_PER = CYC8192
#pragma config WDT_WINDOW = CYC8192
#pragma config WDT_EWOFFSET = CYC8192
#pragma config WDT_WEN = CLEAR
#pragma config NVMCTRL_REGION_LOCKS = 0xffffffffU

b)  Infineon AIROC setting

//Created by Mr. Abhishek Bansal
//Company: New Era Consultancy Services

#define SERCOM4_USART_INT_BAUD_VALUE            (63522UL)   /*baud = 115200 Hz */

const DeviceVectors exception_table=
{    
    .pvStack = &_stack,
    .pfnReset_Handler              = Reset_Handler,
    .pfnNonMaskableInt_Handler     = NonMaskableInt_Handler,
    .pfnHardFault_Handler          = HardFault_Handler,
    .pfnMemoryManagement_Handler   = MemoryManagement_Handler, 
    .pfnSVCall_Handler             = SVCall_Handler,
    .pfnDebugMonitor_Handler       = DebugMonitor_Handler,
    .pfnSysTick_Handler            = SysTick_Handler,  
    .pfnWDT_Handler                = WDT_Handler,
    .pfnRTC_Handler                = RTC_InterruptHandler,     
    .pfnEIC_EXTINT_14_Handler      = EIC_EXTINT_14_Handler,
    .pfnEIC_EXTINT_15_Handler      = EIC_EXTINT_15_Handler,
    .pfnDMAC_3_Handler             = DMAC_3_InterruptHandler, 
    .pfnSERCOM4_0_Handler          = SERCOM4_USART_InterruptHandler,
    .pfnSERCOM4_1_Handler          = SERCOM4_USART_InterruptHandler,
    .pfnSERCOM4_2_Handler          = SERCOM4_USART_InterruptHandler,
    .pfnSERCOM4_OTHER_Handler      = SERCOM4_USART_InterruptHandler, 
    .pfnAES_Handler                = AES_Handler,
    .pfnTRNG_Handler               = TRNG_InterruptHandler, 
    .pfnPUKCC_Handler              = PUKCC_Handler, 
};

typedef uint16_t USART_ERROR;
typedef enum
{    USART_DATA_5_BIT = SERCOM_USART_INT_CTRLB_CHSIZE_5_BIT,
    USART_DATA_6_BIT = SERCOM_USART_INT_CTRLB_CHSIZE_6_BIT,
    USART_DATA_7_BIT = SERCOM_USART_INT_CTRLB_CHSIZE_7_BIT,
    USART_DATA_8_BIT = SERCOM_USART_INT_CTRLB_CHSIZE_8_BIT,
    USART_DATA_9_BIT = SERCOM_USART_INT_CTRLB_CHSIZE_9_BIT,
     USART_DATA_INVALID = 0xFFFFFFFFU
} USART_DATA;

typedef enum
{    USART_PARITY_EVEN = SERCOM_USART_INT_CTRLB_PMODE_EVEN,
    USART_PARITY_ODD = SERCOM_USART_INT_CTRLB_PMODE_ODD,
    USART_PARITY_NONE = 0x2,
    USART_PARITY_INVALID = 0xFFFFFFFFU
} USART_PARITY;


typedef enum
{    USART_STOP_1_BIT = SERCOM_USART_INT_CTRLB_SBMODE_1_BIT,
    USART_STOP_2_BIT = SERCOM_USART_INT_CTRLB_SBMODE_2_BIT,
   USART_STOP_INVALID = 0xFFFFFFFFU
} USART_STOP;


SERCOM4_REGS->USART_INT.SERCOM_CTRLA = SERCOM_USART_INT_CTRLA_MODE_USART_INT_CLK | SERCOM_USART_INT_CTRLA_RXPO(0x0UL) | SERCOM_USART_INT_CTRLA_TXPO(0x0UL) | SERCOM_USART_INT_CTRLA_DORD_Msk | SERCOM_USART_INT_CTRLA_IBON_Msk | SERCOM_USART_INT_CTRLA_FORM(0x0UL) | SERCOM_USART_INT_CTRLA_SAMPR(0UL) ;
SERCOM4_REGS->USART_INT.SERCOM_BAUD = (uint16_t)SERCOM_USART_INT_BAUD_BAUD(SERCOM4_USART_INT_BAUD_VALUE);
 SERCOM4_REGS->USART_INT.SERCOM_CTRLB = SERCOM_USART_INT_CTRLB_CHSIZE_8_BIT | SERCOM_USART_INT_CTRLB_SBMODE_1_BIT | SERCOM_USART_INT_CTRLB_RXEN_Msk | SERCOM_USART_INT_CTRLB_TXEN_Msk;

c) External Interrupt Controller (EIC)  

//Created by Mr. Abhishek Bansal
//Company: New Era Consultancy Services


typedef void (*EIC_CALLBACK) (uintptr_t context);

typedef struct
{ EIC_CALLBACK    callback; 
    uintptr_t       context; 
    EIC_PIN         eicPinNo; 
} EIC_CALLBACK_OBJ;




 EIC_REGS->EIC_CTRLA |= (uint8_t)EIC_CTRLA_SWRST_Msk;

    while((EIC_REGS->EIC_SYNCBUSY & EIC_SYNCBUSY_SWRST_Msk) == EIC_SYNCBUSY_SWRST_Msk)
    {
        
    } 
    EIC_REGS->EIC_CONFIG[1] =  EIC_CONFIG_SENSE0_NONE  ;
    EIC_REGS->EIC_INTENSET = (1UL << (uint32_t)pin);
    EIC_REGS->EIC_INTENCLR = (1UL << (uint32_t)pin);
 
    EIC_REGS->EIC_INTENSET = 0x6e0U; 
 
    eicCallbackObject[14].eicPinNo = EIC_PIN_MAX; 
    EIC_REGS->EIC_CTRLA |= (uint8_t)EIC_CTRLA_ENABLE_Msk;

    while((EIC_REGS->EIC_SYNCBUSY & EIC_SYNCBUSY_ENABLE_Msk) == EIC_SYNCBUSY_ENABLE_Msk)
    {
        
    }
 

d) Direct Memory Access Controller (DMAC)

//Created by Mr. Abhishek Bansal
//Company: New Era Consultancy Services

 

#define  DMAC_CHANNEL_6   (6U) 
#define  DMAC_CHANNEL_7   (7U)
typedef uint32_t DMAC_CHANNEL;

typedef enum
{   DMAC_TRANSFER_EVENT_NONE = 0, 
    DMAC_TRANSFER_EVENT_COMPLETE = 1, 
    DMAC_TRANSFER_EVENT_ERROR = 2 
} DMAC_TRANSFER_EVENT;

typedef enum
{ 
    DMAC_CRC_TYPE_16 = 0x0, 
    DMAC_CRC_TYPE_32 = 0x1 
} DMAC_CRC_POLYNOMIAL_TYPE;

typedef enum
{ 
    DMAC_CRC_MODE_DEFAULT           = 0x0, 
    DMAC_CRC_MODE_RESERVED          = 0x1, 
    DMAC_CRC_MODE_MEMORY_MONITOR    = 0x2, 
    DMAC_CRC_MODE_MEMORY_GEN        = 0x3 
} DMAC_CRC_MODE;

typedef struct
{   DMAC_CRC_POLYNOMIAL_TYPE polynomial_type; 
    DMAC_CRC_MODE crc_mode; 
    uint32_t seed;
} DMAC_CRC_SETUP;


typedef struct
{
    bool                inUse;
    DMAC_CHANNEL_CALLBACK  callback;
    uintptr_t              context;
    bool                isBusy;
} DMAC_CH_OBJECT ;

 volatile DMAC_CH_OBJECT *dmacChObj = &dmacChannelObj[0];
 uint32_t channel = 0U;
 DMAC_REGS->DMAC_BASEADDR = (uint32_t) descriptor_section;
    DMAC_REGS->DMAC_WRBADDR  = (uint32_t) write_back_section;    
    
      dmacChannelObj[6].inUse = true;
  dmacChannelObj[7].inUse = true;
 uint8_t beat_size = 0U;
    bool returnStatus = false;
    bool isBusy = dmacChannelObj[channel].isBusy;
    const uint32_t* pu32srcAddr = (const uint32_t*)srcAddr;
    const uint32_t* pu32dstAddr = (const uint32_t*)destAddr;
  DMAC_REGS->CHANNEL[6].DMAC_CHCTRLA = DMAC_CHCTRLA_TRIGACT(2U) | DMAC_CHCTRLA_TRIGSRC(12U) | DMAC_CHCTRLA_THRESHOLD(0U) | DMAC_CHCTRLA_BURSTLEN(0U) ;
   DMAC_REGS->CHANNEL[7].DMAC_CHCTRLA = DMAC_CHCTRLA_TRIGACT(2U) | DMAC_CHCTRLA_TRIGSRC(13U) | DMAC_CHCTRLA_THRESHOLD(0U) | DMAC_CHCTRLA_BURSTLEN(0U) ;
   descriptor_section[6].DMAC_BTCTRL = DMAC_BTCTRL_BLOCKACT_INT | DMAC_BTCTRL_BEATSIZE_BYTE | DMAC_BTCTRL_VALID_Msk | DMAC_BTCTRL_DSTINC_Msk ;
   descriptor_section[7].DMAC_BTCTRL = DMAC_BTCTRL_BLOCKACT_INT | DMAC_BTCTRL_BEATSIZE_BYTE | DMAC_BTCTRL_VALID_Msk | DMAC_BTCTRL_SRCINC_Msk ;
   DMAC_REGS->CHANNEL[7].DMAC_CHPRILVL = DMAC_CHPRILVL_PRILVL(0U);
   DMAC_REGS->CHANNEL[6].DMAC_CHPRILVL = DMAC_CHPRILVL_PRILVL(0U);
  DMAC_REGS->CHANNEL[6].DMAC_CHINTENSET = (DMAC_CHINTENSET_TERR_Msk | DMAC_CHINTENSET_TCMPL_Msk); 
    DMAC_REGS->CHANNEL[7].DMAC_CHINTENSET = (DMAC_CHINTENSET_TERR_Msk | DMAC_CHINTENSET_TCMPL_Msk); 
    DMAC_REGS->DMAC_CTRL = DMAC_CTRL_DMAENABLE_Msk | DMAC_CTRL_LVLEN0_Msk | DMAC_CTRL_LVLEN1_Msk | DMAC_CTRL_LVLEN2_Msk | DMAC_CTRL_LVLEN3_Msk;
  if ((length & 0x3U) == 0U)
    {   beatSize = (uint8_t)DMAC_CRC_BEAT_SIZE_WORD;
        length = length >> 0x2U;    }
    else if ((length & 0x1U) == 0U)
    {        beatSize = (uint8_t)DMAC_CRC_BEAT_SIZE_HWORD;
        length = length >> 0x1U;    }

e) Data Watchpoint and Trace (DWT)

//Created by Mr. Abhishek Bansal
//Company: New Era Consultancy Services


CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
  DWT->CYCCNT = 0U;
    DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;

f) System timer (SysTick)

//Created by Mr. Abhishek Bansal
//Company: New Era Consultancy Services

#define SYSTICK_FREQ   120000000U

#define SYSTICK_INTERRUPT_PERIOD_IN_US  (1000U)

void SYSTICK_EventHandler(uintptr_t context)

typedef struct
{ 
    uint32_t start; 
    uint32_t count; 
}SYSTICK_TIMEOUT;

typedef struct
{
   SYSTICK_CALLBACK          callback;
   uintptr_t                 context;
   volatile uint32_t         tickCounter;
} SYSTICK_OBJECT ;

g) True Random Number Generator (TRNG)

//Created by Mr. Abhishek Bansal
//Company: New Era Consultancy Services

typedef struct
{
	TRNG_CALLBACK          callback; 
	uintptr_t               context;
	uint32_t				data;
} TRNG_OBJECT ;

TRNG_REGS->TRNG_EVCTRL =  TRNG_EVCTRL_DATARDYEO_Msk;
TRNG_REGS->TRNG_CTRLA =  TRNG_CTRLA_RUNSTDBY_Msk;
TRNG_REGS->TRNG_CTRLA |= TRNG_CTRLA_ENABLE_Msk;
TRNG_REGS->TRNG_INTENSET = TRNG_INTENSET_DATARDY_Msk;
TRNG_REGS->TRNG_CTRLA = ((TRNG_REGS->TRNG_CTRLA) & (uint8_t)(~TRNG_CTRLA_ENABLE_Msk));
TRNG_REGS->TRNG_INTENCLR = TRNG_INTENCLR_DATARDY_Msk;
 trng.data = TRNG_REGS->TRNG_DATA;
 
  trng.callback = callback;
   trng.context = context;
   if(trng.callback != NULL)
   {
       uint32_t data = trng.data;
       uintptr_t context = trng.context;
       trng.callback(data, context);
   }   
   

h) Reset Controller (RSTC)

//Created by Mr. Abhishek Bansal
//Company: New Era Consultancy Services

typedef uint32_t RSTC_RESET_CAUSE;

typedef uint32_t RSTC_BKUPEXIT_CAUSE;


9.  Comparable Products

There are many WiFi, RF,  Wireless Development Kits but the key feature of this Infineon AIROC IFW956810 is AWS IoT ExpressLink. Following are the nine other competitative IOT modules, which are AWS IoT ExpressLink compliant :

1) USB-NORA-W256AWS

  • USB-NORA-W256AWS  is a RF Module like Infineon AIROC IFW56810 CCM Module., 
  • USB-NORA-W256AWS is 32-bit, multi-core,Tensilica, FreeRTOS based whereas the hardware architecture of Infineon AIROC IFW56810 CCM Module is built using 32-bit PSoCTm64 line (earlier Cypress Semiconductor) Secure MCU, Cortex M4/M0+,Arm® PSA Level 2 Certifified supporting Amazon FreeRTOS ecosystem.
  • USB-NORA-W256AWS supports hardware encryption, SSL/TLS, Secure Boot, Secure Storage, True Random Number Generator(TRNG) 

2) NORA-W256AWS

  • NORA-W256AWS  is a RF Module like Infineon AIROC IFW56810 CCM Module.
  • NORA-W256AWS is 32-bit, multi-core,Tensilica, FreeRTOS based whereas the hardware architecture of Infineon AIROC IFW56810 CCM Module is built using 32-bit PSoCTm64 line (earlier Cypress Semiconductor) Secure MCU, Cortex M4/M0+,Arm® PSA Level 2 Certifified supporting Amazon FreeRTOS ecosystem.
  • NORA-W256AWS supports hardware encryption, SSL/TLS, Secure Boot, Secure Storage,True Random Number Generator(TRNG) 

3) NORA-W251AWS

  •  NORA-W251AWS is a RF Module like Infineon AIROC IFW56810 CCM Module.
  • NORA-W251AWS is 32-bit,Tensilica, FreeRTOS based whereas the hardware architecture of Infineon AIROC IFW56810 CCM Module is built using 32-bit PSoCTm64 line (earlier Cypress Semiconductor) Secure MCU, Cortex M4/M0+,Arm® PSA Level 2 Certifified supporting Amazon FreeRTOS ecosystem.
  • NORA-W251AWS supports hardware encryption, SSL/TLS, Secure Boot, Secure Storage, True Random Number Generator(TRNG) 

4) AWS IoT ExpressLink SARA-R5 Starter Kit V2

  • AWS IoT ExpressLink SARA-R5 Starter Kit V2  is a Development Kit, unlike Infineon AIROC IFW56810 CCM Module which is a RF Module.
  • AWS IoT ExpressLink SARA-R5 Starter Kit V2 is 32-bit,Tensilica, FreeRTOS based whereas the hardware architecture of Infineon AIROC IFW56810 CCM Module is built using 32-bit PSoCTm64 line (earlier Cypress Semiconductor) Secure MCU, Cortex M4/M0+,Arm® PSA Level 2 Certifified supporting Amazon FreeRTOS ecosystem.
  • AWS IoT ExpressLink SARA-R5 Starter Kit V2 supports PKCS#11, SSL/TLS, Secure Boot, Secure Element (SE)

5) Bravo LE910C1-WWXD with AWS IoT ExpressLink

  • Bravo LE910C1-WWXD with AWS IoT ExpressLink is a Development Kit, unlike Infineon AIROC IFW56810 CCM Module which is a RF Module.
  • Bravo LE910C1-WWXD with AWS IoT ExpressLink is 32-bit, ARM, multi-core,ThreadX based whereas the hardware architecture of Infineon AIROC IFW56810 CCM Module is built using 32-bit PSoCTm64 line (earlier Cypress Semiconductor) Secure MCU, Cortex M4/M0+,Arm® PSA Level 2 Certifified supporting Amazon FreeRTOS ecosystem.
  • Bravo LE910C1-WWXD with AWS IoT ExpressLink supports ISO/IEC 27001, SSL/TLS, Secure Boot, Secure Element (SE), Secure Storage, Trusted Execution Environment (TEE), Tamper-Proof, VPN 

6) ESP32-C3 AWS IoT ExpressLink Module

  • ESP32-C3 AWS IoT ExpressLink Module is a RF Module like Infineon AIROC IFW56810 CCM Module.
  • ESP32-C3 AWS IoT ExpressLink Module is based on RISC-V, FreeRTOS whereas the hardware architecture of Infineon AIROC IFW56810 CCM Module is built using 32-bit PSoCTm64 line (earlier Cypress Semiconductor) Secure MCU, Cortex M4/M0+,Arm® PSA Level 2 Certifified supporting Amazon FreeRTOS ecosystem.
  • ESP32-C3 AWS IoT ExpressLink Module supports hardware encryption, SSL/TLS, Secure Boot, Secure Storage, True Random Number Generator(TRNG) 

7) Telit LE910C1-WWXD AWS IoT ExpressLink

  • Telit LE910C1-WWXD AWS IoT ExpressLink is a Cellular Modem, unlike Infineon AIROC IFW56810 CCM Module which is a RF Module.
  • Telit LE910C1-WWXD AWS IoT ExpressLink is 32-bit , ARM, multi-core,ThreadX based whereas the hardware architecture of Infineon AIROC IFW56810 CCM Module is built using 32-bit PSoCTm64 line (earlier Cypress Semiconductor) Secure MCU, Cortex M4/M0+,Arm® PSA Level 2 Certifified supporting Amazon FreeRTOS ecosystem.
  • Telit LE910C1-WWXD AWS IoT ExpressLink supports ISO/IEC 27001, SSL/TLS, Secure Boot, Secure Element (SE), Secure Storage, Trusted Execution Environment (TEE) 

8) Realtek Ameba Z2 AWS IoT ExpressLink

  • Realtek Ameba Z2 AWS IoT ExpressLink is a Development Kit, unlike Infineon AIROC IFW56810 CCM Module which is a RF Module.
  • Realtek Ameba Z2 AWS IoT ExpressLink is ARM, FreeRTOS based whereas the hardware architecture of Infineon AIROC IFW56810 CCM Module is built using 32-bit PSoCTm64 line (earlier Cypress Semiconductor) Secure MCU, Cortex M4/M0+,Arm® PSA Level 2 Certifified supporting Amazon FreeRTOS ecosystem.
  • Realtek Ameba Z2 AWS IoT ExpressLink supports IPsec, SSL/TLS, Secure Boot, Secure Storage 

9)  SARA-R5 AWS IoT ExpressLink Module

  • SARA-R5 AWS IoT ExpressLink Module is a Cellular Modem, unlike Infineon AIROC IFW56810 CCM Module which is a RF Module.
  • SARA-R5 AWS IoT ExpressLink Module is 32-bit whereas the hardware architecture of Infineon AIROC IFW56810 CCM Module is built using 32-bit PSoCTm64 line (earlier Cypress Semiconductor) Secure MCU, Cortex M4/M0+,Arm® PSA Level 2 Certifified supporting Amazon FreeRTOS ecosystem.
  • SARA-R5 AWS IoT ExpressLink Module supports hardware encryption, SSL/TLS, Secure Boot, Secure Element (SE)

It's clear Infineon AIROC Cloud Connectivity Manager (CCM) IFW956810 offers the best at nominal costs, and is a winner among it's competitors.


10. Conclusion

The Infineon AIROCTmCloud Connectivity Manager (CCM) IFW956810 is a RF module with an integrated printed antenna built on 32-bit PSOC 64 line asymmetric dual-core Arm® Cortex®-M4 (150 MHz) and Arm Cortex-M0+ (100 MHz) which provides simple, secure, scalable, easy-to-use, cost-effective, plug-and-play solution, secure “device-to-cloud” solution for connecting products to AWS IoT cloud services, incorporating secure hardware, secure provisioning, and secure device management.

It is AWS IoT ExpressLink compliant and provides six benefits which are specially labelled as 'trusted' - trusted source, trusted configuration, trusted connection, trusted software, trusted operation, and trusted analytics.

There are NO Cons except one has to be cautious to be in free tier limit to avoid billing, and  I have explained various positive points.

As the Infineon has some online manual for AT commands and even the AWS has AT commands, which give wrong perception that one can send a single message only by typing each time but this dongle by Infineon is a must for those who wish to connect to AWS Cloud, and one even do not need to use USB cable as shown in interfacing or connecting with FPGA, AMD and 32-bit ARM Microchip SAM E51. 

The evaluation board is highly ESD (Electrostatic Sensitive Devices) and comes in double protective packaging which includes cover of the plastic fim, box opening is labeled with warning ESD,  double protective pads.

This sticker I have removed from the box and used as Ist picture to emphasize, the evaluation kit is ESD sensitive but you can see, when its connected or tested with FPGA or microcontroller, this ESD sensitivity gets ignored and Infineon AIROC still giving the same best services.

The instructions are given for Windows but I have performed review on Ubuntu, which indicates, it can be used with any operating system, and with no doubt MAC users wont get disappointed. 

Thus, the Infineon AIROC has shown its compatability with Windows, Ubuntu, FPGA, Microcontroller, Cryptography and Android applet, however the complete success is not achieved because it needs more time to correct bugs, but with no doubt, it can be connected and is a must if one wants to connect to AWS IoT Cloud. 

With cryptographic features on board, one can adhere to privacy(using encrypted transactions over cloud) and thus,Infineon AIROC CCM shows promising use in remote healthcare, remote critical ICU or healthcare , remote surgical operations or remote business monitoring, over AWS IoT Cloud.

If got chance, this product would be my choice for client's connectivity to AWS IoT Cloud.


Anonymous