Thanks, I didn’t need this for retro-pi, but instead for a custom radio tuner project, i needed to bind some keyboard keys to some custom front panel control, this worked wonderfully.
I am working on a little gameboy advance arcade cabinett, this is exactly what I needed (and what I will use) eventhough I wanted to do it nativ with no extra software Thanks for showing ^^
Thank you so much for this Video! I would have liked if you had shown more in depth how the Buttons are connected with each other but I managed to gather that information through googling and at the end it worked out exactly like you have shown.
Wonderful job. Thank you for helping figure out a good GPIO program. Just an FYI. I have a pi 3 b, installed the base pi image retropie-buster-4.7.1-rpi2_3.img.gz and the install and setup of the GPIOnext would fail. I finally updated all the updates in the retropie_setup.sh. After all of the updates, the GPIOnext installed without a hitch. In case anyone has this problem. Great instructional.
This was super helpful. Thanks for laying it all out like that! What screen are you using? Most of the gpio screens I see use up way more pins than that one.
Thank you for this great tutorial! What display are you using? And is the setup the same with a RaspberryPi-4? Also, I want to make a miniature RetroPie multicade with swappable control panels. One will be a standard joystick and buttons, one will be using a Pim447 trackball and buttons and the other will be using a rotory encoder as a spinner and buttons. standard tactile buttons.
Hi. The GPIONext package does support a good range of inputs but you'll need to look at expanding your IO pin count to get what you're after. Have a look at the cocumentation as I think it covers using I2C IO expanders.
Hi. I'm using a fairly generic ILI9341 driver based SPI lcd panel. It's using the standard SPI interface rather than an extended parallel data line version.
Hi, Thanks for the instructive video. I, although have a bit different project on my hands. Instead of GPIO pins, I want to use an ESP32 to wirelessly send the push button and joystick inputs to my Raspberry Pi 3 which in return would act as a wireless controller for retro-pie on Raspberry Pi. If you have any video regarding this manner then please refer it to me.
I used an ESP32 as a bluetooth keyboard in this video - ua-cam.com/video/BkfmBk6OeQM/v-deo.html. The basic principle is the same. You just need to find the bluetooth definitions for the game controller interface. The library I use in the video has a game controller library by the same developer.
So, I'm making a little RPi Zero 2 game console project, but the screen I found uses all of the GPIO pins (or at least I think it does). Is there a way to use the USB connection to connect buttons?
Have a look at the data sheet for your display. Some screens use a connector that covers all the GPIO pins but not all of them are connected. You'll probably find there are enough IO pins to connect your buttons. If you've only got a couple of IO pins left have a look at using a couple as an I2C bus. This will let you add IO expanders to give you more digital io pins. The USB route will get complex very fast - you'll probably need to use a microcontroller to drive the buttons end of the USB connection.
Hi. Great tutorial but I have a problem. 😅 I connected 1 d-pad and 4 buttons to emulate a GBoy but after installing GPIOnext the setup did not start giving the error "failed to add edge detection" which I fixed following a guide of Mholgatem. Once Retropie has restarted the system scrolls continuously to the right. My configuration: Raspberry pi zero 2w, retropie 4.7.1 (for pi 2-3), ili9341 2.2" lcd, diy pad with 8 buttons (up, down, right, left, start, select, A, B).
I'd start by disconnecting the gamepad and starting up the RPi. If the scrolling continues you've got a software setup issue. If the scrolling only happens when the controller is wired in it's probably a wiring error. Try connecting the inputs one at a time to find when the error happens. Good luck.
Hi Bytes and Bits, great video! I'm building a handheld at the moment but I keep getting an error saying AbsInfo module is missing from evdev and I can't work out what to do. I've tried reinstalling GPIOnext, updating all packages for Retropie, installing evdev manually, starting and stopping GPIOnext, but none of them work and there's not much info online. Do you know what might be causing this please? Thanks again for your video it's really great!
Hi. I'm not sure what the problem might be, I haven't seen that one before. It might be that something else on the Pi is conflicting with the packages. Is this a fresh install of RetroPie. Have you added any other packages?
@@BytesNBits Ah I see, okay no worries. I formatted the memory card and redid all the steps and this time it works! Not sure what changed :-S Thanks very much for the help though!
At 8:46 GPIONext shows a "Commands" option, what kind of commands are they? That's very interesting because I'm using 2 Zero Delay Encoders, one for P1 and one for P2, but I also want 4 extra buttons for admin functions like retroarch Menu, Quit, Pause, etc , do you think I can wire these buttons to GPIO pins and trigger these hotkeys in retropie?
GPIO next allows you to map gpio pins to pretty much any input button on the computer. in the list you pointed out I think you map buttons to mimic keyboard keys. I haven't looked in the commands menu but just select it and it will give you some options. So yes, you can wire in extra buttons and map those to keys or other buttons. Then in Retropie set those as your hotkeys.
I am a newbie - got my pcb prototype board and the buttons. I am trying to fit the push tactile button in the board so I can solder from the other side but their pins are too big for the holes. Was this also your case? If so, how did you do the soldering/building on the top side of the board? if you have a guide on how you put together this controller would be very useful
Hi. Yes, not all the through hole components fit directly onto the proto board. You might need to drill out a few holes. I use double sided protoboard with solder pads both sides and through hole plating. This lets me solder top side if the component doesn't fit. It's really a matter of doing the best you can to get the circuit complete.
It's worth clearing any special functions for these pins just to make sure. If GPIONext still can't use them check for other drivers taking control of the pins.
Hi. The prototype board I use is matrix board where every hole/pin has a single solder pad. I simply wire from pin to pin with very fine solid core wire (or use wire wrapping wire). It's very old school but easy to get things up and running quickly and in a small space.
I'm sorry, I'm trying to figure out the wiring for the buttons. It's hard for me to see where all the wires are going even in a blow up of a capture of the back. Any chance you might put up a wiring diagram on your site? Pretty please LOL
Hi. Each switch is simply used to connect the GPIO pin to ground. I use the internal pull up resistors on the Raspberry Pi so we don't need external components. On the actual board I simply connect one side of each switch to a common ground from the RPi, and then take the other side of each switch to the GPIO pins. I hope this helps.
Is there a version of this board with each module separated? Like joystick own boards, buttons, etc. I want to try and retrofit a rasp pi into a broken wii u gamepad and turn it into a steam deck Jr lmao. If I succeed, I could finally remove all the emulated games I have on steam deck which fill up the games page
It should do. I'm not sure how the GPIONext identifies itself to the OS so that you can reliably map your 2 controllers. You'd need to have a play around with the game controller settings.
It is very thin solid core. The label has come off the reels so I don't know the actual guage. It's basically wire wrapping wire but with a thin plastic covering.
@@BytesNBitsUpdate. It ended up working, and all my buttons are working. But for some reason when I try and hook up my thumbstick, it only detects "up", and "right". (This is for my arudino thumbstick, and a custom one I wired myself)
Great video! But I'm not getting all 8 directions with my joystick (I'm only getting up, down, left, and right) could you help me fix that? Right now I've having the joystick output if it's pointing up, down, left, or right; if it's pointing diagonally, I will have it output the two states (eg. if I point it up-right, the joystick will output to both the pointing right pin, and the pointing up pin). Should I be doing this differently?
It sounds like you've got it all designed correctly. I'd start by checking the pin voltages when you move in a single direction and then in a diagonal. It might be some sort of short circuit that's pulling the pins low when more than one switch is closed.
Hi. Try connecting these non working buttons to two of the working GPIO pins. This will confirm if it's the wiring or the software. If they work you can try mapping the buttons to different GPIO pins. There might be some other setup in your RPi that's interfering with these IO pins.
Great tutorial! I followed along and almost have it working. My GPIO joystick is detected, I can map buttons and navigate Retropie menus. But upon launching (mame) emulators, the GPIO controller disconnects. Any ideas?
Hi. If you're using the Libretro cores through Retroarch you probably need to map the buttons in there. Launch a game and press Select + X. This should bring up the RetroArch menu. Find the input settings and there should be an option for mapping the controllers (I can't remember exactly where it is). If you go through that it should let you tally up Retroarch with the controller buttons. Then in Mame you need to press the Tab key on the keyboard (there's probably a key combination as well) to get to the Mame key mappings. If you set the general inputs this will be the default for most games. You can the modify individual ones from there. I hope this helps.
im a bit new with all this wiring and stuff but how can i remove the breadboard from the setup? i want to make it as compact as possible and a breadboard sort of gets in the way.
Hi. You need to design an printed circuit board to connect all the bits together in a small package. It's another project on the list of videos I want to make.
Yes. Follow that tutorial as well. Note that the 50fps driver video needs updating after the RPi OS was updated at the start of the year. If you want to use that tutorial you'll need to install a version from 2023.
I've wired up buttons to use for this in a similar fashion. When I run gpionext config (after having messed with all the pulldown, set pins options a million times), gpionext never detects the button clicks. However when I write python code to check if the buttons work, they all do. Do you have any idea what the issue could be?
Hi. gpionext has some options to tell it what buttons it's allowed to use. Usually it assumes it can use everything but it might be getting overridden somewhere. Have a look at this video ua-cam.com/video/YqF3Z0AAnIY/v-deo.html. I was getting the sound output messing with the gpionext functions. Hope it helps.
@@BytesNBits that could be it. I have an awful set up using pwm audio from one of the gpio pins and and the spi display connection. I ended up writing my own script to simulate keyboard presses when buttons are pressed and that works for me
If I completed configuring my controller in the console, and then modified my controller a day later by adding a new button, can I re-configure my controller with the new button? If so, how?
Thank you, that really helps. I had another question though. The thing is that retro pie does not occupy my entire display (5inch lcd), and I was wondering how I could fix that. I tried changing the resolution but it didn’t work.
You'd need to check the driver documentation to see how many inputs it supports. It should be a matter of connecting up the extra buttons and mapping them into the code.
could you help me? i am trying to finish my console and i want to use a ps vita joystick and d-pad and 6 buttons and 2 shoulder buttons and start and select, menu.
Hi. You'll not be able to connect this sort of controller layout directly to the Raspberry Pi. You'll need to make/buy a game controller circuit which you can connect via the USB port. Have a look at create.arduino.cc/projecthub/361085/arduino-game-controller-f3ffec.
The first 26 GPIO pins on my rpi 3b+ are taken up by my display. I am 1 GPIO pin short for the controller. Is there any workaround for this? Can I like set the Select button as a double tap of the Start button or something else in the software?
Does your display use an SPI connection? Quite often the connector covers a large block of pins but is only using a few of the GPIO connections. The others are just not connected but covered by the header. If you get the pinout for the screen connector you can use jump wires to connect it to the RPi and then gain access to the unused pins.
@@BytesNBits I just tried it out using jumper wire. The display powers up but doesn't show anything. It's just a white screen. I'm using the fbcp-ili9341 driver on my display. Do I need to tweak any of the driver settings?
@@safwansadad6488 If you've used jump wires for all the connections you should be fine. Don't forget the power connections! All you are doing is extending the pins. Make sure the connections are good and that you've not missed any pins. Try not to use overly long wires. If all else fails try reducing the connection data speed. If that fixes it you've got some sort of noise issue. Again check connections and wire length. Just to check - was it all working when connected directly to the Pi?
@@graceb5539 I don't think I bothered to save the design. It's simply a sphere. Cut off the bottom section. Then cut out a cuboid on the flattened surface to fit your joystick stub.
hi when i do that project i came to would you like to run gocfuguration manager i press y but it says Traceback (most recent call last): File "/home/pi/GPIOnext/config_manager.py", line 14, in from evdev import ecodes as e ImportError: No module named 'evdev' i cant find a solution you can help
Try running install.sh again. If it's still not working, execute the command: "sudo pip3 install evdev (If you open install.sh in a text editor such as "nano", you can find that exact command)
In my comment, I shared the solution for this exact problem. I ran updates for everything in the retropie_setup.sh. After I did this, I was able to install the GPIOnext and run the configurator without that error. Hope this helps.
Hi. Yes. You could create a full X box style controller that way. Use the Pico to read all the joysticks and buttons and then use the USB connection to the RPi to set it up as a standard game controller. I'm sure there's a tutorial out there on how to do it.
I haven't tried it but I think it should work. The GPIO software seems to create a virtual controller that should be picked up by the OS. Only one way to find out!
Hi. The controller is just a number of pushbuttons soldered on to a piece of veroboard. I've wired in a common connection to one side of every switch and then taken the other side of every switch to a flying lead. This lets me connect either 5V or 0V to the common side so I can either pull up or pull down an input pin on the Raspberry Pi. For this project I used a 0V common to pull down the RPi GPIO pins. I hope this helps you out.
@@BytesNBits thanks for the reply, can you please help me more by providing few info 1. I am getting raspberry pi zero 2w for cheap hence I want to make a bartop arcade machine where most of my games will be neogeo ,mame, snes ,sega Saturn . How will it perform on a 15 inch 768p reso screen. 2. Can we use remaining gpio fo player 2 configuration? If not then I have a gamepad made from raspberry pi pico will it be detected as a controller for retropie for 2nd player configuration?
Hi. I've seen a few virtual gamepad projects which might do what you want. Have a look on Google. Otherwise you'll have to code something yourself. Hope this helps.
There will always be some delay as the button presses are picked up by one block of code before being passed to the main OS. I wasn't able to detect it when using it for games.
Hi. I'm not sure what that might be. Make sure you've run a full update on your Pi and RetroArch installations and then try re installing the GPIONext code.
@@BytesNBits Ok i found the error :) My LCD-Display took some GPIO pins. But now I have another error. When I type in gpionext start and reboot, retropie says that it found no Game-Pads.
@@dark_phoenix_9537 RetroPie is a front end package that uses RetroArch in the background to do the actual emulation. Can you run the GPIONext config routine and does it recognise your buttons? If you then run RetroPie without a reboot does it see the controller?
You can use an I2C IO expander. I think GPIONext supports these but do check. I'll be using some on a future video to build a bluetooth game controller but that's a couple of months away.
I haven't checked it the driver supports haptic outputs. You'd need to have a look in the documentation. If it does I guess you'd just need to connect the motor to a GPIO pin, maybe with a simple current amplifier.
Upon trying to run the config menu Im having some issues. Im getting this error "cannot import name 'AbsInfo' from 'evdev' (/usr/local/lib/python3.7/dist-packages/evdev/__init__.py)" any idea on why that might be?
It looks like the evdev library (I don't know what it is) is missing a module or something. Try updating your Python. It might also be that that module has been taken out of the library. Try a search on Google.
@@BytesNBits Thank you. I looked around for a while and didn’t find anything. I ended up just reimaging my SD card and starting from scratch. Worked fine after reinstalling everything. Thank you for the help 🙏
i tried to do this but it is showing this Traceback (most recent call last): File "/home/pi/GPIOnext/config_manager.py", line 315, in ConfigurationManager(args) File "/home/pi/GPIOnext/config_manager.py", line 85, in __init__ gpio.setupGPIO( self.args ) File "/home/pi/GPIOnext/config/gpio.py", line 99, in setupGPIO pins.append( pin(pinNumber, pull, args) ) File "/home/pi/GPIOnext/config/gpio.py", line 59, in __init__ bouncetime = args.debounce) RuntimeError: Failed to add edge detection please help me
Hi. I had a quick look and found this possible issue. www.raspberrypi.org/forums/viewtopic.php?t=205327 Check your pin assignments to make sure GPIONext isn't interfering, or being blocked by some other software. I also added a GPIONext fix video as I found it was interfering with my sound setup. Have a look at, ua-cam.com/video/YqF3Z0AAnIY/v-deo.html You can limit the GPIO pins GPIONext has access to. I hope this helps.
This is exactly what i was looking for to finish my arcade machine project, thank you for the great video!
Glad I could help!
Thanks, I didn’t need this for retro-pi, but instead for a custom radio tuner project, i needed to bind some keyboard keys to some custom front panel control, this worked wonderfully.
Glad I could help!
I am working on a little gameboy advance arcade cabinett, this is exactly what I needed (and what I will use) eventhough I wanted to do it nativ with no extra software
Thanks for showing ^^
Great! I hope you get it all working OK.
u r a star i m new to retro gaming n got raspberry pi from some one who didnt know how to use it and after days of search u made it easy thanks you
Thanks. Have fun playing all those games!
Thank you so much for this Video! I would have liked if you had shown more in depth how the Buttons are connected with each other but I managed to gather that information through googling and at the end it worked out exactly like you have shown.
Hi. Great to hear you got it working.
Hi could you refer me to what you found please?
I absolutely loved this. The amount of work went into making this video is inconceivable. Thank you so so much.
Was wondering what wire size it was on your board. Looked thin and neat.
Hi. I use wire wrapping wire or 30awg insulated for this sort of board. Great for packing a lot of connections into a small space.
@@BytesNBits Thanks a lot. I love your work!
My man buildin a literally gaming console. Nicely done!
Hi. Getting there with all the parts. Sound and battery management to come.
Just stumbled upon this video when I needed it the most. Wonderful content!
Glad it was helpful!
First search result popping up was this... and it was the solution! My table pinball machine is going forward. Many thanks. :)
You're welcome!
@@BytesNBits Hi! There is a way to install raspberry pi OS AND retropie inside, that could be controlled by gpio controller with GpioNext?
Wonderful job. Thank you for helping figure out a good GPIO program. Just an FYI. I have a pi 3 b, installed the base pi image retropie-buster-4.7.1-rpi2_3.img.gz and the install and setup of the GPIOnext would fail. I finally updated all the updates in the retropie_setup.sh. After all of the updates, the GPIOnext installed without a hitch. In case anyone has this problem. Great instructional.
Hi Richard. Thanks for the solution on getting the code working with the latest versions of Retropie.
@@BytesNBits Thank you. If I can help with anything else, please let me know.
@@rdean1972 Great. Will do!
@@rdean1972 It says Failed to add edge detection when I open the config-manager
This was super helpful. Thanks for laying it all out like that! What screen are you using? Most of the gpio screens I see use up way more pins than that one.
This is just a standard SPI screen, but not using a parallel interface (multiple data lines).
Just what I was looking for! Cheers!
Great. Glad it helped.
Thanks for the easy to follow tutorial!
You're welcome!
right about now its time to rock with the biggity buck bumble
Thank you for this great tutorial! What display are you using? And is the setup the same with a RaspberryPi-4? Also, I want to make a miniature RetroPie multicade with swappable control panels. One will be a standard joystick and buttons, one will be using a Pim447 trackball and buttons and the other will be using a rotory encoder as a spinner and buttons. standard tactile buttons.
The setup should work with any Raspberry Pi model. Good luck with the arcade cabinet.
Hi sir can you make it Joystick module(X-Y dual axis) interface for mouse arrow and switch as select for Raspberry Pi zero board
Hi. The GPIONext package does support a good range of inputs but you'll need to look at expanding your IO pin count to get what you're after. Have a look at the cocumentation as I think it covers using I2C IO expanders.
What is the display that you are using for this project? Also, great video demonstration!
Hi. I'm using a fairly generic ILI9341 driver based SPI lcd panel. It's using the standard SPI interface rather than an extended parallel data line version.
Thanks for the help mate
Happy to help
Hi, Thanks for the instructive video. I, although have a bit different project on my hands. Instead of GPIO pins, I want to use an ESP32 to wirelessly send the push button and joystick inputs to my Raspberry Pi 3 which in return would act as a wireless controller for retro-pie on Raspberry Pi. If you have any video regarding this manner then please refer it to me.
I used an ESP32 as a bluetooth keyboard in this video - ua-cam.com/video/BkfmBk6OeQM/v-deo.html.
The basic principle is the same. You just need to find the bluetooth definitions for the game controller interface. The library I use in the video has a game controller library by the same developer.
This Tutorial I Wonderful It is easy to follow and everything 11/10👍
Glad it was helpful!
Thanks!
Thank you very much.
now i know everything i know wow great video thanks :-
D
Glad I could help!
So, I'm making a little RPi Zero 2 game console project, but the screen I found uses all of the GPIO pins (or at least I think it does). Is there a way to use the USB connection to connect buttons?
Have a look at the data sheet for your display. Some screens use a connector that covers all the GPIO pins but not all of them are connected. You'll probably find there are enough IO pins to connect your buttons. If you've only got a couple of IO pins left have a look at using a couple as an I2C bus. This will let you add IO expanders to give you more digital io pins. The USB route will get complex very fast - you'll probably need to use a microcontroller to drive the buttons end of the USB connection.
awesome video, quick question. If you want to program a second joypad how do you go back to the gpionext interface?
nvm i figured it out, you type gpionext config in the terminal. This vid is super helpful its perfect for what im working on!
Hi. Great to hear you got it sorted. Glad the video is useful.
Hi Buddy, I imagine You need to being conected to internet on the raspberry to install the driver , Thanks
Yes, you are right.
Not sure if i missed it, but what GPIO header did you use for the common? is that just ground?
I think I used ground and set the GPIO input to use the inbuilt pull up resistor.
I'm trying to build controls for my own pi project, when you say you connect 1 end to 0v from the pi, would ground be suitable?
Hi. Yes. 0V and ground are the same on the Pi.
@@BytesNBits thank you so much!
Hi.
Great tutorial but I have a problem. 😅
I connected 1 d-pad and 4 buttons to emulate a GBoy but after installing GPIOnext the setup did not start giving the error "failed to add edge detection" which I fixed following a guide of Mholgatem.
Once Retropie has restarted the system scrolls continuously to the right.
My configuration:
Raspberry pi zero 2w, retropie 4.7.1 (for pi 2-3), ili9341 2.2" lcd, diy pad with 8 buttons (up, down, right, left, start, select, A, B).
I'd start by disconnecting the gamepad and starting up the RPi. If the scrolling continues you've got a software setup issue. If the scrolling only happens when the controller is wired in it's probably a wiring error. Try connecting the inputs one at a time to find when the error happens. Good luck.
@ bytes N bits. Hello friend, your tutorial helped me a lot. but how can I put 2 sticks since only 1 is configured?
I don't think gpionext supports two gamepads. I guess there aren't enough io pins.
Hi Bytes and Bits, great video! I'm building a handheld at the moment but I keep getting an error saying AbsInfo module is missing from evdev and I can't work out what to do.
I've tried reinstalling GPIOnext, updating all packages for Retropie, installing evdev manually, starting and stopping GPIOnext, but none of them work and there's not much info online.
Do you know what might be causing this please?
Thanks again for your video it's really great!
Hi. I'm not sure what the problem might be, I haven't seen that one before. It might be that something else on the Pi is conflicting with the packages. Is this a fresh install of RetroPie. Have you added any other packages?
@@BytesNBits Ah I see, okay no worries. I formatted the memory card and redid all the steps and this time it works! Not sure what changed :-S Thanks very much for the help though!
great stuff, thank you for sharing ;D
Glad you enjoyed it!
At 8:46 GPIONext shows a "Commands" option, what kind of commands are they?
That's very interesting because I'm using 2 Zero Delay Encoders, one for P1 and one for P2, but I also want 4 extra buttons for admin functions like retroarch Menu, Quit, Pause, etc , do you think I can wire these buttons to GPIO pins and trigger these hotkeys in retropie?
GPIO next allows you to map gpio pins to pretty much any input button on the computer. in the list you pointed out I think you map buttons to mimic keyboard keys. I haven't looked in the commands menu but just select it and it will give you some options. So yes, you can wire in extra buttons and map those to keys or other buttons. Then in Retropie set those as your hotkeys.
I am a newbie - got my pcb prototype board and the buttons. I am trying to fit the push tactile button in the board so I can solder from the other side but their pins are too big for the holes. Was this also your case? If so, how did you do the soldering/building on the top side of the board? if you have a guide on how you put together this controller would be very useful
Hi. Yes, not all the through hole components fit directly onto the proto board. You might need to drill out a few holes. I use double sided protoboard with solder pads both sides and through hole plating. This lets me solder top side if the component doesn't fit. It's really a matter of doing the best you can to get the circuit complete.
@@BytesNBits thanks! So as long as things are connected properly, the "condition" of the existing or new holes doesnt matter as i understand :)
any video about the dislpay setup?
Try this one - ua-cam.com/video/uz4sa24C4gk/v-deo.htmlsi=hmvQJaFXi8hARQR4
Do I need to set GPIO14 and GPIO15 as normal GPIO interfaces before everything starts? Because my GPIONEXT doesn't recognize these two pins
It's worth clearing any special functions for these pins just to make sure. If GPIONext still can't use them check for other drivers taking control of the pins.
How do you wire everything up on the bottom of the prototype board? (4:14)
Hi. The prototype board I use is matrix board where every hole/pin has a single solder pad. I simply wire from pin to pin with very fine solid core wire (or use wire wrapping wire). It's very old school but easy to get things up and running quickly and in a small space.
I'm sorry, I'm trying to figure out the wiring for the buttons. It's hard for me to see where all the wires are going even in a blow up of a capture of the back. Any chance you might put up a wiring diagram on your site? Pretty please LOL
Hi. Each switch is simply used to connect the GPIO pin to ground. I use the internal pull up resistors on the Raspberry Pi so we don't need external components. On the actual board I simply connect one side of each switch to a common ground from the RPi, and then take the other side of each switch to the GPIO pins. I hope this helps.
@@BytesNBits Yes! After thinking about it I thought that’s what you did but thanks for confirming.
Is there a version of this board with each module separated? Like joystick own boards, buttons, etc. I want to try and retrofit a rasp pi into a broken wii u gamepad and turn it into a steam deck Jr lmao. If I succeed, I could finally remove all the emulated games I have on steam deck which fill up the games page
You'd need to break down the circuit yourself. It's basically some buttons connecting the GPIO pins to ground.
Will this work separately from a usb controller? I’m thinking of using the gpio buttons as system buttons (like close game, and save states)
It should do. I'm not sure how the GPIONext identifies itself to the OS so that you can reliably map your 2 controllers. You'd need to have a play around with the game controller settings.
Hey what kind of hook-up wire did you use? Is it 22 gauge? It looks soild core.
It is very thin solid core. The label has come off the reels so I don't know the actual guage. It's basically wire wrapping wire but with a thin plastic covering.
GREAT!!!! I RESPECT YOU!!! THANKS!!!!!!!!!!!!!!!!
no problem!
Quick question, how many button inputs are you to fit on the GPIO pins? Also can you send multiple inputs through a single pin?
I think you can configure as many pins as are available. Unfortuately just one button per pin.
@@BytesNBitsUpdate. It ended up working, and all my buttons are working. But for some reason when I try and hook up my thumbstick, it only detects "up", and "right". (This is for my arudino thumbstick, and a custom one I wired myself)
Great video - do you know if you can use a button matrix with GPIOnext rather than using one pin per button (using diodes etc.)?
I don't remember seeing that function but do check the documentation. It's a while since I've used it now.
Will this handle variability on an analog joystick? (turning slight left, full left, etc.)
The GPIO setup I use is purely digital inputs.
Great video! But I'm not getting all 8 directions with my joystick (I'm only getting up, down, left, and right) could you help me fix that?
Right now I've having the joystick output if it's pointing up, down, left, or right; if it's pointing diagonally, I will have it output the two states (eg. if I point it up-right, the joystick will output to both the pointing right pin, and the pointing up pin). Should I be doing this differently?
It sounds like you've got it all designed correctly. I'd start by checking the pin voltages when you move in a single direction and then in a diagonal. It might be some sort of short circuit that's pulling the pins low when more than one switch is closed.
@@BytesNBits Hmm, I haven't thought about that. Thanks for your help, I'll go check it out.
Hello I used your exact configuration to the gpio for a diy gamepad like in the video and "Start" and " Ltrigger" do not work. And ideas?
Hi. Try connecting these non working buttons to two of the working GPIO pins. This will confirm if it's the wiring or the software. If they work you can try mapping the buttons to different GPIO pins. There might be some other setup in your RPi that's interfering with these IO pins.
Great tutorial! I followed along and almost have it working. My GPIO joystick is detected, I can map buttons and navigate Retropie menus. But upon launching (mame) emulators, the GPIO controller disconnects. Any ideas?
Hi. If you're using the Libretro cores through Retroarch you probably need to map the buttons in there. Launch a game and press Select + X. This should bring up the RetroArch menu. Find the input settings and there should be an option for mapping the controllers (I can't remember exactly where it is). If you go through that it should let you tally up Retroarch with the controller buttons. Then in Mame you need to press the Tab key on the keyboard (there's probably a key combination as well) to get to the Mame key mappings. If you set the general inputs this will be the default for most games. You can the modify individual ones from there.
I hope this helps.
@@BytesNBits thank you for your detailed advice and fast reply! I will follow your suggestions, it's so close to working now 😃
im a bit new with all this wiring and stuff but how can i remove the breadboard from the setup? i want to make it as compact as possible and a breadboard sort of gets in the way.
Hi. You need to design an printed circuit board to connect all the bits together in a small package. It's another project on the list of videos I want to make.
hi brother but is the connection procedure the same with the 3.5 inch ili9341 display?
Yes. Follow that tutorial as well. Note that the 50fps driver video needs updating after the RPi OS was updated at the start of the year. If you want to use that tutorial you'll need to install a version from 2023.
I've wired up buttons to use for this in a similar fashion. When I run gpionext config (after having messed with all the pulldown, set pins options a million times), gpionext never detects the button clicks. However when I write python code to check if the buttons work, they all do. Do you have any idea what the issue could be?
Hi. gpionext has some options to tell it what buttons it's allowed to use. Usually it assumes it can use everything but it might be getting overridden somewhere. Have a look at this video ua-cam.com/video/YqF3Z0AAnIY/v-deo.html. I was getting the sound output messing with the gpionext functions. Hope it helps.
@@BytesNBits that could be it. I have an awful set up using pwm audio from one of the gpio pins and and the spi display connection. I ended up writing my own script to simulate keyboard presses when buttons are pressed and that works for me
If I completed configuring my controller in the console, and then modified my controller a day later by adding a new button, can I re-configure my controller with the new button? If so, how?
make sure you've added the button in GPIONext and then remap the controller in RetroPie
Thank you, that really helps. I had another question though. The thing is that retro pie does not occupy my entire display (5inch lcd), and I was wondering how I could fix that. I tried changing the resolution but it didn’t work.
all the buttons work fine expept 2 buttons. the DOWN is GPIO 1 and the RIGHT is GPIO 0. has anyone same problem and help to work at this GPIOs??
Can you remap those functions to other GPIO pins?
hello, how can I do this with 2 customized controllers. for my own 2D game
You'd need to check the driver documentation to see how many inputs it supports. It should be a matter of connecting up the extra buttons and mapping them into the code.
It works as a “command controller” to Rasp Os? Or it works only on Retropie?
They work like any other button.
Hi. It should show up as a standard game controller. It's not specific to RetroPie.
could you help me? i am trying to finish my console and i want to use a ps vita joystick and d-pad and 6 buttons and 2 shoulder buttons and start and select, menu.
Hi. You'll not be able to connect this sort of controller layout directly to the Raspberry Pi. You'll need to make/buy a game controller circuit which you can connect via the USB port. Have a look at create.arduino.cc/projecthub/361085/arduino-game-controller-f3ffec.
The first 26 GPIO pins on my rpi 3b+ are taken up by my display. I am 1 GPIO pin short for the controller. Is there any workaround for this? Can I like set the Select button as a double tap of the Start button or something else in the software?
Does your display use an SPI connection? Quite often the connector covers a large block of pins but is only using a few of the GPIO connections. The others are just not connected but covered by the header. If you get the pinout for the screen connector you can use jump wires to connect it to the RPi and then gain access to the unused pins.
@@BytesNBits Yes my display uses a SPI connection. According to its documentation there are some free pins. I'll those. Thanks for the help!
@@BytesNBits I just tried it out using jumper wire. The display powers up but doesn't show anything. It's just a white screen. I'm using the fbcp-ili9341 driver on my display. Do I need to tweak any of the driver settings?
@@safwansadad6488 If you've used jump wires for all the connections you should be fine. Don't forget the power connections! All you are doing is extending the pins. Make sure the connections are good and that you've not missed any pins. Try not to use overly long wires. If all else fails try reducing the connection data speed. If that fixes it you've got some sort of noise issue. Again check connections and wire length. Just to check - was it all working when connected directly to the Pi?
Hello, where did you get the cover for your joystick?
I 3D printed it.
@@BytesNBits That’s awesome! Would you mind sharing the stl file? I am making a controller for my high school engineering project.
@@graceb5539 I don't think I bothered to save the design. It's simply a sphere. Cut off the bottom section. Then cut out a cuboid on the flattened surface to fit your joystick stub.
can i have this GPIO controller installed and plug in extra USB controllers and have them run in multiplayer games?
I haven't tried it but I don't see why they wouldn't work. Give it a go!
@@BytesNBits :D thanks!
would this work with normal microswitches and a breadboard
Yes. The joystick is simply 4 micro switches in a neat little unit.
hi when i do that project i came to would you like to run gocfuguration manager i press y but it says
Traceback (most recent call last): File "/home/pi/GPIOnext/config_manager.py", line 14, in from evdev import ecodes as e ImportError: No module named 'evdev'
i cant find a solution you can help
Try running install.sh again. If it's still not working, execute the command: "sudo pip3 install evdev (If you open install.sh in a text editor such as "nano", you can find that exact command)
Hi @Zeitiah Thanks for the tips on fixing this issue.
In my comment, I shared the solution for this exact problem. I ran updates for everything in the retropie_setup.sh. After I did this, I was able to install the GPIOnext and run the configurator without that error. Hope this helps.
would this work for a raspberry pi 4 (with RetroPie of course)?
Should do. Although the video is now a bit old so not sure if the drivers are still compatible.
@@BytesNBits thanks and respect for still answering questions 2 years later
would you be able to do this one with a pico pi? then hooked up to a raspberry pi?
Hi. Yes. You could create a full X box style controller that way. Use the Pico to read all the joysticks and buttons and then use the USB connection to the RPi to set it up as a standard game controller. I'm sure there's a tutorial out there on how to do it.
Can it be used to control raspberry pi that is running desbian instead of retro pi?
I haven't tried it but I think it should work. The GPIO software seems to create a virtual controller that should be picked up by the OS. Only one way to find out!
can we use this with button matrix or software only accepts single input
I think the gpionext library only supports one button per input
@@BytesNBits that's sad its hard to put all buttons and display at the same time using gpio pins
Dont you need the hotkey button for retropie?
This is just a basic controller setup. You can get into and out of games to play your collection. You need to map hotkeys
To the buttons on the controller, or combinations.
can you show how to make the controller?
Hi. The controller is just a number of pushbuttons soldered on to a piece of veroboard. I've wired in a common connection to one side of every switch and then taken the other side of every switch to a flying lead. This lets me connect either 5V or 0V to the common side so I can either pull up or pull down an input pin on the Raspberry Pi. For this project I used a 0V common to pull down the RPi GPIO pins. I hope this helps you out.
Excuse me sir. May I use a breadboard or PCB?
You can use whatever works best for you. As long as the connections are all correct it doesn't matter.
@@BytesNBits Thank you sir for your information.
can we replace the raspberry pi zero into a raspberry pi 4?
Yes. It should work fine without changing anything.
Will this work with Lake/Retro Arch?
It definitely works with RetroArch and should work with any other software.
Can this be carried out in raspberry pi zero 2w ?
Yes. It should work on all Pi models.
@@BytesNBits thanks for the reply, can you please help me more by providing few info
1. I am getting raspberry pi zero 2w for cheap hence I want to make a bartop arcade machine where most of my games will be neogeo ,mame, snes ,sega Saturn . How will it perform on a 15 inch 768p reso screen.
2. Can we use remaining gpio fo player 2 configuration?
If not then I have a gamepad made from raspberry pi pico will it be detected as a controller for retropie for 2nd player configuration?
i tried to do this but my gpio is now like burned the raspberry pi works but the gpio doesen't
have you tried booting the RPi with a clean OS to verify if the GPIO is really damaged. the software shouldn't be able to damage the circuitry.
@@BytesNBits yes i did it and reinstalled the gpionext software but it still can't recognise the buttons attached to the gpio
@@BytesNBits how can i know if the gpio is broken?
Does anyone know how to create on screen controller for live video feed?
Hi. I've seen a few virtual gamepad projects which might do what you want. Have a look on Google. Otherwise you'll have to code something yourself. Hope this helps.
well got the screen going and now the controller ....next sound
Great. Have fun. I'll have to do a sound video at some point.
is there any input delay?
There will always be some delay as the button presses are picked up by one block of code before being passed to the main OS. I wasn't able to detect it when using it for games.
@@BytesNBits right the answer i was waiting for. thanks!
It says Failed to add edge detection when I open the config-manager
Hi. I'm not sure what that might be. Make sure you've run a full update on your Pi and RetroArch installations and then try re installing the GPIONext code.
@@BytesNBits Ok i found the error :) My LCD-Display took some GPIO pins. But now I have another error. When I type in gpionext start and reboot, retropie says that it found no Game-Pads.
@@BytesNBits You mentioned RetroArch. I haven't istalled RetroArch.
@@dark_phoenix_9537 RetroPie is a front end package that uses RetroArch in the background to do the actual emulation.
Can you run the GPIONext config routine and does it recognise your buttons? If you then run RetroPie without a reboot does it see the controller?
@@BytesNBits The problem is the LCD-Display, because when I run the RP whitout tftdisplay installed, it recognises the GPIOnext controller.
what do you do when you run out of gpio pins?
You can use an I2C IO expander. I think GPIONext supports these but do check. I'll be using some on a future video to build a bluetooth game controller but that's a couple of months away.
@@BytesNBits okay :D
how to add vibrations?
I haven't checked it the driver supports haptic outputs. You'd need to have a look in the documentation. If it does I guess you'd just need to connect the motor to a GPIO pin, maybe with a simple current amplifier.
Can I use 20 buttons? How?
I think GPIONext supports I2C IO expanders. You'd need to use these to get that many inputs.
@@BytesNBits Do you know any pcb that has 20 buttons for 12C
audio output next plssssssssssssssssssssssssssssssssssssssssssss
Hi. Sound should be ready this weekend!
@@BytesNBits omg that makes me so happy to hear. Im doing this project and i really really need your tutorial ❤️❤️❤️
Hi. It took a bit of time to get it put together but the sound tutorial is now online. Let me know how you get on.
Upon trying to run the config menu Im having some issues. Im getting this error "cannot import name 'AbsInfo' from 'evdev' (/usr/local/lib/python3.7/dist-packages/evdev/__init__.py)" any idea on why that might be?
It looks like the evdev library (I don't know what it is) is missing a module or something. Try updating your Python. It might also be that that module has been taken out of the library. Try a search on Google.
@@BytesNBits Thank you. I looked around for a while and didn’t find anything. I ended up just reimaging my SD card and starting from scratch. Worked fine after reinstalling everything. Thank you for the help 🙏
i tried to do this but it is showing this
Traceback (most recent call last):
File "/home/pi/GPIOnext/config_manager.py", line 315, in
ConfigurationManager(args)
File "/home/pi/GPIOnext/config_manager.py", line 85, in __init__
gpio.setupGPIO( self.args )
File "/home/pi/GPIOnext/config/gpio.py", line 99, in setupGPIO
pins.append( pin(pinNumber, pull, args) )
File "/home/pi/GPIOnext/config/gpio.py", line 59, in __init__
bouncetime = args.debounce)
RuntimeError: Failed to add edge detection
please help me
Hi. I had a quick look and found this possible issue.
www.raspberrypi.org/forums/viewtopic.php?t=205327
Check your pin assignments to make sure GPIONext isn't interfering, or being blocked by some other software. I also added a GPIONext fix video as I found it was interfering with my sound setup. Have a look at,
ua-cam.com/video/YqF3Z0AAnIY/v-deo.html
You can limit the GPIO pins GPIONext has access to.
I hope this helps.
@@BytesNBits thank you that helped me a lot