USB is now a mature technology yet many people are not using it since they perceive it as “too complicated.” To date, all USB books and most USB technical articles have presented USB as a “technical wonder” and the reader is flooded with details such as packet types and descriptor parsing. Not surprisingly, many people who could take advantage of USB are holding back. This paper treats USB as a tool that can be used to solve real world problems in embedded systems design.