Skip to content


Subversion checkout URL

You can clone with
Download ZIP
eXtreme Feedback Device
Java Assembly C++ JavaScript Shell
Branch: master


h1. eXtreme Fedback Device

The aim is to bring the feedback from the continous integration build
faster to the developer.
For this a microcontroller (PIC18Fxx5x) controls some indicators (typically 
three LEDs mimicing a traffic light). The host runs a java program that
polls the CI build server and tells the microcontroller via usb which
LED(s) to light.

The device has its own official USB address (0x1d50:0x6039), thanks
to Openmoko Inc. (see ).

The USB firmware is now extracted in the spin-off project . It is used as a git submodule
in this project.

h2. Project Setup

Clone the sources and initialize the submodule:
$ git clone git://
$ cd XFD
$ git submodule init
$ git submodule update

h2. Building

To build: Run make in the top level directory like this:
$ make

Needs to compile: make, gcc++, javac, maven, gputils
Needs at runtime: java, libusb-1.0 (on Linux), WinUSB driver (on Windows)

You will find the firmware under device/XFD.hex, flash your PIC with it.

The program for your host will be a jar file under buildmonitor/target
named buildmonitor-*-jar-with-dependencies.jar. Start it with a command
line like this:

$ java -jar buildmonitor-*-jar-with-dependencies.jar

Note: On Windows (before Windows 8) you need to install the WinUSB driver
for generic USB devices once before you can use it. You can use Zadig
( for that purpose.

h2. Contents

firmware		git submodule contains the USB firmware
device			main routine and USB descriptor for this device
host			C++ executable and some demo scripts, mainly used
			to test the hardware and firmware (Linux only)
java/usbleds		usb leds java driver (tested on Linux and Windows 7)
java/buildmonitor	main program with the build monitor
hardware		device hardware

See also the file CREDITS.

master:		main branch, uses PIC18F13K50
18f2550:	a secondary branch, based on PIC18F2550, mostly for reference
		and for sentimental reasons (I started in this branch).
hid		a different approach to access the device on windows:
		it is declared as a HID and accessed with the HID.DLL

h2. Binaries Download and CI Build

A CI build of this project runs at CloudBees:

The latest snapshot build is archived to this repository

You can download the latest snapshot build results from the snapshot repository or from the build job itself (if it is currently enabled).

h2. License

    Copyright (C) 2012  Holger Oehm

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <>.
Something went wrong with that request. Please try again.