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)
  • 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.

Manufacturer Part NumberP/N Instances Speed

Artery

AT32F407 / AT32F437 1 10/100

Cortus

APS1 1 10/100
APS3 / APS3R / ASP23 1 10/100
APS5 / APS25 1 10/100
FPS6 / FPS26 1 10/100

Cypress (Infineon)

FM3 2 10/100
FM4 1 10/100

Espressif

ESP32 1 10/100

Geehy

APM32F407 / APM32F417 1 10/100

GigaDevice

GD32F207 1 10/100
GD32F307 1 10/100
GD32F407 / GD32F427 1 10/100
GD32E507 1 10/100
GD32F450 / GD32F470 1 10/100
GD32F527 1 10/100
GD32H757 / GD32H759 2 10/100

Infineon

XMC4400 1 10/100
XMC4500 1 10/100
XMC4700 1 10/100
XMC4800 1 10/100
TriCore TC2xx 1 10/100
TriCore TC3xx 1 10/100/1000

Microchip

AVR32UC3A 1 10/100
PIC32CK GC01/SG01 1 10/100
PIC32CX SG41/SG60/SG61 1 10/100
PIC32CZ CA70 1 10/100
PIC32CZ CA80/CA90 1 10/100/1000
PIC32MX 1 10/100
PIC32MZ EC 1 10/100
PIC32MZ EF 1 10/100
PIC32MZ DA 1 10/100
PIC32MZ W1 1 10/100
SAM3X 1 10/100
SAM4E 1 10/100
SAM7X 1 10/100
SAM9263 1 10/100
SAM9X60 2 10/100
SAME53 1 10/100
SAME54 1 10/100
SAME70 1 10/100
SAMV71 1 10/100
SAMA5D2 1 10/100
SAMA5D3 2 10/100/1000
SAMA5D4 2 10/100
LAN9255 1 10/100

Microsemi (Microchip)

SmartFusion 1 10/100
SmartFusion2 1 10/100
PolarFire SoC 2 10/100/1000

Nuvoton

NUC472 1 10/100
M467 1 10/100
M487 1 10/100

NXP

Kinetis K6x 1 10/100
Kinetis K7x 1 10/100
Kinetis KV5x 1 10/100
LPC1700 1 10/100
LPC1800 1 10/100
LPC2300 1 10/100
LPC4300 1 10/100
LPC54018 1 10/100
LPC54628 1 10/100
MCX E247 1 10/100
MCX E31B 1 10/100
MCX N547 1 10/100
MCX N947 1 10/100
i.MX RT1020 1 10/100
i.MX RT1040 1 10/100
i.MX RT1050 1 10/100
i.MX RT1060 2 10/100
i.MX RT1160 2 10/100/1000
i.MX RT1170 3 10/100/1000
i.MX6UL 2 10/100
i.MX6ULL 2 10/100
S32K148 1 10/100
S32K344 1 10/100
Coldfire V2 MCF5225x 1 10/100
PowerPC MPC5748 2 10/100

Octavo Systems

OSD335x 2 10/100/1000
OSDMP15x 1 10/100/1000

Renesas

RA6E1 1 10/100
RA6M2 1 10/100
RA6M3 1 10/100
RA6M4 1 10/100
RA6M5 1 10/100
RA8D1 1 10/100
RA8M1 1 10/100
RX62N 1 10/100
RX63N 1 10/100
RX64M 2 10/100
RX65N 1 10/100
RZ/A1LU 1 10/100
RZ/A1M 1 10/100
RZ/A1H 1 10/100
RZ/A2M 2 10/100
Synergy S5D9 1 10/100
Synergy S7G2 2 10/100

Silicon Labs (Silabs)

EFM32GG11 1 10/100

STMicroelectronics (ST)

STM32F107 1 10/100
STM32F207 / STM32F217 1 10/100
STM32F407 / STM32F417 1 10/100
STM32F427 / STM32F437 1 10/100
STM32F429 / STM32F439 1 10/100
STM32F469 / STM32F479 1 10/100
STM32F745 / STM32F765 1 10/100
STM32F746 / STM32F756 1 10/100
STM32F767 / STM32F777 1 10/100
STM32F769 / STM32F779 1 10/100
STM32H563 / STM32H573 1 10/100
STM32H723 / STM32H735 1 10/100
STM32H743 / STM32H753 1 10/100
STM32H745 / STM32H755 1 10/100
STM32H747 / STM32H757 1 10/100
STM32H7R3 / STM32H7S3 1 10/100
STM32H7R7 / STM32H7S7 1 10/100
STM32N647 / STM32N657 1 10/100/1000
STM32MP1 1 10/100/1000
STM32MP13 2 10/100/1000
STM32MP2 2 10/100/1000
STR912 1 10/100
SPC5 1 10/100

Texas Instruments (TI)

MSP432E4 1 10/100
Stellaris LM3S 1 10/100
Tiva TM4C129 1 10/100
Sitara AM243x 2 10/100/1000
Sitara AM335x 2 10/100/1000
Sitara AM64x 2 10/100/1000
Hercules RM57 1 10/100
Hercules TMS570 1 10/100
Concerto F28M35x 1 10/100
TMS320F2838x 1 10/100
OMAP-L138 1 10/100

WIZnet

W55RP20 1 10/100

Xilinx (AMD)

Zynq-7000 1 10/100/1000
Manufacturer Part NumberP/N Ports Speed

Analog Devices

ADIN1100 1 10Base-T1L
ADIN1101 1 10Base-T1L
ADIN1200 1 100Base-TX
ADIN1300 1 1000Base-T

Atheros

AR8031 1 1000Base-T
AR8035 1 1000Base-T

Davicom

DM9161 1 100Base-TX
DM9162 1 100Base-TX

IC+

IP101 1 100Base-TX

Marvell

88E1112 1 1000Base-T
88E1512 1 1000Base-T

MaxLinear

GPY111 1 1000Base-T
PEF7071 1 1000Base-T

Microchip

KSZ8031 1 100Base-TX
KSZ8041 1 100Base-TX
KSZ8051 1 100Base-TX
KSZ8061 1 100Base-TX
KSZ8081 1 100Base-TX
KSZ8091 1 100Base-TX
KSZ8721 1 100Base-TX
KSZ9031 1 1000Base-T
KSZ9131 1 1000Base-T
LAN8670 1 10Base-T1S
LAN8671 1 10Base-T1S
LAN8672 1 10Base-T1S
LAN8700 1 100Base-TX
LAN8710 1 100Base-TX
LAN8720 1 100Base-TX
LAN8740 1 100Base-TX
LAN8741 1 100Base-TX
LAN8742 1 100Base-TX
LAN8770 1 100Base-T1
LAN8830 1 1000Base-T
LAN8831 1 1000Base-T
LAN8840 1 1000Base-T
LAN8841 1 1000Base-T

Microsemi (Microchip)

VSC8662 2 1000Base-T

Realtek

RTL8211 1 1000Base-T

NXP

TJA1100 1 100Base-T1
TJA1101 1 100Base-T1
TJA1102 2 100Base-T1
TJA1103 1 100Base-T1

Onsemi

NCN26000 1 10Base-T1S

Renesas

ICS1894-32 1 100Base-TX
uPD60610 1 100Base-TX
uPD60611 1 100Base-TX

STMicroelectronics (ST)

ST802RT1A 1 100Base-TX

Texas Instruments (TI)

DP83620 1 100Base-TX
DP83630 1 100Base-TX
DP83640 1 100Base-TX
DP83822 1 100Base-TX
DP83825 1 100Base-TX
DP83826 1 100Base-TX
DP83848 1 100Base-TX
DP83867 1 1000Base-T
DP83869 1 1000Base-T
DP83TC811 1 100Base-T1
DP83TC812 1 100Base-T1
DP83TD510 1 10Base-T1L
DP83TG720 1 1000Base-T1
Manufacturer Part NumberP/N Host Interface Speed

Analog Devices

ADIN1110 SPI 10Base-T1L
ADIN1111 SPI 10Base-T1L

Davicom

DM9000A/B 8/16-bit 100Base-TX

Microchip

ENC28J60 SPI 10Base-T
ENC424J600 SPI or 8-bit 100Base-TX
ENC624J600 SPI or 8/16-bit 100Base-TX
KSZ8851 SPI or 8/16/32-bit 100Base-TX
LAN8650 SPI 10Base-T1S
LAN8651 SPI 10Base-T1S
LAN9250 SPI or 8/16-bit 100Base-TX

Onsemi

NCN26010 SPI 10Base-T1S
NCV7410 SPI 10Base-T1S

WIZnet

W3150A+ SPI 100Base-TX
W5100 SPI 100Base-TX
W5100S SPI 100Base-TX
W5200 SPI 100Base-TX
W5500 SPI 100Base-TX
W6100 SPI 100Base-TX
WIZ850io SPI 100Base-TX
Manufacturer Part NumberP/N Ports Speed

Analog Devices

ADIN2111 2 10Base-T1L

IC+

IP175C 5 100Base-TX

Marvell

88E6060 6 100Base-TX

Microchip

KSZ8463 3 100Base-TX
KSZ8563 3 100Base-TX
KSZ8565 5 100Base-TX
KSZ8567 7 100Base-TX
KSZ8775 5 100Base-TX
KSZ8794 4 100Base-TX
KSZ8795 5 100Base-TX
KSZ8863 3 100Base-TX
KSZ8864 4 100Base-TX
KSZ8873 3 100Base-TX
KSZ8895 5 100Base-TX
KSZ9477 7 1000Base-T
KSZ9563 3 1000Base-T
KSZ9567 7 1000Base-T
KSZ9893 3 1000Base-T
KSZ9896 6 1000Base-T
KSZ9897 7 1000Base-T
LAN9303 3 100Base-TX
LAN9353 3 100Base-TX
LAN9354 3 100Base-TX
LAN9355 3 100Base-TX
LAN9370 5 100Base-T1
LAN9371 6 100Base-T1
LAN9372 8 100Base-T1
LAN9373 8 100Base-T1
LAN9374 8 100Base-T1
LAN9646 6 1000Base-T

NXP

SJA1105 5 1000Base-T
Manufacturer Part NumberP/N Host Interface Speed

Cypress (Infineon)

BCM43362 / CYW43362 SDIO 802.11 b/g/n

Espressif

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

Microchip

MRF24WG SPI 802.11 b/g
SAMW25 - 802.11 b/g/n
WILC1000 SPI 802.11 b/g/n
WINC1500 / WINC1510 SPI 802.11 b/g/n
WINC3400 SPI 802.11 b/g/n

Murata

SN8000 SPI 802.11 b/g/n
SN8205 SPI 802.11 b/g/n

MXCHIP

EWM3162 - 802.11 b/g/n

Silicon Labs (Silabs)

WF200 SPI 802.11 b/g/n
WFM200 SPI 802.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.

Manufacturer Part NumberP/N PPP Support Category

Quectel

BG96 LTE Cat-M1
EC20 LTE
M95 GPRS
UG95 UMTS / HSPA
UG96 UMTS / HSPA

Sierra Wireless

AirPrime HL6528 GPRS
AirPrime HL8548 EDGE / GPRS
AirPrime WISMO228 GPRS

SimCOM

SIM808 GPRS

Telit

GL865 GPRS
HE910 UMTS / HSPA+
LE910 LTE
UE910 UMTS / HSPA

U-blox

SARA-G350 GPRS
SARA-U201 HSPA
  • ARM Cortex-M3
  • ARM Cortex-M4
  • ARM Cortex-M7
  • ARM Cortex-M33
  • ARM Cortex-M55
  • 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
  • Eclipse ThreadX
  • PX5 RTOS
  • Segger embOS
  • TI-RTOS (SYS/BIOS)
  • Zephyr RTOS
  • Bare Metal programming (without RTOS)
Toolchain / IDE Compiler
Makefile GCC
AC6 System Workbench for STM32 (SW4STM32) GCC
Atollic TrueSTUDIO GCC
Espressif ESP-IDF GCC
HighTec Toolset for TriCore GCC
IAR Embedded Workbench EWARM, EWRX
Infineon DAVE GCC
Keil MDK-ARM ARM Compiler v5, ARM Compiler v6 (CLANG)
Microchip Studio (Atmel Studio) GCC
Microchip MPLAB X GCC, XC32
Microsoft Visual Studio MSVC
NXP MCUXpresso GCC
NXP S32 Design Studio (S32DS) GCC
Renesas e2Studio GCC, CC-RX
Segger Embedded Studio GCC
ST STM32CubeIDE GCC
Tasking VX-Toolset VX-Toolset for TriCore
TI Code Composer Studio (CSS) GCC, ARM-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
  • RFC 9776: Internet Group Management Protocol, Version 3

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
  • RFC 9777: Multicast Listener Discovery Version 2 (MLDv2) for IPv6

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