Skip navigation

embOS/IP—The IP Stack for Embedded Devices

  • Professional IP stack for embedded systems
  • ANSI C socket.h-like API for user applications. An application using the standard C socket library can easily be ported to use embOS/IP.
  • High performance IP stack
  • Small memory footprint
  • Runs "out-of-the-box"
  • No configuration required
  • Works with any RTOS in a multitasking environment (embOS recommended)
  • Easy to use on embedded devices

embOS/IP—World Class IP Based Communication

embOS/IP is the industry-leading IP stack for embedded systems. The professional IP stack is renowned for a high-performance implementation with a small memory footprint and outstanding documentation as well as multiple optional add-ons.

In the world of embedded systems, IP based communication lays the groundwork for any modern device. Internet of Things (IoT) protocols such as MQTT (Message Queue Telemetry Transport) rely on the availability of IP communication. The industry-leading IP stack embOS/IP, is the first choice for the required IP connectivity, using the socket interface of any embedded device. This IP stack is straight forward to configure and integrate. embOS/IP can easily be tuned to adapt to the different communication requirements of your embedded system.

embOS/IP Software Products

The IP stack for embedded devices embOS/IP, is offered in two different editions, a BASE package which includes the most important protocols related to Ethernet communication, the stack itself, and a PRO package. Depending on the engineer's needs, there are several protocols available as an add-on, as well as the embOS/IP PRO software which adds a device driver, web server functionality, and email client for extended communication via Internet.

Additional modules



Device driver



WiFi support












CoAP client/server



DHCP client



DHCP server



DNS client



mDNS server



FTP client



FTP server












Loopback device






MQTT client



NetBIOS Name Service






RAW Sockets



SMTP client



SNMP Agent



SNTP client


















Web server





Explanation of the technical terms

ACD (Address Collision Detection)

The embOS/IP ACD module allows the user specific configuration of the behavior if an IPv4 address collision is detected. This means that more than one host in the network is using the same IPv4 address at the same time. This is discovered sending ARP discover packets to find hosts with the same addresses in the network. 

ARP (Address Resolution Protocol)

Communication between specific Ethernet participants is done in knowledge of their hardware addresses (MAC). ARP (Address Resolution Protocol) is a protocol to resolve the MAC address behind an IP address in a network by sending broadcast ARP requests, asking the client with the desired IP address to answer back with its MAC address that is needed for further direct communication between these two Ethernet participants.


The embOS/IP AutoIP module adds the dynamic configuration of IPv4 Link-Local addresses to embOS/IP. This functionality is better known as AutoIP. The AutoIP implementation covers the relevant parts of the RFC 3972. In general, AutoIP is a method to negotiate a IPv4 address in a network without the utilization of a server such as a DHCP server. AutoIP will try to use IPv4 addresses out of a reserved pool from the addresses to to find a free IP that is not used by any other network participant at this time. To achieve this goal AutoIP sends ARP probes into the network to ask if the address to be used is already in use. This is determined by an ARP reply for the requested address. Upon an address conflict AutoIP will generate a new address to use and will retry to use it by sending ARP probes again.

DHCP (Dynamic Host Configuration Protocol)

DHCP stands for Dynamic Host Configuration Protocol. It is designed to ease configuration management of large networks by allowing the network administrator to collect all the IP hosts soft configuration information into a single computer. This includes IP address, name, gateway, and default servers. Refer to [RFC 2131] - DHCP - Dynamic Host Configuration Protocol for detailed information about all settings which can be assigned with DHCP. DHCP is a client/server protocol, meaning that the machine with the DHCP database serves requests from DHCP clients. The clients typically initiate the transaction by requesting an IP address and perhaps other information from the server. The server looks up the client in its database, usually by the client's media address, and assigns the requested fields. Clients do not always need to be in the server's database. If an unknown client submits a request, the server may optionally assign the client a free IP address from a pool of free addresses kept for this purpose. The server may also assign the client default information of the local network, such as the default gateway, the DNS server, and routing information.

DNS (Domain Name System)

Since IP addresses in a large network or even the internet are hard to remember, the Domain Name System provides a mechanism to resolve the IP address assigned to a domain from a DNS server. This can either be an internet DNS server, resolving requests for a domain into the assigned IP address or even a local DNS server that might be part of an Active Directory infrastructure, answering local name requests to find out the IP address of a company internal server as well as forwarding requests not known to its own database to an internet DNS server.

ICMP (Internet Control Message Protocol)

The ICMP (Internet Control Message Protocol) can be used to determine the status of participants in a network by providing the possibility to send test data to another client and receiving an answer to that. This way ICMP provides a simple way to determine the availability of another network participant. Typically ICMP is a good test when it comes to problems in a network as a first test to check if the other side is generally available. On most operating systems the simple command "ping" can be used to utilize ICMP. Most ICMP clients provide important statistics such as the "ping" that shows the responsiveness of a network between two participants and indicates the time necessary for a request to be answered.

IPv4 (Internet Protocol v4)

The IPv4 (Internet Protocol version 4) is the main protocol used in nowadays networks and the internet. IPv4 is typically presented in a dotted decimal form of four numbered blocks with values from 0 to 255 . Each block is presented by one single byte, resulting in a block of four bytes when being presented in hexadecimal. Combined with a netmask of the same characteristics, network segments can be built to separate a network infrastructure into smaller blocks. For example, reserved ranges can be freely used for private networks such as a home network. Furthermore, global ranges can be assigned which are maintained by the IANA (Internet Assigned Numbers Authority) department that is also part of the ICANN (Internet Corporation for Assigned Names and Numbers).

Loopback Device

The loopback device registers an interface with the address that allows accessing services on the same device. This allows a client to access a server resource on itself.


Multicast is a technique to distribute a packet to multiple receivers in a network by sending only one packet. The handling of who will receive the packet is not done by the sender but instead is done by network hardware such as routers or switched hubs that will duplicate the packet and send it to everyone that participates the chosen group. The target does not actively participate by sending a join request. The network hardware periodically broadcasts membership queries throughout the network that have to be answered with a membership report in case we want to participate in the queried group.

RAW Sockets

RAW sockets describes the possibility to freely send and receive data not using typical protocols such as TCP and UDP and their overhead. RAW sockets can be used to define and use a new protocol as the data can either be sent with a typical IP header being generated for data to be sent or completely defining the entire packet data excluding the transport layer header such as the Ethernet header for own purposes. This allows implementing new protocols as well as building hardware that is able to accept incoming data that does not rely on TCP or UDP protocol or even to build network traffic capture devices that log the incoming data.

TCP (Transmission Control Protocol)

TCP (Transmission Control Protocol) is a connection oriented protocol used between two network participants where one participant acts as server, listening to incoming connections and the other one acting as client, establishing a connection to the server. Once a connection is established, both sides are able to send and receive freely. TCP is secured against packet loss by using a handshake mechanism known as "ACK" not necessarily relying on only sending one packet per ACK. Packets that are lost during a session, can be recovered as each side knows which data has been ACKed by the other side as received and can retransmit the lost data. TCP is the right protocol for all kind of data transfers where the data content is important and no data might get lost. TCP is used by many application protocols such as HTTP, FTP, SMTP and many others.

UDP (User Datagram Protocol)

UDP (User Datagram Protocol) is a connectionless protocol that can be used to address data to one network participant by sending to its IP address directly or to distribute data to the whole network by sending data to a network broadcast address. UDP does not recognize lost packets but is faster due to not maintaining a session. It is typically used for applications that rely on throughput, such as live video/audio streaming for which it does not matter when a packet gets lost in between. UDP broadcasts are typically used by applications where the location of the other side is yet to be discovered. Typical samples for such applications is a DHCP client searching for a DHCP server or a client trying to discover one or more devices with yet unknown addresses in a network.

VLAN (Virtual Local Area Network)

VLAN technology can be used to separate multiple devices operating on the same physical network into completely separated networks without seeing each other. A typical usage would be to have 2 departments separated from each other but using the same infrastructure such as a shared switch or router. Only devices using the same VLAN ID will be able to see each other. For this to happen 4 bytes are added in front of the packet type field in the Ethernet frame pushing the original packet type field back by 4 bytes. The Ethernet frame will still be of a maximum length of 1518 bytes including CRC which means that instead of a maximum of 1500 bytes that can be transferred, the amount of bytes that can be transferred per Ethernet frame will shrink to 1496 bytes per packet. VLAN tagged packets are typically forwarded by any switch since the type field has simply been replaced and in most cases only the destination MAC, source MAC and packet type is checked. In this case the packet is simply of an unknown protocol and will be forwarded by the switch. 

embOS/IP Drivers

The IP stack embOS/IP does not contain any hardware dependencies. These are encapsulated through a hardware abstraction layer, which consists of interface functions. All of these functions for a particular Ethernet controller are typically located in a single file, the embOS/IP driver. More information about these functions can be found in the embOS/IP manual.

Range of Supported Ethernet Hardware

The interface has been designed in such a way that it should be possible to use the most common Ethernet controllers as external chips and part of microcontrollers.

Available embOS/IP Drivers

The following Ethernet drivers are available for embOS/IP:

Device Driver Part #
NIOSII TSE NIOSII Altera Triple Speed Ethernet (TSE) (10/100MBit) 7.01.52
AX88180 ASIX AX88180 7.01.49
AT91CAP9 CADENCE 7.01.47
AT91RM9200 Atmel AT91RM9200 7.01.18
AT91SAM7x CADENCE 7.01.47
AT91SAM9260 CADENCE 7.01.47
AT91SAM9263 CADENCE 7.01.47
AT91SAM9G20 CADENCE 7.01.47
AT91SAM9G45 CADENCE 7.01.47
AT91SAM9X25 Atmel AT91SAM9X 7.01.19
AT91SAM9X35 Atmel AT91SAM9X 7.01.19
AT91SAM9XE Atmel AT91SAM9X 7.01.19
AVR32UC Atmel AVR32UC 7.01.30
DM9000 (external) Davicom DM9000 (external) 7.01.06
i.MX25x Freescale i.MX25x 7.01.39
Kinetis K60 Freescale Kinetis 7.01.33
Kinetis K70 Freescale Kinetis 7.01.33
MCF5223x Freescale MCF5223x 7.01.25
MCF5329 Freescale MCF5329 7.01.14
XMC45xx Synopsys 7.01.28
KSZ8851SNL (external) Micrel KSZ8851SNL (external) 7.01.43
ENC424J600 (external) Microchip ENCx24J600 (external) 7.01.34
ENC624J600 (external) Microchip ENCx24J600 (external) 7.01.34
LPC17xx NXP LPC 7.01.05
LPC18xx Synopsys 7.01.28
LPC23xx NXP LPC 7.01.05
LPC24xx NXP LPC 7.01.05
LPC32xx NXP LPC 7.01.05
LPC40xx NXP LPC 7.01.05
LPC43xx Synopsys 7.01.28
H8S2472 Renesas H8S2472 7.01.09
RX62N Renesas EtherC 7.01.31
RX63N Renesas EtherC 7.01.31
RZ/A1 Renesas RZ/A1 7.01.53
SH7670 Renesas SH7670 7.01.27
V850_D70351x Renesas V850_D70351x 7.01.35
V850JGH3 Renesas V850JGH3 7.01.38
LAN9115 (external) SMSC LAN9xxx (external) 7.01.20
LAN9118 (external) SMSC LAN9118 (external) 7.01.07
LAN91C111 (external) SMSC LAN91C111 (external) 7.01.21
LAN9215 (external) SMSC LAN9xxx (external) 7.01.20
LAN9221 (external) SMSC LAN9xxx (external) 7.01.20
LAN9221i (external) SMSC LAN9xxx (external) 7.01.20
MB9Bx10T Synopsys 7.01.28
STM32F1xx Synopsys 7.01.28
STM32F2xx Synopsys 7.01.28
STM32F4xx Synopsys 7.01.28
STM32F7xx Synopsys 7.01.28
STM32H7xx Synopsys QOS 7.01.56
STR912 ST STR912 7.01.04
AM335x TI CPSW 7.01.48
LM3S6965 TI LM3S6965 7.01.22
LM3S9B90 TI LM3S9B90 7.01.23
TM4C (Tiva C) TI TM4C (Tiva C) 7.01.50
TMPM369 Toshiba TMPM369 7.01.36
Zynq-7000 CADENCE 7.01.47