Voltage levels of 40-pin GPIO


I am testing the 40-pin GPIO header on the Odyssey Blue.

It seems that the pins are not 3.3v, in fact they seem quite low, less than 1v.

Is that right?

Thanks, Gary.

Hello, if you have not configured the GPIO to output a certain voltage value, then some of the GPIO pin levels will be a floating voltage value and this value may be 1.xV.

Thanks for the information. How do I “configure the GPIO to output a certain voltage value”?

Hello @garysims,

When it comes to controlling voltage of GPIO, you can only configure GPIO to either output HIGH or LOW (3.3V and 0V).

This answer can be continued in this discussion:

As I said in my original post, when the pin is set to HIGH, the voltage is very low. I have a LED with a resistor. I have a Python script to blink the LED. It works great on the 28-pin Arduino header (using Arduino under Windows). On the GPIO header, it barely glows. I used a multimeter to measure the voltage and it is less than 1v when the pin is HIGH. This is using Ubuntu 18.04, because 22.04 doesn’t work (as we are discussing in another thread).

Hello @garysims,

I just tested on my ODYSSEY-X86 and it works well. Running both Ubuntu 18.04 and 19.04.

Did you set the direction to “out”? That is important. Also did you check several GPIO pins and can I know specifically which pins you tested?

Also, can you check this in BIOS?

Hi @lakshan

So I did some more tests. First, the BIOS is exactly as you show (i.e. the special pins are marked as GPIO) and all the pins are Output/High.

I wrote a python script that turns all the pins on and off, a massive “blink” program.

It seems that the pins marked as Linux GPIO 4xx, (for example 412 which is BCM27) give full 3.3v. All the other pins 3xx (e.g. 337 which is BCM4) give a weak voltage. The exception to that rule seems to be 492 and 493 which have a weak voltage.

That means that 9 of the pins go high to 3.3v. The others don’t.

Hi @garysims
Could you please share with this python script?
I’m trying to control the GPIO with python-periphery, but it doesn’t work. What do you call your GPIO? Pin no (7, 12…) or Linux GPIO (337, 338…).
I tried:
g7 = GPIO("/dev/gpiochip0", 7, “out”)

But as I said pin 7 does not change state.
Thank you in advance!

Edit: I solved it. My mistake was that I used the number of pins instead of the number of lines, when I checked the number of lines with gpioinfo it works ok. Do you have a list with pins - gpiochipNr & lineNr for X86J4105 or know when to check it ?

Edit 2: GPIO pins not responding in code - #2 by zerrofour4