Donut USB Interface Development Board

The first of the promised USB development boards has been released. The Donut Board is designed to be an easily expandable board on which to breadboard USB interfaces, in order to ease the development of USB-based devices. The Donut board is based on the Freescale (formerly Motorola) MC68HC908JB8 microcontroller, which has an integrated USB interface, and into which custom built firmware can be downloaded in order to customize the USB interface to user needs. GNU/Linux-based software to control the USB interface from the PC end of the USB link is also under development, based on the great articles by Greg Kroah-Hartman, published during 2004 in Linux Journal.

This project is currently under rapid development. The CAD files are available below. All files are released under theGNU General Public License. This board was developed using Eagle 4.13, running on GNU/Linux.

Firmware development is being accomplished with freely available tools from P&E Microcomputer Systems.Because the MC68HC908JB8 has internal monitor firmware, and user firmware resides in internal flash memory, the Donut Board has a port which allows theMC68HC908JB8 to be remotely programmed and debugged from a PC, using the MON08 Multilink cable from P&E.

board pix
Figure 1. Donut Board mounted in a Pac-Tec case. Large version of this picture here.

bare board pix
Figure 2. Front side of bare Donut Board pcb. Bare boards arrived 26 April 2005.
Large version of this picture is here.

bare board rear pix
Figure 3. Back side of bare Donut Board pcb. Large version of this picture is here.

donut board cad image
Figure 4. This is the CAD drawing for the Donut USB Transceiver Test Board. The right 2/3 of the board is available for breadboarding.

Contents File type File name
Specification pdf file donut.pdf
Schematic png file of schematic donutpix2.png 04-05-2005, 269k
PCB layout, large png file of PCB donutpix1.png 04-15-2005, 128k
CAD source files – DOS/Wxx zip of Eagle 4.13 files donut.zip04-15-2005, 53k
CAD source files – GNU/Linux gz of Eagle 4.13 files donut.tar.gz04-15-2005. 49k
Assembly source files zip of firmware source code 05-11-2005, 26k
Object files zip of firmware object code donutobj.zip04-15-2005, 0k
Manufacturing zip of Gerber/Excellon/text donutmfg.zip04-15-2005, 122k

NOTE: to unpack the Eagle file in Linux, make a donut directory, copy the donut.tar.gz file into it, and then invoke tar xvzf donut.tar.gz

This will unpack the entire set of CAD and manufacturing files in the donut directory.


Status report, 11 May 2005. I have posted a very preliminary firmware file,, to the project library. This is just the P&E Micro example file, with the manufacturer and product ID fields set to an arbitrary value. The license on their file is a BSD style license. Yes, we are working on full functional firmware, but this and the gnu/linux driver software go hand-in-hand, and we are doing both simultaneously.

Viewing the Donut board with the above code flashed into it shows up as follows when viewed using usbview from thegnu/linux system. Note the arbitrary manufacturer code of 1122 and the product ID of 3344.

usbview pix

Status report, 8 May 2005. The first article has been tested and responds to the gnu/linux client. We used usbview on a stock SuSE Linux 9.3 system to watch the usb behavior, and all of the correct data was received. This is great news, but it did not happen without a few bumps along the way.

We have been using stock commercial gnu/linux distributions, in order to make sure that what we see is what the normal user would see. The first two tests were unsuccessful, on earlier releases of the same software. The first attempt was made with an installation of SuSE 9.0 – one which works well with all of our store-bought usb devices, and when we plugged in our Donut board it locked up the entire system with a kernel panic. This is not good. The next attempt was with an identical system using SuSE 9.2, which once again works fine with all of the store-bought usb devices. This time there were no adverse reactions on the gnu/linux box, but neither did usbview see the Donut board. An identical system was loaded with the just-released SuSE 9.3, and this time we had success.

From reading Greg Kroah-Hartman’s (Greg is the maintainer for the kernel usb interface) I see that there have been many updates and fixes to the usb functionality in the last year. As such, if you are intending to develop gnu/linux usb tools, it pays to have a recent kernel and tool set. You are hereby forewarned.

USB Manufacturers Code – US$2500.00. Here is one of those corporate standards body uglinesses which rankle those of us who believe in free software. It turns out that in order to get a manufacturers code assigned for a USB interface, one must be a member of the trade organization, which costs US$2500.00 per year. You can look here for the details: For commercial vendors, this is a cost of doing business. For Free developers, this is a tax on freedom. So do not be surprised that we are using “dummy” manufacturers codes in our development. I probably should not suggest what the reader could or should do. I am not much of a fan of anarchy, but neither will I pay US$2500.00 per year to avoid it here.

Status report, 3 May 2005. Two Donut boards have been built, and both worked right the first time. They were flashed with the P&E Micro example code, and responded properly via the USB interface, as checked with the P&E Micro example Wxx client. We are currently working to get the linux PC software set up to speak properly to the Donut board over the USB interface, and to expand what the internal firmware can do. We will report progress as it happens. As soon as we have functional and stable code, it will be posted here. Note that the source code for the P&E Micro example code is released by them using a BSD type license, rather than GPL which is the usual license for what we design and release ourselves. See the assembly code file for details.

The only issue we found during assembly of the boards is that it really does require a binocular microscope to place the 0603 size passive components by-hand. They are small enough that on a couple of occasions, some of the tiny resistors or capacitors fell right through holes in the board. Other than that, the assembly was very straightforward. Note that the board is shown mounted in a Pac-Tec CM69-120 enclosure, for which the size and hole pattern was customized.

Hardware designer: Diehl Martin

Note: The source code for all designs shown here is released under the GNU General Public License.