Joy2key causing controller issues
-
So, I have just restored my backup again (the exact same backup I just used that had issues on start). This time I plugged the controller into the usual port. Started up no problem! So I'm certain that had something to do with it. After some messing around , copying back the SNES default controller configs, I went to access run command but pushed the button a tad bit late and BAM! Joy2key issue was back!
I was able to recover this time. The ONLY way I was able to was to be in ES menu - open terminal and type
ps -a
Find the entry forjoy2key
and thenkill 1234
(1234 being process ID #)I randomly does it if I happen to tap A or B at the wrong time, but does NOT do it no matter how much I tap the L & R shoulder buttons. I assume they are not mapped with joy2key.
-
@bizzar721 I just used SNES clone controller, but joy2key is terminated after runcommand call (as it should).... strange strange...
Did you try the little hacky script? This seems the only "quick" solution I discovered so far :(
Btw:
pgrep joy2key.py
will directly show PID
pkill joy2key.py
will directly terminate process ;)ps -a
is good for diagnosis ;) -
@cyperghost Thanks for the explanation of pkill. I have not gotten to try the joy2key disable script yet. Even though it may be a bit hackey, at least it's not taking up any resources.
From what I read, this particular Joy2key is only used for runcommand and even if I wished to use Joy2key inside an emulator (which I don't), I would want a different Joy2key.
I still have not been able to find in runcommand how exactly Joy2key is called to shut down. I can't image what is stopping it from terminating (or possibly starting back up)
EDIT
I went through various systems and used ps - a andJoy2key
was running in the background of many, such as SNES, & Gameboy running retroarch. WithJoy2key
not running in ES, booting a gameboy game without hitting any buttons, Joy2key will be running in the background.For ports (any), hitting A or B anytine during loading screen, not going into runcommand, will cause
Joy2key
to run in the background. -
@cyperghost The script did not work. Here is from runcommand log:
/opt/retropie/configs/all/runcommand-onstart.sh: /opt/retropie/configs/all/delaykill_joy2key.sh: /bin/bash^M: bad interpreter: No such file or directory Parameters: Executing: pushd /opt/retropie/ports/openbor; /opt/retropie/ports/openbor/OpenBOR "/home/pi/RetroPie/roms/ports/openbor/Aliens Vs Predator Aftermath (Demo).bor"; popd /opt/retropie/ports/openbor ~
I looked up the error and it had to do with the file being created on windows, so I then ran a dos2unix utility.
After that, the error was gone, as well as any mention of it in the runcommand log. Unfortunately it does not close joy2key.EDIT
Going into runcommand settings and changing launch menu to disable removes joy2key from ever being started. All the keypresses during loading screen on any emulators would not invoke joy2key. Of course I lose an important feature of Emulation Station/RetroPie. I'm hoping this will help in pinpointing the issue.
At this point, I would be interested in using a globalKillJoy2Key script
! This is making my head spin! -
@bizzar721 said in Joy2key causing controller issues:
The script did not work. Here is from runcommand log:
It works for sure. You are using wrong formated text file format, Winows is using CR LF as newline, Unix system just using LF. You can avoid this if you are calling the bash script with command
bash
from runcommand-onstart.sh. It will look like this[[ "$1" == "openbor" ]] && bash /path/to/script/delaykill_joy2key.sh OpenBOR &
A global joy2key kill script is also considerable. But I don't understand why the python script is still running in background in your case.
I still have not been able to find in runcommand how exactly Joy2key is called to shut down
It's a function call inside
runcommand.sh
very similar to the one I've used in the BoR-start menu script. But the call used by runcommand is done more professional and I did not have the time to dig deeper what exactly there happens. Simply the script detects joypads and set /dev/input/js# to joy2key. The PID of joy2key is savesdinto a variable. And if runcommand is going to finish the PID will be SIGTERMED, the PID of the python subshell is detected by bash with?!
-
@cyperghost
I really appreciate your time helping me with this. Thank you.After using dos2unix utility I didn't get any mention if it did or did not run in the log - but I also did not get the
^M
error so I assumed it ran. I just realized I didn't change permissions to 0755 (but I did command to make it executable) so maybe that's why it didn't terminate Joy2key.I'm really debating if I just wipe the SD card, and start from scratch - restoring games & configs from the backup.
It's just a lot of work getting everything just right, and I don't know what will reintroduce this bug if I start copying all the settings back over. -
@bizzar721 I changed the script a bit
pkill -f joy2key.py
- is working better, because so it will also findpython joy2key.py
calls ;) You can try to make a blank install. For first setups it will not take to much time to see if the issue will pop up again. -
Unfortunately, it did not work. First couple of tries it did not work, so I pkilled joy2key. After that it didn't come for about 25 times. (pressing all kinds of buttons on the controller). Even loading runcommand menu, joy2key was properly closing. Then, pressing A & B repeatedly, joy2key was back.
Running the Unix
delaykill_joy2key.sh
from terminalsudo ./delaykill_joy2key.sh
, I recieved and endless loop of:pgrep: no matching criteria specified Try `pgrep --help' for more information.
Running the .sh not converted to unix using
sudo bash ./delaykill_joy2key.sh
./delaykill_joy2key.sh: line 2: $'\r': command not found ./delaykill_joy2key.sh: line 10: syntax error near unexpected token `done' ./delaykill_joy2key.sh: line 10: `done'
EDIT
I get it, it won't run from terminal because variables are defined inruncommand-onstart.sh
I thought that maybe your script was closing joy2key after run command, just like it should, and maybe something else was causing it to run again just after. I apologize if those commands were not input correctly in terminal.
Dumping the files from my backup as we speak, hopefully I can get the new SD card up and running sometime tomorrow.
This is going to make me jump out of a plane! (seriously, I'll be going skydiving tomorrow)
-
@bizzar721 said in Joy2key causing controller issues:
seriously, I'll be going skydiving tomorrow
Make your head clean and use the force!
I get it, it won't run from terminal because variables are defined in
runcommand-onstart.sh
Yes runcommand-onstart sets parameter to obtain PID of a binary or script.
I think a general script is easily possible to do.- You set a delay timer of maybe 5 seconds before the while-loop
- You search for
pgrep -f dialog
- IF NOT any dialog PID is found, then try to terminate joy2key
But for now try it just for openBOR, because that makes trouble and the script defintly works in this case. It's not simple to write general solutions without test area.
-
I just tried out the "fresh" image and am still getting joy2key still running in background. I used a fresh retropie image downloaded from Retropie, then added folders back using Samba. I added the
roms
folder,bios
folder and thenconfig
folder. I omittedes_settings.cfg
,runcommand-launch-dialog.cfg
and
runcommand.cfg
I did not touch anything that required SSH, nor did I even install anything from retropie setup. Can anyone check to see if they have joy2key running using retroarch?
Edit
I was digging into runcommand files again and compared/opt/retropie/supplementary/runcommandjoy2key.pyc
from the new image withruncommandjoy2key.pyc
from my backup and they were not identical.
I replaced the file on the image I backed up (still had it on an SD card). I still got the error to reappear,
but I really had to try to get it to happen so far. (only once). Running Turbo grafx 16 opens joy2key, and once it's open, the only way to close it is to pkill it.I also wanted to add in that when I renamed
runcommandjoy2key.pyc
to[OLD]runcommandjoy2key.pyc
, but did not replace the file,joy2key
was still working in runcommand, still staying open as well.I
-
@bizzar721 The
joy2key.py
file should be just a small text file and it wasn't updated the last 5 months. You can see it here on GithubAnnother question? What is
runcommandjoy2key.pyc
? And why it looks so strange encoded in your screenshot? Did you compiled it?I also wanted to add in that when I renamed
runcommandjoy2key.pyc
to[OLD]runcommandjoy2key.pyc
, but did not replace the file, joy2key was still working in runcommand, still staying open as well.That's feasible because you seem to edit the wrong file. The script filename is
joy2key.py
it's located in same directory asruncommand.sh
-
That's weird. This file was there on a clean build from the official RetroPie image. I assumed it was needed to run
joy2key.py.
It is located in the same folder asjoy2key.py
&runcommand.sh
. That's why I thought it was so odd for it running without that file.Joy2key.py
matches the officialjoy2key.py
. The last post is the only time I really looked into or mentionedjoy2key.pyc
. I was using WinMerge to compare the 2 files. Here isjoy2key.pyc
from the fresh install.Inside of retropie-4.4-rpi2_rpi3.img
-
@bizzar721 Okay, I see
I think it's better to tag @BuZz maybe he can solve the questionWhy is in the Image a compiled joy2key python script? Is this needed since RetroPie 4.4?
If I compare the github then the runcommand and the joy2key python-script were not updated since month.
It seems that @BiZzAr721 gots issues with a not terminated joy2key instance during emulator call.
This ends in a terminated OpenBOR session, because left DPAD seems to work as ESCAPE key which is so far an issue only with this emulator but it ocours also with others.
If you have any idea, than thanks for your feedback. -
I spent a little time this evening trying to get this sorted out. I loaded up the "debug" image where I copied over only the contents of the folders available in samba (config, roms, bios). I went to enter a command in terminal and realized my keyboard wasn't set up for English US when I went to enter
~
command. I entered config and changed the keyboard type toGeneric 101 key PC
and AltGr as `default for this keyboard layout' .I have not been able to replicate the
joy2key
bug yet.Over on my complete image, I already had keyboard set, but I went ahead and reset the keyboard to the exact same options as mentioned above. This did not fix the problem.
Is there a way/is it safe to update retropie from source? I'm wondering if getting keyboard settings back to square one will help any. Maybe there are files I can try manually replacing?
I will try to recreate the bug in the "debug" image again....and again...and again...... and hopefully I will not see it reappear. Then I can slowly reintroduce system files. Any recommendations for which files should be introduced first?
-
Another update....
I've been using RetroPie for a couple of weeks now without the issue reappearing. I got it happening again. Installing Pixel Desktop to ports and some metadata edits through ES menu are the only things I can think that I have done besides playing games . Like usual, hard reboots didn't clear it. I created a new backup the bugged image. I then restored that very image and so far it hasn't happened yet. I can't imagine it is gone but I haven't had it return yet.
Technically I would assume the very first boot would have the same issue since that is the state I backed it up in. -
I restored a backup that wasn't noticeably having the
joy2key
issue, and upon first boot, first try I was had the issue. I reinstalled ES from source but no change. Is there a possibility this specific SD card is causing the issue? I don't see how, but literally all I did was backup and restore to this SD. -
@bizzar721 I believe it has something to do with your controller config. I suggest to manually check if instance of joy2key is running, or to use my delay kill script.
I sadly can not reproduce any of your issues maybe other users can
-
@cyperghost My controller config only consists of the 1 SNES clone (This build I never added any additional controllers EXCEPT the logitech wireless dongle for my keyboard/touchpad combo)
I turned of joypad support for runcommand and I have no issues since joy2key never starts. I still have joy2key support with your OpenBOR game selector AND it kills joy2key properly.
The Joy2Key on_start scripts you wrote up never worked (which must have something to do why runcommand will not kill it) Somehow
joy2key
has infinite lives!EDIT
Pressing buttons on loading screen I received a message on bottom left of screen
readonly mode, sorry [start with --edit?]
Edit 2
Resetting ownership/permissions of /home/pi/RetroPie/roms
That seems to be tied to that specific errorEdit 3
Restoring permissions did not help. I have been checking manually. I have doneps -a
countless times. It's normal practice for me to runps -a
when ANY game is loaded lol -
@bizzar721 I know that these SNES controllers behave a bit unusual. I used your controller config for openbor and it worked also with mine so I assume that mine got the same chip set.
So what is unusual of these? The DPAD is mapped as analog input - that is really the last thing I can think your issues are affected from this. Does this happen with a keyboard connected only?
Why do you think your file permission is wrong? -
@cyperghost It happens no matter what is plugged in. This last time I reset controllers, then when I got the controller screen I setup a keyboard as controller and still have the issue. Even without keyboard plugged have the issue. I can tell when the issue is back because SNES will have a delay before the loading screen.
The reason I reset permissions was that searching for the error shown on loading screen let to a post where resetting permissions cleared the error.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.