Shop OBEX P1 Docs P2 Docs Learn Events
P2 USB Host driver (re-)development thread - Page 3 — Parallax Forums

P2 USB Host driver (re-)development thread

1356715

Comments

  • roglohrogloh Posts: 5,170
    edited 2023-05-07 00:47

    @Wuerfel_21 said:
    Yea that's what I think I'll do. Do you mean one word for X/Y each or one long each? I'm favoring the latter. But it'll dump it in it's own DAT area.

    From memory its 16 bits each combined into a single long (so it can be updated atomically).

    @Wuerfel_21 said:
    Ok, I've merged in basic mouse support. Get from GitHub. I've wrenched basic mouse info printing into the hidpad test, but I can't get the cursor to appear in @rogloh 's funny video driver. Please tell me what I'm doing wrong.

    Cool I'll have a look today. IIRC there are some specific control field bits in the region or display structure needed to be configured to display the mouse on the screen. I'll look it up.

  • @Wuerfel_21 said:
    Ok, I've merged in basic mouse support. Get from GitHub. I've wrenched basic mouse info printing into the hidpad test...

    √ An Apple Mouse (Model A1152) works with this driver.
    √ And, a Logitech Precision (Model G-UG16) game pad...
    √ Either works hooked to the top-most USB port on the P2 Serial Host expansion board. This is with the new-ish P2 Edge Breakout.
    √ Both worked through a non-powered RCA USB-C-HUB (C to A adapted)
    √ Both worked through a Raspberry Pi Keyboard's HUB

    But:
    I was NOT able to get good results with a powered USB-3 HUB...
    Was not able to get any keyboard input from the RPi keyboard and 2 other USB keyboards (GearHead Model KB1700U, GMYL USB Mini keyboard). For a test, these keyboards all worked plugged into a MacBook...

    dgately

  • roglohrogloh Posts: 5,170
    edited 2023-05-07 03:14

    I dug up my video driver documentation work in progress from my other machine and found this information related to the mouse which I've pasted here. I think it should currently apply to the driver code but will also double check it myself a bit later. You'll probably want to use a global mouse in this case and setup the region flags appropriately. If the co-ordinates are out of your screen range (e.g, outside X=0-639 or Y=0-479) no mouse is drawn which might be occurring. You need to setup a hub RAM pointer to some mouse sprite data as well, although random garbage data probably still draws something unless it's all zeroed perhaps. Also you may want to ensure you are in a graphics mode. I think it still does render a graphics mouse in text mode but not 100% sure.




  • roglohrogloh Posts: 5,170
    edited 2023-05-07 07:23

    @Wuerfel_21 I tried to use your latest usbnew code base from GitHub. Not sure if it's another one of those "you just need the latest spin2cpp repo" type of problems or if the code is in flux and is currently broken in GitHub but I can't get a response from the hidpad_to_vga.spin2 code. No mouse data is reporting on screen. I tried a couple of USB mice that have worked for me before with the P2 USB code and also attempted with and without a USB hub. In the hub case I don't see the LED flashing on P57 like I do with the emupad_to_vga.spin2 application which does at least appear to still work with my gamepads. Maybe the USB driver is getting frozen up or something in that case, although it flashes slowly without a USB hub if directly connected with a generic mouse. Maybe a 500mA current issue.

    One mouse is a genuine Microsoft Wheel Mouse Optical, and the other is a generic USB cheapie. So it's a bit hard for me to test the mouse sprite and my video driver with this problem right now. If I can find some other mice I'll try them too and maybe patch in the latest spin2cpp somewhere to test that too...

    Looking at the test code I see you are setting flags to enable the mouse and put the hotspot at 15,15 and to read the sprite data from hub address 0. But I don't see any code that updates the display structure's mouse co-ordinates (in its 8th long). You may want to set the hotspot XY params to 0 to make sure you see something displayed when 0,0 is the actual mouse co-ordinate.

  • roglohrogloh Posts: 5,170
    edited 2023-05-07 07:37

    This code snippet will show a dumb mouse sprite pattern on screen for you (it does work in text mode). You'd need to update the long at long[@display][7] from the USB driver to move it around:

    VAR
        long mouseData[48]
    
    PUB main() | tmp
    
    text.initVga(-1,vgaBase,vgaVsync,0,text.VGA)
    text.setTextColours($F,$1)
    text.clear()
    usb.start()
    usb.mouse_set_limits(640-1,480-1)
    'usb.mouse_set_outptr(text.getDisplay() + 7*4)
    byte[text.getRegion()][5] |= 128 ' enable mouse cursor (in awful way)
    long[text.getRegion()][9] := @mouseData
    long[text.getDisplay()][7] := $100010 ' show mouse at 16,16
    repeat tmp from 0 to 15 ' setup a dumb mouse sprite pattern
      mouseData[3*tmp]:=$55555555<<(tmp&1) ' mask
      mouseData[3*tmp+1]:=-1 ' color nibbles (white by default)
      mouseData[3*tmp+2]:=-1
    
    
    text.printStr(@"USB HID test")
    
    
  • pik33pik33 Posts: 2,350
    edited 2023-05-07 07:45

    Doesn't work as expected.

    Compiled with the newest spin2cpp

    Version 6.1.2-beta-v6.1.0-42-g0854c031 Compiled on: May 6 2023

    Run with Edge 32MB. Set USB pin to 0, VGA pin to 8, LEDs at 38,39.

    LED blinks. The driver gives the debug (below). No reaction on key pressing or mouse move, neither on the VGA screen (all zeroes) nor on the serial debug (nothing). The serial debug window still reacts to connecting things

    Cog0  INIT $0000_0000 $0000_0000 load                                           
    Cog0  INIT $0000_0404 $0000_0000 load                                           
    Cog1  INIT $0000_35CC $0000_6F4C load                                           
    Cog2  INIT $0000_473C $0000_0000 load                                           
    Cog2  hdev_port = 0, #hdev_id = $05E3_0610, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $3298                                                    
    Cog2  hconfig_base = $09, $02, $19, $00, $01, $01, $00, $E0, $32, $09, $04, $00,
     $00, $01, $09, $00, $00, $00, $07, $05, $81, $03, $01, $00, $FF                
    Cog2  hdev_intf_idx = 0, hdev_class = $09, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hhub_ctrl_ep = $0060_08E1, hhub_ep_addr = $00D0_8800                      
    Cog2  hub_descr_p = $09, $29, $04, $E0, $00, $32, $64, $00, $FF                 
    Cog2  hdev_type = $0000_0009, (hdev_type + 1) = $0000_0000                      
    Cog2  hub_status_chg = %11100000_01111110_11000001_00000010                     
    Cog2  hdev_port = 1, hub_port_status = %00000000_00000001_00000011_00000001     
    Cog2  hdev_port = 1, hub_port_status = %00000000_00000000_00000000_10100011     
    Cog2  hub_status_chg = %00000000_01111110_11000001_00000010                     
    Cog2  hdev_port = 1, hub_port_status = %00000000_00000001_00000011_00000001     
    Cog2  hdev_port = 1, #hdev_id = $05E3_0610, $04D9_0006, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $0150                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $00, $A0, $32, $09, $04, $00,
     $00, $01, $03, $01, $01, $00, $09, $21, $11, $01, $00, $01, $22, $41, $00, $07,
     $05, $81, $03, $08, $00, $0A, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $3B, $00, $07, $05, $82, $03, $05, $00, $0A      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $01                                                                             
    Cog2  hkbd_ep_addr = $0040_8100, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1) =
     $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000, (
    hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 8, kb_interval = 10             
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_port = 1, hub_port_status = %00000000_00000000_00000000_10100011     
    Cog2  hub_status_chg = %00011110_01110011_01000001_00010000                     
    Cog2  hdev_port = 4, hub_port_status = %00000000_00000001_00000001_00000001     
    Cog2  hdev_port = 4, #hdev_id = $05E3_0610, $04D9_0006, $0000_0000, $0000_0000, 
    $046D_C52F, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8400, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 8, kb_interval = 10           
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_0009, (hdev_type + 1) = $0000_00E1                      
    Cog2  hdev_port = 4, hub_port_status = %00000000_00000000_00000000_10100011   
    
  • pik33pik33 Posts: 2,350

    @Wuerfel_21 I tried to use your latest usbnew code base from GitHub. Not sure if it's another one of those "you just need the latest spin2cpp repo" type of problems or if the code is in flux and is currently broken in GitHub but I can't get a response from the hidpad_to_vga.spin2 code. No mouse data is reporting on screen. I tried a couple of USB mice that have worked for me before with the P2 USB code and also attempted with and without a USB hub. In the hub case I don't see the LED flashing on P57 like I do with the emupad_to_vga.spin2 application which does at least appear to still work with my gamepads. Maybe the USB driver is getting frozen up or something in that case, although it flashes slowly without a USB hub if directly connected with a generic mouse. Maybe a 500mA current issue.

    You just need the latest spin2cpp repo :) And maybe not the latest... what was the version it was compiled with?

    Compiled with several days older spin2cpp does not respond at all.
    Compiled with the latest from here: https://github.com/totalspectrum/spin2cpp/actions/runs/4903698400 works as described above. The LED blinks, there is reaction on the debug screen when inserted a device, there is no reaction when a device (kbd, mouse) is used.

  • roglohrogloh Posts: 5,170
    edited 2023-05-07 07:59

    @pik33 said:
    You just need the latest spin2cpp repo :) And maybe not the latest... what was the version it was compiled with?

    Oh man, I hate the bleeding edge thing. Am gonna try to install the latest now.

    EDIT: Just got the latest and greatest spin2cpp and it's working and I see the mouse co-ordinates changing on screen. Cool! :smile: Even the scroll wheel is working, although the mouse position update to the video driver's hub RAM location is not present (or configured correctly) in this code yet.

  • pik33pik33 Posts: 2,350
    edited 2023-05-07 08:12

    @rogloh said:

    @pik33 said:
    You just need the latest spin2cpp repo :) And maybe not the latest... what was the version it was compiled with?

    Oh man, I hate the bleeding edge thing. Am gonna try to install the latest now.

    EDIT: Just got the latest and greatest spin2cpp and it's working and I see the mouse co-ordinates changing on screen. Cool! :smile: Even the scroll wheel is working, although the mouse position update to the video driver's hub RAM location is not present (or configured correctly) in this code yet.

    I tried another mouse. It works. Raspberry keyboard doesn't work. It worked in the previous version of the driver I tested. The working mouse works even if connected to the RPi keyboard. Sometimes connecting the device hangs the driver (LED doesn't blink). It can return to normal operation after reconnecting the device. The working mouse is the cheap thing, the not working mouse is Logitech M215.

  • Yeah my cheapie optical mouse is the one that is working for me right now and the real Microsoft's LED isn't lighting up very much - maybe too much current - say's 100mA on the back and it's quite old (probably less power efficient).

    I still can't seem to get the configured mouse co-ordinate long address to update from the mouse even after writing the address to the driver (this line was commented out before). If I print the hex long at this address in the main loop it remains static even though the USB code appears to want to write to if it's a non zero address (am still digging...)

    usb.mouse_set_outptr(text.getDisplay() + 7*4)

  • roglohrogloh Posts: 5,170
    edited 2023-05-07 08:55

    Fixed it! Now the mouse sprite follows the mouse coordinates in a silky smooth way. @Wuerfel_21 this USB code was using the wrong pointer (htmp2 instead of htmp3):

                    ' if outptr set, write X/Y words
                    cmp htmp2,#0                    wz
            if_nz   setword hr1,hr2,#1
            if_nz   wrlong hr1,htmp2
                    ret
    

    It should be changed to this:

                    ' if outptr set, write X/Y words
                    cmp htmp3,#0                    wz
            if_nz   setword hr1,hr2,#1
            if_nz   wrlong hr1,htmp3
                    ret
    

    You also need to uncomment that mouse_set_outptr call and add the lines I mentioned in my previous posts to configure some dummy mouse sprite etc (or create a real one).

    Here's a simple 4bpp mouse pointer I made a while ago that can be used (might want to set the hotspot to the tip of the finger at y=0,x=4).

    mouse4bpp   long    %0000_0000_0001_0000, $000f0000, $00000000
                long    %0000_0000_0011_1000, $00f0f000, $00000000
                long    %0000_0000_0111_1000, $0f00f000, $00000000
                long    %0000_0001_1111_1000, $ff00f000, $0000000f
                long    %0000_1111_1111_1000, $0f00f000, $0000fff0
                long    %0011_1111_1111_1011, $0f00f0ff, $00ff00f0
                long    %0111_1111_1111_1111, $0f00ff0f, $0f0f00f0
                long    %1111_1111_1111_1110, $0000f0f0, $f00f0000
                long    %1111_1111_1111_1110, $0000f0f0, $f0000000
                long    %1111_1111_1111_1100, $00000f00, $f0000000
                long    %1111_1111_1111_1100, $00000f00, $f0000000
                long    %0111_1111_1111_1000, $0000f000, $0f000000
                long    %0111_1111_1111_1000, $0000f000, $0f000000
                long    %0111_1111_1111_0000, $000f0000, $0f000000
                long    %0011_1111_1111_0000, $000f0000, $00f00000
                long    %0011_1111_1111_0000, $ffff0000, $00ffffff
    
  • roglohrogloh Posts: 5,170
    edited 2023-05-07 09:16

    @pik33 said:
    I tried another mouse. It works. Raspberry keyboard doesn't work. It worked in the previous version of the driver I tested. The working mouse works even if connected to the RPi keyboard. Sometimes connecting the device hangs the driver (LED doesn't blink). It can return to normal operation after reconnecting the device. The working mouse is the cheap thing, the not working mouse is Logitech M215.

    Same for me. My USB keyboard doesn't work anymore either (it did work in an older version). Hopefully by the end of it all we'll have a Keyboard,Mouse and 2 USB controllers working together from a 4 port hub. That would be ideal for me anyway.

  • pik33pik33 Posts: 2,350

    You also need to uncomment that mouse_set_outptr call and add the lines I mentioned in my previous posts to configure some dummy mouse sprite etc (or create a real one).

    I need to connect this to my HDMI driver instead... I have 16 sprites there and a mouse definition ready too.

    32bpp mouse: https://gitlab.com/pik33/P2-retromachine/-/blob/main/Propeller/Videodriver_develop/mouse32.def
    8bpp mouse: https://gitlab.com/pik33/P2-retromachine/-/blob/main/Propeller/P2P16/mouse.def

    0 is transparent.

  • @pik33 said:

    You also need to uncomment that mouse_set_outptr call and add the lines I mentioned in my previous posts to configure some dummy mouse sprite etc (or create a real one).

    I need to connect this to my HDMI driver instead... I have 16 sprites there and a mouse definition ready too.

    32bpp mouse: https://gitlab.com/pik33/P2-retromachine/-/blob/main/Propeller/Videodriver_develop/mouse32.def
    8bpp mouse: https://gitlab.com/pik33/P2-retromachine/-/blob/main/Propeller/P2P16/mouse.def

    0 is transparent.

    If you can use the same XY co-ordinate format (top left is 0,0 bottom right is width-1, height-1) and read X and Y as two words from a single long (Y as the MSW, X as the LSW) it should be possible to use this USB driver as is to update a mouse sprite position in your driver. Otherwise some USB driver adjustments would be needed. The actual sprite format is independent, as the USB driver knows nothing about that.

  • Wuerfel_21Wuerfel_21 Posts: 4,507
    edited 2023-05-07 10:15

    Oh, y'all posted a lot tonight. I'll look into the keyboard issue.

    EDIT: great, one of the mice that worked yesterday now doesn't for no appreciable reason.

  • pik33pik33 Posts: 2,350

    if you can use the same XY co-ordinate format (top left is 0,0 bottom right is width-1, height-1)

    Yes, I can. There are 16-bit variables for sprite x and y in my driver.

  • Wuerfel_21Wuerfel_21 Posts: 4,507
    edited 2023-05-07 10:51

    Ok, keyboard not working is flexsplorp, code is right but gets assembled to nonsense:

    EDIT: NO IM STUPID

  • Ok, keyboards should now work again....

  • pik33pik33 Posts: 2,350
    edited 2023-05-07 11:06

    Keyboard now OK
    A cheap mouse: OK

    A Logitech M215: fail (as far as I remember, this is the 12bit nightmare)

    Coordinates: 0,0,0
    LED lit.
    Debug constantly pukes this:

    Edit: Moderators, please make the post text size limit higher... any longer debug doesn't fit.
    Edit 2: This logitech mouse hanged up something in the driver. After connecting the working mouse and keyboard, no response until reset.

    cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_0047, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_0047, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_0045, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_0047, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_0043, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_004D, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_0041, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_0041, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_0049, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_003B, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_0043, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_0045, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_003F, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    
  • I think it gets confused because there is both a mouse interface and also another generic HID interface (which it would want to pick up as a game controller). Not sure why that'd cause an infinite loop. My brain's kinda scrambled right now.

  • Actually, no, it fails to configure for some reason and that causes it to jump to .notify_client with a garbage value ($47) in htmp2, which gets put into hdev_type. Not sure why that causes an infinite loop, either.

  • Also, it seems that one of my wireless mice also has a keyboard interface, so it needs to be plugged into a higher-numbered port than the actual keyboard to work... (because the keyboard I/F is ignored if another one has already configured)

  • pik33pik33 Posts: 2,350

    I connected this mouse to the hub. Better. Still no response (x,y,z=0), but the keyboard still works and the debug doesn't puke. Instead, it reported this:

    Cog2  hub_status_chg = %00000000_01110011_01000001_00010000                     
    Cog2  hdev_port = 4, hub_port_status = %00000000_00000001_00000001_00000000     
    Cog2  hdev_port = 4, hub_port_status = %00000000_00000000_00000001_00000000     
    Cog2  hub_status_chg = %00000000_01110011_01000001_00010000                     
    Cog2  hdev_port = 4, hub_port_status = %00000000_00000001_00000001_00000001     
    Cog2  hdev_port = 4, hub_port_status = %00000000_00000000_00000000_10100011     
    Cog2  hub_status_chg = %00000000_01110011_01000001_00010000                     
    Cog2  hdev_port = 4, hub_port_status = %00000000_00000001_00000001_00000001     
    Cog2  hdev_port = 4, #hdev_id = $05E3_0610, $04D9_0006, $0000_0000, $0000_0000, 
    $046D_C52F, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8400, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 8, kb_interval = 10           
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_0309, (hdev_type + 1) = $0000_0017                      
    Cog2  hdev_port = 4, hub_port_status = %00000000_00000000_00000000_10100011     
    
  • Hmm. Currently trying to work out parsing full mouse reports. I got a 12 bit one, with a bunch of awful nonsense in there, too:

    0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
    0x09, 0x02,        // Usage (Mouse)
    0xA1, 0x01,        // Collection (Application)
    0x85, 0x01,        //   Report ID (1)
    0x05, 0x09,        //   Usage Page (Button)
    0x19, 0x01,        //   Usage Minimum (0x01)
    0x29, 0x08,        //   Usage Maximum (0x08)
    0x15, 0x00,        //   Logical Minimum (0)
    0x25, 0x01,        //   Logical Maximum (1)
    0x95, 0x08,        //   Report Count (8)
    0x75, 0x01,        //   Report Size (1)
    0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
    0x05, 0x01,        //   Usage Page (Generic Desktop Ctrls)
    0x09, 0x01,        //   Usage (Pointer)
    0xA1, 0x00,        //   Collection (Physical)
    0x09, 0x30,        //     Usage (X)
    0x09, 0x31,        //     Usage (Y)
    0x16, 0x01, 0xF8,  //     Logical Minimum (-2047)
    0x26, 0xFF, 0x07,  //     Logical Maximum (2047)
    0x75, 0x0C,        //     Report Size (12)
    0x95, 0x02,        //     Report Count (2)
    0x81, 0x06,        //     Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
    0x09, 0x38,        //     Usage (Wheel)
    0x15, 0x81,        //     Logical Minimum (-127)
    0x25, 0x7F,        //     Logical Maximum (127)
    0x75, 0x08,        //     Report Size (8)
    0x95, 0x01,        //     Report Count (1)
    0x81, 0x06,        //     Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
    0x05, 0x0C,        //     Usage Page (Consumer)
    0x0A, 0x38, 0x02,  //     Usage (AC Pan)
    0x95, 0x01,        //     Report Count (1)
    0x81, 0x06,        //     Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
    0xC0,              //   End Collection
    0xC0,              // End Collection
    0x05, 0x0C,        // Usage Page (Consumer)
    0x09, 0x01,        // Usage (Consumer Control)
    0xA1, 0x01,        // Collection (Application)
    0x85, 0x02,        //   Report ID (2)
    0x15, 0x00,        //   Logical Minimum (0)
    0x26, 0x80, 0x03,  //   Logical Maximum (896)
    0x19, 0x00,        //   Usage Minimum (Unassigned)
    0x2A, 0x80, 0x03,  //   Usage Maximum (0x0380)
    0x75, 0x10,        //   Report Size (16)
    0x95, 0x01,        //   Report Count (1)
    0x81, 0x00,        //   Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
    0xC0,              // End Collection
    0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
    0x09, 0x80,        // Usage (Sys Control)
    0xA1, 0x01,        // Collection (Application)
    0x85, 0x03,        //   Report ID (3)
    0x75, 0x02,        //   Report Size (2)
    0x95, 0x01,        //   Report Count (1)
    0x15, 0x01,        //   Logical Minimum (1)
    0x25, 0x03,        //   Logical Maximum (3)
    0x09, 0x82,        //   Usage (Sys Sleep)
    0x09, 0x81,        //   Usage (Sys Power Down)
    0x09, 0x83,        //   Usage (Sys Wake Up)
    0x81, 0x60,        //   Input (Data,Array,Abs,No Wrap,Linear,No Preferred State,Null State)
    0x75, 0x06,        //   Report Size (6)
    0x81, 0x03,        //   Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
    0xC0,              // End Collection
    
    // 123 bytes
    
    
  • Wuerfel_21Wuerfel_21 Posts: 4,507
    edited 2023-05-07 12:05

    @pik33 try this version where I hacked in some extra DEBUG lines (and also the descriptor reader)

  • roglohrogloh Posts: 5,170
    edited 2023-05-07 12:30

    @Wuerfel_21 Just tried your latest code, and I have 2 USB gamepads, a mouse and a keyboard all fitted to a 4 port USB hub and each reporting nicely running hidpad_to_vga.spin2. Nice work :smiley:

  • pik33pik33 Posts: 2,350
    edited 2023-05-07 12:48

    No response for the Logitech. This is the RPi kbd with the mouse,

    A normal mouse works OK

    Cog0  INIT $0000_0000 $0000_0000 load                                           
    Cog0  INIT $0000_0404 $0000_0000 load                                           
    Cog1  INIT $0000_35CC $0000_6F94 load                                           
    Cog2  INIT $0000_473C $0000_0000 load                                           
    Cog2  hdev_port = 0, #hdev_id = $05E3_0610, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $3298                                                    
    Cog2  hconfig_base = $09, $02, $19, $00, $01, $01, $00, $E0, $32, $09, $04, $00,
     $00, $01, $09, $00, $00, $00, $07, $05, $81, $03, $01, $00, $FF                
    Cog2  hdev_intf_idx = 0, hdev_class = $09, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hhub_ctrl_ep = $0060_08E1, hhub_ep_addr = $00D0_8800                      
    Cog2  hub_descr_p = $09, $29, $04, $E0, $00, $32, $64, $00, $FF                 
    Cog2  hdev_type = $0000_0009, (hdev_type + 1) = $0000_0000                      
    Cog2  hub_status_chg = %11100000_10110010_11000000_00010010                     
    Cog2  hdev_port = 1, hub_port_status = %00000000_00000001_00000011_00000001     
    Cog2  hdev_port = 1, #hdev_id = $05E3_0610, $04D9_0006, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $0150                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $00, $A0, $32, $09, $04, $00,
     $00, $01, $03, $01, $01, $00, $09, $21, $11, $01, $00, $01, $22, $41, $00, $07,
     $05, $81, $03, $08, $00, $0A, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $3B, $00, $07, $05, $82, $03, $05, $00, $0A      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $01                                                                             
    Cog2  hkbd_ep_addr = $0040_8100, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1) =
     $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000, (
    hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 8, kb_interval = 10             
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  hdev_type = $0000_0309, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 1, hub_port_status = %00000000_00000000_00000000_10100011     
    Cog2  hdev_port = 4, hub_port_status = %00011110_00001010_00000000_00000000     
    Cog2  hdev_port = 4, hub_port_status = %00000000_00010001_00000000_10100011     
    Cog2  hub_status_chg = %00011110_01110011_01000001_00010000                     
    Cog2  hdev_port = 4, hub_port_status = %00011110_01110011_01000001_00010000     
    Cog2  hdev_port = 4, hub_port_status = %00000000_00010001_00000000_10100011  
    
  • Wuerfel_21Wuerfel_21 Posts: 4,507
    edited 2023-05-07 12:45

    @pik33 said:
    No response for the Logitech.

    But that's the one I was interested in!

    Though what you posted is also broken?

    EDIT: wait no I'm being stupid again

  • pik33pik33 Posts: 2,350

    This is the mouse alone (endless debug reports)

    Cog0  INIT $0000_0000 $0000_0000 load                                           
    Cog0  INIT $0000_0404 $0000_0000 load                                           
    Cog1  INIT $0000_35CC $0000_6F94 load                                           
    Cog2  INIT $0000_473C $0000_0000 load                                           
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  passed addr check                                                         
    Cog2  pb = $691F, pb = $05, $01, $09, $02, $A1, $01, $09, $01, $A1, $00, $05, $0
    9, $19, $01, $29, $10, $15, $00, $25, $01, $95, $10, $75, $01, $81, $02, $05, $0
    1, $16, $01, $80, $26, $FF, $7F, $75, $10, $95, $02, $09, $30, $09, $31, $81, $0
    6, $15, $81, $25, $7F, $75, $08, $95, $01, $09, $38, $81, $06, $05, $0C, $0A, $3
    8, $02, $95, $01, $81, $06, $C0, $C0                                            
    Cog2  passed SetProtocol                                                        
    Cog2  hdev_type = $0000_0020, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  passed addr check                                                         
    Cog2  pb = $691F, pb = $05, $01, $09, $02, $A1, $01, $09, $01, $A1, $00, $05, $0
    9, $19, $01, $29, $10, $15, $00, $25, $01, $95, $10, $75, $01, $81, $02, $05, $0
    1, $16, $01, $80, $26, $FF, $7F, $75, $10, $95, $02, $09, $30, $09, $31, $81, $0
    6, $15, $81, $25, $7F, $75, $08, $95, $01, $09, $38, $81, $06, $05, $0C, $0A, $3
    8, $02, $95, $01, $81, $06, $C0, $C0                                            
    Cog2  passed SetProtocol                                                        
    Cog2  hdev_type = $0000_0056, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  passed addr check                                                         
    Cog2  pb = $691F, pb = $05, $01, $09, $02, $A1, $01, $09, $01, $A1, $00, $05, $0
    9, $19, $01, $29, $10, $15, $00, $25, $01, $95, $10, $75, $01, $81, $02, $05, $0
    1, $16, $01, $80, $26, $FF, $7F, $75, $10, $95, $02, $09, $30, $09, $31, $81, $0
    6, $15, $81, $25, $7F, $75, $08, $95, $01, $09, $38, $81, $06, $05, $0C, $0A, $3
    8, $02, $95, $01, $81, $06, $C0, $C0                                            
    Cog2  passed SetProtocol                                                        
    Cog2  hdev_type = $0000_004C, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  passed addr check                                                         
    Cog2  pb = $691F, pb = $05, $01, $09, $02, $A1, $01, $09, $01, $A1, $00, $05, $0
    9, $19, $01, $29, $10, $15, $00, $25, $01, $95, $10, $75, $01, $81, $02, $05, $0
    1, $16, $01, $80, $26, $FF, $7F, $75, $10, $95, $02, $09, $30, $09, $31, $81, $0
    6, $15, $81, $25, $7F, $75, $08, $95, $01, $09, $38, $81, $06, $05, $0C, $0A, $3
    8, $02, $95, $01, $81, $06, $C0, $C0                                            
    Cog2  passed SetProtocol                                                        
    Cog2  hdev_type = $0000_004A, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  passed addr check                                                         
    Cog2  pb = $691F, pb = $05, $01, $09, $02, $A1, $01, $09, $01, $A1, $00, $05, $0
    9, $19, $01, $29, $10, $15, $00, $25, $01, $95, $10, $75, $01, $81, $02, $05, $0
    1, $16, $01, $80, $26, $FF, $7F, $75, $10, $95, $02, $09, $30, $09, $31, $81, $0
    6, $15, $81, $25, $7F, $75, $08, $95, $01, $09, $38, $81, $06, $05, $0C, $0A, $3
    8, $02, $95, $01, $81, $06, $C0, $C0                                            
    Cog2  passed SetProtocol                                                        
    Cog2  hdev_type = $0000_0038, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    Cog2  hconfig_base = $09, $02, $3B, $00, $02, $01, $04, $A0, $31, $09, $04, $00,
     $00, $01, $03, $01, $02, $00, $09, $21, $11, $01, $00, $01, $22, $43, $00, $07,
     $05, $81, $03, $08, $00, $02, $09, $04, $01, $00, $01, $03, $00, $00, $00, $09,
     $21, $11, $01, $00, $01, $22, $4F, $00, $07, $05, $82, $03, $14, $00, $02      
    Cog2  hdev_intf_idx = 0, hdev_class = $03, hdev_subclass = $01, hdev_protocol = 
    $02                                                                             
    Cog2  hmouse_ep_addr = $0040_8800, hdev_ep_addr = $0000_0000, (hdev_ep_addr + 1)
     = $0000_0000, (hdev_ep_addr + 2) = $0000_0000, (hdev_ep_addr + 3) = $0000_0000,
     (hdev_ep_addr + 4) = $0000_0000, kb_in_max_pkt = 0, kb_interval = 0            
    Cog2  hdev_intf_idx = 1, hdev_class = $03, hdev_subclass = $00, hdev_protocol = 
    $00                                                                             
    Cog2  passed addr check                                                         
    Cog2  pb = $691F, pb = $05, $01, $09, $02, $A1, $01, $09, $01, $A1, $00, $05, $0
    9, $19, $01, $29, $10, $15, $00, $25, $01, $95, $10, $75, $01, $81, $02, $05, $0
    1, $16, $01, $80, $26, $FF, $7F, $75, $10, $95, $02, $09, $30, $09, $31, $81, $0
    6, $15, $81, $25, $7F, $75, $08, $95, $01, $09, $38, $81, $06, $05, $0C, $0A, $3
    8, $02, $95, $01, $81, $06, $C0, $C0                                            
    Cog2  passed SetProtocol                                                        
    Cog2  hdev_type = $0000_0044, (hdev_type + 1) = $0000_0000                      
    Cog2  hdev_port = 0, #hdev_id = $046D_C52F, $0000_0000, $0000_0000, $0000_0000, 
    $0000_0000, hdev_bcd = $2200                                                    
    
    
  • Try replugging the whole thing, it doesn't even try to configure right now

Sign In or Register to comment.