sc-controller
sc-controller copied to clipboard
8BitDo wireless adapter. add multiple controllers
Hi
When using 8BitDo wireless adapter(2dc8:3107 8BitDo IDLE).
It creates 50+ controllers that cause instability.
Output from terminal in -d mode spams.
Daemon reported profile change for ev2CBF26E1: /home/user/.config/scc/profiles/Ahat in time.sccprofile
Daemon reported unknown profile: 'None'; Overriding.
The ev2CBF26E1 ID changes but the error its the same.
The issue also appears in the here, but I think there is something more fundamental going on, as it happens also on the python3 build. https://github.com/kozec/sc-controller/issues/611
Testes with Steam Input and it works fine and is detected as one controller, I prefer sc-controller, as I am not tied to steam.
My best theory is that the way 8BitDo programed the adapter for compatibility with PlayStation,Xbox, Switch, etc. Is causing quirkiness, and it is tripping up sc-controller's detection adding a recurring loop.
On a direct connection via Bluetooth the controller works, but also has issues. One is that sc-controller registers buttons as multiple press e.g L1 and R1 both light up when ether of them are pressed, even after manual biding.
The other issue not to do with sc-controller, is major lag and instability when used with other Bluetooth devices on the same Bluetooth controller. The reason I purchased the adapter was to solve that issue.
After a quick look at the code I found this.
sc-controller/scc/drivers/evdevdrv.py/
def _generate_id(self):
"""
ID is generated as 'ev' + upper_case(hex(crc32(device name + X)))
where 'X' starts as 0 and increases as controllers with same name are
connected.
"""
magic_number = 0
id = None
while id is None or id in self.daemon.get_active_ids():
crc32 = binascii.crc32(b"%s%d" % (bytes(self.device.name, 'utf-8'), magic_number))
id = "ev%s" % (hex(crc32).upper().strip("-0X"),)
magic_number += 1
return id
This looks like where SC-Controller is grabbing all the evdev controllers and giving them an ID, this explains the ev***** spam.
Just to be absolutelly sure, when you start evtest
, what related devices it lists?
It would help if you could get log from daemon, not just from GUI. Turn off emulation in menu, start scc-daemon debug
in terminal and try connecting the controller. Hopefully it will output something that would explain why is it grabbing same controller so many times.
evtest with controller not registered in sc-controller
user@box ~ [1]> evtest
No device specified, trying to scan all of /dev/input/event*
Not running as root, no devices may be available.
Available devices:
/dev/input/event0: Power Button
/dev/input/event1: Power Button
/dev/input/event10: HDA ATI HDMI HDMI/DP,pcm=9
/dev/input/event11: HDA ATI HDMI HDMI/DP,pcm=10
/dev/input/event12: HDA ATI HDMI HDMI/DP,pcm=11
/dev/input/event13: Compx 2.4G Wireless Receiver
/dev/input/event14: Compx 2.4G Wireless Receiver Mouse
/dev/input/event15: Compx 2.4G Wireless Receiver
/dev/input/event16: HD-Audio Generic Front Mic
/dev/input/event17: HD-Audio Generic Rear Mic
/dev/input/event18: HD-Audio Generic Line
/dev/input/event19: HD-Audio Generic Line Out
/dev/input/event2: PC Speaker
/dev/input/event20: HD-Audio Generic Front Headphone
/dev/input/event21: Compx 2.4G Wireless Receiver Keyboard
/dev/input/event22: SCController Keyboard
/dev/input/event23: SCController Mouse
/dev/input/event24: Microsoft X-Box 360 pad
/dev/input/event3: Soundcore Life Q10 (AVRCP)
/dev/input/event4: Microsoft X-Box 360 pad
/dev/input/event5: Logitech G604
/dev/input/event6: Eee PC WMI hotkeys
/dev/input/event7: HDA ATI HDMI HDMI/DP,pcm=3
/dev/input/event8: HDA ATI HDMI HDMI/DP,pcm=7
/dev/input/event9: HDA ATI HDMI HDMI/DP,pcm=8
evtest with controller registered with sc-controller
user@box ~ [1]> evtest
No device specified, trying to scan all of /dev/input/event*
Not running as root, no devices may be available.
Available devices:
/dev/input/event0: Power Button
/dev/input/event1: Power Button
/dev/input/event10: HDA ATI HDMI HDMI/DP,pcm=9
/dev/input/event11: HDA ATI HDMI HDMI/DP,pcm=10
/dev/input/event12: HDA ATI HDMI HDMI/DP,pcm=11
/dev/input/event13: Compx 2.4G Wireless Receiver
/dev/input/event14: Compx 2.4G Wireless Receiver Mouse
/dev/input/event15: Compx 2.4G Wireless Receiver
/dev/input/event16: HD-Audio Generic Front Mic
/dev/input/event17: HD-Audio Generic Rear Mic
/dev/input/event18: HD-Audio Generic Line
/dev/input/event19: HD-Audio Generic Line Out
/dev/input/event2: PC Speaker
/dev/input/event20: HD-Audio Generic Front Headphone
/dev/input/event21: Compx 2.4G Wireless Receiver Keyboard
/dev/input/event22: SCController Keyboard
/dev/input/event23: SCController Mouse
/dev/input/event24: Microsoft X-Box 360 pad
/dev/input/event25: SCController Keyboard
/dev/input/event256: SCController Mouse
/dev/input/event257: Microsoft X-Box 360 pad
/dev/input/event258: SCController Keyboard
/dev/input/event259: SCController Mouse
/dev/input/event26: SCController Mouse
/dev/input/event260: Microsoft X-Box 360 pad
/dev/input/event261: SCController Keyboard
/dev/input/event262: SCController Mouse
/dev/input/event263: Microsoft X-Box 360 pad
/dev/input/event264: SCController Keyboard
/dev/input/event265: SCController Mouse
/dev/input/event266: Microsoft X-Box 360 pad
/dev/input/event27: Microsoft X-Box 360 pad
/dev/input/event28: SCController Keyboard
/dev/input/event29: SCController Mouse
/dev/input/event3: Soundcore Life Q10 (AVRCP)
/dev/input/event30: Microsoft X-Box 360 pad
/dev/input/event31: SCController Keyboard
/dev/input/event5: Logitech G604
/dev/input/event6: Eee PC WMI hotkeys
/dev/input/event7: HDA ATI HDMI HDMI/DP,pcm=3
/dev/input/event8: HDA ATI HDMI HDMI/DP,pcm=7
/dev/input/event9: HDA ATI HDMI HDMI/DP,pcm=8
sc-controller-8bitdo-debug.txt Attached file debug with controller registered, It's with the python3 build. If you need me to to the same with the python2 build, It will take me sometime as running python2 packages on Arch Linux can be tricky.