Retropie setup menu/Runcommand crashing in ES on Ubuntu
-
@mitu
For a purpose test i have tryed this from a terminal:diabolik@NUC-Ubuntu:~$ /opt/retropie/admin/joy2key/joy2key_sdl.py kcub1 kcuf1 kcuu1 kcud1 0x0a 0x20 0x1b 0x00 kpp knp -d diabolik@NUC-Ubuntu:~$ 2024-09-18 17:36:04,786 DEBUG Using SDL Version 2.30.0, PySDL2 version 0.9.16 2024-09-18 17:36:04,838 DEBUG Joystick #0 DragonRise Inc. Generic USB Joystick added 2024-09-18 17:36:04,838 DEBUG Added configuration for known device DragonRise Inc. Generic USB Joystick, hats: {}, buttons: {6: 'pagedown', 4: 'pageup', 0: 'y', 2: 'x', 1: 'b', 3: 'a'}, axis: {0: [(-1, 'left'), (1, 'right')], 1: [(1, 'down'), (-1, 'up')]} 2024-09-18 17:36:12,101 DEBUG Events emitted: ['right'] Traceback (most recent call last): File "/opt/retropie/admin/joy2key/joy2key_sdl.py", line 557, in <module> sys.exit(main()) ^^^^^^ File "/opt/retropie/admin/joy2key/joy2key_sdl.py", line 549, in main event_loop(configs, joy_map, tty_fd) File "/opt/retropie/admin/joy2key/joy2key_sdl.py", line 409, in event_loop fcntl.ioctl(tty_fd, termios.TIOCSTI, c) OSError: [Errno 5] Input/output error
or also in this mode:
It's the crash appears on runcommand windows....
We can confirm it's joy2key create all issue here ?
-
@DjDiabolik said in Retropie setup menu/Runcommand crashing in ES on Ubuntu:
We can confirm it's joy2key create all issue here ?
Could be that, or the SDL2 library present on Ubuntu. Can you post the RetroArch auto-configuration profile for the Dragonrise joystick ?
EDIT: actually, this may not be related to the configuration of the joystick. Can you run, from a terminal:
sudo sysctl -w dev.tty.legacy_tiocsti=1
and - if you don't get an error - repeat the test ?
-
@mitu said in Retropie setup menu/Runcommand crashing in ES on Ubuntu:
Can you post the RetroArch auto-configuration profile for the Dragonrise joystick ?
yes it's not a problems... can you can you remind me the correct path where these files are located?
In theory I should have 2 profiles with a similar name because sometime i use two similar arcade kit on this retropie setup to play with friends on retrogaming evenings :)@mitu said in Retropie setup menu/Runcommand crashing in ES on Ubuntu:
sudo sysctl -w dev.tty.legacy_tiocsti=1
I have to do this after getting the crash above indicated or also the obtain the input/output error ?
After maded this... is this a permanent change or is it only applied temporarily? How do I get back to the default Ubuntu settings? -
Can you post the RetroArch auto-configuration profile for the Dragonrise joystick ?
yes it's not a problems... can you can you remind me the correct path where these files are located?
They're in
/opt/retropie/configs/all/retroarch-joypads
, but I think the test below should be enough.sudo sysctl -w dev.tty.legacy_tiocsti=1
I have to do this after getting the crash above indicated or also the obtain the input/output error ?
Just run it anytime, but repeat the test and see if the crash occurs again, with the new configuration.
After maded this... is this a permanent change or is it only applied temporarily? How do I get back to the default Ubuntu settings?
No, it's temporary until the next restart.
-
@mitu ok... In the afternoon or evening I turn on my Intel NUC and do this test.
About retroarch configs:
If you thinks it's usefull, I can also try to recreate the configuration files of my various joypads or arcade kit sticks (I think I should do this directly from emulationstation by deleting or moving all current .cfg files including those for the keyboard) :)
I brought these files with me with the system update.... I wouldn't want some system ID or interrupt to be changed and then the mess comes out :) -
/opt/retropie/configs/all
'retroarch-joypad' it's a simlink to
/opt/retropie/configs/all/retroarch/autoconfig
It actually contains only one file related to 'dragonrise'.... a file called
DragonRise Inc. Generic USB Joystick.cfg
It's contain this:
input_device = "DragonRise Inc. Generic USB Joystick" input_driver = "udev" input_vendor_id = "121" input_product_id = "6" input_left_axis = "-0" input_state_slot_decrease_axis = "-0" input_right_axis = "+0" input_state_slot_increase_axis = "+0" input_r_btn = "6" input_save_state_btn = "6" input_down_axis = "+1" input_l_btn = "4" input_l_btn_label = "LB" input_load_state_btn = "4" input_y_btn = "0" input_y_btn_label = "Y" input_x_btn = "2" input_menu_toggle_btn = "2" input_b_btn = "1" input_b_btn_label = "B" input_reset_btn = "1" input_a_btn = "3" input_up_axis = "-1" input_select_btn = "8" input_select_btn_label = "Back" input_start_btn = "9" input_start_btn_label = "Start" input_exit_emulator_btn = "9" input_enable_hotkey_btn = "8" input_l2_btn = "5" input_r2_btn = "7" input_r2_btn_label = "RT"
Now try to open terminal and see if joy2key_sdl.py goes in crash....
-
diabolik@NUC-Ubuntu:~$ sudo sysctl -w dev.tty.legacy_tiocsti=1 dev.tty.legacy_tiocsti = 1 diabolik@NUC-Ubuntu:~$
After on same terminal windows tryed this:
diabolik@NUC-Ubuntu:~$ /opt/retropie/admin/joy2key/joy2key_sdl.py kcub1 kcuf1 kcuu1 kcud1 0x0a 0x20 0x1b 0x00 kpp knp -d diabolik@NUC-Ubuntu:~$ 2024-09-19 16:13:18,613 DEBUG Using SDL Version 2.30.0, PySDL2 version 0.9.16 2024-09-19 16:13:18,666 DEBUG Joystick #0 DragonRise Inc. Generic USB Joystick added 2024-09-19 16:13:18,666 DEBUG Added configuration for known device DragonRise Inc. Generic USB Joystick, hats: {}, buttons: {6: 'pagedown', 4: 'pageup', 0: 'y', 2: 'x', 1: 'b', 3: 'a'}, axis: {0: [(-1, 'left'), (1, 'right')], 1: [(1, 'down'), (-1, 'up')]} 2024-09-19 16:13:24,321 DEBUG Events emitted: ['left'] 2024-09-19 16:13:26,439 DEBUG Events emitted: ['right'] 2024-09-19 16:13:27,396 DEBUG Events emitted: ['down'] 2024-09-19 16:13:27,800 DEBUG Events emitted: ['up'] /opt/retropie/admin/joy2key/joy2key_sdl.py kcub1 kcuf1 kcuu1 kcud1 0x0a 0x20 0x1b 0x00 kpp knp -d2024-09-19 16:13:28,356 DEBUG Events emitted: ['left'] 2024-09-19 16:13:31,180 DEBUG Events emitted: ['right'] 2024-09-19 16:13:31,936 DEBUG Events emitted: ['down'] 2024-09-19 16:13:32,845 DEBUG Events emitted: ['left'] 2024-09-19 16:13:33,853 DEBUG Events emitted: ['right'] 2024-09-19 16:13:34,610 DEBUG Events emitted: ['up'] /opt/retropie/admin/joy2key/joy2key_sdl.py kcub1 kcuf1 kcuu1 kcud1 0x0a 0x20 0x1b 0x00 kpp knp -d2024-09-19 16:13:35,216 DEBUG Events emitted: ['down'] 2024-09-19 16:13:35,771 DEBUG Events emitted: ['left'] 2024-09-19 16:13:36,376 DEBUG Events emitted: ['right'] 2024-09-19 16:13:36,982 DEBUG Events emitted: ['up'] /opt/retropie/admin/joy2key/joy2key_sdl.py kcub1 kcuf1 kcuu1 kcud1 0x0a 0x20 0x1b 0x00 kpp knp -d2024-09-19 16:13:37,537 DEBUG Events emitted: ['down'] 2024-09-19 16:13:38,041 DEBUG Events emitted: ['right'] 2024-09-19 16:13:38,546 DEBUG Events emitted: ['left'] 2024-09-19 16:13:41,572 DEBUG Events emitted: ['b'] 2024-09-19 16:13:42,178 DEBUG Events emitted: ['a'] diabolik@NUC-Ubuntu:~$ /opt/retropie/admin/joy2key/joy2key_sdl.py kcub1 kcuf1 kcuu1 kcud1 0x0a 0x20 0x1b 0x00 kpp knp -d diabolik@NUC-Ubuntu:~$ 2024-09-19 16:13:50,575 DEBUG Using SDL Version 2.30.0, PySDL2 version 0.9.16 2024-09-19 16:13:50,576 DEBUG Joystick #0 DragonRise Inc. Generic USB Joystick added 2024-09-19 16:13:50,576 DEBUG Added configuration for known device DragonRise Inc. Generic USB Joystick, hats: {}, buttons: {6: 'pagedown', 4: 'pageup', 0: 'y', 2: 'x', 1: 'b', 3: 'a'}, axis: {0: [(-1, 'left'), (1, 'right')], 1: [(1, 'down'), (-1, 'up')]} 2024-09-19 16:13:52,443 DEBUG Events emitted: ['right'] 2024-09-19 16:13:52,468 DEBUG Events emitted: ['right'] 2024-09-19 16:13:53,453 DEBUG Events emitted: ['right'] 2024-09-19 16:13:53,478 DEBUG Events emitted: ['right'] 2024-09-19 16:13:54,008 DEBUG Events emitted: ['right'] 2024-09-19 16:13:54,032 DEBUG Events emitted: ['right'] 2024-09-19 16:13:54,586 DEBUG Events emitted: ['left'] 2024-09-19 16:13:54,613 DEBUG Events emitted: ['left'] 2024-09-19 16:13:55,092 DEBUG Events emitted: ['up'] /opt/retropie/admin/joy2key/joy2key_sdl.py kcub1 kcuf1 kcuu1 kcud1 0x0a 0x20 0x1b 0x00 kpp knp -d2024-09-19 16:13:55,117 DEBUG Events emitted: ['up'] sudo sysctl -w dev.tty.legacy_tiocsti=12024-09-19 16:13:57,843 DEBUG Events emitted: ['left'] 2024-09-19 16:13:57,867 DEBUG Events emitted: ['left'] ^C diabolik@NUC-Ubuntu:~$
No more input/output error but i need to terminate the command whit CTRL + C.
For a purpose test now i want to try to open emulationstation and launch retropie setup script and it's continue to crash immediatelly after press a keyboard button.
All moviment on arcade stick it's simply ignored and do not cause any effect on the window of retropie setup script.
I have also tryed to launch a games.... runcommand appears if i press a button on keyboard apparently runcommand option it's be open. Every button or moviment on joypad do nothings.Strange.
EDIT
OMG Wait a moment... now the RUNCOMMAND works!! Apparently right now i can access to runcommand option menĂ¹ and i can move on all option whit arcade stick.
Anyway the retropie setup script instead continue to crash after first pression on a keyboard button. -
@mitu
just another purpose test... open new terminal and:diabolik@NUC-Ubuntu:~$ sudo sysctl -w dev.tty.legacy_tiocsti=0 dev.tty.legacy_tiocsti = 0 diabolik@NUC-Ubuntu:~$ /opt/retropie/admin/joy2key/joy2key_sdl.py kcub1 kcuf1 kcuu1 kcud1 0x0a 0x20 0x1b 0x00 kpp knp -d diabolik@NUC-Ubuntu:~$ 2024-09-19 18:25:40,148 DEBUG Using SDL Version 2.30.0, PySDL2 version 0.9.16 2024-09-19 18:25:40,201 DEBUG Joystick #0 DragonRise Inc. Generic USB Joystick added 2024-09-19 18:25:40,201 DEBUG Added configuration for known device DragonRise Inc. Generic USB Joystick, hats: {}, buttons: {6: 'pagedown', 4: 'pageup', 0: 'y', 2: 'x', 1: 'b', 3: 'a'}, axis: {0: [(-1, 'left'), (1, 'right')], 1: [(1, 'down'), (-1, 'up')]} 2024-09-19 18:25:42,926 DEBUG Events emitted: ['left'] Traceback (most recent call last): File "/opt/retropie/admin/joy2key/joy2key_sdl.py", line 557, in <module> sys.exit(main()) ^^^^^^ File "/opt/retropie/admin/joy2key/joy2key_sdl.py", line 549, in main event_loop(configs, joy_map, tty_fd) File "/opt/retropie/admin/joy2key/joy2key_sdl.py", line 409, in event_loop fcntl.ioctl(tty_fd, termios.TIOCSTI, c) OSError: [Errno 5] Input/output error
just to understand... what sets that value that we set to 1?
-
@DjDiabolik said in Retropie setup menu/Runcommand crashing in ES on Ubuntu:
No more input/output error but i need to terminate the command whit CTRL + C.
Yes, that's normal.
I don't understand whether this works for you after the command I posted. I seems that the joystick works to command runcommand, but not the keyboard ? Confusing. -
@DjDiabolik said in Retropie setup menu/Runcommand crashing in ES on Ubuntu:
what sets that value that we set to 1?
It forces the Linux kernel to allow a potential unsafe system call which mimics tty inputs. It can be a security vulnerability when crafted input is processed as the input is not sanitized. This long standing security loophole was fixed with kernel 6.2 onwards, hence the IOError respective crash. With the setting
dev.tty.legacy_tiocsti=1
the pre 6.2 kernel behaviour is restored.About the system call and the TIOCSTI value see
man 2 ioctl
andman 2 ioctl_tty
(FWIW section 2 ofman
is for system calls).The security implications are explained here: https://ruderich.org/simon/notes/su-sudo-from-root-tty-hijacking
HTH
-
@Lolonois said in Retropie setup menu/Runcommand crashing in ES on Ubuntu:
It forces the Linux kernel to allow a potential unsafe system call which mimics tty inputs. It can be a security vulnerability when crafted input is processed as the input is not sanitized. This long standing security loophole was fixed with kernel 6.2 onwards, hence the IOError respective crash. With the setting dev.tty.legacy_tiocsti=1 the pre 6.2 kernel behaviour is restored.
About the system call and the TIOCSTI value see man 2 ioctl and man 2 ioctl_tty (FWIW section 2 of man is for system calls).
The security implications are explained here: https://ruderich.org/simon/notes/su-sudo-from-root-tty-hijacking
HTH
Very great explanation.... I'm not an expert, in fact it was just a trivial curiosity of the case :)
@mitu said in Retropie setup menu/Runcommand crashing in ES on Ubuntu:
I don't understand whether this works for you after the command I posted. I seems that the joystick works to command runcommand, but not the keyboard ? Confusing.
It seems that the "retropie setup script" terminal crash issue and the problem of the "runcommand" options being inaccessible (every button pressed on the arcade stick seemed to be ignored) they are two distinct and in any case unconnected problems.
Try to explain better:With
dev.tty.legacy_tiocsti=1
:- Choose and open a game. The "runcommand" window appear. I can reach the "runcommand" option also if i press a button on my "arcade stick" and i can navigate all voices in the terminal windows.
With
dev.tty.legacy_tiocsti=0
:- Choose and open a game. "Runcommand" window appear. Every button i press on my "arcade stick" it's like they're being ignored. Sometime, after two or three buttons pressed, the system crash report windows appear and i can send system report (I still haven't figured out who, what and where he sends this information to).
- For open the "Runcommand" option i need to press any button on the keyboard. All "runcommand" voices can be navigate only by keyboard using the arrow keys. Apparently joy2key not work.
whatever the value of "dev.tty.legacy_tiocsti" is instead It has no effect on the "retropie setup script" issue crash. Every other terminal windows launched from ES continue to crash like "EsThemes" "Show Ip" "RunCommand Option" etc etc.
If I explain it and write it in my language in Italian then you can translate it into English do you think it's better? Maybe that way I can explain the situation better.
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.