Traditionally, 8-bit microcontrollers were challenged by the interface and program memory so that adding Ethernet for communication to the application was not feasible. There were two main reasons. First, adding Ethernet could be expensive. Integrated, single chip alternatives were not available. Second, Ethernet controller chips were designed originally for the PC industry and used a foreign interface increasing design complexity and consuming occupied board space. Finally, due to the number of I/O required to interface to the Ethernet controller, the number of available I/O for other control functions were severely limited. Another challenge was the program memory. Given that a few years ago, 8-bit microcontrollers were limited to 14-16Kbytes of program memory, TCP/IP stack footprints were simply too large for the available code space on the MCU.