diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,8 +51,9 @@ endif (QWT_USE_STATIC)
 # includes
 include_directories(${QWT_INCLUDE_DIR})
 
-# wrap UI files
+# wrap UI and resource files
 qt5_wrap_ui(UI_FILES mainwindow.ui portcontrol.ui about_dialog.ui)
+qt5_add_resources(RES_FILES misc/icons.qrc)
 
 add_executable(${PROGRAM_NAME} WIN32
   main.cpp
@@ -64,6 +65,7 @@ add_executable(${PROGRAM_NAME} WIN32
   framebuffer.cpp
   portlist.cpp
   ${UI_FILES}
+  ${RES_FILES}
   misc/windows_icon.rc
   )
 
diff --git a/misc/icons.qrc b/misc/icons.qrc
new file mode 100644
--- /dev/null
+++ b/misc/icons.qrc
@@ -0,0 +1,5 @@
+
+    
+        usb_icon.png
+    
+
diff --git a/misc/usb_icon.png b/misc/usb_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..679f4171a1072b39efa1508487542d856e143be2
GIT binary patch
literal 816
zc$@(+1JC@4P)pe5)
z%$#%QIzC@`;NE-Q^Sr2WwoH6!w>1nqH;9&JKt6?54N{jeUzC7M)e43oZ3sniM
zlIL(sf)z9?iiA
zI3#Uhlkqfu7<1pYN|aW>65KLzH9kIxk3O6jGydbM#O7oOAIf>&IV0bev?=5MIrwJG
zxX-5{yezg$T7Jf=b^{uF>q2ZO;Iy?KEW@XGyZ-$<9Fg|_nWRxf*Wec%#%|nf9r%u^
zA5tDSyMr&(>)D+A!JIYp)UB6h3S5w)lc!jm#s>u_U4+e2n)KtklyWx;`YFmVM(Uqy
zQd;iBXuH9Ai{QJ{5VTf05!UbrUYv%nJT!{nIq6I?A$hjJVyVgRc%u3g1nr77zmJ2X@6gozs;Z_2JuUsWr!T1GS%atbT)d>dP5mIk25
z_#jNhrWAl~ISJPAnN)m#@8rbY)@VFaw?$Grt(9f?w#*5;EdUKhwLh+wzH4=B0J8W8
uyE3l*+DRcn5ClOG1VIo4K@bGNk!`6
+#include 
 #include 
 
 #include "portlist.h"
@@ -53,6 +54,7 @@ void PortListItem::construct(QString nam
     {
         text += QString("[%1:").arg(vid, 4, 16, QChar('0'));
         text += QString("%1]").arg(pid, 4, 16, QChar('0'));
+        setIcon(QIcon(":/usb_icon.png"));
     }
     setText(text);
     setData(name, PortNameRole);