Showing results for 
Search instead for 
Did you mean: 
Patrick Warichet
Cisco Employee
Cisco Employee


I participated to on the Cisco Live Network for several years, quickly deploying a complete network infrastructure in a large facility like the Orange County Convention Center in Orlando or the Moscone Center in San Francisco comes with a variety of challenges. With more than 200 access switches deployed cabling mistakes are common.

Rapidly identifying connectivity issues is highly desired. This is usually done by using a Fluke testing device, like the LinkRunner™, those testing devices are great and gives plenty of information about link quality and signal strength, etc… but most of the time we just need to identify the devices and the port on the other end of the cable.

We can use a laptop with Wireshark and wait for a CDP packet that will identify the device and port at the other end, this forces our deployment team to carry laptop all the time and is impractical.

The deployment team are engineering students that are part of the Network Academy program, and I wanted to provide them with a tool they could build, test and experiment with prior to the San Francisco event.

For this purpose I thought of using the Arduino Ethernet with the Power over Ethernet (PoE) module, since all our access switches are PoE enabled, it removes the need for battery and make the device very compact.

I also needed a display and some buttons for navigation. I found the Adafruit Industry 16x2 LCD display perfect for this purpose. The display can be ordered either RGB positive or RGB negative and include a 5 buttons keypad to facilitate menu navigation. It uses an I2C bus which only requires 2 pins for the data, leaving the remaining I/O pins on the Arduino available for other purposes.

The assembly instructions are clear, easy to follow and require only a low power soldering iron, some solder and a small cutting plier. The LCD shield can be assembled in less than an hour and does not require any particular skill.

Adafruit provides a library for the display and buttons including debounce functions and some useful examples. The library can be installed into the Arduino IDE very easily.

Because the embedded PoE module on the Arduino is higher than the other circuits, a set of stacking headers is required to lift the shield above of the Arduino board.

I found out that Chris van Marle already created the code for a similar project but it was incomplete and required some changes to fit our particular needs. I am including a link to his blog for reference:

Using Chris’ code as a base for the project I included all the necessary functions to display the relevant information on the LCD screen.

I wanted to keep the cost to less than $100, so we could provide a device to every Network Academy student. We also wanted to offer this device as a small gift to help them build their networking experience. For this purpose,  we designed an enclosure for the projects with the Cisco Live logo, The case is a snap-on type and does not requires any screws.  

General Code Overview

As soon as the Arduino is powered by PoE, it starts its initialization procedure then attempts to get an IP address from a DHCP server, if successful; it displays the IP address it received. It then waits for a CDP packet to arrive (CDP packets are sent every 60 sec by default) once a valid CDP packet is captured it parses the different Type-Length-Values (TLVs) and displays the following information:

  • Device Name
  • Device IP address
  • Interface
  • Platform
  • Mac-address
  • Software version
  • Native Vlan
  • Speed and Duplex

I included scrolling functions to navigate large strings, e.g. “Interface GigabitEthernet 1/0/5” that exceed the 16 characters limit of the display. The final code for this project can be pulled from the following github repository

ArduinoCDP.ino is the main file that can be opened with the Arduino IDE 1.0.5

Here are some screenshots of the final product used during Cisco Live San Francisco 2014.

ArduinoCDP Front View

ArduinoCDP birdeye viewArduinoCDP side view

Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: