Homepage › Forums › RetroPie Project › GPIO Adapter, ControlBlock etc. › GPIO SNES controller issues
- This topic has 17 replies, 3 voices, and was last updated 9 years, 1 month ago by
Dinofly.
-
AuthorPosts
-
12/09/2015 at 16:44 #111510
Dinofly
Participant(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 #111577Dinofly
ParticipantHere are the pictures. Am I doing something wrong ?
12/11/2015 at 00:14 #111588Dinofly
ParticipantI 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 #111603Dinofly
ParticipantI 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 #111640Dinofly
ParticipantI 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 #111668petrockblog
KeymasterGlad 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 #111671Dinofly
ParticipantOK 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 #111684Dinofly
ParticipantI 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 #111892petrockblog
KeymasterSome 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 #111895Dinofly
ParticipantI’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 #112015Dinofly
ParticipantTurns 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 #112105Dinofly
ParticipantI 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 #112222Dinofly
ParticipantI 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 #112809Dinofly
ParticipantAm 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 #112861Dinofly
ParticipantI’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 #113254jsawhi
ParticipantI 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 #113265jsawhi
ParticipantI 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 #113295Dinofly
ParticipantI’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.