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

Add firmware for SN30 gamepad #18

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions releases/SN30_GP/6.11/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright (C) 2019 Richard Hughes <[email protected]>
# Copyright (C) 2019 Mikhail f. Shiryaev <[email protected]>

VENDOR=8Bitdo
PROJECT_NAME=SN30_GP
VERSION=6.11
FIRMWARE_FILES=$(wildcard *.dat)
METAINFO_FILES=sn30gp.metainfo.xml

all: $(VENDOR)-$(PROJECT_NAME)-$(VERSION).cab

clean:
rm *.cab

check: $(METAINFO_FILES)
appstream-util validate-relax $(METAINFO_FILES)

%.cab: $(FIRMWARE_FILES) $(METAINFO_FILES)
gcab --create --nopath $@ "$(FIRMWARE_FILES)" $(METAINFO_FILES)
Binary file added releases/SN30_GP/6.11/SN30_Firmware_V6.11.dat
Binary file not shown.
12 changes: 12 additions & 0 deletions releases/SN30_GP/6.11/readme_en.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
2019-05-18 SN30+SF30_Firmware_V6.11

1. Fixed input lag issue with playing SUPER SMASH BROS.
2. Fixed the pop-up window error when using amiibo.

-------------------------------------------------------------------------------

Update instruction:
1. Press and hold L+R+START buttons on the controller to put it on its update mode. LEDs on the top will blink in red.
2. Connect the controller to your Windows or macOS via the USB cable.
3. Click on "USB Update" on your device, search for Firmware.dat in the pop-up window and run it.
4. Un-plug the controller when the upgrade process is done, then restart it before using.
56 changes: 56 additions & 0 deletions releases/SN30_GP/6.11/sn30gp.metainfo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2016 Richard Hughes <[email protected]> -->
<!-- Copyright 2018 Mario Limonciello <[email protected]> -->
<component type="firmware">
<id>com.8bitdo.sn30-gp.firmware</id>
<name>SN30 GP</name>
<summary>Firmware for the 8Bitdo SN30 GP Game Controller</summary>
<description>
<p>
Updating the firmware on your SN30 GP device improves performance and adds
new features.
</p>
</description>
<provides>
<!-- USB\VID_2DC8&PID_5750&REV_0200 -->
<firmware type="flashed">78acf201-a624-5c0b-a521-e204be14e3d5</firmware>
<!-- USB\VID_2dC8&PID_5750 -->
<firmware type="flashed">b02f1319-c1c4-54f4-b7f2-5bb3552f6a9e</firmware>
Comment on lines +15 to +18
Copy link
Contributor

@rhansen rhansen May 7, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do not use the bootloader UUID—use the UUID when the device is in Android (D-input) mode. See #25 (comment) for details.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Richard, this device isn't shown up in the sudo fwupdmgr get-devices --show-all-devices output in any mode except bootloader. If you would be so nice and point, how to do it, I'll make it for sure

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if the SN30 GP is affected by fwupd/fwupd#1681. Do you see the same "failed to add USB device" error when you plug it in in D-input mode? If so there's not much that can be done until that bug is fixed.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, you will need to add an entry for the SN30 GP to https://github.com/fwupd/fwupd/blob/master/plugins/ebitdo/ebitdo.quirk.

Copy link
Contributor Author

@Felixoid Felixoid May 8, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if it's the same thing since I don't see errors in fwupd daemon logs

[ 4.175718] [0005d04c] libusb: debug [handle_events] poll() returned 0
[ 4.175753] [0005d04c] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 4.175767] [0005d04c] libusb: debug [handle_events] poll() 2 fds with timeout in 2000ms
[ 4.568808] [0005d04b] libusb: debug [linux_get_device_address] getting address for device: 1-4 detached: 0
[ 4.568874] [0005d04b] libusb: debug [linux_get_device_address] scan 1-4
[ 4.569056] [0005d04b] libusb: debug [linux_get_device_address] bus=1 dev=101
[ 4.569075] [0005d04b] libusb: debug [udev_hotplug_event] udev hotplug event. action: add.
[ 4.569090] [0005d04b] libusb: debug [linux_enumerate_device] busnum 1 devaddr 101 session_id 357
[ 4.569116] [0005d04b] libusb: debug [linux_enumerate_device] allocating new device for 1/101 (session 357)
[ 4.569262] [0005d04b] libusb: debug [linux_get_parent_info] Dev 0x7f8fd0001f70 (1-4) has parent 0x558c6f5d9e10 (usb1) port 4
[ 4.569348] [0005d04c] libusb: debug [handle_events] poll() returned 1
[ 4.569363] [0005d04c] libusb: debug [handle_events] caught a fish on the event pipe
[ 4.569374] [0005d04c] libusb: debug [handle_events] hotplug message received
[ 4.569434] [0005d04c] libusb: debug [libusb_get_device_descriptor]
[ 4.569458] [0005d04c] libusb: debug [libusb_get_device_descriptor]
[ 4.569542] [0005d04c] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 4.569561] [0005d04c] libusb: debug [handle_events] poll() 2 fds with timeout in 2000ms
[ 4.697010] [0005d04b] libusb: debug [linux_get_device_address] getting address for device: 1-4 detached: 0
[ 4.697033] [0005d04b] libusb: debug [linux_get_device_address] scan 1-4
[ 4.697078] [0005d04b] libusb: debug [linux_get_device_address] bus=1 dev=101
[ 4.697083] [0005d04b] libusb: debug [udev_hotplug_event] udev hotplug event. action: bind.
[ 4.697087] [0005d04b] libusb: error [udev_hotplug_event] ignoring udev action bind

and udevadm monitor

KERNEL[124935.506347] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2 (usb)
KERNEL[124935.507703] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0 (usb)
KERNEL[124935.508565] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:2DC8:9012.004E (hid)
KERNEL[124935.509389] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:2DC8:9012.004E/input/input132 (input)
KERNEL[124935.510360] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:2DC8:9012.004E/input/input132/event12 (input)
KERNEL[124935.510475] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:2DC8:9012.004E/input/input132/js0 (input)
KERNEL[124935.510556] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:2DC8:9012.004E/hidraw/hidraw0 (hidraw)
KERNEL[124935.510667] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:2DC8:9012.004E (hid)
KERNEL[124935.510768] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0 (usb)
KERNEL[124935.510885] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-2 (usb)
UDEV  [124935.528311] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2 (usb)
UDEV  [124935.533377] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0 (usb)
UDEV  [124935.537849] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:2DC8:9012.004E (hid)
UDEV  [124935.542876] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:2DC8:9012.004E/input/input132 (input)
UDEV  [124935.552331] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:2DC8:9012.004E/input/input132/js0 (input)
UDEV  [124935.565715] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:2DC8:9012.004E/hidraw/hidraw0 (hidraw)
UDEV  [124935.634552] add      /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:2DC8:9012.004E/input/input132/event12 (input)
UDEV  [124935.635912] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:2DC8:9012.004E (hid)
UDEV  [124935.637470] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0 (usb)
UDEV  [124935.642574] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-2 (usb)

Here's an example of working M30 logs

[ 9.906413] [0005d17a] libusb: debug [linux_get_device_address] getting address for device: 1-4 detached: 0
[ 9.906476] [0005d17a] libusb: debug [linux_get_device_address] scan 1-4
[ 9.906627] [0005d17a] libusb: debug [linux_get_device_address] bus=1 dev=102
[ 9.906653] [0005d17a] libusb: debug [udev_hotplug_event] udev hotplug event. action: add.
[ 9.906673] [0005d17a] libusb: debug [linux_enumerate_device] busnum 1 devaddr 102 session_id 358
[ 9.906697] [0005d17a] libusb: debug [linux_enumerate_device] allocating new device for 1/102 (session 358)
[ 9.906813] [0005d17a] libusb: debug [linux_get_parent_info] Dev 0x7fe144001f70 (1-4) has parent 0x55ba1c0b7e10 (usb1) port 4
[ 9.906888] [0005d17b] libusb: debug [handle_events] poll() returned 1
[ 9.906918] [0005d17b] libusb: debug [handle_events] caught a fish on the event pipe
[ 9.906931] [0005d17b] libusb: debug [handle_events] hotplug message received
[ 9.907001] [0005d17b] libusb: debug [libusb_get_device_descriptor]
[ 9.907026] [0005d17b] libusb: debug [libusb_get_device_descriptor]
[ 9.907127] [0005d17b] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 9.907157] [0005d17b] libusb: debug [handle_events] poll() 2 fds with timeout in 2000ms
[ 9.923753] [0005d178] libusb: debug [libusb_open] open 1.102
[ 9.924139] [0005d178] libusb: debug [usbi_add_pollfd] add fd 18 events 4
[ 9.924495] [0005d178] libusb: debug [libusb_alloc_transfer] transfer 0x55ba1c158110
[ 9.924498] [0005d17b] libusb: debug [handle_events] poll() returned 1
[ 9.924837] [0005d17b] libusb: debug [handle_events] caught a fish on the event pipe
[ 9.924855] [0005d17b] libusb: debug [handle_events] someone updated the poll fds
[ 9.924866] [0005d17b] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 9.924874] [0005d17b] libusb: debug [handle_events] poll fds modified, reallocating
[ 9.924889] [0005d17b] libusb: debug [handle_events] poll() 3 fds with timeout in 2000ms
[ 9.924793] [0005d178] libusb: debug [libusb_submit_transfer] transfer 0x55ba1c158110
[ 9.930298] [0005d178] libusb: debug [add_to_flying_list] arm timerfd for timeout in 1000ms (first in line)
[ 9.930604] [0005d178] libusb: debug [libusb_handle_events_timeout_completed] another thread is doing event handling
[ 9.930728] [0005d17b] libusb: debug [handle_events] poll() returned 1
[ 9.930922] [0005d17b] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=4
[ 9.930939] [0005d17b] libusb: debug [handle_control_completion] handling completion status 0
[ 9.930948] [0005d17b] libusb: debug [disarm_timerfd]
[ 9.930957] [0005d17b] libusb: debug [usbi_handle_transfer_completion] transfer 0x55ba1c158110 has callback 0x7fe15cdb9590
[ 9.930965] [0005d17b] libusb: debug [sync_transfer_cb] actual_length=4
[ 9.930980] [0005d17b] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 9.930988] [0005d17b] libusb: debug [handle_events] poll() 3 fds with timeout in 2000ms
[ 9.931185] [0005d178] libusb: debug [libusb_free_transfer] transfer 0x55ba1c158110
[ 9.931368] [0005d178] libusb: debug [libusb_alloc_transfer] transfer 0x55ba1c1581f0
[ 9.931537] [0005d178] libusb: debug [libusb_submit_transfer] transfer 0x55ba1c1581f0
[ 9.931709] [0005d178] libusb: debug [add_to_flying_list] arm timerfd for timeout in 1000ms (first in line)
[ 9.931906] [0005d178] libusb: debug [libusb_handle_events_timeout_completed] another thread is doing event handling
[ 9.932066] [0005d17b] libusb: debug [handle_events] poll() returned 1
[ 9.932518] [0005d17b] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=38
[ 9.932530] [0005d17b] libusb: debug [handle_control_completion] handling completion status 0
[ 9.932538] [0005d17b] libusb: debug [disarm_timerfd]
[ 9.932548] [0005d17b] libusb: debug [usbi_handle_transfer_completion] transfer 0x55ba1c1581f0 has callback 0x7fe15cdb9590
[ 9.932556] [0005d17b] libusb: debug [sync_transfer_cb] actual_length=38
[ 9.932570] [0005d17b] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 9.932577] [0005d17b] libusb: debug [handle_events] poll() 3 fds with timeout in 2000ms
[ 9.933647] [0005d178] libusb: debug [libusb_free_transfer] transfer 0x55ba1c1581f0
[ 9.933973] [0005d178] libusb: debug [libusb_detach_kernel_driver] interface 0
[ 9.973066] [0005d178] libusb: debug [libusb_claim_interface] interface 0
[ 9.973282] [0005d178] libusb: debug [libusb_alloc_transfer] transfer 0x55ba1c1581f0
[ 9.973440] [0005d178] libusb: debug [libusb_submit_transfer] transfer 0x55ba1c1581f0
[ 9.973455] [0005d178] libusb: debug [add_to_flying_list] arm timerfd for timeout in 5000ms (first in line)
[ 9.973750] [0005d178] libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 64
[ 9.975535] [0005d17b] libusb: debug [handle_events] poll() returned 1
[ 9.975570] [0005d17b] libusb: debug [reap_for_handle] urb type=1 status=0 transferred=64
[ 9.975580] [0005d17b] libusb: debug [handle_bulk_completion] handling completion status 0 of bulk urb 1/1
[ 9.975585] [0005d17b] libusb: debug [handle_bulk_completion] last URB in transfer --> complete!
[ 9.975590] [0005d17b] libusb: debug [disarm_timerfd]
[ 9.975596] [0005d17b] libusb: debug [usbi_handle_transfer_completion] transfer 0x55ba1c1581f0 has callback 0x7fe15d6c56c0
[ 9.975613] [0005d17b] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 9.975617] [0005d17b] libusb: debug [handle_events] poll() 3 fds with timeout in 2000ms
[ 9.976189] [0005d178] libusb: debug [libusb_free_transfer] transfer 0x55ba1c1581f0
[ 9.976565] [0005d178] libusb: debug [libusb_alloc_transfer] transfer 0x55ba1c1581f0
[ 9.976829] [0005d178] libusb: debug [libusb_submit_transfer] transfer 0x55ba1c1581f0
[ 9.976854] [0005d178] libusb: debug [add_to_flying_list] arm timerfd for timeout in 5000ms (first in line)
[ 9.977055] [0005d178] libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 64
[ 9.979457] [0005d17b] libusb: debug [handle_events] poll() returned 1
[ 9.979474] [0005d17b] libusb: debug [reap_for_handle] urb type=1 status=0 transferred=9
[ 9.979479] [0005d17b] libusb: debug [handle_bulk_completion] handling completion status 0 of bulk urb 1/1
[ 9.979484] [0005d17b] libusb: debug [handle_bulk_completion] last URB in transfer --> complete!
[ 9.979489] [0005d17b] libusb: debug [disarm_timerfd]
[ 9.979495] [0005d17b] libusb: debug [usbi_handle_transfer_completion] transfer 0x55ba1c1581f0 has callback 0x7fe15d6c56c0
[ 9.979517] [0005d17b] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 9.979524] [0005d17b] libusb: debug [handle_events] poll() 3 fds with timeout in 2000ms
[ 9.979539] [0005d178] libusb: debug [libusb_free_transfer] transfer 0x55ba1c1581f0
[ 9.984610] [0005d178] libusb: debug [libusb_close]
[ 9.984667] [0005d17b] libusb: debug [handle_events] poll() returned 1
[ 9.984676] [0005d17b] libusb: debug [handle_events] caught a fish on the event pipe
[ 9.984680] [0005d17b] libusb: debug [handle_events] someone is closing a device
[ 9.984688] [0005d17b] libusb: debug [libusb_try_lock_events] someone else is closing a device
[ 9.984693] [0005d17b] libusb: debug [libusb_event_handler_active] someone else is closing a device
[ 9.984697] [0005d17b] libusb: debug [libusb_handle_events_timeout_completed] another thread is doing event handling
[ 9.984692] [0005d178] libusb: debug [usbi_remove_pollfd] remove fd 18
[ 9.984735] [0005d17b] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 9.984740] [0005d17b] libusb: debug [handle_events] poll fds modified, reallocating
[ 9.984746] [0005d17b] libusb: debug [handle_events] poll() 2 fds with timeout in 2000ms
[ 9.990451] [0005d17a] libusb: debug [linux_get_device_address] getting address for device: 1-4 detached: 0
[ 9.990473] [0005d17a] libusb: debug [linux_get_device_address] scan 1-4
[ 9.990520] [0005d17a] libusb: debug [linux_get_device_address] bus=1 dev=102
[ 9.990524] [0005d17a] libusb: debug [udev_hotplug_event] udev hotplug event. action: bind.
[ 9.990527] [0005d17a] libusb: error [udev_hotplug_event] ignoring udev action bind
KERNEL[125020.773073] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4 (usb)
KERNEL[125020.774604] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0 (usb)
KERNEL[125020.777648] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:2DC8:5006.004F (hid)
KERNEL[125020.777903] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:2DC8:5006.004F/input/input133 (input)
KERNEL[125020.778841] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:2DC8:5006.004F/input/input133/event12 (input)
KERNEL[125020.778978] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:2DC8:5006.004F/input/input133/js0 (input)
KERNEL[125020.779109] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:2DC8:5006.004F/hidraw/hidraw0 (hidraw)
KERNEL[125020.779292] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:2DC8:5006.004F (hid)
KERNEL[125020.779461] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0 (usb)
KERNEL[125020.779621] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-4 (usb)
UDEV  [125020.804636] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4 (usb)
UDEV  [125020.814978] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0 (usb)
UDEV  [125020.820076] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:2DC8:5006.004F (hid)
UDEV  [125020.824312] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:2DC8:5006.004F/input/input133 (input)
UDEV  [125020.830874] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:2DC8:5006.004F/input/input133/js0 (input)
UDEV  [125020.845809] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:2DC8:5006.004F/hidraw/hidraw0 (hidraw)
UDEV  [125020.924746] add      /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:2DC8:5006.004F/input/input133/event12 (input)
UDEV  [125020.927695] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:2DC8:5006.004F (hid)
UDEV  [125020.928745] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0 (usb)
UDEV  [125020.932875] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-4 (usb)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have you tried building fwupd with an entry for the SN30 GP in ebitdo.quirk?

Also, your logs only show libusb messages. Please enable verbose logging (VerboseDomains=*) to get fwupd log messages.

</provides>
<url type="homepage">http://www.8bitdo.com/sn30-gp/</url>
<metadata_license>CC0-1.0</metadata_license>
<project_license>Proprietary</project_license>
<developer_name>8Bitdo</developer_name>
<releases>
<release urgency="medium" version="6.11" date="2018-12-06">
<checksum filename="SN30_Firmware_V6.11.dat" target="content"/>
<description>
<p>
This stable release fixes the following issues:
</p>
<ul>
<li>Fixed input lag issue with playing SUPER SMASH BROS.</li>
<li>Fixed the pop-up window error when using amiibo.</li>
</ul>
</description>
</release>
</releases>
<screenshots>
<screenshot type="default">
<image type="source">http://support.8bitdo.com/images/support/products/sn30-color.gif</image>
<caption>Unplug the controller, hold down L1 + R1 + START until the red LED on top of the controller is flashing and then reconnect the controller.</caption>
</screenshot>
</screenshots>

<!-- only newer versions of fwupd know about the new controller -->
<requires>
<id compare="ge" version="1.0.3">org.freedesktop.fwupd</id>
</requires>

<categories>
<category>X-Device</category>
</categories>
<custom>
<value key="LVFS::UpdateProtocol">com.8bitdo</value>
</custom>
</component>