retrospy / RetroSpy

Live controller viewer for Nintendo consoles as well as many other retro consoles and computers. Includes viewer application for Windows, and Arduino sketch for hardware interface.
https://retro-spy.com
GNU General Public License v3.0
144 stars 20 forks source link

8BitDo SN30 Pro USB becomes unusable over time #99

Closed mn1213 closed 4 years ago

mn1213 commented 4 years ago

8BitDo SN30 Pro USB (model 82AA) -> Beaglebone Green -> Nintendo Switch

Inputs start out buttery smooth, but become increasingly delayed as time passes. usb-mitm's memory use also climbs as a buffer somewhere appears to get clogged. A similar symptom was documented at https://github.com/usb-tools/USBProxy-legacy/issues/60 in the past.

Repro is simple: Start the proxy and press a few buttons to ensure everything is working as expected. Leave it alone for several minutes and press a few more. It will take seconds to see the result.

zoggins commented 4 years ago

will take a look

On Mon, Oct 21, 2019 at 10:30 AM mn1213 notifications@github.com wrote:

8BitDo SN30 Pro USB (model 82AA) -> Beaglebone Green -> Nintendo Switch

Inputs start out buttery smooth, but become increasingly delayed as time passes. usb-mitm's memory use also climbs as a buffer somewhere appears to get clogged. A similar symptom was documented at usb-tools/USBProxy-legacy#60 https://github.com/usb-tools/USBProxy-legacy/issues/60 in the past.

Repro is simple: Start the proxy and press a few buttons to ensure everything is working as expected. Leave it alone for several minutes and press a few more. It will take seconds to see the result.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/zoggins/RetroSpy/issues/99?email_source=notifications&email_token=AE2CEVTP4MK2BTW7BPYAG33QPXRMPA5CNFSM4JDBYLV2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HTIGBQA, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE2CEVXCSNLDDS2JMXBNCJTQPXRMPANCNFSM4JDBYLVQ .

zoggins commented 4 years ago

My guess is the conversion talked about in that bug isn't right for this controller. I will see what it looks like when I get home.

On Mon, Oct 21, 2019 at 10:35 AM Christopher Mallery < christopher.mallery@gmail.com> wrote:

will take a look

On Mon, Oct 21, 2019 at 10:30 AM mn1213 notifications@github.com wrote:

8BitDo SN30 Pro USB (model 82AA) -> Beaglebone Green -> Nintendo Switch

Inputs start out buttery smooth, but become increasingly delayed as time passes. usb-mitm's memory use also climbs as a buffer somewhere appears to get clogged. A similar symptom was documented at usb-tools/USBProxy-legacy#60 https://github.com/usb-tools/USBProxy-legacy/issues/60 in the past.

Repro is simple: Start the proxy and press a few buttons to ensure everything is working as expected. Leave it alone for several minutes and press a few more. It will take seconds to see the result.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/zoggins/RetroSpy/issues/99?email_source=notifications&email_token=AE2CEVTP4MK2BTW7BPYAG33QPXRMPA5CNFSM4JDBYLV2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HTIGBQA, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE2CEVXCSNLDDS2JMXBNCJTQPXRMPANCNFSM4JDBYLVQ .

zoggins commented 4 years ago

You are seeing this from RetroSpy or in the terminal on the beaglebone?

On Mon, Oct 21, 2019 at 10:42 AM Christopher Mallery < christopher.mallery@gmail.com> wrote:

My guess is the conversion talked about in that bug isn't right for this controller. I will see what it looks like when I get home.

On Mon, Oct 21, 2019 at 10:35 AM Christopher Mallery < christopher.mallery@gmail.com> wrote:

will take a look

On Mon, Oct 21, 2019 at 10:30 AM mn1213 notifications@github.com wrote:

8BitDo SN30 Pro USB (model 82AA) -> Beaglebone Green -> Nintendo Switch

Inputs start out buttery smooth, but become increasingly delayed as time passes. usb-mitm's memory use also climbs as a buffer somewhere appears to get clogged. A similar symptom was documented at usb-tools/USBProxy-legacy#60 https://github.com/usb-tools/USBProxy-legacy/issues/60 in the past.

Repro is simple: Start the proxy and press a few buttons to ensure everything is working as expected. Leave it alone for several minutes and press a few more. It will take seconds to see the result.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/zoggins/RetroSpy/issues/99?email_source=notifications&email_token=AE2CEVTP4MK2BTW7BPYAG33QPXRMPA5CNFSM4JDBYLV2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HTIGBQA, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE2CEVXCSNLDDS2JMXBNCJTQPXRMPANCNFSM4JDBYLVQ .

zoggins commented 4 years ago

Also have tried with any other types of controllers. or just this one?

On Mon, Oct 21, 2019 at 10:48 AM Christopher Mallery < christopher.mallery@gmail.com> wrote:

You are seeing this from RetroSpy or in the terminal on the beaglebone?

On Mon, Oct 21, 2019 at 10:42 AM Christopher Mallery < christopher.mallery@gmail.com> wrote:

My guess is the conversion talked about in that bug isn't right for this controller. I will see what it looks like when I get home.

On Mon, Oct 21, 2019 at 10:35 AM Christopher Mallery < christopher.mallery@gmail.com> wrote:

will take a look

On Mon, Oct 21, 2019 at 10:30 AM mn1213 notifications@github.com wrote:

8BitDo SN30 Pro USB (model 82AA) -> Beaglebone Green -> Nintendo Switch

Inputs start out buttery smooth, but become increasingly delayed as time passes. usb-mitm's memory use also climbs as a buffer somewhere appears to get clogged. A similar symptom was documented at usb-tools/USBProxy-legacy#60 https://github.com/usb-tools/USBProxy-legacy/issues/60 in the past.

Repro is simple: Start the proxy and press a few buttons to ensure everything is working as expected. Leave it alone for several minutes and press a few more. It will take seconds to see the result.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/zoggins/RetroSpy/issues/99?email_source=notifications&email_token=AE2CEVTP4MK2BTW7BPYAG33QPXRMPA5CNFSM4JDBYLV2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HTIGBQA, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE2CEVXCSNLDDS2JMXBNCJTQPXRMPANCNFSM4JDBYLVQ .

zoggins commented 4 years ago

I can repro on the SN30, it takes a little over 5 minutes to fall over. It doesn't seem to happen on a pro controller, or takes longer. Hard to tell. Memory is leaking somewhere in all cases, but memory usage is double when using the SN30 versus a pro controller.

On Mon, Oct 21, 2019, 10:53 Christopher Mallery < christopher.mallery@gmail.com> wrote:

Also have tried with any other types of controllers. or just this one?

On Mon, Oct 21, 2019 at 10:48 AM Christopher Mallery < christopher.mallery@gmail.com> wrote:

You are seeing this from RetroSpy or in the terminal on the beaglebone?

On Mon, Oct 21, 2019 at 10:42 AM Christopher Mallery < christopher.mallery@gmail.com> wrote:

My guess is the conversion talked about in that bug isn't right for this controller. I will see what it looks like when I get home.

On Mon, Oct 21, 2019 at 10:35 AM Christopher Mallery < christopher.mallery@gmail.com> wrote:

will take a look

On Mon, Oct 21, 2019 at 10:30 AM mn1213 notifications@github.com wrote:

8BitDo SN30 Pro USB (model 82AA) -> Beaglebone Green -> Nintendo Switch

Inputs start out buttery smooth, but become increasingly delayed as time passes. usb-mitm's memory use also climbs as a buffer somewhere appears to get clogged. A similar symptom was documented at usb-tools/USBProxy-legacy#60 https://github.com/usb-tools/USBProxy-legacy/issues/60 in the past.

Repro is simple: Start the proxy and press a few buttons to ensure everything is working as expected. Leave it alone for several minutes and press a few more. It will take seconds to see the result.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/zoggins/RetroSpy/issues/99?email_source=notifications&email_token=AE2CEVTP4MK2BTW7BPYAG33QPXRMPA5CNFSM4JDBYLV2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HTIGBQA, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE2CEVXCSNLDDS2JMXBNCJTQPXRMPANCNFSM4JDBYLVQ .

mn1213 commented 4 years ago

I don't have any other supported controllers to test, nor do I have a modified Switch unfortunately.

Although I'm real under-equipped for information gathering here, I can at least add that no amount of fiddling with the order of operations or use of USB hubs in the chain have any positive effect on the situation.

Thinking back to that issue I linked (though it's probably not what we're seeing here), how do the speed and polling rate of a real Pro Controller compare to an SN30 Pro and to the root hub?

zoggins commented 4 years ago

I have a theory what is happening, but I need to test it. The SN30 is really an XInput controller that can fake being a Switch Pro controller. When in switch mode it sends an identical descriptor as the Pro controller including th polling interval, but I suspect even thought it is identifying its polling interval as the same as the Pro its actually still operating with the XInput polling rate which is much faster, like 1 instead of 10. I should be able to test the theory today or tomorrow.

On Tue, Oct 22, 2019 at 8:29 AM mn1213 notifications@github.com wrote:

I don't have any other supported controllers to test, nor do I have a modified Switch unfortunately.

Although I'm real under-equipped for information gathering here, I can at least add that no amount of fiddling with the order of operations or use of USB hubs in the chain have any positive effect on the situation.

Thinking back to that issue I linked (though it's probably not what we're seeing here), how do the speed and polling rate of a real Pro Controller compare to an SN30 Pro and to the root hub?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/zoggins/RetroSpy/issues/99?email_source=notifications&email_token=AE2CEVWXVEBDVNSHQ7NCBOLQP4L7BA5CNFSM4JDBYLV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEB6FMSA#issuecomment-545019464, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE2CEVT7KZCPL33FUNQ2OSDQP4L7BANCNFSM4JDBYLVQ .

mn1213 commented 4 years ago

That seems like a sound theory, and there are definitely firmware quirks at play here. I can't find a single program that supports DirectInput or Nintendo controllers which can properly connect to and/or read from the controller.

zoggins commented 4 years ago

i think i have a fix. I will try to have a test image out to tomorrow

zoggins commented 4 years ago

Here is some test bits to try. Sometimes you may have to try a few times to get everything to connect, but i think its pretty solid. http://www.zoggins.net/files/9c769400-0838-44cc-92e1-fbdb5bfd4523/BBB-blank-debian-9.9-retrospy-iot-armhf-2019-10-25-4gb.img.xz http://www.zoggins.net/files/9c769400-0838-44cc-92e1-fbdb5bfd4523/RetroSpy-release.zip

mn1213 commented 4 years ago

I just tested the new image, though my Windows machine is out at the shop for repairs, so I've not tested the client. The results were quite opposite of what was expected, with inputs taking seconds to process at the time of initial connection. I see you've turned on some extra logging, so here's what I gathered:

$ sudo usb-mitm  
Loading plugins from /usr/local/lib/USBProxy/
vendorId=ffffffff
productId=ffffffff
cleaning up /tmp
removing 1
Made directory /tmp/gadget-3mmef3 for gadget
Printing Config data
    Strings: 2
        DeviceProxy: DeviceProxy_LibUSB
        HostProxy: HostProxy_GadgetFS
    Vectors: 0
Pointer: 0
  Manufacturer: Nintendo Co., Ltd.
  Product:      Pro Controller
  Serial:       000000000001
    *Config(1): 09 02 29 00 01 01 00 a0 fa
        Interface(0):
            *Alt(0): 09 04 00 00 02 03 00 00 00
                HID: 09 21 11 01 00 01 22 cb 00
                EP(81): 07 05 81 03 40 00 02
                EP(02): 07 05 02 03 40 00 08
[81]: old bInterval: 02
[05]: calculated new bInterval: 81
[02]: old bInterval: 08
[07]: calculated new bInterval: 02
searching in [/tmp/gadget-3mmef3]
Starting setup writer thread (5323) for EP00.
Starting setup reader thread (5322) for EP00.
Opened EP81
Opened EP02
Starting writer thread (5330) for EP02.
Starting reader thread (5329) for EP02.
Starting writer thread (5328) for EP81.
Starting reader thread (5327) for EP81.

Warning: queue fills up! Feel free to search the bug in either the driver or usbproxy.
top - 01:38:02 up 6 min,  2 users,  load average: 1.77, 1.44, 0.76
Tasks:  91 total,   1 running,  62 sleeping,   0 stopped,   0 zombie
%Cpu(s): 41.7 us, 27.8 sy,  0.0 ni, 29.0 id,  0.1 wa,  0.0 hi,  1.4 si,  0.0 st
KiB Mem :   494888 total,   337956 free,    70556 used,    86376 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   407508 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND     
 5318 root      20   0  100532   7692   2724 S 72.7  1.6   2:23.38 usb-mitm    
25308 root      20   0    7188   2852   2328 R 13.6  0.6   0:00.08 top         
    8 root      20   0       0      0      0 I  4.5  0.0   0:04.41 rcu_preempt 
    1 root      20   0   25524   4984   3872 S  0.0  1.0   0:03.10 systemd  

Is there perhaps some magic in the client that I'm missing out on?

zoggins commented 4 years ago

try "sudo usb-mitm -z" I had to put some special handling in specifically for switch.

mn1213 commented 4 years ago

The result with sudo usb-mitm -z is unfortunately the same. I'll see if I can roll back the controller's firmware later today for a little extra testing just in case.

$ sudo usb-mitm -z
Loading plugins from /usr/local/lib/USBProxy/
vendorId=ffffffff
productId=ffffffff
cleaning up /tmp
removing 1
Made directory /tmp/gadget-ayyLdk for gadget
Printing Config data
    Strings: 2
        DeviceProxy: DeviceProxy_LibUSB
        HostProxy: HostProxy_Switch
    Vectors: 1
        Plugins:
            PacketFilter_Switch
Pointer: 1
        PacketFilter_Switch::file: 0xb6d73d60
  Manufacturer: Nintendo Co., Ltd.
  Product:      Pro Controller
  Serial:       000000000001
    *Config(1): 09 02 29 00 01 01 00 a0 fa
        Interface(0):
            *Alt(0): 09 04 00 00 02 03 00 00 00
                HID: 09 21 11 01 00 01 22 cb 00
                EP(81): 07 05 81 03 40 00 02
                EP(02): 07 05 02 03 40 00 08
[81]: old bInterval: 02
[05]: calculated new bInterval: 81
[02]: old bInterval: 08
[07]: calculated new bInterval: 02
searching in [/tmp/gadget-ayyLdk]
Starting setup writer thread (1447) for EP00.
Starting setup reader thread (1446) for EP00.
Opened EP81
Opened EP02
Starting writer thread (1454) for EP02.
Starting reader thread (1453) for EP02.
Starting writer thread (1452) for EP81.
Starting reader thread (1451) for EP81.
00000000000000000000000001111111111111110111111111111111
11000000100111001110000011110000101011000001000111111110
11000000100111001110000011110000101011000001000111111110
00000000000000000000000001111111111111110111111111111111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000011111110111111101111111011111110
00000000000000000000000001111111111111110111111111111111
00000000000000000000000000111111000111111101111100101111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000011111110111111101111111011111110
00000000000000000000000010111111111011111001111110101111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000000111111000111111101111100101111
00000000000000000000000000111111000111111101111100101111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000001111111101011111001111100101111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000001111111101011111001111100101111
00000000000000000000000001111111111111110111111111111111
00000000000000010000000000111111111101111000000001111111
00000000000000000000000001111111111111110111111111111111
00000000000000010000000000111111111101111000000001111111
00000000000000000000000001111111111111110111111111111111
00000000000000010000000000111111111101111000000001111111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000000111111000111111101111100101111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000010111111101011111001111111001111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000001111111101011111001111100101111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000001111111101011111001111100101111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000001111111101011111001111100101111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000001111111101011111001111100101111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000001111111101011111001111100101111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000001111111111111110111111111111111
00000000000000000000000000111111111011111001111100101111
00000000000000000000000001111111111111110111111111111111
...
00000000000000000000000001111111111111110111111111111111
00000000000000000000000001111111111111110111111111111111
zoggins commented 4 years ago

I will double check on my end, but I had this working with usb-mitm -z.

On Mon, Oct 28, 2019 at 7:48 AM mn1213 notifications@github.com wrote:

The result with sudo usb-mitm -z is unfortunately the same. I'll see if I can roll back the controller's firmware later today for a little extra testing just in case.

$ sudo usb-mitm -z Loading plugins from /usr/local/lib/USBProxy/ vendorId=ffffffff productId=ffffffff cleaning up /tmp removing 1 Made directory /tmp/gadget-ayyLdk for gadget Printing Config data Strings: 2 DeviceProxy: DeviceProxy_LibUSB HostProxy: HostProxy_Switch Vectors: 1 Plugins: PacketFilter_Switch Pointer: 1 PacketFilter_Switch::file: 0xb6d73d60 Manufacturer: Nintendo Co., Ltd. Product: Pro Controller Serial: 000000000001 Config(1): 09 02 29 00 01 01 00 a0 fa Interface(0): Alt(0): 09 04 00 00 02 03 00 00 00 HID: 09 21 11 01 00 01 22 cb 00 EP(81): 07 05 81 03 40 00 02 EP(02): 07 05 02 03 40 00 08 [81]: old bInterval: 02 [05]: calculated new bInterval: 81 [02]: old bInterval: 08 [07]: calculated new bInterval: 02 searching in [/tmp/gadget-ayyLdk] Starting setup writer thread (1447) for EP00. Starting setup reader thread (1446) for EP00. Opened EP81 Opened EP02 Starting writer thread (1454) for EP02. Starting reader thread (1453) for EP02. Starting writer thread (1452) for EP81. Starting reader thread (1451) for EP81. 00000000000000000000000001111111111111110111111111111111 11000000100111001110000011110000101011000001000111111110 11000000100111001110000011110000101011000001000111111110 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000011111110111111101111111011111110 00000000000000000000000001111111111111110111111111111111 00000000000000000000000000111111000111111101111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000011111110111111101111111011111110 00000000000000000000000010111111111011111001111110101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000000111111000111111101111100101111 00000000000000000000000000111111000111111101111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000010000000000111111111101111000000001111111 00000000000000000000000001111111111111110111111111111111 00000000000000010000000000111111111101111000000001111111 00000000000000000000000001111111111111110111111111111111 00000000000000010000000000111111111101111000000001111111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000000111111000111111101111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000010111111101011111001111111001111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000000111111111011111001111100101111 00000000000000000000000001111111111111110111111111111111 ... 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111111111110111111111111111

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/zoggins/RetroSpy/issues/99?email_source=notifications&email_token=AE2CEVV4IDFCUDOJ4TC73JLQQ33TFA5CNFSM4JDBYLV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECNEJ7Q#issuecomment-546981118, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE2CEVT6XFSDNRMERB2U6I3QQ33TFANCNFSM4JDBYLVQ .

zoggins commented 4 years ago

I am assuming you let it run for a little bit? The slowdown when it first starts is normal, but then it should catch up. But it should catch up pretty fast.

On Mon, Oct 28, 2019 at 7:58 AM Christopher Mallery < christopher.mallery@gmail.com> wrote:

I will double check on my end, but I had this working with usb-mitm -z.

On Mon, Oct 28, 2019 at 7:48 AM mn1213 notifications@github.com wrote:

The result with sudo usb-mitm -z is unfortunately the same. I'll see if I can roll back the controller's firmware later today for a little extra testing just in case.

$ sudo usb-mitm -z Loading plugins from /usr/local/lib/USBProxy/ vendorId=ffffffff productId=ffffffff cleaning up /tmp removing 1 Made directory /tmp/gadget-ayyLdk for gadget Printing Config data Strings: 2 DeviceProxy: DeviceProxy_LibUSB HostProxy: HostProxy_Switch Vectors: 1 Plugins: PacketFilter_Switch Pointer: 1 PacketFilter_Switch::file: 0xb6d73d60 Manufacturer: Nintendo Co., Ltd. Product: Pro Controller Serial: 000000000001 Config(1): 09 02 29 00 01 01 00 a0 fa Interface(0): Alt(0): 09 04 00 00 02 03 00 00 00 HID: 09 21 11 01 00 01 22 cb 00 EP(81): 07 05 81 03 40 00 02 EP(02): 07 05 02 03 40 00 08 [81]: old bInterval: 02 [05]: calculated new bInterval: 81 [02]: old bInterval: 08 [07]: calculated new bInterval: 02 searching in [/tmp/gadget-ayyLdk] Starting setup writer thread (1447) for EP00. Starting setup reader thread (1446) for EP00. Opened EP81 Opened EP02 Starting writer thread (1454) for EP02. Starting reader thread (1453) for EP02. Starting writer thread (1452) for EP81. Starting reader thread (1451) for EP81. 00000000000000000000000001111111111111110111111111111111 11000000100111001110000011110000101011000001000111111110 11000000100111001110000011110000101011000001000111111110 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000011111110111111101111111011111110 00000000000000000000000001111111111111110111111111111111 00000000000000000000000000111111000111111101111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000011111110111111101111111011111110 00000000000000000000000010111111111011111001111110101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000000111111000111111101111100101111 00000000000000000000000000111111000111111101111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000010000000000111111111101111000000001111111 00000000000000000000000001111111111111110111111111111111 00000000000000010000000000111111111101111000000001111111 00000000000000000000000001111111111111110111111111111111 00000000000000010000000000111111111101111000000001111111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000000111111000111111101111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000010111111101011111001111111001111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111101011111001111100101111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111111111110111111111111111 00000000000000000000000000111111111011111001111100101111 00000000000000000000000001111111111111110111111111111111 ... 00000000000000000000000001111111111111110111111111111111 00000000000000000000000001111111111111110111111111111111

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/zoggins/RetroSpy/issues/99?email_source=notifications&email_token=AE2CEVV4IDFCUDOJ4TC73JLQQ33TFA5CNFSM4JDBYLV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECNEJ7Q#issuecomment-546981118, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE2CEVT6XFSDNRMERB2U6I3QQ33TFANCNFSM4JDBYLVQ .

zoggins commented 4 years ago

Just for clarity the immediate slowdown is a side effect of fixing the memory leak. So that part is expected, but its supposed to heal itself after a handful of seconds which is what i will look at when I get home from work.

mn1213 commented 4 years ago

That's right, the situation continues to worsen the longer the proxy is running.

zoggins commented 4 years ago

And you are doing this all over SSH?

On Mon, Oct 28, 2019 at 12:07 PM mn1213 notifications@github.com wrote:

That's right, the situation continues to worsen the longer the proxy is running.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/zoggins/RetroSpy/issues/99?email_source=notifications&email_token=AE2CEVWTTHBN3QHU7N5GMWDQQ42AZA5CNFSM4JDBYLV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECOBQPA#issuecomment-547100732, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE2CEVSKQ4LLP3Y4VWX7AXLQQ42AZANCNFSM4JDBYLVQ .

zoggins commented 4 years ago

Is this a Green wired or wireless? We now have a mystery. I can't repro with the latest image on a Green Wired. So we have to figure out where the difference between my setup and your setup is.

mn1213 commented 4 years ago

Yup, it's a Green Wired that I'm connecting to over SSH. Thinking back to my other issue, we know the label on my controller and instruction manual are different from some others - failing to mention that holding Y boots the controller in DirectInput mode - so my best guess is that it's either a hardware or firmware difference.

The model number on my sticker is 82AA, my manual looks like https://download.8bitdo.com/Manual/Controller/SN30pro-USB/SN30-Pro-USB.pdf, and I'm on the 1.03 firmware found at https://download.8bitdo.com/Firmware/Controller/SN30pro-USB/ (which can be installed by connecting the controller to your PC while holding D-pad Up and extracting the ZIP to the mass storage device that appears).

zoggins commented 4 years ago

I will verify my info when I get home

On Tue, Oct 29, 2019, 08:08 mn1213 notifications@github.com wrote:

Yup, it's a Green Wired that I'm connecting to over SSH. Thinking back to my other issue, we know the label on my controller and instruction manual are different from some others - failing to mention that holding Y boots the controller in DirectInput mode - so my best guess is that it's either a hardware or firmware difference.

The model number on my sticker is 82AA, my manual looks like https://download.8bitdo.com/Manual/Controller/SN30pro-USB/SN30-Pro-USB.pdf, and I'm on the 1.03 firmware found at https://download.8bitdo.com/Firmware/Controller/SN30pro-USB/ (which can be installed by connecting the controller to your PC while holding D-pad Up and extracting the ZIP to the mass storage device that appears).

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/zoggins/RetroSpy/issues/99?email_source=notifications&email_token=AE2CEVUZLSHP72PP2GZQAILQRBGXLA5CNFSM4JDBYLV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECQ3NFA#issuecomment-547468948, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE2CEVXDPVCWRIXATMY4TZTQRBGXLANCNFSM4JDBYLVQ .

zoggins commented 4 years ago

That is definitely the same manual I have. I have no sticker with the model on my controller and I will check the firmware when I get home.

On Tue, Oct 29, 2019 at 8:11 AM Christopher Mallery < christopher.mallery@gmail.com> wrote:

I will verify my info when I get home

On Tue, Oct 29, 2019, 08:08 mn1213 notifications@github.com wrote:

Yup, it's a Green Wired that I'm connecting to over SSH. Thinking back to my other issue, we know the label on my controller and instruction manual are different from some others - failing to mention that holding Y boots the controller in DirectInput mode - so my best guess is that it's either a hardware or firmware difference.

The model number on my sticker is 82AA, my manual looks like https://download.8bitdo.com/Manual/Controller/SN30pro-USB/SN30-Pro-USB.pdf, and I'm on the 1.03 firmware found at https://download.8bitdo.com/Firmware/Controller/SN30pro-USB/ (which can be installed by connecting the controller to your PC while holding D-pad Up and extracting the ZIP to the mass storage device that appears).

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/zoggins/RetroSpy/issues/99?email_source=notifications&email_token=AE2CEVUZLSHP72PP2GZQAILQRBGXLA5CNFSM4JDBYLV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECQ3NFA#issuecomment-547468948, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE2CEVXDPVCWRIXATMY4TZTQRBGXLANCNFSM4JDBYLVQ .

zoggins commented 4 years ago

Could you give me the startup output of sudo usb-mitm -ldddd?

On Tue, Oct 29, 2019, 08:18 Christopher Mallery < christopher.mallery@gmail.com> wrote:

That is definitely the same manual I have. I have no sticker with the model on my controller and I will check the firmware when I get home.

On Tue, Oct 29, 2019 at 8:11 AM Christopher Mallery < christopher.mallery@gmail.com> wrote:

I will verify my info when I get home

On Tue, Oct 29, 2019, 08:08 mn1213 notifications@github.com wrote:

Yup, it's a Green Wired that I'm connecting to over SSH. Thinking back to my other issue, we know the label on my controller and instruction manual are different from some others - failing to mention that holding Y boots the controller in DirectInput mode - so my best guess is that it's either a hardware or firmware difference.

The model number on my sticker is 82AA, my manual looks like https://download.8bitdo.com/Manual/Controller/SN30pro-USB/SN30-Pro-USB.pdf, and I'm on the 1.03 firmware found at https://download.8bitdo.com/Firmware/Controller/SN30pro-USB/ (which can be installed by connecting the controller to your PC while holding D-pad Up and extracting the ZIP to the mass storage device that appears).

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/zoggins/RetroSpy/issues/99?email_source=notifications&email_token=AE2CEVUZLSHP72PP2GZQAILQRBGXLA5CNFSM4JDBYLV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECQ3NFA#issuecomment-547468948, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE2CEVXDPVCWRIXATMY4TZTQRBGXLANCNFSM4JDBYLVQ .

zoggins commented 4 years ago

So controller seems to be a newer version that the firmware cannot be updated on and its currently at 1.02. Could be the firmware difference or the difference in version of the controller. Hmmm....what next...

zoggins commented 4 years ago

I am winging it on this one, but lets try this. Login as debian and then:

cd USBProxy/src/build git pull git checkout remove_duplicate_code chmod 755 ../tools/git-version-gen.sh sudo make install

then give "sudo usb-mitm -z" a whirl. I am not convinced this will help, but its a test.

mn1213 commented 4 years ago

Not terribly important, but it seems I remembered the firmware update procedure all wrong.

  1. Extract BIN from firmware ZIP
  2. Hold L1+R1 and connect controller (for mass storage mode)
  3. Copy BIN to controller's storage
  4. Press D-pad Up to commit the firmware and reboot

Back on topic, I dare say you nailed it with the latest commit to the remove_duplicate_code branch. CPU utilization is way down, memory allocation is stable, the controller feels nice and responsive, and it wraps quite nicely inside websocketd for browser-based input logging.

Once again you've been awesome, thanks so much for the help!

zoggins commented 4 years ago

Always glad to help!

On Fri, Nov 1, 2019 at 2:46 AM mn1213 notifications@github.com wrote:

Closed #99 https://github.com/zoggins/RetroSpy/issues/99.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/zoggins/RetroSpy/issues/99?email_source=notifications&email_token=AE2CEVSMFMZJGU5GWU6YQKTQRP3IZA5CNFSM4JDBYLV2YY3PNVWWK3TUL52HS4DFWZEXG43VMVCXMZLOORHG65DJMZUWGYLUNFXW5KTDN5WW2ZLOORPWSZGOUSVQ2HA#event-2762673436, or unsubscribe https://github.com/notifications/unsubscribe-auth/AE2CEVR6EKFZUSSD4BQJ263QRP3IZANCNFSM4JDBYLVQ .