Arduino Due USB protocol support
Budget: $30 – $250 CAD
Need help with Polling USB HID endpoints.
I have a mouse and keyboard which I use for gaming. I setup a bunch of macros using the built on software but was unsatisfied with the limitations of the software. I thought about coding macro software directly in windows as I am proficient in C# and VB.net. However doing it that way introduces a lot of lag and it is detectable by Anti cheat software in games. In order to go untouched the macros need to be hardware based. So I purchased 2 Arduino dues and an Arduino pro micro. The arduino due supports being a usb host and the Arduino micro supports being a usb device. The arduino due theoretically has full support for the usb protocol and any device you want on the hardware side. However on the software side it has very little available and does not support usb hubs. I don’t want to code for a usb hub myself so I figured I would just buy 2 arduino dues one for the mouse and one for the keyboard. The plan is for each arduino due to read all the data from each device. The arduino pro micro will be connected by serial to both arduino dues and will poll them to get all the information they collect every millisecond or so. Then it will process it and modify it however I like before passing it on to the computer by emulating an hid device. The arduino due has a library called usb host which is capable of reading USB keyboards and mice. It is only able to do this because keyboards and mice support boot mode for low level operating systems such as a computer bios. This means that they are all very standardized and work without drivers. However boot mode only supports mouse movement and 3 buttons. I have a 5 button mouse with a scroll wheel. The extra buttons and scroll wheel require a driver to work and are not accessible under a pre-existing arduino library to my knowledge. I have basic understanding of usb protocol but would like to avoid reading thousands of pages of documentation. What I was hoping to do is simply poll all available data from the mouse descriptors and endpoints without actually using the proper communications standards intended. I just want to read the mouse without sending any commands back to it. If I have the ability to read all of its data to serial monitor I can find the addresses for the data that I want and parse the data to extract it. If the mouse insists on being sent something in return I can use the libraries that only support half of the mouse features just to initialize it and get the rest of the data by reading its descriptors. Is there any libraries available for the arduino due or example code that is capable of just reading as much information as possible from any usb device and just dumping it to the serial monitor. I have found some code to read just the descriptor however I need to go deeper than that to get what I need. I feel like it should be relatively easy to read the endpoint data of the default configuration of any HID device without actually communicating with it and developing drivers.
I have a mouse and keyboard which I use for gaming. I setup a bunch of macros using the built on software but was unsatisfied with the limitations of the software. I thought about coding macro software directly in windows as I am proficient in C# and VB.net. However doing it that way introduces a lot of lag and it is detectable by Anti cheat software in games. In order to go untouched the macros need to be hardware based. So I purchased 2 Arduino dues and an Arduino pro micro. The arduino due supports being a usb host and the Arduino micro supports being a usb device. The arduino due theoretically has full support for the usb protocol and any device you want on the hardware side. However on the software side it has very little available and does not support usb hubs. I don’t want to code for a usb hub myself so I figured I would just buy 2 arduino dues one for the mouse and one for the keyboard. The plan is for each arduino due to read all the data from each device. The arduino pro micro will be connected by serial to both arduino dues and will poll them to get all the information they collect every millisecond or so. Then it will process it and modify it however I like before passing it on to the computer by emulating an hid device. The arduino due has a library called usb host which is capable of reading USB keyboards and mice. It is only able to do this because keyboards and mice support boot mode for low level operating systems such as a computer bios. This means that they are all very standardized and work without drivers. However boot mode only supports mouse movement and 3 buttons. I have a 5 button mouse with a scroll wheel. The extra buttons and scroll wheel require a driver to work and are not accessible under a pre-existing arduino library to my knowledge. I have basic understanding of usb protocol but would like to avoid reading thousands of pages of documentation. What I was hoping to do is simply poll all available data from the mouse descriptors and endpoints without actually using the proper communications standards intended. I just want to read the mouse without sending any commands back to it. If I have the ability to read all of its data to serial monitor I can find the addresses for the data that I want and parse the data to extract it. If the mouse insists on being sent something in return I can use the libraries that only support half of the mouse features just to initialize it and get the rest of the data by reading its descriptors. Is there any libraries available for the arduino due or example code that is capable of just reading as much information as possible from any usb device and just dumping it to the serial monitor. I have found some code to read just the descriptor however I need to go deeper than that to get what I need. I feel like it should be relatively easy to read the endpoint data of the default configuration of any HID device without actually communicating with it and developing drivers.