Viewing 18 posts - 1 through 18 (of 18 total)
  • Author
    Posts
  • Dinofly
    Participant
    Post count: 29

    (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

    Dinofly
    Participant
    Post count: 29

    Here are the pictures. Am I doing something wrong ?

    Dinofly
    Participant
    Post count: 29

    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
    Dinofly
    Participant
    Post count: 29

    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.

    Dinofly
    Participant
    Post count: 29

    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.

    petrockblog
    Keymaster
    Post count: 1827

    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.

    Dinofly
    Participant
    Post count: 29

    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 ?

    Dinofly
    Participant
    Post count: 29

    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 ?

    petrockblog
    Keymaster
    Post count: 1827

    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?

    Dinofly
    Participant
    Post count: 29

    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.

    Dinofly
    Participant
    Post count: 29

    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.

    Dinofly
    Participant
    Post count: 29

    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.

    Dinofly
    Participant
    Post count: 29

    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 :(

    Dinofly
    Participant
    Post count: 29

    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…

    Dinofly
    Participant
    Post count: 29

    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 ?

    jsawhi
    Participant
    Post count: 15

    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*

    jsawhi
    Participant
    Post count: 15

    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.

    Dinofly
    Participant
    Post count: 29

    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)
  • You must be logged in to reply to this topic.