WiSeConnect™ SDK v3.x Examples#

This section describes the example applications available with the WiSeConnect™ SDK v3.x.

The Example Folder Structure section describes the folder structure of a Simplicity Studio example.

Subsequent sections provide information about each example available with WiSeConnect SDK v3.x.

In the examples tables below:

  • The Name column indicates the name by which the example can be found in Simplicity Studio, not including suffixes such as "(SoC)".

    Example Name in StudioExample Name in Studio

    Note: The above image is for illustration only and example names may not match with the latest version of the WiSeConnect 3 extension.

  • The Featured column indicates whether the example is a fully-featured application.

  • The SoC column indicates whether the example is available in System-on-chip (SoC) mode, where the application and connectivity stack run on the SiWx91x™ chipset. Simplicity Studio displays such examples in the EXAMPLE PROJECTS & DEMOS tab when the SiWx917 is connected to the computer running Studio.

  • The NCP column indicates whether the example is available in Network Co-processor (NCP) mode with an external EFR32™ microcontroller unit (MCU) host, where the application runs on the EFR32 host, and connectivity stack runs on the SiWx91x chipset. Simplicity Studio displays such examples in the EXAMPLE PROJECTS & DEMOS tab when an EFR32 host is connected to the computer running Studio.

  • The PSRAM column indicates whether the example executes from pseudo-static random-access memory (PSRAM) in SoC mode on an SiWx917 chip variant that includes PSRAM. Simplicity Studio displays such examples in the EXAMPLE PROJECTS & DEMOS tab when the BRD4342A (SiWx917 with PSRAM) radio board is connected to the computer running Studio.

  • The Lite FW column indicates whether the example is supported with the Lite variant of the connectivity firmware. Simplicity Studio displays such examples in the EXAMPLE PROJECTS & DEMOS tab when the Lite part SiWG917M110LGTBA is connected to the computer running Studio.

    NOTE: Lite firmware image is not supported for NCP mode.

To find the example you need, browse the sections below. The same example may be mentioned in more than one section when it belongs to multiple categories.

The following examples demonstrate specific actions as described in the description column and are organized in alphabetical order by example name.

Example Folder Structure#

Folder / File

Description

autogen

Files auto-generated by Simplicity Studio such as configuration header files, linker files, and others.

config

Header files with platform-specific configuration values.

simplicity_sdk, version: 2024.6.0

The sub-folders of this folder contain Simplicity SDK (formerly Gecko SDK) platform-specific layer implementations and third-party libraries.

|-- platform

Platform layer implementations such as the hardware abstraction layer (HAL), Common Microcontroller Software Interface Standard (CMSIS) for real-time operating systems (RTOS), and common libraries.

|-- util

Third party libraries such as FreeRTOS, mbedTLS, and others.

resources

Resources used by the example such as images for the README file.

wiseconnect3_sdk_3.1.1

The sub-folders of this folder contain WiSeConnect SDK components and resources.

|-- components

WiSeConnect SDK components such as Wi-Fi, BLE, Si91x MCU Subsystem, and others.

|-- resources

WiSeConnect SDK resources such as certificates.

app.c

Source file with the code for the main application thread. Implement your application code here.

app.h

Header file for the main application thread.

main.c

Source file with the entry point function (main()) for application execution with start-up code such as wireless and platform initializations, and creation of the main application thread.

readme.md

README file for the example.

Wireless Examples#

The following wireless examples are available:

Wi-Fi Examples#

Example

Featured

SoC

NCP

PSRAM

Lite FW

Description

Link to README page

Wi-Fi - Access Point

X

X

Implementing a Wi-Fi Access Point (AP)

Go to README

Wi-Fi - AWS Device Shadow

X

X

X

X

X

Establishing connection to the Amazon Web Services (AWS) Internet-of-Things (IoT) Core

Go to README

Wi-Fi - Calibration App

X

X

X

Calibrating carrier frequency offset and transmission (TX) gain offset and writing them to the eFuse

Go to README

Wi-Fi - Concurrent Mode

X

X

Implementing a Wi-Fi device both as an AP and station (STA)

Go to README

Wi-Fi - Concurrent Mode Dual IP

X

X

Implementing a Wi-Fi device both as an AP and STA with both IPv4 and IPv6 interfaces

Go to README

Wi-Fi - Enterprise Client Mode

X

X

Implementing a Wi-Fi enterprise client and connecting to an enterprise AP

Go to README

Wi-Fi - NWP Or Combined (NWP & M4) Firmware Update via TCP

X

X

X

X

X

Downloading and updating firmware as a TCP client

Go to README

Wi-Fi - HTTP OTAF Update

X

X

X

Downloading and updating firmware as an HTTP client

Go to README

Wi-Fi - HTTP OTAF TWT Update

X

X

Downloading and updating firmware as an HTTP client using TWT

Go to README

Wi-Fi - LwIP TCP Client

X

X

X

Using the hosted mode of the WiSeConnect SDK v3.x by utilizing the Lightweight Internet Protocol (LwIP) stack

Go to README

Wi-Fi - M4 Firmware Update via TCP

X

X

Downloading and updating the application processor's firmware

Go to README

Wi-Fi - Powersave Deep Sleep

X

X

X

Implementing the power-save deep sleep mode of the SiWx91x™ chipset

Go to README

Wi-Fi - Powersave Standby Associated

X

X

X

X

X

Running an application in ASSOCIATED_POWER_SAVE mode

Go to README

Wi-Fi - Powersave Standby Associated TCP Client

X

X

X

X

X

Running an application in ASSOCIATED_POWER_SAVE mode and send data to TCP server

Go to README

Wi-Fi - Select App

X

X

X

Opening a network socket and monitoring it for incoming data

Go to README

Wi-Fi - SiWx917 Dev Kit (BRD2605A)

X

Demonstrates the features of the SiWx917 Dev Kit Board. This can be tested with the Simplicity Connect mobile app.

Go to README

Wi-Fi - TCP Tx on Periodic Wakeup

X

Transmitting data from a sleepy device every time it wakes up

Go to README

Wi-Fi - Three TLS Concurrent Client Sockets

X

X

Maintaining three concurrent SSL connections using three sets of SSL certificates

Go to README

Wi-Fi - Throughput

X

X

X

X

X

Measuring the WLAN throughput

Go to README

Wi-Fi - Throughput IPv6

X

X

X

Measuring the WLAN throughout of an IPv6 client

Go to README

Wi-Fi - TLS Client

X

X

X

Implementing a Transport Layer Security (TLS) client and exchanging encrypted data with a server

Go to README

Wi-Fi - TWT TCP Client

X

X

X

Implementing a TCP client using the Wi-Fi Target Wake Time (TWT) power-save scheme

Go to README

Wi-Fi - TWT Use Case Demo App

X

X

X

Implementing a Wi-Fi 6 client using TWT power-save

Go to README

Wi-Fi - TWT Use Case Remote App

X

X

X

TCP door lock or UDP camera communication between a client and server using TWT power-save

Go to README

Wi-Fi - User Gain Table

X

X

X

Transmitting data at varying data rates, power levels, and lengths according to a gain table

Go to README

Wi-Fi - Wlan RF Test

X

X

X

Transmitting Wi-Fi packets at different data rates and power levels for regulatory certification testing

Go to README

Wi-Fi - Multithreading Application

X

X

Multi-threaded application

Go to README

Wi-Fi - Data Transfer Application

X

X

In Client interface, recieve the data from remote PC1 to SiWx91x Station. This recieved data is stored in a buffer. Later in AP interface, the stored buffer is sent by SiWx91x AP to remote PC2.

Go to README

Wi-Fi - AP Throughput

X

X

Starts a Wi-Fi AP and transmits/receives data to measure Wi-Fi UDP/TCP throughput performance using a remote iPerf client/server

Go to README

Wi-Fi - Firmware Flashing

X

Firmware flashing of Si91x device using host uart xmodem bootloader

Go to README

Wi-Fi - Concurrent HTTP Server Provisioning

X

X

Start a Wi-Fi Client and Wi-Fi Access Point in IPv4 and IPv6 simultaneously through provisioning from HTTP Server

Go to README

Wi-Fi + BLE Examples#

Example

Featured

SoC

NCP

PSRAM

Lite FW

Description

Link to README page

CLI Demo

X

X

X

Using console commands to demonstrate various API functions in the SDK such as scanning for Access Points (APs), bringing up a network interface, and others

Go to README

Out of Box Demo

X

X

Commissioning a Wi-Fi device over BLE and exchanging data with it

Go to README

Wi-Fi Coex - Wi-Fi Client BLE Provisioning

X

X

X

Advertising a device over BLE, receiving Wi-Fi credentials, and connecting to a Wi-Fi AP

Go to README

Wi-Fi Coex - Wi-Fi Client BLE Provisioning with AWS

X

X

X

Receiving Wi-Fi credentials over BLE, connecting to Wi-Fi, and publishing data to an AWS MQTT broker

Go to README

Wi-Fi Coex - Wi-Fi Throughput BLE Dual Role

X

X

X

Measuring the WLAN and/or BLE throughput(s) while they are simultaneously connected

Go to README

Wi-Fi Coex - Wi-Fi Client BLE Throughput App

X

X

X

This application demonstrates throughput measurement of Wi-Fi while BLE is in connection

Go to README

BLE Examples#

Example

Featured

SoC

NCP

PSRAM

Lite FW

Description

Link to README page

BLE - Acceptlist

X

X

X

X

Maintaining an allow list of devices that are allowed to connect to a BLE device

Go to README

BLE - AE Central

X

X

X

X

Running a BLE central in Extended Advertising Central mode

Go to README

BLE - AE Peripheral

X

X

X

X

Running a BLE peripheral in Extended Advertising (AE) Peripheral mode

Go to README

BLE - Central

X

X

X

X

Running a BLE central and connecting to a BLE peripheral

Go to README

BLE - Datalength

X

X

X

X

Using BLE data length extension to increase packet length

Go to README

BLE - Gatt Long Read

X

X

X

X

BLE Generic Attribute Profile (GATT) client performing a long read from a BLE GATT server

Go to README

BLE - Heart Rate

X

X

X

X

Implementing the Heart Rate service both in the BLE central and peripheral roles

Go to README

BLE - HID On GATT

X

X

X

X

Implementing the Human Interface Device (HID) service both in the BLE central and peripheral roles

Go to README

BLE - iBeacon

X

X

X

X

Implementing an iBeacon-compatible BLE peripheral

Go to README

BLE - Long Range

X

X

X

X

Running a BLE central and updating physical layer (PHY) rates

Go to README

BLE - Multiconnection GATT Test

X

X

X

X

Multiple BLE connections both as a BLE central and peripheral

Go to README

BLE - PER

X

X

X

X

X

Getting BLE packet error rate (PER) statistics for transmitting and receiving packets

Go to README

BLE - Power Save

X

X

X

X

BLE power-save configuration both in Advertising and Connected modes

Go to README

BLE - Privacy

X

X

X

X

BLE privacy support implemented by changing the device address frequently

Go to README

BLE - Secure Connection

X

X

X

X

BLE peripheral implementing Security Manager Protocol (SMP) pairing and encryption

Go to README

BLE - Testmodes

X

X

X

X

Testing the BLE Generic Access Profile (GAP) peripheral role

Go to README

BLE - Throughput

X

X

X

X

Measuring the BLE throughput

Go to README

BLE - Unified AE Coex App

X

X

X

Implementing BLE AE mode with a central and peripheral

Go to README

BLE - ble_update_gain_table

X

X

X

Bluetooth Low Energy Update Gain table

Go to README

BLE - BT_STACK_BYPASS

X

Demonstrates how to configure the Raw HCI commands through uart

Go to README

SiWx91x Device Management Examples#

Firmware Update Examples#

Example

Featured

SoC

NCP

PSRAM

Lite FW

Description

Link to README page

Wi-Fi - NWP Or Combined (NWP & M4) Firmware Update via TCP

X

X

X

X

X

Downloading and updating firmware as a TCP client

Go to README

Wi-Fi - HTTP OTAF Update

X

X

Downloading and updating firmware as an HTTP client

Go to README

Wi-Fi - HTTP OTAF TWT Update

X

X

Downloading and updating firmware as an HTTP client using TWT

Go to README

Wi-Fi - M4 Firmware Update via TCP

X

X

Downloading and updating the application processor's firmware

Go to README

SiWx91x MCU Examples#

The following SiWx91x microcontroller unit host (MCU) examples are available:

Peripheral Examples#

Example

Featured

SoC

NCP

PSRAM

Lite FW

Description

Link to README page

SL Si91x - Empty C Project

X

X

X

Creating an empty C project to which addtional SiWx91x components and functionality may be added

Go to README

SL Si91x - Empty CPP Project

X

X

X

Creating an empty C++ project to which addtional SiWx91x components and functionality may be added

Go to README

SL Si91x - Hello World

X

X

Creating a hello world application to which addtional SiWx91x components and functionality may be added

Go to README

SL Si91x - ADC FIFO Mode

X

X

Converting analog signals using the analog-to-digital converter in FIFO mode (ADC)

Go to README

SL Si91x - ADC Multichannel

X

X

Converting analog signals over multiple channels using the ADC

Go to README

SL Si91x - ADC Static Mode

X

X

Converting analog signals using the analog-to-digital converter in static mode (ADC)

Go to README

SL Si91x - Analog Comparator

X

X

Using the analog comparator to compare two voltages

Go to README

SL Si91x - BJT Temperature Sensor

X

X

Measuring temperature with the bipolar junction transistor (BJT) based temperature sensor

Go to README

Si91x - SL_CALENDAR

X

X

Configuring the clock and implementing triggers, alarms, and time conversion

Go to README

SL Si91x - Combo Application

X

X

Implementing RTOS semaphores and event flags with multiple peripherals

Go to README

SL Si91x - Config Timer

X

X

Configuring and using timers

Go to README

SL Si91x - CRC

X

Demonstrating CRC Generation on DMA transferred data

Go to README

SL Si91x - DAC

X

Converting digital data using the digital-to-analog converter (DAC)

Go to README

SL Si91x - DMA

X

X

Data transfer using Direct Memory Access (DMA)

Go to README

SL Si91x - GPIO

X

X

Using the general purpose input-outputs (GPIOs) in the High-Power (HP), Ultra-Low-Power (ULP), and UULP domains

Go to README

SL Si91x - GPIO Detailed Example

X

X

Toggling the HP instance GPIO at intervals of 1 second

Go to README

SL Si91x - GPIO Example

X

X

Using the HP pin interrupt and toggling of HP GPIO pin 6

Go to README

SL Si91x - GPIO Group Example

X

X

Using the HP, ULP group interrupt

Go to README

SL Si91x - GPIO ULP Example

X

X

Using the ULP instance GPIO

Go to README

SL Si91x - GPIO UULP Example

X

X

Using the UULP instance GPIO

Go to README

SL Si91x - EFUSE

X

X

Programming the eFuse and reading data from the eFuse

Go to README

SL Si91x - GSPI

X

X

Generic Serial Peripheral Interface (GSPI) communication

Go to README

SL Si91x - I2C Driver Follower

X

X

Data transfer from an Inter-Integrated Circuit (I2C) leader to follower and subsequently follower to leader

Go to README

SL Si91x - I2C Driver Leader

X

X

Low level driver for an I2C leader transferring data to a follower

Go to README

SL Si91x - I2C Follower

X

Running an I2C follower and exchanging data with a leader

Go to README

SL Si91x - I2C Leader

X

Running an I2C leader and exchanging data with a follower

Go to README

SL Si91x - I2S Loopback

X

X

Performing an Inter-Integrated Circuit Sound (I2S) transfer using the loopback mechanism

Go to README

SL Si91x - I2S Primary

X

X

Performing I2S primary device transfer

Go to README

SL Si91x - I2S Secondary

X

X

Performing I2S secondary device transfer

Go to README

SL Si91x - PWM

X

X

Using pulse width modulation (PWM) to generate a periodic pulse waveform

Go to README

SL Si91x - RO Sensor

X

X

Measuring temperature with the Ruthenium Oxide (RO) temperature sensor

Go to README

Si91x - SL_RTOS_MSG_QUEUE

X

X

Using an RTOS message queue

Go to README

Si91x - SL_RTOS_MUTEX

X

Using an RTOS mutex for task synchronization

Go to README

SL Si91x - SDIO Secondary

X

X

Implementing a Secure Digital Input Output (SDIO) secondary and exchanging data with an SDIO primary

Go to README

SL Si91x - SIO

X

X

Serial Input-Output (SIO) over SPI and Universal Asynchronous Receiver-Transmitter (UART) interfaces

Go to README

SL Si91x - SSI Master

X

X

Running a Synchronous Serial Interface (SSI) main and exchanging data with a secondary

Go to README

SL Si91x - SSI Slave

X

X

Running an SSI secondary and exchanging data with a main

Go to README

SL Si91x - SYSRTC

X

X

Using the system real-time clock (SYSRTC) on the Si91x device to toggle the LED at one-second intervals

Go to README

SL Si91x - UART

X

X

Exchanging data over UART

Go to README

SL Si91x - ULP ADC

X

X

Using ADC in ULP mode

Go to README

SL Si91x - ULP ADC Multi-channel

X

X

Using ADC multi-channel in ULP mode

Go to README

SL Si91x - ULP Calendar

X

X

Using the clock in ULP mode

Go to README

SL Si91x - ULP DAC

X

X

Using DAC in ULP mode

Go to README

SL Si91x - ULP DMA

X

X

Using DMA in ULP mode

Go to README

SL Si91x - ULP I2C Driver Leader

X

X

Using I2C driver as leader in ULP mode

Go to README

SL Si91x - ULP I2C Leader

X

Using I2C as leader in ULP mode

Go to README

SL Si91x - ULP I2S

X

X

Using the clock in ULP mode

Go to README

SL Si91x - ULP Timer

X

X

Using timers in ULP mode

Go to README

SL Si91x - ULP UART

X

X

Using UART in ULP mode

Go to README

SL Si91x - USART Asynchronous

X

X

Exchanging data over USART in asynchronous mode

Go to README

SL Si91x - USART Synchronous Master

X

X

Exchanging data over USART in synchronous mode as a master

Go to README

SL Si91x - USART Synchronous Slave

X

X

Exchanging data over USART in asynchronous mode as a slave

Go to README

SL Si91x - Watchdog Timer

X

X

Implementing a watchdog timer which resets the system on an exception condition

Go to README

SL Si91x - PSRAM Blink

X

X

Demonstrates how to to use PSRAM with Blink example

Go to README

SL Si91x - PSRAM Driver Example

X

X

Demonstrates how to to use PSRAM Driver

Go to README

Driver Examples#

Example

Featured

SoC

NCP

PSRAM

Lite FW

Description

Link to README page

SL Si91x - Blinky

X

X

Toggling the LED

Go to README

SL Si91x - Button Baremetal

X

X

Handling button presses by toggling LEDs

Go to README

SL Si91x - MEMLCD Baremetal

X

Displaying data on the Liquid Crystal Display (LCD) peripheral

Go to README

SL Si91x - Joystick

X

X

Using the joystick on the SiWx91x and reporting its position

Go to README

SL Si91x - SI70xx

X

X

Measuring relative humidity and temperature with the Si70XX sensor

Go to README

SL Si91x - RGB LED

X

Using the RGB LED

Go to README

SL Si91x - ICM40627

X

Measuring motion parameters and temperature with the ICM40627 sensor

Go to README

SL Si91x - VEML6035

X

Measuring lux with the VEML6035 ambient light sensor

Go to README

Flash Read Write

X

X

Demonstrates flash Read Write feature

Go to README

Service Examples#

Example

Featured

SoC

NCP

PSRAM

Lite FW

Description

Link to README page

SL Si91x - IOSTREAM USART Baremetal

X

X

Exchanging data using Universal Synchronous/Asynchronous Receiver-Transmitter (USART) communication over the virtual COM (VCOM) port

Go to README

SL Si91x - Common Flash

X

X

Using the Non-Volatile Memory (NVM3) service of the SiWx91x in Common Flash configuration to maintain key-value pairs in the flash memory

Go to README

sl_si91x_nvm3_dual_flash

X

Using the NVM3 service of the SiWx91x Dual Flash configuration to maintain key-value pairs in the flash memory

Go to README

SL Si91x - Power Manager M4 Wireless

X

X

Using the power manager for the application processor

Go to README

SL Si91x - Sensorhub

X

X

Reading data from the sensors on the Si91x device

Go to README

SL Si91x - Sleep Timer

X

X

Implementing one-time and periodic sleep timers

Go to README

Cryptography Examples#

Example

Featured

SoC

NCP

PSRAM

Lite FW

Description

Link to README page

Crypto - AES

X

X

Encrypting and decrypting data using the advanced encryption standard (AES) method

Go to README

Crypto - Attestation

X

X

Performing attestation on the SiWx91x using cryptographic methods

Go to README

Crypto - ECDH

X

X

Using the elliptic-curve Diffie-Hellman (ECDH) cryptographic APIs of the SiWx91x device

Go to README

Crypto - ECDSA

X

X

Using the elliptic-curve Digital Signature Algorithm (ECDSA) cryptographic APIs of the SiWx91x device

Go to README

Crypto - HMAC

X

X

Generating a message digest using the HMAC cryptographic method

Go to README

Crypto - SHA

X

X

Generating a message digest using the SHA cryptographic method

Go to README

Si91x - SoC PSA AES Cipher

X

X

Implementing the Platform Security Architecture (PSA) Advanced Encryption Standard (AES)

Go to README

Si91x - SoC PSA Asymmetric Key Storage

X

X

Generating and storing assymetric cryptographic keys

Go to README

Si91x - SoC PSA CCM

X

X

Implementing PSA with the counter with cipher block chaining message authentication code (CCM) encryption method

Go to README

Si91x - SoC PSA CHACHAPOLY

X

X

Implementing PSA with the ChaChaPoly encryption method

Go to README

Si91x - SoC PSA ECDH

X

X

Implementing PSA with the elliptic-curve Diffie-Hellman (ECDH) encryption method

Go to README

Si91x - SoC PSA GCM

X

X

Implementing PSA with the Galois/Counter Mode (GCM) of operation

Go to README

Si91x - SoC PSA HMAC

X

X

Implementing PSA with hash-based message authentication code (HMAC)

Go to README

Si91x - SoC PSA Multithread

X

X

Implementing thread-safe PSA code with cryptography hardware accelerators

Go to README

Si91x - SoC PSA SHA

X

X

Implementing PSA with the secure hash algorithm (SHA) encryption method

Go to README

Si91x - SoC PSA Symmetric Key Storage

X

X

Generating and storing assymetric cryptographic keys

Go to README

Si91x - SoC PSA ECDSA

X

X

Demonstrates using ECDSA for signature generation and verification

Go to README

Network Protocol Examples#

The following network protocol examples are available:

Ping Examples#

Example

Featured

SoC

NCP

PSRAM

Lite FW

Description

Link to README page

Wi-Fi - Station Ping

X

X

X

Implementing the Internet Control Message Protocol (ICMP), better known as the ping protocol

Go to README

Wi-Fi - Station Ping V6

X

X

Implementing the ping protocol (ICMP) over IPv6

Go to README

SNTP Examples#

Example

Featured

SoC

NCP

PSRAM

Lite FW

Description

Link to README page

Wi-Fi - SNTP Client

X

X

Implementing the Simple Network Time Protocol (SNTP)

Go to README

Application Protocol Examples#

The following application protocol examples are available:

HTTP Examples#

Example

Featured

SoC

NCP

PSRAM

Lite FW

Description

Link to README page

Wi-Fi - HTTP Client

X

X

X

Implementing a Hyper-Text Transfer Protocol (HTTP) client to exchange data with an HTTP server

Go to README

Wi-Fi - HTTP OTAF Update

X

X

X

Downloading and updating firmware as an HTTP client

Go to README

Wi-Fi Coex - Wi-Fi Client HTTPS BLE Dual Role

X

X

X

Simultaneous connection over secure HTTP (HTTPS) and as a BLE central and peripheral

Go to README

Wi-Fi - HTTP Server

X

Implementing a Hyper-Text Transfer Protocol (HTTP) server to exchange data with an HTTP client

Go to README

Wi-Fi - Concurrent HTTP Server

X

Demonstrates how to create HTTP Server in concurrent mode

Go to README

MQTT Examples#

Example

Featured

SoC

NCP

PSRAM

Lite FW

Description

Link to README page

Wi-Fi - AWS IoT MQTT Client

X

X

X

Connecting to an AWS MQTT broker and publishing data

Go to README

Wi-Fi - Azure IoT

X

X

X

Connecting to an Azure MQTT broker and publishing and subscribing to MQTT topics

Go to README

Wi-Fi - Embedded MQTT Client

X

X

X

Connecting to an MQTT broker and publishing and subscribing to MQTT topics

Go to README

Wi-Fi - Embedded MQTT Client TWT

X

X

X

MQTT client using the Wi-Fi TWT power-save mode

Go to README