VM110 v VM167 interface protocols

Could someone in Velleman tell me how similar the interface protocols are between the VM110 (K8055) and the VM167 modules?

I would like to interface the VM167 to a Raspberry Pi because it is a more appropriate physical size than the much larger VM110.

However, while I have a working Linux driver library for the VM110 and I have the source code for the DLL for the VM167, I do not speak Pascal and I am find it hard to translate the protocols.

What I would like to do is adapt the VM110 code to use on the VM167 because the USB code is tested and works.

Is there a formal protocol document available for the USB connection to the two modules?


The only documents available for the VM167 are the “usermanual_vm167.pdf” and the “vm167_dll_manual.pdf” included to the package “SDK Rev 1.10.45” on the downloads page velleman.eu/support/download … M167&type=

The main difference between the DLL functions between the VM110 and VM167 is that in the VM167 the card address is used as an argument in the functions:
VM110: int ReadAnalogChannel(int Channel)
VM167: int ReadAnalogChannel(int CardAddress, int Channel)

Thank you for your feedback.

It is a shame that so many of the modules are not “Linux friendly” as many people are using that operating system for small embedded projects.

I will take a look at the information that you have linked to and see if I can find some answers there.

If I am unable to deduce the USB level packet protocol, I will have to select an alternative product.


Hi, I made a C port of the pascal code for Linux, it uses libusb as backend and should not need any big work outside the CMakeFile to get it running on a raspberry pi.