CycloneTCP
Embedded IPv4 / IPv6 Stack

CycloneTCP is a dual IPv4/IPv6 stack dedicated to embedded applications. CycloneTCP conforms to RFC standards and offers seamless interoperability with existing TCP/IP systems. By supporting IPv6, CycloneTCP eases deployment of next-generation Internet. The stack is distributed as a full ANSI C and highly maintainable source code.

CycloneTCP is available either as open source (GPLv2 license) or under a royalty-free commercial license (non-GPL license). We also propose an evaluation license (90-day license in source form) with technical support for an easier onboarding and effective evaluation of our software.

CycloneTCP TCP/IP Stack OSI Model

Main Features

  • Dual stack (IPv4 and/or IPv6)
  • Built-in support for multiple network interfaces
  • Flexible memory footprint (built-time configuration to embed only the necessary features)
  • Configurable memory model (static memory pool or heap memory allocation)
  • Portable architecture (no processor dependencies)
  • Straightforward port to any RTOS
  • Highly maintainable source code
  • Debugging and trace functionality to ease development and integration
  • BSD style socket API
  • Blocking/non-blocking socket operation and event-driven functions (select and poll)
  • Efficient data transfer through zero copy
  • Well-crafted TCP module with selective acknowledgement (SACK) and congestion control
  • Raw socket interface
  • IP fragmentation and reassembly support
  • Support for virtual interfaces (multiple MAC addresses per physical interface)
  • Support for multi-homed hosts (multiple IPv4 addresses per interface)
  • Ethernet port multiplication using VLAN tagging (SMSC switches) or tail tagging (Micrel switches)
  • VLAN support (802.1Q and 802.1ad)
  • USB Device RNDIS class driver (for STM32 microcontrollers)

Supported Protocols

  • LLDP agent compliant with 801.1AB-2005 (TX-only, RX-only and TX/RX modes supported
  • DHCP client and server
  • Auto-IP (dynamic configuration of IPv4 link-local addresses)
  • DHCPv6 client and relay agent
  • SLAAC (IPv6 stateless address autoconfiguration)
  • Multicast source filtering (IGMPv3 host and MLDv2 node)NEW
  • DNS client
  • NetBIOS client and responder
  • LLMNR client and responder
  • mDNS client and responder
  • DNS-SD responder (DNS-based service discovery)
  • FTP / FTPS client and server (implicit TLS and explicit TLS modes supported)
  • TFTP client and server
  • HTTP / HTTPS client
  • HTTP / HTTPS server with SSI, CGI scripting and WebSocket support
  • HTTP/2 client (including HPACK compression, server push and https scheme)
  • SMTP client
  • MQTT v3.1.1 client (TCP, TLS, WebSocket and secure WebSocket transport layers supported)
  • MQTT-SN client (UDP and DTLS transport layers supported)
  • CoAP client (DTLS-secured CoAP, Observe and Block-Wise Transfers supported)
  • CoAP server (DTLS-secured CoAP supported)
  • SNMP agent (SNMPv1, SNMPv2c and SNMPv3 supported)
  • Remote management of SNMP users and access rights (SNMP-USM-MIB and SNMP-VACM-MIB)
  • Standard MIBs: MIB-II, IF-MIB, IP-MIB, TCP-MIB, UDP-MIB, SNMPv2-MIB, LLDP-MIB
  • SNTP client
  • NTS client (Network Time Security)NEW
  • Echo server
  • Modbus/TCP client and server (Modbus/TCP security supported)
  • Syslog client
  • WebSocket client and server (WebSocket connections tunneled over SSL/TLS supported)
  • PPP (Point-to-Point Protocol)

Supported Network Drivers

CycloneTCP supports numerous industry-standard microcontrollers with embedded MAC, various PHY references, standalone Ethernet controllers, Ethernet switches, as well as Wi-Fi modules and cellular modems.

ManufacturerPart NumberP/NInstancesSpeed

Artery

AT32F407 / AT32F437110/100

Cortus

APS1110/100
APS3 / APS3R / ASP23110/100
APS5 / APS25110/100
FPS6 / FPS26110/100

Cypress (Infineon)

FM3210/100
FM4110/100

Espressif

ESP32110/100

Geehy

APM32F407 / APM32F417110/100

GigaDevice

GD32F207110/100
GD32F307110/100
GD32F407 / GD32F427110/100
GD32F450 / GD32F470110/100
GD32E507110/100

Infineon

XMC4400110/100
XMC4500110/100
XMC4700110/100
XMC4800110/100
TriCore TC2xx110/100
TriCore TC3xx110/100/1000

Microchip

AVR32UC3A110/100
PIC32CK GC01/SG01110/100
PIC32CX SG41/SG60/SG61110/100
PIC32CZ CA80/CA90110/100
PIC32MX110/100
PIC32MZ EC110/100
PIC32MZ EF110/100
PIC32MZ DA110/100
SAM3X110/100
SAM4E110/100
SAM7X110/100
SAM9263110/100
SAM9X60210/100
SAME53110/100
SAME54110/100
SAME70110/100
SAMV71110/100
SAMA5D2110/100
SAMA5D3210/100/1000
SAMA5D4210/100
LAN9255110/100

Microsemi (Microchip)

SmartFusion110/100
SmartFusion2110/100
PolarFire SoC210/100/1000

Nuvoton

NUC472110/100
M467110/100
M487110/100

NXP

Kinetis K6x110/100
Kinetis K7x110/100
Kinetis KV5x110/100
LPC1700110/100
LPC1800110/100
LPC2300110/100
LPC4300110/100
LPC54018110/100
LPC54628110/100
MCX N547110/100
MCX N947110/100
i.MX RT1020110/100
i.MX RT1040110/100
i.MX RT1050110/100
i.MX RT1060210/100
i.MX RT1160210/100/1000
i.MX RT1170310/100/1000
i.MX6UL210/100
i.MX6ULL210/100
S32K148110/100
Coldfire V2 MCF5225x110/100
PowerPC MPC5748210/100

Octavo Systems

OSD335x210/100/1000
OSDMP15x110/100/1000

Renesas

RA6E1110/100
RA6M2110/100
RA6M3110/100
RA6M4110/100
RA6M5110/100
RA8D1110/100
RA8M1110/100
RX62N110/100
RX63N110/100
RX64M210/100
RX65N110/100
RZ/A1LU110/100
RZ/A1M110/100
RZ/A1H110/100
RZ/A2M210/100
Synergy S5D9110/100
Synergy S7G2210/100

Silicon Labs (Silabs)

EFM32GG11110/100

STMicroelectronics (ST)

STM32F107110/100
STM32F207 / STM32F217110/100
STM32F407 / STM32F417110/100
STM32F427 / STM32F437110/100
STM32F429 / STM32F439110/100
STM32F469 / STM32F479110/100
STM32F745 / STM32F765110/100
STM32F746 / STM32F756110/100
STM32F767 / STM32F777110/100
STM32F769 / STM32F779110/100
STM32H563 / STM32H573110/100
STM32H723 / STM32H735110/100
STM32H743 / STM32H753110/100
STM32H745 / STM32H755110/100
STM32H747 / STM32H757110/100
STM32H7R3 / STM32H7S3110/100
STM32H7R7 / STM32H7S7110/100
STM32MP1110/100/1000
STM32MP13210/100/1000
STM32MP2210/100/1000
STR912110/100
SPC5110/100

Texas Instruments (TI)

MSP432E4110/100
Stellaris LM3S110/100
Tiva TM4C129110/100
Sitara AM243x210/100/1000
Sitara AM335x210/100/1000
Sitara AM64x210/100/1000
Hercules RM57110/100
Hercules TMS570110/100
Concerto F28M35x110/100
TMS320F2838x110/100
OMAP-L138110/100

Xilinx

Zynq-7000110/100/1000
ManufacturerPart NumberP/NPortsSpeed

Analog Devices

ADIN1100110Base-T1L
ADIN12001100Base-TX
ADIN130011000Base-T

Atheros

AR803111000Base-T
AR803511000Base-T

Davicom

DM91611100Base-TX
DM91621100Base-TX

IC+

IP1011100Base-TX

Lantiq (Intel)

PEF707111000Base-T

Marvell

88E111211000Base-T
88E151211000Base-T

Microchip

KSZ80311100Base-TX
KSZ80411100Base-TX
KSZ80511100Base-TX
KSZ80611100Base-TX
KSZ80811100Base-TX
KSZ80911100Base-TX
KSZ87211100Base-TX
KSZ903111000Base-T
KSZ913111000Base-T
LAN8670110Base-T1S
LAN8671110Base-T1S
LAN8672110Base-T1S
LAN87001100Base-TX
LAN87101100Base-TX
LAN87201100Base-TX
LAN87401100Base-TX
LAN87411100Base-TX
LAN87421100Base-TX
LAN87701100Base-T1
LAN883011000Base-T
LAN884111000Base-T

Microsemi (Microchip)

VSC866221000Base-T

Realtek

RTL821111000Base-T

NXP

TJA11001100Base-T1
TJA11011100Base-T1
TJA11022100Base-T1
TJA11031100Base-T1

Onsemi

NCN26000110Base-T1S

Renesas

ICS1894-321100Base-TX
uPD606101100Base-TX
uPD606111100Base-TX

STMicroelectronics (ST)

ST802RT1A1100Base-TX

Texas Instruments (TI)

DP836201100Base-TX
DP836301100Base-TX
DP836401100Base-TX
DP838221100Base-TX
DP838251100Base-TX
DP838261100Base-TX
DP838481100Base-TX
DP8386711000Base-T
DP8386911000Base-T
DP83TC8111100Base-T1
DP83TC8121100Base-T1
DP83TD510110Base-T1L
DP83TG72011000Base-T1
ManufacturerPart NumberP/NHost InterfaceSpeed

Analog Devices

ADIN1110SPI10Base-T1L

Davicom

DM9000A/B8/16-bit100Base-TX

Microchip

ENC28J60SPI10Base-T
ENC424J600SPI or 8-bit100Base-TX
ENC624J600SPI or 8/16-bit100Base-TX
KSZ8851SPI or 8/16/32-bit100Base-TX
LAN8650SPI10Base-T1S
LAN8651SPI10Base-T1S
LAN9250SPI or 8/16-bit100Base-TX

Onsemi

NCN26010SPI10Base-T1S

WIZnet

W3150A+SPI100Base-TX
W5100SPI100Base-TX
W5100SSPI100Base-TX
W5200SPI100Base-TX
W5500SPI100Base-TX
W6100SPI100Base-TX
ManufacturerPart NumberP/NPortsSpeed

Analog Devices

ADIN2111210Base-T1L

IC+

IP175C5100Base-TX

Marvell

88E60606100Base-TX

Microchip

KSZ84633100Base-TX
KSZ85633100Base-TX
KSZ85655100Base-TX
KSZ85677100Base-TX
KSZ87755100Base-TX
KSZ87944100Base-TX
KSZ87955100Base-TX
KSZ88633100Base-TX
KSZ88644100Base-TX
KSZ88733100Base-TX
KSZ88955100Base-TX
KSZ947771000Base-T
KSZ956331000Base-T
KSZ989331000Base-T
KSZ989661000Base-T
KSZ989771000Base-T
LAN93033100Base-TX
LAN93533100Base-TX
LAN93543100Base-TX
LAN93553100Base-TX
LAN93705100Base-T1
LAN93716100Base-T1
LAN93728100Base-T1
LAN93738100Base-T1
LAN93748100Base-T1

NXP

SJA110551000Base-T
ManufacturerPart NumberP/NHost InterfaceSpeed

Cypress (Infineon)

BCM43362 / CYW43362SDIO802.11 b/g/n

Espressif

ESP32-802.11 b/g/n
ESP8266-802.11 b/g/n

Microchip

MRF24WGSPI802.11 b/g
SAMW25-802.11 b/g/n
WILC1000SPI802.11 b/g/n
WINC1500 / WINC1510SPI802.11 b/g/n
WINC3400SPI802.11 b/g/n

Murata

SN8000SPI802.11 b/g/n
SN8205SPI802.11 b/g/n

MXCHIP

EWM3162-802.11 b/g/n

Silicon Labs (Silabs)

WF200SPI802.11 b/g/n
WFM200SPI802.11 b/g/n
WGM160-802.11 b/g/n

U-blox

NINA-W101-802.11 b/g/n
NINA-W102-802.11 b/g/n
NINA-W106-802.11 b/g/n

NoteThis list is not exhaustive. Most of cellular modems supporting PPP can be used with CycloneTCP.

ManufacturerPart NumberP/NPPP SupportCategory

Quectel

BG96LTE Cat-M1
EC20LTE
M95GPRS
UG95UMTS / HSPA
UG96UMTS / HSPA

Sierra Wireless

AirPrime HL6528GPRS
AirPrime HL8548EDGE / GPRS
AirPrime WISMO228GPRS

SimCOM

SIM808GPRS

Telit

GL865GPRS
HE910UMTS / HSPA+
LE910LTE
UE910UMTS / HSPA

U-blox

SARA-G350GPRS
SARA-U201HSPA
  • ARM Cortex-M3
  • ARM Cortex-M4
  • ARM Cortex-M7
  • ARM Cortex-M33
  • ARM Cortex-M85
  • ARM Cortex-R4
  • ARM Cortex-A5
  • ARM Cortex-A7
  • ARM Cortex-A8
  • ARM Cortex-A9
  • Legacy ARM7TDMI / ARM926EJ-S
  • RISC-V
  • MIPS M4K
  • MIPS microAptiv / M-Class
  • Infineon TriCore AURIX
  • PowerPC e200
  • Coldfire V2
  • RX600
  • AVR32
  • Xtensa LX6
  • Amazon FreeRTOS
  • SafeRTOS
  • ChibiOS/RT
  • CMSIS-RTOS
  • CMSIS-RTOS2
  • CMX-RTX
  • Keil RTXv4 and RTXv5
  • Micrium µC/OS-II and µC/OS-III
  • Microsoft Azure RTOS (ThreadX)
  • PX5 RTOS
  • Segger embOS
  • TI-RTOS (SYS/BIOS)
  • Zephyr RTOS
  • Bare Metal programming (without RTOS)
Toolchain / IDECompiler
MakefileGCC
AC6 System Workbench for STM32 (SW4STM32)GCC
Atollic TrueSTUDIOGCC
Espressif ESP-IDFGCC
HighTec Toolset for TriCoreGCC
IAR Embedded WorkbenchEWARM, EWRX
Infineon DAVEGCC
Keil MDK-ARMARM Compiler v5, ARM Compiler v6 (CLANG)
Microchip Studio (Atmel Studio)GCC
Microchip MPLAB XGCC, XC32
Microsoft Visual StudioMSVC
NXP MCUXpressoGCC
NXP S32 Design Studio (S32DS)GCC
Renesas e2StudioGCC, CC-RX
Segger Embedded StudioGCC
ST STM32CubeIDEGCC
Tasking VX-ToolsetVX-Toolset for TriCore
TI Code Composer Studio (CSS)GCC, TI-CGT

Network Layer (IPv4)

  • RFC 791: Internet Protocol Specification
  • RFC 792: Internet Control Message Protocol Specification
  • RFC 815: IP Datagram Reassembly Algorithms
  • RFC 826: Ethernet Address Resolution Protocol
  • RFC 1112: Host Extensions for IP Multicasting
  • RFC 1122: Requirements for Internet Hosts - Communication Layers
  • RFC 2113: IP Router Alert Option
  • RFC 2236: Internet Group Management Protocol, Version 2
  • RFC 3376: Internet Group Management Protocol, Version 3
  • RFC 3927: Dynamic Configuration of IPv4 Link-Local Addresses
  • RFC 4541: Considerations for IGMP and MLD Snooping Switches
  • RFC 5227: IPv4 Address Conflict Detection

Network Layer (IPv6)

  • RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
  • RFC 2464: Transmission of IPv6 Packets over Ethernet Networks
  • RFC 2710: Multicast Listener Discovery (MLD) for IPv6
  • RFC 3484: Default Address Selection for Internet Protocol version 6 (IPv6)
  • RFC 3493: Basic Socket Interface Extensions for IPv6
  • RFC 3590: Source Address Selection for MLD Protocol
  • RFC 3678: Socket Interface Extensions for Multicast Source Filters
  • RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) for IPv6
  • RFC 4291: IP Version 6 Addressing Architecture
  • RFC 4294: IPv6 Node Requirements
  • RFC 4443: Internet Control Message Protocol Version 6 (ICMPv6) Specification
  • RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
  • RFC 4862: IPv6 Stateless Address Autoconfiguration
  • RFC 6106: IPv6 Router Advertisement Options for DNS Configuration

Transport Layer

  • RFC 768: User Datagram Protocol
  • RFC 793: Transmission Control Protocol
  • RFC 2018: TCP Selective Acknowledgment Options
  • RFC 5681: TCP Congestion Control
  • RFC 6298: Computing TCP's Retransmission Timer
  • RFC 6528: Defending against Sequence Number Attacks
  • RFC 9293: Transmission Control Protocol (TCP)

Application Layer

  • RFC 959: File Transfer Protocol (FTP)
  • RFC 1035: Domain Names – Implementation and Specification
  • RFC 1157: A Simple Network Management Protocol (SNMP)
  • RFC 1213: Management Information Base for Network Management of TCP/IP-based internets (MIB-II)
  • RFC 1350: The TFTP Protocol (Revision 2)
  • RFC 1769: Simple Network Time Protocol (SNTP)
  • RFC 1905: Protocol Operations for Version 2 of the Simple Network Management Protocol (SNMPv2)
  • RFC 1945: Hypertext Transfer Protocol - HTTP/1.0
  • RFC 2131: Dynamic Host Configuration Protocol
  • RFC 2132: DHCP Options and BOOTP Vendor Extensions
  • RFC 2616: Hypertext Transfer Protocol - HTTP/1.1
  • RFC 2617: HTTP Authentication: Basic and Digest Access Authentication
  • RFC 2818: HTTP Over TLS
  • RFC 2863: The Interfaces Group MIB
  • RFC 3164: The BSD syslog Protocol
  • RFC 3207: SMTP Service Extension for Secure SMTP over Transport Layer Security
  • RFC 3315: Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
  • RFC 3410: Introduction and Applicability Statements for Internet Standard Management Framework
  • RFC 3411: An Architecture for Describing SNMP Management Frameworks
  • RFC 3412: Message Processing and Dispatching for the SNMP
  • RFC 3413: Simple Network Management Protocol (SNMP) Applications
  • RFC 3414: User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3)
  • RFC 3415: View-based Access Control Model (VACM) for the Simple Network Management Protocol (SNMP)
  • RFC 3418: Management Information Base (MIB) for the Simple Network Management Protocol (SNMP)
  • RFC 3584: Coexistence between Version 1, Version 2, and Version 3 of SNMP Framework
  • RFC 3646: DNS Configuration options for DHCPv6
  • RFC 3826: AES Cipher Algorithm in the SNMP User-based Security Model
  • RFC 4022: MIB for the Transmission Control Protocol (TCP)
  • RFC 4113: MIB for the User Datagram Protocol (UDP)
  • RFC 4293: MIB for the Internet Protocol (IP)
  • RFC 4795: Link-local Multicast Name Resolution (LLMNR)
  • RFC 4954: SMTP Service Extension for Authentication
  • RFC 5321: Simple Mail Transfer Protocol
  • RFC 6455: The WebSocket Protocol
  • RFC 6528: Defending against Sequence Number Attacks
  • RFC 6762: Multicast DNS
  • RFC 6763: DNS-Based Service Discovery
  • RFC 7252: The Constrained Application Protocol (CoAP)
  • RFC 7540: Hypertext Transfer Protocol Version 2 (HTTP/2)
  • RFC 7541: HPACK Header Compression for HTTP/2
  • RFC 7641: Observing Resources in the Constrained Application Protocol (CoAP)
  • RFC 7860: HMAC-SHA-2 Authentication Protocols in the User-based Security Model
  • RFC 7959: Block-Wise Transfers in the Constrained Application Protocol (CoAP)
  • RFC 8915: Network Time Security for the Network Time Protocol

IEEE

  • IEEE Std 802.1AB-2005: IEEE Standard for Local and metropolitan area networks - Station and Media Access Control Connectivity Discovery