Homepage › Forums › RetroPie Project › GPIO Adapter, ControlBlock etc. › GPIO SNES controller issues
- This topic has 17 replies, 3 voices, and was last updated 8 years, 11 months ago by Dinofly.
-
AuthorPosts
-
12/09/2015 at 16:44 #111510DinoflyParticipant
(topic was renamed, as my issue changed after re-installing a supported version)
Hi,
I bought the GPIO adapter, soldered the parts and installed the SNESDev driver using the setup script. The driver is installed properly, as EmulationStation says that 2 gamepads have been detected. But pushing the button does nothing, and my SNES controllers are not working either.
I tested the button without plugging the controllers in with the testButton program, downloaded from https://github.com/petrockblog/SNESDev-RPi/raw/master/supplementary/testButton/testButton as i could not find it in my local installation. It doesn’t detect anything when i press the button.
For the SNES controllers, i soldered the ribbon cable to SNES extension cables and pressing any button does nothing (tried with jstest on js0 and js1, and EmulationStation).
Given the fact that the button on the adapter isn’t working, i assume that fixing this issue will fix the SNES controllers issue too. But maybe the cables to the controllers are too long and the signal is lost ?
I can show you pictures of my soldering if needed.
Thanks
12/10/2015 at 23:08 #111577DinoflyParticipantHere are the pictures. Am I doing something wrong ?
12/11/2015 at 00:14 #111588DinoflyParticipantI just found out that the SNESDev process is using 100% of a CPU at all times, the sames goes for emulationstation :
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 575 root 20 0 3708 1800 1700 R 100.0 0.2 4:58.57 SNESDev 694 pi 20 0 124452 44936 18084 R 99.7 6.0 4:34.96 emulationstatio 279 root 20 0 0 0 0 S 0.3 0.0 0:00.16 RTW_CMD_THREAD 735 pi 20 0 5092 2468 2120 R 0.3 0.3 0:01.04 top 1 root 20 0 5360 3908 2740 S 0.0 0.5 0:05.73 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0 4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 0:00.09 kworker/u8:0 7 root 20 0 0 0 0 S 0.0 0.0 0:00.12 rcu_preempt 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_sched 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 10 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 11 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/1 12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1 14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H 15 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/2 16 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/2 18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/2:0H 19 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/3 20 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/3 22 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/3:0H 23 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 24 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
12/11/2015 at 09:11 #111603DinoflyParticipantI must mention that i’m using Raspbian Jessie, and i understand that it isn’t officially supported. I’ll reinstall the official image and try again.
12/12/2015 at 01:47 #111640DinoflyParticipantI reinstalled the SD image from scratch and it works now. Still having issues with one of the 2 SNES controllers but i’ll figure it out.
12/12/2015 at 15:29 #111668petrockblogKeymasterGlad that you figured it out yourself already. Yes, Jessie is still not officially supported because of those observations.
If one of the SNES controllers is not working, it might be a connection problem with the data line of that controller.
12/12/2015 at 17:44 #111671DinoflyParticipantOK now i have some other problem… the button on the GPIO adapter works well in command line mode (it types “r” when pushed), but i can’t use it to exit a game or rewind. I can shut down the Pi with 5 consecutive pushs.
I think it has something to do with the fact that my keyboard can’t be used at all in Retroarch. Why is that ?
12/12/2015 at 19:37 #111684DinoflyParticipantI have two new weird problems :
1 – i can only plug one SNES controller at a time. When both controllers are plugged in, none of them works (tested with jstest and EmulationStation). If i unplug one of the two, the remaining one works.
2 – the SNES controller pushes buttons by itself, or pushes the wrong buttons. For example when pressing right, sometimes it presses “A” and when pressing up, sometimes it presses “Start”. I saw in the SNES controller protocol that these buttons are next one to another in the Button-to-Clock Pulse Assignment. So i suppose that i have a problem with the clock sync, do you think it is because my cables are too long ?
12/16/2015 at 07:51 #111892petrockblogKeymasterSome thoughts:
Which Raspbian / RetroPie image are you using?
Are you overclocking?
Are the controllers properly connected to the sockets and the sockets, in turn, with the GPIO Adapter?
How long are the cables? SNESDev is tested with standard SNES controllers so far.
It sounds as if the timing is somehow off, yes.
What is the CPU load of the SNESDev service?12/16/2015 at 08:34 #111895DinoflyParticipantI’m using the latest stable sd image and just upgraded from binaries using the setup script. Overclocking is set to “Pi2” settings and i’ve put a heatsink on the main chip. The snesdev process is using less than 10% CPU. The controller cable + extension cable is 3 meters long. Everything is connected properly: as I said, when only 1 controller is connected (be it in port 1 or 2), it works (but still has issues with buttons).
Attached is a picture of my soldering to the extensions cables (male side). I will try this on a real snes but the heat of the soldering iron bent some pins in the extension cable male plug so I’ll have to fix this.12/17/2015 at 23:27 #112015DinoflyParticipantTurns out it’s even worse on a real SNES. Why do these extension cables even exist ? X and A buttons get pressed without touching anything…
So it’s not a GPIO or SNESDev issue. I’ll shorten the cables and try again.12/19/2015 at 15:48 #112105DinoflyParticipantI just tried plugging the ribbon cables directly into my SNES controller and the issue is still the same. My setup is now as follows :
- A SNES controller plugged directly to the ribbon cables
- A SNES extension cable shortened to 70cm soldered to the ribbon cables, with no controller plugged in
- No overclocking
The issues are still :
- Pressing buttons sometimes trigger other button presses (“A” gets sometimes pressed when “right” is pressed for example). This happens often but games are mostly playable… it’s just really annoying. And in EmulationStation, sometimes it launches games when i just want to go to the next machine by pressing right.
- Plugging a second controller into the extension cable disables both controllers
Do you think both issues are related ? Do i have a short circuit somewhere ? What tests should i do to investigate ?
I think i will try axle-h’s SNESDev fork, i’ve read he made some timing changes so maybe i will have more luck with this version.
12/22/2015 at 01:17 #112222DinoflyParticipantI installed axle-h’s SNESDev fork and it solved one of the issues: no more ghost button presses !
But i still can’t connect both of the controllers at the same time :(12/31/2015 at 19:01 #112809DinoflyParticipantAm i the only one who has this issue ?
Is there anything i can do to diagnose the cause of it ? I have a multimeter and checked every pin for continuity: everything seems ok. Is there a software i can use to monitor the GPIO status and see what changes when i plug in a second controller ?
I still don’t know if it is software related or hardware…01/01/2016 at 18:29 #112861DinoflyParticipantI’m talking to myself here, but maybe this will help someone facing the same issue. I finally got 2 controllers working.
I have 5 SNES controllers: 1 old official, 3 new non officials that i bought from Adafruit and 1 old non official “Super-4” turbo controller. All of them work fine on my Super Nintendo.
On the Pi with the GPIO Adapter, i always tested plugging in my official gamepad and one of my Adafruit gamepads. And i had issues with this configuration. Today, i tested with my 2 old controllers (official and “Super-4”). Both worked without any issue with the official SNESDev driver. No ghost buttons, no issues when both are plugged in at the same time.
So this means that the recent SNES controllers from Adafruit don’t quite use the same settings than the old controllers. They work on my real SNES, but have issues on the Pi. Old controllers work as expected. Or am i the only one having issues with recent SNES controllers on the Pi ?
01/06/2016 at 15:10 #113254jsawhiParticipantI really have no idea if this matter or not, but I’ve always wondered why the GPIO adapter seems to use the 3.3V pin instead of the 5V pin to power the SNES contoller… According to pin out diagrams, the actual console outputs 5V on the Vcc pin. Maybe that’s the difference? *shrug*
01/06/2016 at 17:03 #113265jsawhiParticipantI think I answered my own question about why it’s used after digging around a bit. The GPIO pins use 0V or 3.3V, not 5V. I would assume if the controller was powered with 5V, the data stream would be at a 5V “on” level.
Still may be the issue on some controllers not working well at 3.3V instead of 5.
01/06/2016 at 23:23 #113295DinoflyParticipantI’ve read about that today and i think you are right. The 3.3V tolerance might be the difference between the old and the new controllers.
-
AuthorPosts
- The forum ‘GPIO Adapter, ControlBlock etc.’ is closed to new topics and replies.