{"action":"created","issue":{"url":"https://api.github.com/repos/dominicgs/USBProxy/issues/57","labels_url":"https://api.github.com/repos/dominicgs/USBProxy/issues/57/labels{/name}","comments_url":"https://api.github.com/repos/dominicgs/USBProxy/issues/57/comments","events_url":"https://api.github.com/repos/dominicgs/USBProxy/issues/57/events","html_url":"https://github.com/dominicgs/USBProxy/issues/57","id":118700644,"number":57,"title":"USB Bluetooth Mouse communicating on wrong endpoint","user":{"login":"devilicecream","id":2878227,"avatar_url":"https://avatars.githubusercontent.com/u/2878227?v=3","gravatar_id":"","url":"https://api.github.com/users/devilicecream","html_url":"https://github.com/devilicecream","followers_url":"https://api.github.com/users/devilicecream/followers","following_url":"https://api.github.com/users/devilicecream/following{/other_user}","gists_url":"https://api.github.com/users/devilicecream/gists{/gist_id}","starred_url":"https://api.github.com/users/devilicecream/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/devilicecream/subscriptions","organizations_url":"https://api.github.com/users/devilicecream/orgs","repos_url":"https://api.github.com/users/devilicecream/repos","events_url":"https://api.github.com/users/devilicecream/events{/privacy}","received_events_url":"https://api.github.com/users/devilicecream/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-11-24T20:53:52Z","updated_at":"2015-11-25T13:22:17Z","closed_at":null,"body":"Hi,\r\nI'm having a problem using USBProxy with a bluetooth USB mouse.\r\nDigging in the code and debugging, I found that the problem is that the Device is sending the data on the EP83, instead of sending them on the EP82, as it should do.\r\nI tested it on another machine, logging the data flow on EP82.\r\nI can't understand why, if used with USBProxy, it sends the data on EP83 instead.\r\n\r\nHere the `lsusb`:\r\n\r\n```\r\nBus 002 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver\r\nDevice Descriptor:\r\n  bLength                18\r\n  bDescriptorType         1\r\n  bcdUSB               2.00\r\n  bDeviceClass            0 (Defined at Interface level)\r\n  bDeviceSubClass         0 \r\n  bDeviceProtocol         0 \r\n  bMaxPacketSize0         8\r\n  idVendor           0x046d Logitech, Inc.\r\n  idProduct          0xc52b Unifying Receiver\r\n  bcdDevice           12.01\r\n  iManufacturer           1 Logitech\r\n  iProduct                2 USB Receiver\r\n  iSerial                 0 \r\n  bNumConfigurations      1\r\n  Configuration Descriptor:\r\n    bLength                 9\r\n    bDescriptorType         2\r\n    wTotalLength           84\r\n    bNumInterfaces          3\r\n    bConfigurationValue     1\r\n    iConfiguration          4 RQR12.01_B0019\r\n    bmAttributes         0xa0\r\n      (Bus Powered)\r\n      Remote Wakeup\r\n    MaxPower               98mA\r\n    Interface Descriptor:\r\n      bLength                 9\r\n      bDescriptorType         4\r\n      bInterfaceNumber        0\r\n      bAlternateSetting       0\r\n      bNumEndpoints           1\r\n      bInterfaceClass         3 Human Interface Device\r\n      bInterfaceSubClass      1 Boot Interface Subclass\r\n      bInterfaceProtocol      1 Keyboard\r\n      iInterface              0 \r\n        HID Device Descriptor:\r\n          bLength                 9\r\n          bDescriptorType        33\r\n          bcdHID               1.11\r\n          bCountryCode            0 Not supported\r\n          bNumDescriptors         1\r\n          bDescriptorType        34 Report\r\n          wDescriptorLength      59\r\n          Report Descriptor: (length is 59)\r\n            Item(Global): Usage Page, data= [ 0x01 ] 1\r\n                            Generic Desktop Controls\r\n            Item(Local ): Usage, data= [ 0x06 ] 6\r\n                            Keyboard\r\n            Item(Main  ): Collection, data= [ 0x01 ] 1\r\n                            Application\r\n            Item(Global): Usage Page, data= [ 0x07 ] 7\r\n                            Keyboard\r\n            Item(Local ): Usage Minimum, data= [ 0xe0 ] 224\r\n                            Control Left\r\n            Item(Local ): Usage Maximum, data= [ 0xe7 ] 231\r\n                            GUI Right\r\n            Item(Global): Logical Minimum, data= [ 0x00 ] 0\r\n            Item(Global): Logical Maximum, data= [ 0x01 ] 1\r\n            Item(Global): Report Size, data= [ 0x01 ] 1\r\n            Item(Global): Report Count, data= [ 0x08 ] 8\r\n            Item(Main  ): Input, data= [ 0x02 ] 2\r\n                            Data Variable Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Main  ): Input, data= [ 0x03 ] 3\r\n                            Constant Variable Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Global): Report Count, data= [ 0x05 ] 5\r\n            Item(Global): Usage Page, data= [ 0x08 ] 8\r\n                            LEDs\r\n            Item(Local ): Usage Minimum, data= [ 0x01 ] 1\r\n                            NumLock\r\n            Item(Local ): Usage Maximum, data= [ 0x05 ] 5\r\n                            Kana\r\n            Item(Main  ): Output, data= [ 0x02 ] 2\r\n                            Data Variable Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Global): Report Count, data= [ 0x01 ] 1\r\n            Item(Global): Report Size, data= [ 0x03 ] 3\r\n            Item(Main  ): Output, data= [ 0x01 ] 1\r\n                            Constant Array Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Global): Report Count, data= [ 0x06 ] 6\r\n            Item(Global): Report Size, data= [ 0x08 ] 8\r\n            Item(Global): Logical Minimum, data= [ 0x00 ] 0\r\n            Item(Global): Logical Maximum, data= [ 0xa4 0x00 ] 164\r\n            Item(Global): Usage Page, data= [ 0x07 ] 7\r\n                            Keyboard\r\n            Item(Local ): Usage Minimum, data= [ 0x00 ] 0\r\n                            No Event\r\n            Item(Local ): Usage Maximum, data= [ 0xa4 0x00 ] 164\r\n                            ExSel\r\n            Item(Main  ): Input, data= [ 0x00 ] 0\r\n                            Data Array Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Main  ): End Collection, data=none\r\n      Endpoint Descriptor:\r\n        bLength                 7\r\n        bDescriptorType         5\r\n        bEndpointAddress     0x81  EP 1 IN\r\n        bmAttributes            3\r\n          Transfer Type            Interrupt\r\n          Synch Type               None\r\n          Usage Type               Data\r\n        wMaxPacketSize     0x0008  1x 8 bytes\r\n        bInterval               8\r\n    Interface Descriptor:\r\n      bLength                 9\r\n      bDescriptorType         4\r\n      bInterfaceNumber        1\r\n      bAlternateSetting       0\r\n      bNumEndpoints           1\r\n      bInterfaceClass         3 Human Interface Device\r\n      bInterfaceSubClass      1 Boot Interface Subclass\r\n      bInterfaceProtocol      2 Mouse\r\n      iInterface              0 \r\n        HID Device Descriptor:\r\n          bLength                 9\r\n          bDescriptorType        33\r\n          bcdHID               1.11\r\n          bCountryCode            0 Not supported\r\n          bNumDescriptors         1\r\n          bDescriptorType        34 Report\r\n          wDescriptorLength     148\r\n          Report Descriptor: (length is 148)\r\n            Item(Global): Usage Page, data= [ 0x01 ] 1\r\n                            Generic Desktop Controls\r\n            Item(Local ): Usage, data= [ 0x02 ] 2\r\n                            Mouse\r\n            Item(Main  ): Collection, data= [ 0x01 ] 1\r\n                            Application\r\n            Item(Global): Report ID, data= [ 0x02 ] 2\r\n            Item(Local ): Usage, data= [ 0x01 ] 1\r\n                            Pointer\r\n            Item(Main  ): Collection, data= [ 0x00 ] 0\r\n                            Physical\r\n            Item(Global): Usage Page, data= [ 0x09 ] 9\r\n                            Buttons\r\n            Item(Local ): Usage Minimum, data= [ 0x01 ] 1\r\n                            Button 1 (Primary)\r\n            Item(Local ): Usage Maximum, data= [ 0x10 ] 16\r\n                            (null)\r\n            Item(Global): Logical Minimum, data= [ 0x00 ] 0\r\n            Item(Global): Logical Maximum, data= [ 0x01 ] 1\r\n            Item(Global): Report Count, data= [ 0x10 ] 16\r\n            Item(Global): Report Size, data= [ 0x01 ] 1\r\n            Item(Main  ): Input, data= [ 0x02 ] 2\r\n                            Data Variable Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Global): Usage Page, data= [ 0x01 ] 1\r\n                            Generic Desktop Controls\r\n            Item(Global): Logical Minimum, data= [ 0x01 0xf8 ] 63489\r\n            Item(Global): Logical Maximum, data= [ 0xff 0x07 ] 2047\r\n            Item(Global): Report Size, data= [ 0x0c ] 12\r\n            Item(Global): Report Count, data= [ 0x02 ] 2\r\n            Item(Local ): Usage, data= [ 0x30 ] 48\r\n                            Direction-X\r\n            Item(Local ): Usage, data= [ 0x31 ] 49\r\n                            Direction-Y\r\n            Item(Main  ): Input, data= [ 0x06 ] 6\r\n                            Data Variable Relative No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Global): Logical Minimum, data= [ 0x81 ] 129\r\n            Item(Global): Logical Maximum, data= [ 0x7f ] 127\r\n            Item(Global): Report Size, data= [ 0x08 ] 8\r\n            Item(Global): Report Count, data= [ 0x01 ] 1\r\n            Item(Local ): Usage, data= [ 0x38 ] 56\r\n                            Wheel\r\n            Item(Main  ): Input, data= [ 0x06 ] 6\r\n                            Data Variable Relative No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Global): Usage Page, data= [ 0x0c ] 12\r\n                            Consumer\r\n            Item(Local ): Usage, data= [ 0x38 0x02 ] 568\r\n                            AC Pan\r\n            Item(Global): Report Count, data= [ 0x01 ] 1\r\n            Item(Main  ): Input, data= [ 0x06 ] 6\r\n                            Data Variable Relative No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Main  ): End Collection, data=none\r\n            Item(Main  ): End Collection, data=none\r\n            Item(Global): Usage Page, data= [ 0x0c ] 12\r\n                            Consumer\r\n            Item(Local ): Usage, data= [ 0x01 ] 1\r\n                            Consumer Control\r\n            Item(Main  ): Collection, data= [ 0x01 ] 1\r\n                            Application\r\n            Item(Global): Report ID, data= [ 0x03 ] 3\r\n            Item(Global): Report Size, data= [ 0x10 ] 16\r\n            Item(Global): Report Count, data= [ 0x02 ] 2\r\n            Item(Global): Logical Minimum, data= [ 0x01 ] 1\r\n            Item(Global): Logical Maximum, data= [ 0x8c 0x02 ] 652\r\n            Item(Local ): Usage Minimum, data= [ 0x01 ] 1\r\n                            Consumer Control\r\n            Item(Local ): Usage Maximum, data= [ 0x8c 0x02 ] 652\r\n                            (null)\r\n            Item(Main  ): Input, data= [ 0x00 ] 0\r\n                            Data Array Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Main  ): End Collection, data=none\r\n            Item(Global): Usage Page, data= [ 0x01 ] 1\r\n                            Generic Desktop Controls\r\n            Item(Local ): Usage, data= [ 0x80 ] 128\r\n                            System Control\r\n            Item(Main  ): Collection, data= [ 0x01 ] 1\r\n                            Application\r\n            Item(Global): Report ID, data= [ 0x04 ] 4\r\n            Item(Global): Report Size, data= [ 0x02 ] 2\r\n            Item(Global): Report Count, data= [ 0x01 ] 1\r\n            Item(Global): Logical Minimum, data= [ 0x01 ] 1\r\n            Item(Global): Logical Maximum, data= [ 0x03 ] 3\r\n            Item(Local ): Usage, data= [ 0x82 ] 130\r\n                            System Sleep\r\n            Item(Local ): Usage, data= [ 0x81 ] 129\r\n                            System Power Down\r\n            Item(Local ): Usage, data= [ 0x83 ] 131\r\n                            System Wake Up\r\n            Item(Main  ): Input, data= [ 0x60 ] 96\r\n                            Data Array Absolute No_Wrap Linear\r\n                            No_Preferred_State Null_State Non_Volatile Bitfield\r\n            Item(Global): Report Size, data= [ 0x06 ] 6\r\n            Item(Main  ): Input, data= [ 0x03 ] 3\r\n                            Constant Variable Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Main  ): End Collection, data=none\r\n            Item(Global): Usage Page, data= [ 0xbc 0xff ] 65468\r\n                            (null)\r\n            Item(Local ): Usage, data= [ 0x88 ] 136\r\n                            (null)\r\n            Item(Main  ): Collection, data= [ 0x01 ] 1\r\n                            Application\r\n            Item(Global): Report ID, data= [ 0x08 ] 8\r\n            Item(Local ): Usage Minimum, data= [ 0x01 ] 1\r\n                            (null)\r\n            Item(Local ): Usage Maximum, data= [ 0xff ] 255\r\n                            (null)\r\n            Item(Global): Logical Minimum, data= [ 0x01 ] 1\r\n            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255\r\n            Item(Global): Report Size, data= [ 0x08 ] 8\r\n            Item(Global): Report Count, data= [ 0x01 ] 1\r\n            Item(Main  ): Input, data= [ 0x00 ] 0\r\n                            Data Array Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Main  ): End Collection, data=none\r\n      Endpoint Descriptor:\r\n        bLength                 7\r\n        bDescriptorType         5\r\n        bEndpointAddress     0x82  EP 2 IN\r\n        bmAttributes            3\r\n          Transfer Type            Interrupt\r\n          Synch Type               None\r\n          Usage Type               Data\r\n        wMaxPacketSize     0x0008  1x 8 bytes\r\n        bInterval               2\r\n    Interface Descriptor:\r\n      bLength                 9\r\n      bDescriptorType         4\r\n      bInterfaceNumber        2\r\n      bAlternateSetting       0\r\n      bNumEndpoints           1\r\n      bInterfaceClass         3 Human Interface Device\r\n      bInterfaceSubClass      0 No Subclass\r\n      bInterfaceProtocol      0 None\r\n      iInterface              0 \r\n        HID Device Descriptor:\r\n          bLength                 9\r\n          bDescriptorType        33\r\n          bcdHID               1.11\r\n          bCountryCode            0 Not supported\r\n          bNumDescriptors         1\r\n          bDescriptorType        34 Report\r\n          wDescriptorLength      98\r\n          Report Descriptor: (length is 98)\r\n            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280\r\n                            (null)\r\n            Item(Local ): Usage, data= [ 0x01 ] 1\r\n                            (null)\r\n            Item(Main  ): Collection, data= [ 0x01 ] 1\r\n                            Application\r\n            Item(Global): Report ID, data= [ 0x10 ] 16\r\n            Item(Global): Report Size, data= [ 0x08 ] 8\r\n            Item(Global): Report Count, data= [ 0x06 ] 6\r\n            Item(Global): Logical Minimum, data= [ 0x00 ] 0\r\n            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255\r\n            Item(Local ): Usage, data= [ 0x01 ] 1\r\n                            (null)\r\n            Item(Main  ): Input, data= [ 0x00 ] 0\r\n                            Data Array Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Local ): Usage, data= [ 0x01 ] 1\r\n                            (null)\r\n            Item(Main  ): Output, data= [ 0x00 ] 0\r\n                            Data Array Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Main  ): End Collection, data=none\r\n            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280\r\n                            (null)\r\n            Item(Local ): Usage, data= [ 0x02 ] 2\r\n                            (null)\r\n            Item(Main  ): Collection, data= [ 0x01 ] 1\r\n                            Application\r\n            Item(Global): Report ID, data= [ 0x11 ] 17\r\n            Item(Global): Report Size, data= [ 0x08 ] 8\r\n            Item(Global): Report Count, data= [ 0x13 ] 19\r\n            Item(Global): Logical Minimum, data= [ 0x00 ] 0\r\n            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255\r\n            Item(Local ): Usage, data= [ 0x02 ] 2\r\n                            (null)\r\n            Item(Main  ): Input, data= [ 0x00 ] 0\r\n                            Data Array Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Local ): Usage, data= [ 0x02 ] 2\r\n                            (null)\r\n            Item(Main  ): Output, data= [ 0x00 ] 0\r\n                            Data Array Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Main  ): End Collection, data=none\r\n            Item(Global): Usage Page, data= [ 0x00 0xff ] 65280\r\n                            (null)\r\n            Item(Local ): Usage, data= [ 0x04 ] 4\r\n                            (null)\r\n            Item(Main  ): Collection, data= [ 0x01 ] 1\r\n                            Application\r\n            Item(Global): Report ID, data= [ 0x20 ] 32\r\n            Item(Global): Report Size, data= [ 0x08 ] 8\r\n            Item(Global): Report Count, data= [ 0x0e ] 14\r\n            Item(Global): Logical Minimum, data= [ 0x00 ] 0\r\n            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255\r\n            Item(Local ): Usage, data= [ 0x41 ] 65\r\n                            (null)\r\n            Item(Main  ): Input, data= [ 0x00 ] 0\r\n                            Data Array Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Local ): Usage, data= [ 0x41 ] 65\r\n                            (null)\r\n            Item(Main  ): Output, data= [ 0x00 ] 0\r\n                            Data Array Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Global): Report ID, data= [ 0x21 ] 33\r\n            Item(Global): Report Count, data= [ 0x1f ] 31\r\n            Item(Global): Logical Minimum, data= [ 0x00 ] 0\r\n            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255\r\n            Item(Local ): Usage, data= [ 0x42 ] 66\r\n                            (null)\r\n            Item(Main  ): Input, data= [ 0x00 ] 0\r\n                            Data Array Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Local ): Usage, data= [ 0x42 ] 66\r\n                            (null)\r\n            Item(Main  ): Output, data= [ 0x00 ] 0\r\n                            Data Array Absolute No_Wrap Linear\r\n                            Preferred_State No_Null_Position Non_Volatile Bitfield\r\n            Item(Main  ): End Collection, data=none\r\n      Endpoint Descriptor:\r\n        bLength                 7\r\n        bDescriptorType         5\r\n        bEndpointAddress     0x83  EP 3 IN\r\n        bmAttributes            3\r\n          Transfer Type            Interrupt\r\n          Synch Type               None\r\n          Usage Type               Data\r\n        wMaxPacketSize     0x0020  1x 32 bytes\r\n        bInterval               2\r\nDevice Status:     0x0000\r\n  (Bus Powered)\r\n```"},"comment":{"url":"https://api.github.com/repos/dominicgs/USBProxy/issues/comments/159605736","html_url":"https://github.com/dominicgs/USBProxy/issues/57#issuecomment-159605736","issue_url":"https://api.github.com/repos/dominicgs/USBProxy/issues/57","id":159605736,"user":{"login":"dominicgs","id":91747,"avatar_url":"https://avatars.githubusercontent.com/u/91747?v=3","gravatar_id":"","url":"https://api.github.com/users/dominicgs","html_url":"https://github.com/dominicgs","followers_url":"https://api.github.com/users/dominicgs/followers","following_url":"https://api.github.com/users/dominicgs/following{/other_user}","gists_url":"https://api.github.com/users/dominicgs/gists{/gist_id}","starred_url":"https://api.github.com/users/dominicgs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dominicgs/subscriptions","organizations_url":"https://api.github.com/users/dominicgs/orgs","repos_url":"https://api.github.com/users/dominicgs/repos","events_url":"https://api.github.com/users/dominicgs/events{/privacy}","received_events_url":"https://api.github.com/users/dominicgs/received_events","type":"User","site_admin":false},"created_at":"2015-11-25T13:22:17Z","updated_at":"2015-11-25T13:22:17Z","body":"Is this lsusb output from the BBB or the target host?  EP83 appears to be a valid EP, but I would expect it to be up to the firmware on the device to decide which to use.\r\n\r\nFrom the interface descriptors it looks as though the dongle has separate EPs for keyboard and mouse in boot mode.  EP83 appears to either be for some other type of device that may be connected to the dongle, or it may be used as a generic EP for all traffic once the host OS is up."}}