Qualcomm QCA4020 Now Supported by Moddable SDK

The Qualcomm QCA4020 is a low-power, ARM-based dual-core SoC with integrated Wi-Fi and Bluetooth, for communication with IoT devices and cloud services. The Moddable SDK provides modern tools and technologies to developers for building applications on resource constrained microcontrollers. Today we are pleased to announce Moddable SDK support for the Qualcomm QCA4020, bringing modern, efficient, and secure JavaScript application development and deployment to the QCA4020 Customer Development Board and commercial devices powered by QCA4020 processors.

The Moddable SDK on the QCA4020 platform includes a complete port of our XS JavaScript engine, the only JavaScript engine for microcontrollers that supports over 99% of the ES2019 standard. The Moddable SDK port to QCA4020 allows developers to build full-featured applications combining JavaScript and native C/C++ that run efficiently on QCA4020 platforms and leverage the built-in hardware features. This blog post summarizes the capabilities included in the QCA4020 port and build host.

QCA4020 Application Development with the Moddable SDK

The Moddable SDK includes a large collection of modern class-based JavaScript modules for use by application developers. A broad range of features are supported through efficient and concise APIs, allowing developers to focus primarily on product development, without being bogged down by the complexity of understanding network protocol details, graphics rendering techniques, or hardware interfaces. The APIs are portable and a desktop simulator with a variety of screen sizes is included to further streamline development and debugging. The following features are supported by the Moddable SDK and runtime on the QCA4020 platform:

Comprehensive networking protocol support

  • TCP/IP and UDP base socket classes provide a foundation for protocols that run over Wi-Fi networks.
  • HTTP client class for communication with web services that use REST APIs and HTTP server class, allowing embedded devices to host a web interface, e.g. a captive portal.
  • MQTT and WebSocket client classes for low-overhead, bi-directional communication with IoT devices and services.
  • mDNS class for communication between IoT devices on the same local network.
  • SNTP and Ping support.
  • Secure network communication using our JavaScript TLS 1.2 stack, making products less vulnerable to native code errors that lead to security holes. Only required certificates are stored on the device, further reducing security risks.
  • BLE client and server classes supporting both central and peripheral roles. Developing a BLE sensor with the Moddable SDK is simplified through the use of a JSON GATT database description.

Wi-Fi support

  • Asynchronous access point connections, including a Wi-Fi monitor to track connection progress. Open and WPA2/PSK authentication modes are supported. The BSSID can optionally be specified to accelerate connections to device targets that support it.
  • Wi-Fi access point scan, configurable to scan all channels or a specific channel. Scan results are delivered asynchronously and include access point SSID, BSSID, RSSI, channel, and authentication mode.
  • Soft-AP mode support, allowing Wi-Fi stations to connect to the QCA4020 device. Configuration options include SSID, password, channel, beacon interval and hidden.
  • Active network connection status information, including IP address, MAC address, SSID, BSSID, and RSSI.

Hardware support

  • Digital I/O, including a pin monitor API, to simplify detecting input pin states and configurable to trigger on rising and/or falling events.
  • Serial I/O access to both the high-speed and debugging ports.
  • Integrated SPI interface for color displays, including support for the popular ILI9341/MIPI driver.

Application support

  • Both native code and JavaScript byte code is executed from Flash memory (XIP), freeing RAM for application use.
  • Persistent preference storage with built-in integrity checks, supporting fallback to a prior version on data integrity check failure.
  • Read/write access to files on Flash file system.
  • Piu JavaScript application framework for building interactive color touch screen user interfaces with animation. Integrated localization tools and APIs for multi-language products ease the development effort and reduce runtime overhead.
  • JavaScript source-level debugging on Linux hosts over serial using the xsbug debugger.
  • Linux build host that integrates Moddable SDK JavaScript application and module build with the Qualcomm supplied native code Quartz application shell. Products can be developed completely in JavaScript, or may invoke C/C++ for performance and to access native functions.

Getting started

A Qualcomm Developer Network account is required in order to download the required Qualcomm QAPI v3.x SDK. For further details, please refer to our QCA4020 developer guide on GitHub.

We are excited to deliver support for the Qualcomm QCA4020 platform with the Moddable SDK and runtime. Building products in JavaScript that leverage our robust SDK features substantially reduces product development time and cost. We look forward to seeing products built on QCA4020 platforms with the Moddable SDK. Let us know how we can help.


The Moddable SDK with Qualcomm QCA4020 support is available immediately as part of the Moddable SDK repository on GitHub. The Moddable SDK is available for use with either a FOSS (Free and Open Source Software) license or a commercial software license. Additional information on both licenses is provided on the Moddable website.