[ Velleman K8055 USB experimental board on NetBSD ]



Some kind of HOWTO for k8055 on NetBSD

Connected device is Velleman K8055 USB Experimental board:

5 digital inputs (0= ground, 1= open) (on board test buttons provided)
2 analogue inputs with attenuation and amplification option (internal test +5V provided)
8 digital open collector output switches (max. 50V/100mA) (on board LED indication)
2 analogue outputs:

* 0 to 5V, output resistance 1K5
* PWM 0 to 100% open collector outputs max 100mA / 40V (on board LED indication)
general conversion time: 20ms per command
power supply through USB: approx. 70mA

Operating system is NetBSD 3.0 on a i386

root@lone ~ # uname -a
NetBSD lone 3.0 NetBSD 3.0 (GENERIC) #0: Mon Dec 19 01:04:02 UTC 2005 builds@works.netbsd.org:
/home/builds/ab/netbsd-3-0-RELEASE/i386/200512182024Z-obj /home/builds/ab/netbsd-3-0-RELEASE/
src/sys/arch/i386/compile/GENERIC i386
root@lone ~ #

root@lone ~ # dmesg|grep uhidev
uhidev0 at uhub0 port 2 configuration 1 interface 0
uhidev0: Velleman USB K8055, rev 1.10/0.00, addr 2, iclass 3/0
uhid0 at uhidev0: input=8, output=8, feature=0
root@lone ~ #

So here is the problem. K8055 has chip 16c745-i/sp which in fact is gamepad controller
HID (Human Interface Device). I don't know if Velleman has done something wrong
or just usbhid(3) library on NetBSD is not complete/broken but I was unable to get
correct data via hid_start_parse()/hid_get_data()...
There is pretty well done libk8055 library which uses libusb (OS independent library)

The problem is that libusb works with /dev/ugenXXX devices and not with /dev/uhidx. I was
able to get it work by disabling the uhid/uhidev support in NetBSD kernel (GENERIC kernel has it built in)

....
# USB HID device
#uhidev* at uhub? port ? configuration ? interface ?

# USB Mice
#ums* at uhidev? reportid ?
wsmouse* at ums? mux 0
....
....
# USB Keyboards
#ukbd* at uhidev? reportid ?
wskbd* at ukbd? console ? mux 1

# USB Generic HID devices
#uhid* at uhidev? reportid ?


Now with recompiled kernel:

# dmesg|grep ugen
ugen0 at uhub0 port 1
ugen0: Velleman USB K8055, rev 1.10/0.00, addr 2

So NetBSD now recognizes it as usb generic device and now we can use libusb.

Get BSD version of libk8055 here.
Package also include k8055 command line tool. Now you can use it with shells scripts/cron jobs.

to be continued...

Nikolay Hristov


Resources:
linuxk8055.free.fr - first support of k8055 for Linux. Read the users posts.
libk8055 - rewritten k8055 as library. If you want to use this on *BSD try my version here. Fixed some compilation issues.
k8055 ueib - Another different implementation of command line tool and GTK2 program to control k8055 usb experimental board.
k8055 Java - az it says java support. Site is on Deutch.
libusb - OS independant usb library. Works on Open/Net/FreeBSD/Linux/MaxOSX....

all programs have local mirror accessible here


NetBSD