Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

how to get switch controller to work #127

Open
FeyrisTan opened this issue Sep 4, 2024 · 15 comments
Open

how to get switch controller to work #127

FeyrisTan opened this issue Sep 4, 2024 · 15 comments

Comments

@FeyrisTan
Copy link

FeyrisTan commented Sep 4, 2024

Output of bubblejail --version

0.9.1

Your distro name and version

Arch Linux

Description

Controller: 8bitdo pro 2 bluetooth

Simply enabling Joysticks and gamepads is not enough. For example if I have an emulator setup with bubblejail it can see my controller in xbox mode but not in switch mode. Everything works fine outside of bubble.

@igo95862
Copy link
Owner

igo95862 commented Sep 4, 2024

Hello @FeyrisTan

Do you have [joystick] service enabled? How does your /dev/input folder looks like then controller is plugged in? (ls -l)

The current gamepad detected algorithm is not perfect and will be reworked to use udev in the future. See #16 .

@FeyrisTan
Copy link
Author

[joystick] is in the services file.

/dev/input has:
folders: by-id, by-path
event: 0-26 (0-28 with controller connected)
and then just js0 mice and mouse0-1

tried it with usb as well but same result. but it does work in "normal" xbox mode just not in switch mode.

@igo95862
Copy link
Owner

igo95862 commented Sep 4, 2024

Can you check the permission bits in the /dev/input. Currently the gamepad detection relies on the devices being other readable but maybe switch mode does not set that.

Also you can try running the strace to check if there is a some kind of path that is missing.

@FeyrisTan
Copy link
Author

FeyrisTan commented Sep 10, 2024

strace: https://privatebin.net/?3aff5c4399c1a7ee#7Hrn9uEiAFvZJYibgcnfJB7U3fVNqeU724vP8PxKXV2m

and ls -l in /dev/input:

drwxr-xr-x     - root 10 Sep 11:36  by-id
drwxr-xr-x     - root 10 Sep 11:36  by-path
crw-rw---- 13,64 root 10 Sep 11:36  event0
crw-rw---- 13,65 root 10 Sep 11:36  event1
crw-rw---- 13,66 root 10 Sep 11:36  event2
crw-rw---- 13,67 root 10 Sep 11:36  event3
crw-rw---- 13,68 root 10 Sep 11:36  event4
crw-rw---- 13,69 root 10 Sep 11:36  event5
crw-rw---- 13,70 root 10 Sep 11:36  event6
crw-rw---- 13,71 root 10 Sep 11:36  event7
crw-rw---- 13,72 root 10 Sep 11:36  event8
crw-rw---- 13,73 root 10 Sep 11:36  event9
crw-rw---- 13,74 root 10 Sep 11:36  event10
crw-rw---- 13,75 root 10 Sep 11:36  event11
crw-rw---- 13,76 root 10 Sep 11:36  event12
crw-rw---- 13,77 root 10 Sep 11:36  event13
crw-rw---- 13,78 root 10 Sep 11:36  event14
crw-rw---- 13,79 root 10 Sep 11:36  event15
crw-rw---- 13,80 root 10 Sep 11:36  event16
crw-rw---- 13,81 root 10 Sep 11:36  event17
crw-rw---- 13,82 root 10 Sep 11:36  event18
crw-rw---- 13,83 root 10 Sep 11:36  event19
crw-rw---- 13,84 root 10 Sep 11:36  event20
crw-rw---- 13,85 root 10 Sep 11:36  event21
crw-rw---- 13,86 root 10 Sep 11:36  event22
crw-rw---- 13,87 root 10 Sep 11:36  event23
crw-rw---- 13,88 root 10 Sep 11:36  event24
crw-rw---- 13,89 root 10 Sep 11:36  event25
crw-rw---- 13,90 root 10 Sep 11:36  event26
crw-rw-r--  13,0 root 10 Sep 11:36  js0
crw-rw---- 13,63 root 10 Sep 11:36  mice
crw-rw---- 13,32 root 10 Sep 11:36  mouse0
crw-rw---- 13,33 root 10 Sep 11:36  mouse1

@igo95862
Copy link
Owner

Looks like only js0 has the read permission. The current algorithm is very imperfect and relies on permissions of input device to have read permission. I have plans to use the udev but it has to wait for my library to add sd-device functionality.

Meanwhile you can try passing the missing eventX files using the debug service. This is very unreliable but see if that fixes the switch controller support.

@FeyrisTan
Copy link
Author

FeyrisTan commented Sep 10, 2024

Meaning like this?

[debug]
raw_bwrap_args = [
  "/dev/input/event27",
  "/dev/input/event28",
 ]

because that does not work

@igo95862
Copy link
Owner

Like this:

[debug]
raw_bwrap_args = [
  "--dev-bind", "/dev/input/event27", "/dev/input/event27",
  "--dev-bind",  "/dev/input/event28", "/dev/input/event28",
 ]

See bwrap man page.

@FeyrisTan
Copy link
Author

That does the trick! Ty for your help!

@FeyrisTan
Copy link
Author

Ah ofc there is still something not working..
Motion controls.

@FeyrisTan FeyrisTan reopened this Sep 11, 2024
@igo95862
Copy link
Owner

Do they have their own eventX device files?

@FeyrisTan
Copy link
Author

I only see event27 and 28 being added when connecting the controller

@igo95862
Copy link
Owner

Can you run udevadm monitor and post what it outputs when a controller gets plugged in?

@FeyrisTan
Copy link
Author

❯ udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[15058.196520] add      /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/bluetooth/hci0/hci0:256 (bluetooth)
UDEV  [15058.198560] add      /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/bluetooth/hci0/hci0:256 (bluetooth)
KERNEL[15058.327234] add      /devices/virtual/misc/uhid/0005:057E:2009.000C (hid)
KERNEL[15058.327449] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/hidraw/hidraw9 (hidraw)
UDEV  [15058.327700] add      /devices/virtual/misc/uhid/0005:057E:2009.000C (hid)
UDEV  [15058.331130] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/hidraw/hidraw9 (hidraw)
KERNEL[15059.521118] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/leds/0005:057E:2009.000C:green:player-1 (leds)
KERNEL[15059.521138] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/leds/0005:057E:2009.000C:green:player-2 (leds)
KERNEL[15059.521147] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/leds/0005:057E:2009.000C:green:player-3 (leds)
KERNEL[15059.521155] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/leds/0005:057E:2009.000C:green:player-4 (leds)
UDEV  [15059.521714] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/leds/0005:057E:2009.000C:green:player-1 (leds)
UDEV  [15059.522556] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/leds/0005:057E:2009.000C:green:player-2 (leds)
UDEV  [15059.522577] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/leds/0005:057E:2009.000C:green:player-3 (leds)
UDEV  [15059.522704] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/leds/0005:057E:2009.000C:green:player-4 (leds)
KERNEL[15059.542134] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/leds/0005:057E:2009.000C:blue:player-5 (leds)
KERNEL[15059.542153] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/power_supply/nintendo_switch_controller_battery_0005:057E:2009.000C/wakeup39 (wakeup)
KERNEL[15059.542168] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/power_supply/nintendo_switch_controller_battery_0005:057E:2009.000C/hwmon4 (hwmon)
KERNEL[15059.542207] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/input/input34 (input)
KERNEL[15059.542234] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/input/input34/event27 (input)
KERNEL[15059.542252] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/input/input35 (input)
KERNEL[15059.542264] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/input/input35/event28 (input)
KERNEL[15059.542283] bind     /devices/virtual/misc/uhid/0005:057E:2009.000C (hid)
UDEV  [15059.542606] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/power_supply/nintendo_switch_controller_battery_0005:057E:2009.000C/wakeup39 (wakeup)
UDEV  [15059.542868] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/leds/0005:057E:2009.000C:blue:player-5 (leds)
UDEV  [15059.542882] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/power_supply/nintendo_switch_controller_battery_0005:057E:2009.000C/hwmon4 (hwmon)
UDEV  [15059.543217] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/input/input34 (input)
UDEV  [15059.543754] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/input/input35 (input)
KERNEL[15059.554085] change   /devices/virtual/misc/uhid/0005:057E:2009.000C/power_supply/nintendo_switch_controller_battery_0005:057E:2009.000C (power_supply)
UDEV  [15059.556064] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/input/input35/event28 (input)
UDEV  [15059.556163] add      /devices/virtual/misc/uhid/0005:057E:2009.000C/input/input34/event27 (input)
UDEV  [15059.556570] bind     /devices/virtual/misc/uhid/0005:057E:2009.000C (hid)
UDEV  [15059.556974] change   /devices/virtual/misc/uhid/0005:057E:2009.000C/power_supply/nintendo_switch_controller_battery_0005:057E:2009.000C (power_supply)

@igo95862
Copy link
Owner

Hmmm... Maybe try adding the "--dev-bind", "/sys/devices/virtual/misc/uhid/0005:057E:2009.000C", "/sys/devices/virtual/misc/uhid/0005:057E:2009.000C",to the raw bwrap args? (not sure if it will work)

@FeyrisTan
Copy link
Author

that did not work

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants