Does anyone know how to configure an Android device (tablet) to appear as a USB HID device when connected to a PC?Is there any other way of getting data from the tablet to the PC (via USB) other than writing it to a file, and have the PC retrieve the (updated) file from the tablet which is acting as a 'mass storage device' for the PC?Can USB carry a TCP/IP end-end connection?Using a tablet as a high-end intelligent 'keyboard' or 'mouse' or similar device would be immensely powerful, and open up lots of possibilities. Controlling a model railway layout is the end I have in mind.Thanks
radders
raddersradders
3 Answers
It's possible to do this using the linux gadget framework http://www.linux-usb.org/gadget/ using a custom composite USB device. The gadget framework is part of the Android kernel source tree by inheritance from Linux.
Unfortunately, Android has its own customizations that restrict the ability to dynamically register new USB gadgets so you will need to patch the kernel source tree for your particular device and add your HID gadget (otherwise you could create a module and load it that way) to the supported Android list.
I have done this before and will update this answer to contain more detail if there is interest. Unfortunately I lost the code so I will have to start from scratch.
insitusecinsitusec
If I set up a web server on my phone and enable usb tethering, I can access that server from my PC. If that's not enough for you, this might help: https://market.android.com/details?id=usbwebcam.application&hl=en
I'm running cyanogenmod on a Desire CDMA (BravoC)
5 mods gta v. Let me know what you find out; it would be pretty handy to use my phone as a USB keyboard in the field. An android server with a PC client is gonna be easiest though.
Josh CooleyJosh Cooley
Have a look at Android Open Accessory Protocol 2.0. This could help you out.
skylinedreamerskylinedreamer
Not the answer you're looking for? Browse other questions tagged androidusbhidemulation or ask your own question.
A human interface device or HID is a type of computer device usually used by humans that takes input from humans and gives output to humans.
The term 'HID' most commonly refers to the USB-HID specification. The term was coined by Mike Van Flandern of Microsoft when he proposed that the USB committee create a Human Input Device class working group.[when?] The working group was renamed as the Human Interface Device class at the suggestion of Tom Schmidt of DEC because the proposed standard supported bi-directional communication.[when?]
HIDs for Output | |
Common HIDs | |
| |
Less common HIDs | |
|
- 1HID standard
HID standard[edit]
The HID standard was adopted primarily to enable innovation in PCinput devices and to simplify the process of installing such devices. Prior to the introduction of the HID concept, devices usually conformed to strictly defined protocols for mouse, keyboards and joysticks; for example, the standard mouse protocol at the time supported relative X- and Y-axis data and binary input for up to two buttons, with no legacy support. All hardware innovations necessitated either overloading the use of data in an existing protocol or the creation of custom device drivers and the evangelization of a new protocol to developers. By contrast, all HID-defined devices deliver self-describing packages that may contain any number of data types and formats. A single HID driver on a computer parses data and enables dynamic association of data I/O with application functionality, which has enabled rapid innovation and development, and prolific diversification of new human-interface devices.
A working committee with representatives from several prominent companies developed the HID standard. The list of participants appears in the 'Device Class Definition for Human Interface Devices (HID)'[1]document. The concept of a self-describing extensible protocol initially came from Mike Van Flandern and Manolito Adan while working on a project named 'Raptor' at Microsoft, and independently from Steve McGowan, who worked on a device protocol for Access Bus while at Forte. After comparing notes at a Consumer Game Developer Conference, Steve and Mike agreed to collaborate on a new standard for the emerging Universal Serial Bus (USB).
The HID protocol has its limitations, but all modern mainstream operating systems will recognize standard USB HID devices, such as keyboards and mice, without needing a specialized driver. When installed, a message saying that 'A 'HID-compliant device' has been recognized' generally appears on screen. In comparison, this message does not usually appear for devices connected via the PS/2 6-pin DIN connectors which preceded USB. PS/2 does not typically support plug-and-play, which means that connecting a PS/2 keyboard or mouse with the computer powered on does not always work and may pose a hazard to the computer's motherboard. Likewise, the PS/2 standard does not support the HID protocol. The USB human interface device class describes a USB HID.
Components of the HID protocol[edit]
In the HID protocol, there are 2 entities: the 'host' and the 'device'. The device is the entity that directly interacts with a human, such as a keyboard or mouse. The host communicates with the device and receives input data from the device on actions performed by the human. Output data flows from the host to the device and then to the human. The most common example of a host is a PC but some cell phones and PDAs also can be hosts.
The HID protocol makes implementation of devices very simple. Devices define their data packets and then present a 'HID descriptor' to the host. The HID descriptor is a hard coded array of bytes that describes the device's data packets. This includes: how many packets the device supports, the size of the packets, and the purpose of each byte and bit in the packet. For example, a keyboard with a calculator program button can tell the host that the button's pressed/released state is stored as the 2nd bit in the 6th byte in data packet number 4 (note: these locations are only illustrative and are device-specific). The device typically stores the HID descriptor in ROM and does not need to intrinsically understand or parse the HID descriptor. Some mouse and keyboard hardware in the market today is implemented using only an 8-bit CPU.
The host is expected to be a more complex entity than the device. The host needs to retrieve the HID descriptor from the device and parse it before it can fully communicate with the device. Parsing the HID descriptor can be complicated. Multiple operating systems are known to have shipped bugs in the device drivers responsible for parsing the HID descriptors years after the device drivers were originally released to the public.[citation needed] However, this complexity is the reason why rapid innovation with HID devices is possible.
The above mechanism describes what is known as HID 'report protocol'. Because it was understood that not all hosts would be capable of parsing HID descriptors, HID also defines 'boot protocol'. In boot protocol, only specific devices are supported with only specific features because fixed data packet formats are used. The HID descriptor is not used in this mode so innovation is limited. However, the benefit is that minimal functionality is still possible on hosts that otherwise would be unable to support HID. The only devices supported in boot protocol are
- Keyboard – Any of the first 256 key codes ('Usages') defined in the HID Usage Tables, Usage Page 7 can be reported by a keyboard using the boot protocol, but most systems only handle a subset of these keys. Most systems support all 104 keys on the IBM AT-101 layout, plus the three extra keys designed for Microsoft Windows 95 (the left and right Windows key, and the Menu key). Many systems also support additional keys on basic western European 105-, Korean 106-, Brazilian ABNT 107- and Japanese DOS/V 109-key layouts. Buttons, knobs and keys that are not reported on Usage Page 7 are not available. For example, a particular US keyboard's QWERTY keys will function but the Calculator and Logoff keys will not because they are defined on Usage Page 12 and cannot be reported in boot protocol.
- Mouse – Only the X-axis, Y-axis, and the first 3 buttons will be available. Any additional features on the mouse will not function.
One common usage of boot mode is during the first moments of a computer's boot up sequence. Directly configuring a computer's BIOS is often done using only boot mode.Sometimes a message will appear informing the user that the device has installed the correct driver and is now usable.
HID definition of a device[edit]
According to the HID specification, a device is described, during the report mode, as a set of controls or group of controls.Controls are matched by a field containing the data, and another containing a usage tag.Each usage tag is described in the spec as the constructor suggested use of the data described in the report mode.
Other protocols using HID[edit]
Since HID's original definition over USB, HID is now also used in other computer communication buses. This enables HID devices that traditionally were only found on USB to also be used on alternative buses. This is done since existing support for USB HID devices can typically be adapted much faster than having to invent an entirely new protocol to support mouse, keyboards, and the like. Known buses that use HID are:
- Bluetooth HID – Used for mouse and keyboards that are connected via Bluetooth
- Serial HID – Used in Microsoft's Windows Media Center PC remote control receivers.
- ZigBee input device – ZigBee (RF4CE) supports HID devices through the ZigBee input device profile.
- HID over I²C – Used for embedded devices in Microsoft Windows 8[2]
- HOGP (HID over GATT) – Used for HID devices connected using Bluetooth low energy technology
See also[edit]
References[edit]
- ^Device Class Definition for Human Interface Devices (HID): Firmware Specification -- Final 1/30/97. USB Implementer's Forum. 1997. Retrieved 2014-04-28.
- ^'HID over I2C'. Microsoft. Retrieved 2016-01-19.
External links[edit]
- HID developers forum, USB.org
- HID Device Class Definition 1.11 Specification, USB.org
- HID Usage Tables 1.12 Specification, USB.org
Retrieved from 'https://en.wikipedia.org/w/index.php?title=Human_interface_device&oldid=883954602'
Sep. 25, 2018 / Updated by Bessie Shaw to Windows Driver Solutions
If you are facing HTC Vive USB errors, which occur when there is a notice with error code 1101 through 1112 on the SteamVR, or when Windows is displaying a notice “USB Not Recognized”, you could refer to the content below for the HTC Vive USB errors troubleshooting.
On SteamVR, Error code between 1101 and 1112 are related to HTC Vive USB failures. In fact, many people encounter various HTC Vive errors when they try to experience VR games with it, like driver failed (error code 200), driver calibration (error code 206 or 207), HMD display not found (error code 208), HTC Vive sound not working, etc.
And here we will show you 3 solutions of how to fix HTC Vive USB errors.
Solution 1: Check the HTC Vive USB Related Hardware
It is recommended to check the hardware condition firstly. You could unplug all the cables connecting to the HTC Vive headset, the Link Box and the computer, and then make sure all of the cables and devices are in their normal condition.
Then reconnect the cables and turn on the power to start your HTC Vive headset and see if the HTC Vive USB errors still occur on the screen. If so, continue the reading.
Solution 2: Check the USB Drivers
There are two USB ports on the HTC Vive headset, one is USB 2.0 port and the other one is USB 3.0 port, which may be used to connect to a third device. So it is extremely important to ensure the latest USB drivers on the PC.
Outdated Vive USB drivers will result Vive USB compatibility issues and prevent the VR headset from working properly. What’s more, errors like USB not recognized or driver crashes will occur.
To meet the HTC Vive USB requirement, you could run Driver Talent on the PC to update the HTC Vive USB drivers. (If the Driver Talent is not installed on your PC, you could click the button below to download it directly.)
Here are 3 steps to update the HTC Vive USB drivers:
Step 1: Scan the PC for Outdated USB Drivers
Click Scan and the Driver Talent will detect all the outdated USB drivers on the computer.
Step 2: Update the Drivers
Click Update to download and install the latest USB 2.0 or USB 3.0 drivers.
Step 3: Restart the PC
The newly installed drivers will take effect after you restart the computer.
Read More: How to Update HTC Device Driver Efficiently
Htc Hid Pen Device Reviews
Note: Driver Talent provides the VR Support Check function to find out whether your computer is compatible with HTC Vive VR device. Click Hardware Detection in the Toolbox menu to do a scan.
Solution 3: Check the HTC Vive USB Settings on SteamVR
You could follow the steps below to check the HTC Vive USB setting:
1. Run SteamVR on your PC and click the arrow on the top left corner for the dropdown list. Select Settings.
2. Select USB from the left column and click the button Refresh in the right column.
3. See if the items are highlighted with white circles. If not, change the HTC Vive USB cable to other USB port on the PC and wait for another refreshing.
If step 3 does not work, go on the steps.
4. Select Developer from the left column and scroll down in the right column to the Reset Command and conquer first decade code. section. Click the button Remove all SteamVR USB Devices.
5. Unplug the HTC Vive USB cable from the PC and then connect the devices again.
You could also try plugging the USB cable into different USB ports on the computer. If the errors repeat after you take the methods above, take all of the steps again. You could also refer to HTC Vive support website.
Hope the methods could help you start your HTC Vive VR headset successfully and you could enjoy the VR games. If you have any questions on HTC Vive USB errors, you could comment in the section below or click the LEFT MENU on this page for more help. Any other driver-related issues, see Resource Center section.
360 Total Security Business | Driver Talent for Network Card |
Deploy critical protection to secure your corporate data | Download & Install Network Drivers without Internet Connection |
30-day Free Trial | Free Download |
I've made (with a STM32F4 microcontroller) a USB HID Pen device. My device works really good on Windows 7, or Debian 7 (Linux).
The problem is => It doesn't work on Windows 8, 8.1, 10, ..
My device is recognized as a 'HID Stylus', usb view give me no error, the pipe is Open, but my cursor won't move.Worse, I don't see any packets coming IN or OUT with UsbLyzer !
EDIT:
Here is how my device is seen by the computer (usbview) :
And here is my device HID descriptor :
user2629409
user2629409user2629409
2 Answers
I changed many things :
- Change the way I make padding
- I don't send the scan time anymore
- .. maybe others many things that don't change a lot
I finally make a device that works !
Here is my usb config descriptor with IAD (HID Pen device + CDC)
/********************** USB Configuration Descriptor **********************/
/********************** HID Digitizer interface **********************/
/***************** Interface Association Descriptor **********************/
/***************** Descriptor for CDC **********************/
AND finally the HID descriptor I used :
user2629409user2629409
do you have the steps which you followed in running the linux on your stm32f4 board mentioned anywhere or any sort of b
Piyush Pandey psquarePiyush Pandey psquare
Not the answer you're looking for? Browse other questions tagged windowsembeddedusbhidstm32 or ask your own question.
Posted byBamboo Pen3 years ago
Archived
I recently upgraded (clean install) to Windows 10 and since then, I have not been able to configure my tablet. I am now totally out of ideas and I would very much appreciate some help on this. Thanks.
I installed the latest drivers (5.3.5-3) and it consistently says
There is a problem with your tablet driver. Please reboot your system. If the problem persists reinstall or update the driver. |
Needless to say, none of these extremely helpful recommendations actually do anything to fix the problem, and the 'problem' it mentions cannot be Googled because of how incredibly vague it is. In fact, it could be a different problem every time and I wouldn't even know (does anyone know if there are log files, and if so where one might find them?).
I have found many proposed solutions to problems that have the same or similar symptoms, but none have fixed it.
- I have tried turning it off and on again.
- I have tried restarting the WTabletServiceCon service.
- I have tried removing both 'My Preferences' as well as 'All User Preferences'.
- I have tried uninstalling and reinstalling the drivers.
- I have tried removing all the wintab* files from system32 and syswow64 before reinstalling the drivers.According to the information available, the landscape of the game will stretch from the Wall in the North (which as you may know, is basically the end of civilised society) to beyond Kings Landing to the south. Apparently, its going to be set in the time of the first book (which is, of course, Game of Thrones) after the death of a certain character.As a fan of the original series of books, I was a little dubious when I first heard about this but what we have heard from Artplant (via IGN) has made this game look quite promising. If you have read the book or seen the recent HBO series you probably get who Im talking about.
- I have tried disabling TabletInputService.
- I have tried plugging in my tablet while my PC was disconnected from the Internet to make sure Windows didn't install it's own drivers instead.
- I have tried two older driver versions.
- I have tried using a few different USB ports.
- I have tried offering the tablet driver words of encouragement before clicking on Wacom Preferences.
Additional info: | |
---|---|
Tablet model | CTL-470 (Bamboo Pen) |
Windows | 10 Professional 64-bit |
Driver versions tested | 5.3.5-3, 5.3.3-3, 5.3.2-1 Edit: upon calling Wacom support, they instructed me to install 5.3.3-2, which didn't work either |
Services in services.msc | WTabletServiceCon ('Wacom Consumer Service')1 running and set to restart on failure |
Background processes/daemons | only WTabletServiceCon.exe1 |
Antivirus | Windows Defender only (and there are no detected items) |
Programs and Features | Wacom (5.3.5-3), WebTablet FB Plugin 32 bit (2.1.0.7), WebTablet FB Plugin 64 bit (2.1.0.7) |
Device: | Driver: |
Wacom Tablet | kidkmdf.sys, wachidrouter.sys, wdfcoinstaller01009.dll |
HID-compliant digitizer | n/a |
HID-Compliant Mouse | mouclass.sys, mouhid.sys, wacomrouterfilter.sys, wdfcoinstaller01009.dll |
HID-compliant pen | n/a |
HID-compliant vendor-defined device | n/a |
1. I seem to remember on Windows 7 having more than just one Wacom service/daemon running at a time. There was something about a 'Host Something-or-other' and possibly other processes as well if my memory is correct. This could be related to the problem, or it could be another symptom. It is also possible that those processes were from the Intuos drivers that I also had installed for another device I was using at the time, and yes, I have also tried installing that as well on Windows 10 and it didn't help or start the background processes I remember.
Edit 2: I finally found the issue and managed to bodge it until I can do a proper fix of my system. I have attached my reply to Wacom support so hopefully nobody else will ever have to go through this
Aha! It wasn't updates, but you reminded me of something that ended up fixing my problem (or at least temporarily kludging/bodging it). I'll explain in detail in case anyone else ever has this problem.
The Windows developers have set Windows up to use hard links for everything. The problem with this arises when you try to move the Program Files folders to an external drive, which is very important for me because I have an SSD and I can't fit my Program Files onto C:.
One way to move Program Files (the broken but correct way) is to use the registry. There's a few registry keys you change and then software starts installing to a new place, but that doesn't work when you move it to another drive. It will work for some programs but not others, more accurately. Windows system programs (Internet Explorer, Windows Defender, etc.) use hard links to keep track of where their files are, so Windows Update will fail every time there's a cumulative update.
The other (better / incorrect) way is to use symbolic links. That's how I did it on Windows 7 because I didn't know about the relevant registry keys at the time, but when I upgraded I decided to try doing it the 'correct' way, which caused a whole slew of problems.
The issue with my Wacom drivers was being caused most likely by the Wacom drivers / preferences being unable to find certain files (maybe in Common Files or possibly just in the Program Files directory itself, depending on how the program determines where to find its files).
For now, what I have done is copied my C:Program Files folder (which contains Common Files and certain other programs for some reason I cannot fathom) and merged it into my Q:Program Files folder and then changed the registry so only the Q:Program Files folder is used. Windows Update still won't work because of the hard link problem, but the Wacom Preferences program works fine now.
At some point (when I have access to Windows installation media and some spare time) I'll completely remove the C:Program Files* folders (from safe mode or my Linux install), replace them with symlinks to Q:Program Files (from safe mode), and then return all the registry keys in HKLMSOFTWAREMicrosoftWindowsCurrentVersion so they all point back to their (imaginary) locations on C:. That should fix the Wacom drivers and Windows Update.
On your end, it might pay off to just change the software so it checks in a few different locations. Ideally it shouldn't have to change just to make up for Microsoft's shoddy programming, but it would solve some problems and prevent some headaches. Instead of just crashing with a vague error message, it would be a good idea to check the registry and look in all the related locations (CommonFilesDir, CommonFilesDir (x86), CommonW6432Dir, ProgramFilesDir, ProgramFilesDir (x86), ProgramFilesPath, and ProgramW6432Dir) for the files it's trying to find.
2 comments