32 Channel USB GPIO Module

Weight: 0.3 lb.


In Stock and Ready To Ship
Within 24 Hours

 This product is RoHS Compliant.

Numato’s 32 Channel USB GPIO module is low cost easily deployable solution for connecting your PC to other electronic circuitry through USB. No USB specific knowledge is required to set up and use this module.



  • 32 TTL (3.3V) compatible GPIOs available.

  • All GPIOs can be individually configured as input or output.

  • Can be controlled by using standard serial console applications or custom applications.

  • No USB protocol knowledge required

  • On board controller can be reprogrammed for custom applications

Downloads for V7 and newer boards

Download User Manual

Download Driver

Downloads for V6 and older boards

Download Driver

Download User Manual

Common Downloads

Sample Code Library


Can use this device in Ubuntu?

Can I use this device in Ubuntu(14.04)?

I have confirmed that the device is recognized by the computer with Ubuntu(14.04) installed

But I can not find any code examples(Python or C) that can use Linux on your site.

How can I do?


Re:Can use this device in Ubuntu?

Unfortunately, we don't have sample code specific to Linux at this time but the board will work with most Linux distributions. There is in fact Python code available at http://numato.com/sample-code-library . You should be able to make it working on Linux relatively easily. 

how to work input gpio mode read switch

I hvae numato 32 relay board.
I am using visual basic express 2010
I worked gpioOutput mode.
I don,t work input mode .
can I do input mode (switch vdd + volt )
what can ı DO ?

thank yo for helping ?

Can I use temperature sensor in Linux??

Can I use temperature sensor(DS18B20) in Linux(Ubuntu)???

Re:Can I use temperature sensor in Linux??

I'm not sure what exactly you mean by the question. To find out about device support in Linux, please checkout Linux forums. If the question is whether 32 Channel relay module can read temperature sensor, the answer is yes, with analog inputs as long as the sensor outputs analog voltage.

Some commands don't work

I tested several commands on my 32 ch USB gpio board to find some of them don't work.

Commands that work: ver, gpio set x, gpio clear x, gpio read x
Commands that don't work: id set, id get, gpio iomask, gpio iodir, gpio readall, gpio writeall
Commands I haven't tested: adc read x

The current firmware version of the board is 00000001.
As long as I have tested, the board doesn't accept more than 17 characters.
For example, when I type "gpio writeall 00000000", the board echoes "gpio writeall 000", but the following characters don't appear in the terminal.
As a result, the command doesn't work at all.

I would like to know if there is any way to solve this problem.

Re:Some commands don't work

Hi, All those commands should work if the firmware is updated to the latest version. Please contact us using this form for more details on updating the firmware.

Getting always ON (gpio read)


I connect the device and execute the following:

(First command executed to set all the GPIO's to read)

>gpio iodir FFFFFFFF
>gpio read 0
>gpio read 0
>gpio read 0

Why does the read command return 1 after the first read command? There is nothing connected on GPIO port 0 (or any other).


Re:Getting always ON (gpio read)

When the IOs are left open, they are in floating state and does not necessarily read zero rather it will be more or less random. Connect some signal (GND works for testing) and try reading again.

Seperate Channels

I am looking for an input board like the 32 channel USB with analog input capability.
However, I need each channel to have its own, independent, ground. That is, no common ground shared between input channels. This is because the inputs are coming from different units where the only common between any of them is the safety ground on the AC power plug. Plus some of the analog channels change polarity frequently.
Thoughts / suggestions?
Mike G.

Re:Seperate Channels

Hi Mike, For the scenario you mentioned, the inputs should be somehow galvanically or optically isolated. And the fact that the signal is analog makes everything complicated. Digital signals can be isolated using simple optocouplers but analog signals are harder to isolate without introducing noise. Unfortunately we have no products that meets this requirement at this time.

Multiple boards on one PC

Can I use multiple 32 channel USB GPIO boards on one PC? How does the software differentiate the boards...if using the same software?

multiple boards

Yes, each board when connected shows up individually in Windows device manager. There you can assign whatever COM number you like. If however you pull the usb and insert into a different input, Win device manager will assign a new #.

Same software: A single program, created say in VB, can control several COMs. So again, Yes.

Is this chip able to use for raspberry pi?

I'm starter at programming, and I already saw that this chip is available in linux(at comments), so I was using sample code(python) that u already uploded in 8ch usb-gpio module page, in raspberry pi. but program cannot be read. Here is error.

> Traceback (most recent call last):
> File "gpioread.py", line 2, in
> import serial
> ImportError : No module named serial

What i have to do? plz answer as soon as possible.

Re:Is this chip able to use for raspberry pi?

Many customers have reported that they were able to use our GPIO/Relay boards with Raspberry Pi successfully. This particular error you see is because pyserial package is not installed on your pi. Please visit http://pyserial.sourceforge.net/ for more details.

LINUX / ANDROID Drivers fro USB GPIO Boards

Are There Linux or Android Drivers available for the USB GPIO boards?

Re: LINUX / ANDROID Drivers fro USB GPIO Boards

This board does not require a driver to work with Linux as CDC driver is already available with most distributions. We haven't tested with Android but if CDC class driver is available this board should work.

Analog Inputs

The manual for this board mentions reading analog inputs but the page does not. Are there analog inputs on this or is the manual wrong? If there are analog inputs what are the specifications?

Analog Inputs

GPIO 0 to 7 can be used as inputs as well as outputs.
They can read both analog (closed or open circuit) and digital (voltage) by varying the command. Read the pdf for 16 channel gpio = same thing plus 16 more channels.

Code for C#

If you have a simple code on C# ?
Thank you.

Re:Code for C#

There is a VB Express application available at http://www.numato.com/productdoc/usbrelay/RelayTest_VBExpress2008.zip . You should be able to use that as a reference for C# app.

What is the clock speed of this module?how to generate delay?

i have started interfacing this with my pc and i am able to get input output from Lazarus.
now i want to interface servomotor LIQI drive with this, it has two pin for controlling speed & direction,so to contol speed i need to give No of Pulses with constant width. how can i generate pulses with desired width? how can i generate delay of my choice?

Re: What is the clock speed of this module?how to generate delay

Delay needs to be included in the application program. The module itself does not support adding any delays.

thankyou for Reply. As i have

thankyou for Reply. As i have tried and succesfully able to generate pulses. but it is too slow i want to generate with higher frequency. as i tried to generate pulses without delay to rotate motor at max speed. speed but that is not sufficient for my project. how can i increse freq.?

Re:thankyou for Reply. As i have

It is hard if not impossible to make high frequency signals by toggling IOs over a USB link. There are long latencies associated width USB and are unpredictable. The best way to do is to modify the firmware to generate the signal in the microcontroller and use USB to set the frequency parameter of that signal. Source code for this product can be obtained by getting in touch with Numato at http://numato.com/contactus

Maybe if you increase the

Maybe if you increase the lenght of the pulse?

Re:thankyou for Reply. As i have

USB has inherent limitations in terms of latency which effectively limits the frequency that can be generated by switching the GPIOs from host. For higher frequencies the firmware need to be customized.

Is there any way that this

Is there any way that this device can be controlled using LabVIEW? How?

Re:Is there any way that this

There is a user contributed Labview driver available at http://www.numato.com/productdoc/usbrelay/Numato_Relay%20Control.vi. Though this driver is written for USB Relay module, it should be easy to modify to suit any of Numato's USB products.

Hi, I m new to the

I m new to the programming but i want to know how can i use this module with lazarus. i want to take input output from this device but i have failed this process. plz tell me the solution. Any program or any steps which i should follow. is possible plz explain it in simple form so it would be easy for me. plz reply as soon as possible. Thanking

Re:Hi, I m new to the

The fundamental of using these boards with any language is that they do appear in operating system as a serial port. So all that you need to do is use the APIs provided by the language to open the serial port, write the commands. Some languages may have built in APIs and in other cases you may need to use WIn32 APIs(Assuming Windows is used). 

First step in the process should be learning how this is accomplished in sample programs (Perl/Python/VB) available at http://numato.com/8-channel-usb-gpio-module (Except for the number of GPIOs, programming philosophy is same for all GPIO modules). Then visit the page http://wiki.freepascal.org/Hardware_Access and scroll down to the topic "Serial Communication" and understand how Lazarus supports Serial Communication and use their APIs. This should be pretty straight forward, please let me know in case of questions.

hi how can i use this module

how can i use this module in lazarus (PASCAL) software to develop my application.

plz give me some example in it.

Re:hi how can i use this module

If your PASCAL compiler supports using WIN32 API or any other APIs to open and communicate with serial ports, you should be able to control the GPIOs from your application. The compiler must be able to create a WIn32 executable.

real time considerations

I am thinking about using this with stepper motor drivers. To do that I need to supply a clock to the driver to trigger a step on the motor. Would you expect to be able to wiggle 2 or 3 bits at around 10KHz at a close to a 50% duty cycle from a fairly weak pc running linux?

Re: real time considerations

Toggling GPIos at 10KHz is not possible with the stock firmware because of the inherent delays in USb and driver stack. This should be achievable using a custom firmware though.

Pull-Up resistors available on board?


Does the Module have solder-jumpered Pull-Up resistors on the board like the 8-channel module?


Re:Pull-Up resistors available on board?

No, this board doesn't have pull up resistors on board. That will cause too many jumpers to be on the board.

Ok, so no chance to connect

Ok, so no chance to connect open collector outputs to the GPIOs without additional hardware (external pull.ups)?

Re:Ok, so no chance to connect

With the current version of the board, external pull up is necessary. I'll request the development team to include pull up resistors in next revision, but don't know when it is really going to happen.