8 Channel USB GPIO Module with Analog Inputs

Weight: 0.3 lb.


In Stock and Ready To Ship
Within 24 Hours


Numato’s 8 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.



  • 8 TTL compatible GPIOs available.

  • 6 Analog input channels (Pins shared with GPIOs)

  • 10 Bit Analog input resolution

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

  • 20ma Source/Sink capacity.

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

  • On board controller can be reprogrammed for custom applications.

Download User Manual

Download Driver

Sample Code Library

Test Application in Visual Basic Express 2008

Perl Sample Code

Python Sample Code


led ONBOARD usage

i'd like to ask what is the use of the led and th FWUP connector on the board
besides what i the use of the pins R8(or RB) 5,6,4,7 and GND, VDD among them
thank you

Read input and set/clear output

I wrote a program in C# Visual Studio 2012 to test the board.
I can do that one at a time :
read input from switch.
set/clear output to drive transistor or LED.

But for example :
I set the gpio7 to switch on the LED.
after I read to find the state of the switch on gpio2, the last command switch off the led.

It look like it is not possible to have 1 input on gpio2 and output on gpio7 working together.
Why is it not possible ?

Is there a way to do that ?


Re:Read input and set/clear output

Hi Morgan, it is possible to read the input status of  a GPIO without affecting the output status of any other gpio. Can you please share the piece of code that execute these command so we can review and give some recommendation ? Please use the page https://numato.com/contactus to share the code.

Question about Frequency and Duration of TTL Output

Hi, I am working on a project requiring an output of TTL signals with 3 usec TTL high voltage and period of around 65 usec. Is it possible that I use this device achieve it?

Re:Question about Frequency and Duration of TTL Output

3uS is too small of a pulse width to achieve using this module. 

Serial communication via I2C/UART


in schematic i see, that there are I2C and UART pins from PIC connected to the CONN_6 (RB5-RB7). Please, how i can drive them from PC. Or what is purpose of these borad's pins?

Re:Serial communication via I2C/UART

Those pins are not used in the current production firmware. They are left avaialble to to those who want's to customize the firmware. It is possible to write your own firmware and use those pins.

Looking for general data logger program to work with this device

I am creating a test rig system that must record 4 analog input voltages. 100hz sample rate is sufficient.

I don't want to write a program myself. So, I was hoping you can refer me to some software that is compatible with your GPIO device.

Re:Looking for general data logger program to work with this dev

Hi, we are working with third party developers to bring data logging and automation software that supports our products. It may take a few months before we can roll out them them though.

Reading analog values from IO6 and IO7

I am using this for an aquarium monitor, using 5 of the 6 analog inputs and all of the remaining high/low inputs. It's working great (using Visual Basic). I just thought I would pass some info along to other users for accessing IO pins 6 and 7 for reading analog values. I was trying to do a read specifying 6 and 7 as the target, but this did not work. I needed to use 4 and 5. i.e. the valid analog read values are 0-5, not 0-3,6,7 even though IO6 and IO7 are physically used. Maybe this was documented and/or expected by some folks, however for others like me that may not have noticed/expected this behavior, I thought I would share.

Re:Reading analog values from IO6 and IO7

Thanks for sharing the info. GPIOs 4 and 5 does not have analog capability. There is a table on page 5 of the documentation lists IOs capable of analog function

Re:Reading analog values from IO6 and IO7

My confusion resulted from comparing the table info shown on page 3 of the doc with this info that you reference on page 5. It was not clear that IO6 maps to ADC4 and IO7 maps to ADC5. I am thinking that the page 3 table that lists the values ADC5 and ADC6 should really be listing ADC4 and ADC5 (or am I not understanding something?).

Speed of operation

I would like to use the 8 channel USB GPIO for an application which will require to toggle a digital output every few milliseconds (maybe 10 ms). Is it possible to achieve this speed by means of sending properly timed SET and CLEAR commands? Which is the speed limit of the module?

Re:Speed of operation

The speed at which the GPIOs can be toggled depends on operating system, number of devices connected to the bus and many other factors. Above all, USB is not strictly deterministic, at least to say it is not deterministic enough to generate timed pulses over multiple transactions. When customers ask about the speed, we always say a few tens of toggles per second. But some customers reported as many as 150 toggles per second. But we can not claim any particular number because of the above mentioned non-deterministic behavior. In short, we would not recommend this product for creating pulses with timing in the order of milliseconds.

Is there support for win64?

I am thinking of purchasing this GPIO, however I would like to be driving this from a 64 bit Windows 7 operating system using Perl. I was looking at the Perl sample and noticed this:
if($Os == "MSWin32"){
use Win32::SerialPort;
print "Only Win32 Operating Systems supported at this time";
Is this still true?

Re:Is there support for win64?

The board supports both 32 bit and 64 bit Windows versions. But it is a little bit tricky to detect Win64 operating system in Perl.  So in summary, this Perl script supports only Win32 but it is possible to modify it to make it support Win64 if necessary.

Drivers for Mac

I bought the 8 channel adaptor and wish to instal it on Mac. Do you have drivers available for OSX

Re:Drivers for Mac

No driver needed for mac. Just connect the board and Mac OS will detect the board right away.

Firmware update

I have a version 4 board, can it be updated to version 5 so I can use the new commands? Please provide flash utility if one is available. Thanks!

Re:Firmware update

Would you please send a quick note to us through "contact us" page?

Reading contact switch status

I am looking for something that I can connect to the USB header on my NAS system board and read the status of the front-panel buttons (simple contact switches), and it looks like this device will fit the bill.

After reviewing this page, http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/robot/buttons_and..., I've come with the circuit diagram posted here -- http://blog.penurio.us/2013/08/im-thinking-of-building-this.html.

Will this work? Is there a better device for what I'm trying to do?

Also, how thick is this device? There isn't a lot of extra room in the NAS.


Re:Reading contact switch status

Hi There, I think this can be done much easier. The 8 Channel USB GPIO module comes with pull up resistors pre installed. To use them, all that you need to do is to solder the corresponding jumper for the IO where the switch is connected. External to the board, only the switch is needed. Connect the switch from the IO to Ground.  When the switch is not pushed, the IO will stay high and when the switch is pushed, the IO will go low. This change can be read by using gpio read command. I can draw schematic diagram for you if my explanation is too difficult to follow. Please let me know.

nice for playing around not great for heavy use

I got one of these about a year ago while waiting for my pi and it's fairly good. My main issue is if you pull the gpio as fast as the serial will let you the device will go off to nowhere land and need a power cycle. I slowed down my pulling and it still goes away about once a day. The pull up resistors are also tough to get but can be done by hand. I think with the PI A unit you are better off using that for most cases.

What is the analogue input voltage range?

Hi there, I have two quick questions.

1) What is the max voltage of the inputs when using this as an adc?
2) In what form are the voltages read out, i.e. do you get a reading in 'Volts' or 'arbitrary units' which have to be translated into volts?

Thank you.

Answering my own question...

Sorry, just spotted in the user manual the adc input is 5V max and the read out is 10 bit. I missed it the first time I read it for some reason, apologies!

How to install the driver at command line

Is it possible to install the driver at command line, to avoid installing manualy?

Re:How to install the driver at command line

Should be possible with pnputil (http://msdn.microsoft.com/en-us/library/windows/hardware/ff550419(v=vs.85).aspx).

How do I use to replace a momentary switch?

I now realize I should have purchased the 4 channel USB relay module but too late. I took delivery of this board and need help.

I have a separate circuit that presently utilizes a momentary push button switch for a 3v and less than 1 amp circuit. I want to replace the momentary switch with a switch controlled by a computer.

So I believe I now need to connect some kind of low volt relay to this board and I will have what I need. But I am a complete newbie. Could you please tell me what electronics I need to connect and where I need to connect. I have four of these switches so I am guessing I need:

- Four low volt relays (someone give me a part number that is available in US?)
- Connect each relay to the common gnd on this board
- Connect the other lead of the first relay to 100, 2nd relay to 101, and so on
- Now when I turn on 100 the first relay will trigger. When turn off power the relay will switch back open

The voltage I am switching is 3v and the amps is very low, below 1 amp.

Others have mentioned just using a transitor instead. But I have not been able to figure out how to use a transistor when the circuit I am switching is an independent circuit and does not share a ground.

Thanks in advance for any help!!!

Is this correct?

Re:How do I use to replace a momentary switch?

Did you check the possibility of connecting the GPIOs directly to the input through a resistor? If the input needs less than 20mA (this will depend on the input stage though) this should probably work. Can you please share the diagram of how the switch is wired currently and confirm if a pull up resistor is used ?


This is a very simple and convenient module. The only thing I think is missing is PWM outputs. This is an easy software feature to implement and with that, we could do anything.

Could you share example of using in Linux?

Ideally a C example but really anything would be helpful. Like to see setting port attributes, opening port, reading and writing from port.

Also I am using this to sense a momentary button that is pushed for a split second. I have four different buttons that can be pressed. I will be interfacing using a PC on a stick device that is not very powerful. Will I be able to poll fast enough to sense the press of one of the four buttons?

I plan on creating four threads that are in a loop polling the for the button press. It is pretty important that I do not miss the button being pressed.

Thanks for any help!!

Re:Could you share example of using in Linux?

A user submitted sample program is available for download at http://numato.com/productdoc/usbrelay/ReadUSB.tgz. This is written for USB Relay module but modifying it to work with GPIO board should be easy.

8 Channel USB GPIO Module

Can I get a drawing of this or 3D model, mechanical specs (i.e. board size, hole locations and weight) and part number/model number, something I can give to purchasing?

Re:8 Channel USB GPIO Module

The product SKU for 8 Channel USB GPIO Module GP80001 and you should be able to use it for internal reference. We can share the dimensions and other physical parameters but we don't have 3D model available at this time. Please contact us using the online form available at http://numato.com/contactus to get in touch with us.

B2B connector?

Hello - do you offer the 8 Channel USB GPIO module with a board-to-board connector for the GPIO? Can you offer any suggestions on how to use the Numato as a daughter card?

Hi, we don't have such a

Hi, we don't have such a product available right now but still we may be able to help. Please drop a meesage through the contact form at http://numato.com/contactus

Analog reading

I am getting unexpected readings when I try to read a voltage. For an applied voltage of 5V I get a reading of 1023. For any lower voltage I get a reading of about 650. (For example: adc read 6 653) I've tried both terminal 7 and terminal 6, with the same result. What am I doing wrong?

I got the same problem.

I had hard time reading the ADC with version 4 of the module. I found out that it works just fine once all ADC have been read at least once. Since then, I always read all ADC on module initialization and everything works fine now.

Re:I got the same problem.

We will look in to this issue immediately and if necessary publish updated firmware.

Re:Analog reading

Can you please check the actual voltage at the GPIO pin and confirm if it is chaging as expected. How are you supplying different voltages to teh ADC btw ?

Driver Instal

Is there an exe to install the driver that I can put in my programs install? If not how do I wrap the driver into my installer so that the end user does not have to hunt for the driver?


Re: Driver Install

Currently there is no tools available for automatic driver install. Some installation package may support automatic driver install but not sure. Please check this page for some ideas about installing driver from command line. This can be used as a starting point.

Auto Detect Com Port Assigned


Is there a way in C++ to detect what Com port the IO board is on so that I don't have to manually set it each time I connect to the computer?


Re:Auto Detect Com Port Assigned

Windows does not seem to have a straight forward mechanism to find serial ports. You could use setup API to enumerate devices (http://support.microsoft.com/kb/259695) but we haven't tried this ourselves yet.

8ch gpio &adc firmware

If i trsh or lose the firmware on the 8chusbgpio how can i redo it?
also how would i put it on a 1450?

Re:8ch gpio &adc firmware

Sent necessary files to the mail ID mentioned.

Open collector without pullups

1. Are the GPIOs open collector or do they drive high and low?
2. Is there a jumper setting to disable the pullups on the Numato board or would I have to remove the resistor-pack?
3. Can you provide a schematic?

Re:Open collector without pullups

1. These GPIOs aren't open collector.

2. The resistor packs are not connected to GPIOs by default. There are solder jumpers on the rear side of the board for each individual pull up resistor.

3. Sure, we will publish schematic soon.


When can you publish a schematic? "Soon" seems like it should be less than 6 months. :-)

C Code

Do you have straight C code examples for digital I/O and analog A/D operations?