GPIO SNES controller issues

Home Forums RetroPie Project GPIO Adapter, ControlBlock etc. GPIO SNES controller issues

RetroPie has a new website and forum. Please visit https://retropie.org.uk/ for the new site. The new forum is located at https://retropie.org.uk/forum/. This forum is left here as a read-only archive.

This topic contains 17 replies, has 3 voices, and was last updated by Profile photo of Dinofly Dinofly 1 year, 3 months ago.

Viewing 18 posts - 1 through 18 (of 18 total)
  • Author
    Posts
  • #111510
    Profile photo of Dinofly
    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

    • This topic was modified 1 year, 4 months ago by Profile photo of Dinofly Dinofly. Reason: Changed topic name

    #111577
    Profile photo of Dinofly
    Dinofly
    Participant

    Here are the pictures. Am I doing something wrong ?

    Attachments:
    #111588
    Profile photo of Dinofly
    Dinofly
    Participant

    I 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
    #111603
    Profile photo of Dinofly
    Dinofly
    Participant

    I 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.

    #111640
    Profile photo of Dinofly
    Dinofly
    Participant

    I 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.

    #111668
    Profile photo of petrockblog
    petrockblog
    Keymaster

    Glad 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.

    #111671
    Profile photo of Dinofly
    Dinofly
    Participant

    OK 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 ?

    #111684
    Profile photo of Dinofly
    Dinofly
    Participant

    I 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 ?

    #111892
    Profile photo of petrockblog
    petrockblog
    Keymaster

    Some 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?

    #111895
    Profile photo of Dinofly
    Dinofly
    Participant

    I’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.

    • This reply was modified 1 year, 4 months ago by Profile photo of Dinofly Dinofly.
    Attachments:
    #112015
    Profile photo of Dinofly
    Dinofly
    Participant

    Turns 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.

    #112105
    Profile photo of Dinofly
    Dinofly
    Participant

    I 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.

    Attachments:
    #112222
    Profile photo of Dinofly
    Dinofly
    Participant

    I 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 🙁

    #112809
    Profile photo of Dinofly
    Dinofly
    Participant

    Am 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…

    #112861
    Profile photo of Dinofly
    Dinofly
    Participant

    I’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 ?

    #113254
    Profile photo of jsawhi
    jsawhi
    Participant

    I 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*

    #113265
    Profile photo of jsawhi
    jsawhi
    Participant

    I 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.

    • This reply was modified 1 year, 3 months ago by Profile photo of jsawhi jsawhi.
    #113295
    Profile photo of Dinofly
    Dinofly
    Participant

    I’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.

Viewing 18 posts - 1 through 18 (of 18 total)

Forums are currently read only - please visit the new RetroPie forums at https://retropie.org.uk/forums/

Skip to toolbar