Problems while building my arcade with - DragonRise Inc. Generic USB Joystick

  • I just build myself a arcade cabinet with 2x DragonRise Inc. Generic USB Joystick encoders.
    alt text
    I have bought them from Ali Express, but when i was try my cabinet for a test run i noticed that the controls where not working properly.

    Before i build in my controls in the cabinet i build-ed a mdf test-board, and then i worked fine.
    But now when i startup the Raspberry with Recalbox my controls where all hustled.

    And sure not playable. After reading the problems with Dragon Rise and Recal in the forum i decided to put some effort in fixing this and sharing it with others. The solution for the problem is connect all of the buttons on the same place on the mainbord of your PCB do this for player one and two, when you now configure the board in Emulationstation it works just fine.! Also i added an configuration to my input config of Retroarch (system\configs\retroarch\inputs\default.cfg)

    I added:

    input_device = "DragonRise Inc.   Generic   USB  Joystick"
    input_driver = "udev"
    input_vendor_id = 121
    input_product_id = 6
    input_x_btn = "0"
    input_a_btn = "1"
    input_b_btn = "2"
    input_y_btn = "3"
    input_l_btn = "4"
    input_r_btn = "5"
    input_l2_btn = "6"
    input_r2_btn = "7"
    input_select_btn = "8"
    input_start_btn = "9"
    input_l3_btn = "10"
    input_r3_btn = "11"
    input_up_btn = "h0up"
    input_down_btn = "h0down"
    input_left_btn = "h0left"
    input_right_btn = "h0right"
    input_l_x_plus_axis = "+0"
    input_l_x_minus_axis = "-0"
    input_l_y_plus_axis = "+1"
    input_l_y_minus_axis = "-1"
    input_r_x_plus_axis = "+2"
    input_r_x_minus_axis = "-2"
    input_r_y_plus_axis = "+3"
    input_r_y_minus_axis = "-3"
    input_x_btn_label = "1"
    input_a_btn_label = "2"
    input_b_btn_label = "3"
    input_y_btn_label = "4"
    input_l_btn_label = "L"
    input_r_btn_label = "R"
    input_l2_btn_label = "L2"
    input_r2_btn_label = "R2"
    input_select_btn_label = "Select"
    input_start_btn_label = "Start"
    input_l3_btn_label = "L3"
    input_r3_btn_label = "R3"
    input_up_btn_label = "D-Pad Up"
    input_down_btn_label = "D-Pad Down"
    input_left_btn_label = "D-Pad Left"
    input_right_btn_label = "D-Pad Right"
    input_l_x_plus_axis_label = "Left Analog X+"
    input_l_x_minus_axis_label = "Left Analog X-"
    input_l_y_plus_axis_label = "Left Analog Y+"
    input_l_y_minus_axis_label = "Left Analog Y-"
    input_r_x_plus_axis_label = "Right Analog X+"
    input_r_x_minus_axis_label = "Right Analog X-"
    input_r_y_plus_axis_label = "Right Analog Y+"
    input_r_y_minus_axis_label = "Right Analog Y-"

    I hope this will help people!

  • Moderator

    A few things :

    • dragonrise has many variants but most of them have the same name
    • it works on a test panel, but not in your cab ? You must have missed something
    • the retroarch input cfg is how lakka works, but not recalbox, that feature is disabled by default

    I'm sure there was a much easier solution to your problem ...

  • Good afternoon friends .

    I do not know if there is a solution or not but I have the same problem with two delayzero or dragonise ,,,, if I only have one the configuration is not lost in and the retroarch is gardado correctly but with two is already another story and I do not know why are of the same name I do not know how to do that recalbox independently save the configuration in recalbox for each player then allow me to make the configurations in retroarch as I only with a player .. well if it is so and give me a hand I would appreciate it because, yes I have to reprogram some command in the switchboard would be great to know which is thanks.

  • Moderator

    @nachete have you searched the forum at least ?

  • I had no problems with 2 dragonrise, for the configuration I just connect my buttons 1,2,3,4 and so on. Same way for both encoder. It seems that retroarch choose by itself player 1 and 2, so possible inverted USB connections. They should be Number 1 and 2 on the raspberry, they are the 2 middle USB connectors on the board.
    Impossible to map Player 2 buttons as additional buttons to Player 1. In Dosbox it is possible and necessary.
    I also tried to use an additional control (PS3 + Wlan-Stick) together with dragonrise Player 1. Retroarch ignore and continues just without PS3.
    But perhaps newer versions have other behavior.

  • @Substring
    I must come back to this because I have with my 2 Dragonrise now the same issue in Retroarch.
    When I look into Settings - Input - Input User 2Binds - User 2 Device Index he show me same as for User 1 : Dragonrise Generic USB Joystick (#0) and no #1, even as in emulation station and in retroarchcustom.cfg they are both defined.
    Anyway in Dos everything work fine, but just first controller usable in Retroarch.

    joypad_autoconfig_dir = "~/configs/retroarch/inputs/"
    input_joypad_driver = "udev"
    input_player1_analog_dpad_mode = "0"
    input_player2_analog_dpad_mode = "0"
    input_enable_hotkey_btn = "8"
    input_enable_hotkey = "escape"
    menu_swap_ok_cancel_buttons = "true"
    input_player1_left_axis = "-0"
    input_state_slot_increase_axis = "-3"
    input_player1_down_axis = "+3"
    input_rewind_axis = "-0"
    input_player1_r_btn = "5"
    input_state_slot_decrease_axis = "+3"
    input_player1_select_btn = "10"
    input_player1_start_btn = "9"
    input_player1_y_btn = "0"
    input_screenshot_btn = "2"
    input_player1_right_axis = "+0"
    input_player1_a_btn = "4"
    input_player1_l_btn = "2"
    input_player1_x_btn = "1"
    input_load_state_btn = "1"
    input_save_state_btn = "0"
    input_reset_btn = "4"
    input_hold_fast_forward_axis = "+0"
    input_player1_up_axis = "-3"
    input_exit_emulator_btn = "9"
    input_player1_b_btn = "3"
    input_menu_toggle_btn = "3"
    input_player1_joypad_index = "0"
    input_player2_r_btn = "5"
    input_player2_a_btn = "4"
    input_player2_right_axis = "+0"
    input_player2_start_btn = "9"
    input_player2_up_axis = "-3"
    input_player2_y_btn = "0"
    input_player2_select_btn = "10"
    input_player2_l_btn = "2"
    input_player2_b_btn = "3"
    input_player2_left_axis = "-0"
    input_player2_down_axis = "+3"
    input_player2_x_btn = "1"
    input_player2_joypad_index = "1"
    video_scale_integer = "false"
    input_libretro_device_p2 = "1"
    fps_show = "false"
    input_libretro_device_p1 = "1"

    In the Libreto Github they write :

    Note that the linux kernel driver for this controller was broken from

    kernel 4.4 until 4.9. With the broken driver the joystick axes

    numbers will be off. This can be fixed by reverting commit

    18339f59c3a6698ee17d32970c9e1e450b16e7c3 and rebuilding hid-dr.ko.

    input_driver = "udev"
    input_vendor_id = 121
    input_product_id = 6
    input_device = "DragonRise Inc. Generic USB Joystick "
    input_device_display_name = "DragonRise generic DualShock gamepad"

  • Moderator

    @dragu still have my 4.9 pi3 kernel.image ? ;)

  • @Substring
    Cela me semble un problème pur de Retroarch ou de la version. Retroarch semble incapable de mapper des devices physiques à des joueurs distincts. Dans des jeux comme Mario World on peut utiliser le controleur sélectionné, mais pas le choisir, comme Retroarch le regarde comme seul et unique. Résultat : Il faut éventuellement changer les fiches USB, un joueur seul devra toujours jouer la même console, on oublit les tables de salon multiplace, et de même un controlleur supplémentaire sans fil pour le joueur 1. Tout cela un petit peu programmé avec les pieds et la bouche.

  • @Substring
    This issue from Retroarch that it is unable to distinct 2 joysticks with the same name, basing just on udev, and that this error is from 2014 on, now 4 years, is somewhere a failure and for me difficult to stand even for a licence free software. As so many people has the problem, in Lakka, in Retropie, in Recalbox and other.
    Is there still something happening with Retroarch, or they switched off the light ?

  • Moderator

    @dragu retroarch does constantly move, indeed. They released 1.7.1 a few days ago. I have no idea if your bug has been submitted, but that would mean that people owning 2 ps3 pads would face the same problem ...

    Have you tried the sdl2 input driver ?

  • @Substring
    I also messed around with sdl2, nothing changed. So this seems always a problem when you have 2 wired clone controllers. In game, the cores use both, but in Retroarch you cannot change the user assignement. As example very strange behavior in the Retroarch Menu interface.
    Settings --> Input --> User 1 Bind --> User 1 Device Index. In my case you can circle the options between : Dragonrise #0, Port #2, Port #3, Port #4, Disabled.
    You have seen that Port #1 is missing, so he just on USB ports, ignoring your nice ES, this from Retropie and Lakka.
    But worse, if you circle second time on Dragonrise #0, he pass the handle to your second controller and you must now continu in the Retroarch Menu with User 2.
    Nice Bullshit. ;)

  • @Substring

    I found something interesting with dmesg :

    login as: root
    root@Recalbox's password:
    # dmesg | grep DragonRise
    [    1.923431] usb 1-1.2: Manufacturer: DragonRise Inc.
    [    2.123462] usb 1-1.3: Manufacturer: DragonRise Inc.
    [    2.613596] input: DragonRise Inc.   Generic   USB  Joystick   as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/0003:0079:0006.0001/input/input0
    [    2.613853] dragonrise 0003:0079:0006.0001: input,hidraw0: USB HID v1.10 Joystick [DragonRise Inc.   Generic   USB  Joystick  ] on usb-3f980000.usb-1.2/input0
    [    2.615054] input: DragonRise Inc.   Generic   USB  Joystick   as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/0003:0079:0006.0002/input/input1
    [    2.615295] dragonrise 0003:0079:0006.0002: input,hidraw1: USB HID v1.10 Joystick [DragonRise Inc.   Generic   USB  Joystick  ] on usb-3f980000.usb-1.3/input0

    Is there an error in the last line and position, should it not be input 1 instead of input 0 ?

  • Moderator

    @dragu should compare with 2 xinmos. I believe it's normal when a controller handles a single player

    As long as they are mapped on separate /dev/input/eventX

  • @Substring
    I totaly agree with you that 1 controller handles a single player. But here he just forget controller #1. So I think that you should be able to map controller #0 to all possible players, with controller #1 (not existing) should be the same.
    If I now define in Retroarch Menu, that Player 1 is not existing, after this he map the controller #0 to Player 2, also in game.

  • Moderator

    @dragu do your encoders respond on separate events when you try evtest ?

  • @Substring

    # evtest
    No device specified, trying to scan all of /dev/input/event*
    Available devices:
    /dev/input/event0:      DragonRise Inc.   Generic   USB  Joystick
    /dev/input/event1:      DragonRise Inc.   Generic   USB  Joystick
    /dev/input/event2:      1byone Keyboard
    Select the device event number [0-2]:

    and he even dont forget my keyboard ;)

  • Moderator

    @dragu so it's a pure ra problem

  • @Substring
    Small chance that they resolve with newer version. ;)

  • Moderator

    @dragu have you checked their github to see if an issue points at your problem ?

  • @Substring
    Not yet deep inside. Just find traces everywhere. So I will collect. We have 1.6.9 so that's important also.

Want to support us ?





Looks like your connection to Recalbox Forum was lost, please wait while we try to reconnect.