-
Notifications
You must be signed in to change notification settings - Fork 22
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
base: master
Are you sure you want to change the base?
Conversation
</description> | ||
<provides> | ||
<!-- USB\VID_2dC8&PID_5750 --> | ||
<firmware type="flashed">b02f1319-c1c4-54f4-b7f2-5bb3552f6a9e</firmware> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
isnt there a bootloader guid here too?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's exactly bootloader. I'm not sure about another, let me check
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you talking about 78acf201-a624-5c0b-a521-e204be14e3d5
? How should I define it? TBH, I've just cloned the M30 metadata more or less https://github.com/hughsie/8bitdo-firmware/blob/master/releases/M30/1.13/m30.metainfo.xml
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Richard, any update?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't you need to add a runtime GUID here as well? Otherwise fwupd isn't going to know the device is a NS30 just from the bootloader.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to #25 (comment) the bootloader GUID should not be listed in this file, only the runtime GUID.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello dear gentlemen. Sorry for the long silence, but the device has gone from my hands for a while. Unfortunately, sudo fwupdmgr get-devices --show-all-devices
doesn't show the gamepad unless it's in bootload mode. I don't know why, but this is the state..
Besides the fact, that |
I'd really like someone from 8bitdo to be doing this work. If anyone wants to volunteer to manage the updates on the LVFS I can write to them and ask if this is acceptable. |
What do you mean by "manage the updates"? Do you mean create pull requests like this one on behalf of 8bitdo whenever there is a new firmware release? If so, I'm willing to do that. |
It's more the "Upload to the LVFS" bit I'm trying to avoid doing. |
I'm willing to do that as well. |
<!-- 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> |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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)
There was a problem hiding this comment.
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.
I believe you will also have to add an entry for the SN30 GP to https://github.com/fwupd/fwupd/blob/master/plugins/ebitdo/ebitdo.quirk before this will work. |
Hello, I've added a firmware for a gamepad