The Maxim USB Laboratory is a MAX3421E-/MAX3420E-based system using an ARM7 processor and example software. This application note describes the system and the software that runs it. Both a USB host and peripheral are implemented in the same ARM C code. This approach allows development and study of USB peripherals and embedded hosts with the advantage of having a reference device at the other end of the USB cable, all in the same C code.