Homepage › Forums › RetroPie Project › GPIO Adapter, ControlBlock etc. › SNES gamepad does not work using ControlBlock
Tagged: ControlBlock SNES
- This topic has 55 replies, 10 voices, and was last updated 9 years, 2 months ago by petrockblog.
-
AuthorPosts
-
05/18/2015 at 07:17 #97863petrockblogKeymaster
[quote=97786]disregard my last two posts. reinstalled retropie and now it works fine! ha, what the hell.
[/quote]
I am glad to hear that!
Could you briefly describe what you did when you “reinstalled retropie”? I think that might help people here.05/18/2015 at 09:59 #97869richParticipantWell, I’ve actually worked out what the issue was.
Overclocking.
My Pi 2 was overclocked to the Pi2 setting, which is what it should run at as default to take advantage of the higher specs. However, the controlblock does not function at all on this mode. If I revert back to the lowest option for overclocking (pi 1 spec), it works.
Now the issue is that for some reason the controlblock works fine under that spec – but that entirely defeats the purpose of me buying the pi2 in the first place. SNES hardly runs at all and most games are unplayable without that extra speed.
Now, as you increase the overclocking bit by bit it’s clear what the issue is – the controlblock seems to go into overdrive and registers random button presses. By the point of getting even close to the stock pi2 spec, the controlblock is inputting every button at complete random, choosing random games and rendering it unusable. By the point you get to pi2 spec, it’s basically got every input as ON.
So that’s why. And that’s why I didn’t get it resolved until I restarted retropie from scratch – because of the overclocking settings, which didn’t even occur to me as a possible issue.
So my question is this: is there any chance of a resolution for this? It’s a damn shame having a controlblock that I bought for my Pi2 that doesn’t work at all at any spec over than the lowest setting. I’ve had to revert back to using Bluetooth controllers which operate perfectly even at pi2 spec overclock.
05/18/2015 at 18:51 #97882petrockblogKeymasterThanks for that hint!
I can reproduce this issue – interestingly, this “only” occurs with “snes” as “gamepadtype”. Gamepadtype “arcade”, e.g., works with the Pi2 overclocking settings. This seems to be a timing issue within the ControlBlock driver and I will try to find a fix for that!
05/18/2015 at 19:26 #97884richParticipantThat would be great
It would fix my problem as well as the others in this thread as its clearly the cause.
Keep us updated as to when the update is out! Thanks!
05/19/2015 at 06:00 #97897guspazParticipantI was having the same problem (no matter what I did, NES controller didn’t respond). I saw the posts here today, switched the overclock from “pi2” (which is a mild overclock for the pi2, not the native clockspeed of the pi2) to “none” (which makes it run much slower), and the controller started working.
Looking forward to the fix so that the driver works independent of clockspeed!
05/19/2015 at 21:15 #97934petrockblogKeymasterAll right – I have just pushed a fix for the issue regarding the broken polling of SNES controllers with “RPi2” overclocking settings: https://github.com/petrockblog/ControlBlockService/commit/05c2e34984a36c2855a571e6570cf48523d9e7be
Polling of the SNES controllers works for all official (=raspi-config) overclocking modes now!
To update the ControlBlock driver you need to follow these steps:
cd ControlBlockService # change to repository folder git pull # update repository to latest version sudo make uninstallservice # uninstall ControlBlock service sudo make uninstall # uninstall ControlBlock binaries make # re-compile ControlBlock driver sudo make install # install ControlBlock driver sudo nano /etc/controlblockservice.cfg # enable gamepad type "snes" with the text editor sudo make installservice # install ControlBlock service
05/19/2015 at 21:26 #97935richParticipantI can confirm it now works. Awesome!
Only issue is there is quite noticeable input lag – this is not present on the lower clocked settings or when using other controllers (bluetooth or usb).
Any ideas?
edit: hard gpu sync seems to have fixed it in FCEUMM at least!
Fixes it in other emulators too, SNES runs beautifully.thanks!
05/19/2015 at 23:27 #97951NoFloParticipantAs mentioned before, overclocking is not the problem in my (and OP’s?) case.
Even with the new version, the controller is not working (showing “off” when disconnected, “on” when connected) on both controller ports. If set to arcade controller, all buttons are working correctly when connected to GND.
Any other ideas?05/25/2015 at 15:26 #98437rumbaldoParticipantI’m struggling too
Pi Model: 2 B
RetroPie Version Used: 3.0.0 Beta 2
Built From: SD Image
USB Devices connected: Keyboardbuilt the controlblock last night. Plugged it all in. emulationstation saying there are 2 controllers connected but the snes controllers are not responding at all.
Tried to follow the steps provided for dotarj
Here is a pic of my setup
i2c was next
went into the ControlBlockService folder
sudo make uninstallservice
pi@retropie ~/ControlBlockService $ sudo i2cdetect -y 0 Error: Could not open file <code>/dev/i2c-0' or</code>/dev/i2c/0': No such file or directory pi@retropie ~/ControlBlockService $ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: 03 -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
I tried a fresh image still having exactly the same issue.
Do i need to swap GND and VCC?
05/25/2015 at 17:53 #98452petrockblogKeymaster@rumbaldo: Looking at your wiring everything seems to be ok. GND and VCC do not need to be swapped. To be sure, I have updated the ControlBlock article and added a diagram that shows the pin out with which I have successfully connected the original SNES controller front with the ControlBlock. You can find the diagram at https://www.petrockblock.com/2014/12/29/controlblock-power-switch-and-io-for-the-raspberry-pi/#Using_SNES_Controllers_with_the_ControlBlock.
Maybe you have a short somewhere?
Also it is important that only a single service uses the I2C port. Also, there were issues with overclocking. I have tested the bug fix as thoroughly as possible, but maybe there is still something wrong. You could try and set the overclocking setting back to “normal”. Also, you could check the functionality of the GPIO expanders by configuring the gamepad type as “arcade”, manually pulling each pin to GND and using the tool “jstest” to see the status changes of the virtual gamepads.
05/26/2015 at 19:13 #98507richParticipantJust another note: I just wired up another controlblock from scratch. Works fine.
06/05/2015 at 16:17 #99116sudobarnParticipantHi guys,
been having similar problems.
At first I thought it was the overclocking, but nope, even at none there was no playing.
Thought it was my wiring. Nope all fine. Did Jtest and that was all good.
Then Florian put out the fix for overclocking. Still no joy.
Figured therefore, it must be my soldering work, and that I had in some way (undetectable to me) damaged the board. So I bought a new one that comes pre-soldered as one unit. It arrived today.
Wired the new one up, did a fresh install of V3.0 Beta2 for rpi2. Went through the steps to install the service, and… Still doesn’t work…(!!) The switch works, as does the LED. When the system is booted, two gamepads are recognised, but each gamepad will only detect one button press before it says “already allocated”.
The only thing I can think now is that it might be my editing of the cfg file. Could anyone possibly throw up a moron-proof, keystroke-by-keystroke instruction?
The ridiculous bit is that the machine I am building isn’t even for me, but for my best friend, as a surprise wedding present (on the 27th June).
Any help would be awesome and hugely appreciated.
SudoBarn
06/11/2015 at 19:19 #99538sudobarnParticipantHi guys,
still having trouble. Have done clean install of v2.6 and 3.0Beta2 for Rpi2.
Running Rpi2 Model B
USB devices: Keyboard
Overclocking; None (just to be sure)
Also, I have two control blocks. (1 I soldered myself, and another that came pre-soldered, just in case I messed up the soldering)
With both 2.6 and 3.0 Beta 2, I do a clean install. Starup. Exit Emulation Station. Raspi-config. Expand File System. Restart.
Then I go through the steps as per:
ControlBlock: Power Switch, Game Controllers, and I/O for the Raspberry Pi
Restart system.
I then edit controlblockconfig.cfg in /etc/ (using “sudo nano /etc/controlblockconfig.cfg”)
I edit as follows:
———————————-{
(TAB) “input” : {
(TAB)(TAB) “gamepadtype” : “snes”
(TAB) },
(TAB) “powerswitch” : {
(TAB)(TAB) “activated” : true
(TAB) }}
———————————–
In both versions, the switch and LED work, but when starting up emulation station, at the opening controller configuration screen, it will either acknowledge the controlblockservice with 2 controllers, but when holding a button, it will only accept one button input, before saying already assigned.
With both versions, I then follow the update fix instructions as above.
Interestingly, when I get to the “sudo make uninstall” phase, an error pops up in the script:
pi@retropie ~/ControlBlockService $ sudo make uninstall
cd src/controlblock && make uninstall
make[1]: Entering directory ‘/home/pi/ControlBlockService/src/controlblock’
rm /usr/local/bin/../../build/controlblock
rm: cannot remove ‘/usr/local/bin/../../build/controlblock’ : No such file or directory
Makefile:51: recipe for target ‘uninstall’ failed
make[1]: [uninstall] Error 1 (ignored)
rm //etc/controlblockconfig.cfg
make[1]: Leaving directory ‘home/pi/ControlBlockService/src/controlblock’I continue nonetheless:
make
sudo make install
sudo nano /etc/controlblockservice.cfg**This brings up a blank file, which I fill in as above. I also do:
sudo nano /etc/controlblockconfig.cfg
and fill in as above (just to be sure) (is it /etc/controlblockservice.cfg or controlblockconfig.cfg or both?)
Then I do “sudo make installservice”.
I switch the machine off. (Power Switch still working). Switch it on again, but when I try to input, it recognises control block service, but will again only allow me 1 input before it’s ‘already taken’.
I’m pretty sure my wiring is correct (see pictures). And there aren’t any detectable shorts.
I’ve previously polled the ports using jstest and that all seemed fine.
Anyone have any ideas?
07/06/2015 at 16:44 #101478dotarjParticipantSorry for the delayed response. I’ve had some other things on my mind lately…
I finally took the time to test the ControlBlock with the new ControlBlockService and it all seems to work now!
Thanks for the fix Florian!
07/06/2015 at 22:25 #101518petrockblogKeymaster[quote=101478]Sorry for the delayed response. I’ve had some other things on my mind lately…
I finally took the time to test the ControlBlock with the new ControlBlockService and it all seems to work now!
Thanks for the fix Florian!
[/quote]
Glad to hear that!
07/07/2015 at 10:56 #101537sudobarnParticipantHi guys,
Now works like a dream. Couple of tips –
When I was having my troubles, I had two different pairs of third party replacement controllers for SNES, and was using ports I had ‘harvested’ from a ‘replacement controller ports circuit board’.
In this respect I was a little unlucky, since all the afforementioned were ‘dodgy’. I replaced the SNES ports and acquired origional, official snes controllers, and presto! It works!!!
So anyone having similar problems should probably do similarly. Well done Florian! :)
07/08/2015 at 06:14 #101606petrockblogKeymaster@sudobarn: Also to you – very glad to hear that!
08/26/2015 at 10:40 #104753NoFloParticipantUnfortunately, I am still unable to use my controllers. I have no idea what else I can try to solve the problem. In jstest all of my controller buttons are shown “off” with no controller connected and stay “on” after connecting. To isolate the problem I swapped the following parts:
– power supply
– raspberry pi (two different Pi 2 B)
– controlblock (got a second one, pre-soldered, just in case…)
– wiring of the controller
– snes controller
– micro sd card
– installaton of retropie (both stable and beta release)
– overclockingAny ideas? Anything I forgot to check? I am clueless… :(
09/06/2015 at 02:53 #105492chadParticipantHello,
Hopefully you’re still monitoring this thread. After hooking up my new controlblock, my snes controllers weren’t being recognized, so I’ve made it to this thread to try and debug the problem. When I reached the step below, my output remained all dashes. What should my next step(s) be?[quote=91806]Sorry, I did not think about this before. You need to disable the controlblockservice before this test. You can simply do this with these commands run from within the ControlBlockService folder:
sudo make uninstallservice
Does the output ofsudo i2cdetect -y 1
look different then? If the GPIO expanders are recognized correctly, we will see a line
20: 20 -- -- -- -- -- -- 27
[/quote]
09/06/2015 at 14:07 #105506chadParticipantI found the problem. I had ordered a pre-soldered board to save some time (lol, THAT didn’t work!). Where one of the 8 pin terminal blocks was soldered, too much solder had been placed shorting out two pins from the header. I removed the excess solder, cleaned up the board, and now everything is working.
09/09/2015 at 21:30 #105742petrockblogKeymasteromg, glad to hear that you figured it out!
I will check the solder process to try to enhance it in the future.
-
AuthorPosts
- The forum ‘GPIO Adapter, ControlBlock etc.’ is closed to new topics and replies.