| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 | 
							-          HIDAPI library for Windows, Linux, FreeBSD and Mac OS X
 
-         =========================================================
 
- About
 
- ======
 
- HIDAPI is a multi-platform library which allows an application to interface
 
- with USB and Bluetooth HID-Class devices on Windows, Linux, FreeBSD, and Mac
 
- OS X.  HIDAPI can be either built as a shared library (.so or .dll) or
 
- can be embedded directly into a target application by adding a single source
 
- file (per platform) and a single header.
 
- HIDAPI has four back-ends:
 
- 	* Windows (using hid.dll)
 
- 	* Linux/hidraw (using the Kernel's hidraw driver)
 
- 	* Linux/libusb (using libusb-1.0)
 
- 	* FreeBSD (using libusb-1.0)
 
- 	* Mac (using IOHidManager)
 
- On Linux, either the hidraw or the libusb back-end can be used. There are
 
- tradeoffs, and the functionality supported is slightly different.
 
- Linux/hidraw (linux/hid.c):
 
- This back-end uses the hidraw interface in the Linux kernel.  While this
 
- back-end will support both USB and Bluetooth, it has some limitations on
 
- kernels prior to 2.6.39, including the inability to send or receive feature
 
- reports.  In addition, it will only communicate with devices which have
 
- hidraw nodes associated with them.  Keyboards, mice, and some other devices
 
- which are blacklisted from having hidraw nodes will not work. Fortunately,
 
- for nearly all the uses of hidraw, this is not a problem.
 
- Linux/FreeBSD/libusb (libusb/hid-libusb.c):
 
- This back-end uses libusb-1.0 to communicate directly to a USB device. This
 
- back-end will of course not work with Bluetooth devices.
 
- HIDAPI also comes with a Test GUI. The Test GUI is cross-platform and uses
 
- Fox Toolkit (http://www.fox-toolkit.org).  It will build on every platform
 
- which HIDAPI supports.  Since it relies on a 3rd party library, building it
 
- is optional but recommended because it is so useful when debugging hardware.
 
- What Does the API Look Like?
 
- =============================
 
- The API provides the the most commonly used HID functions including sending
 
- and receiving of input, output, and feature reports.  The sample program,
 
- which communicates with a heavily hacked up version of the Microchip USB
 
- Generic HID sample looks like this (with error checking removed for
 
- simplicity):
 
- #ifdef WIN32
 
- #include <windows.h>
 
- #endif
 
- #include <stdio.h>
 
- #include <stdlib.h>
 
- #include "hidapi.h"
 
- #define MAX_STR 255
 
- int main(int argc, char* argv[])
 
- {
 
- 	int res;
 
- 	unsigned char buf[65];
 
- 	wchar_t wstr[MAX_STR];
 
- 	hid_device *handle;
 
- 	int i;
 
- 	// Initialize the hidapi library
 
- 	res = hid_init();
 
- 	// Open the device using the VID, PID,
 
- 	// and optionally the Serial number.
 
- 	handle = hid_open(0x4d8, 0x3f, NULL);
 
- 	// Read the Manufacturer String
 
- 	res = hid_get_manufacturer_string(handle, wstr, MAX_STR);
 
- 	wprintf(L"Manufacturer String: %s\n", wstr);
 
- 	// Read the Product String
 
- 	res = hid_get_product_string(handle, wstr, MAX_STR);
 
- 	wprintf(L"Product String: %s\n", wstr);
 
- 	// Read the Serial Number String
 
- 	res = hid_get_serial_number_string(handle, wstr, MAX_STR);
 
- 	wprintf(L"Serial Number String: (%d) %s\n", wstr[0], wstr);
 
- 	// Read Indexed String 1
 
- 	res = hid_get_indexed_string(handle, 1, wstr, MAX_STR);
 
- 	wprintf(L"Indexed String 1: %s\n", wstr);
 
- 	// Toggle LED (cmd 0x80). The first byte is the report number (0x0).
 
- 	buf[0] = 0x0;
 
- 	buf[1] = 0x80;
 
- 	res = hid_write(handle, buf, 65);
 
- 	// Request state (cmd 0x81). The first byte is the report number (0x0).
 
- 	buf[0] = 0x0;
 
- 	buf[1] = 0x81;
 
- 	res = hid_write(handle, buf, 65);
 
- 	// Read requested state
 
- 	res = hid_read(handle, buf, 65);
 
- 	// Print out the returned buffer.
 
- 	for (i = 0; i < 4; i++)
 
- 		printf("buf[%d]: %d\n", i, buf[i]);
 
- 	// Finalize the hidapi library
 
- 	res = hid_exit();
 
- 	return 0;
 
- }
 
- If you have your own simple test programs which communicate with standard
 
- hardware development boards (such as those from Microchip, TI, Atmel,
 
- FreeScale and others), please consider sending me something like the above
 
- for inclusion into the HIDAPI source.  This will help others who have the
 
- same hardware as you do.
 
- License
 
- ========
 
- HIDAPI may be used by one of three licenses as outlined in LICENSE.txt.
 
- Download
 
- =========
 
- HIDAPI can be downloaded from github
 
- 	git clone git://github.com/signal11/hidapi.git
 
- Build Instructions
 
- ===================
 
- This section is long. Don't be put off by this. It's not long because it's
 
- complicated to build HIDAPI; it's quite the opposite.  This section is long
 
- because of the flexibility of HIDAPI and the large number of ways in which
 
- it can be built and used.  You will likely pick a single build method.
 
- HIDAPI can be built in several different ways. If you elect to build a
 
- shared library, you will need to build it from the HIDAPI source
 
- distribution.  If you choose instead to embed HIDAPI directly into your
 
- application, you can skip the building and look at the provided platform
 
- Makefiles for guidance.  These platform Makefiles are located in linux/
 
- libusb/ mac/ and windows/ and are called Makefile-manual.  In addition,
 
- Visual Studio projects are provided.  Even if you're going to embed HIDAPI
 
- into your project, it is still beneficial to build the example programs.
 
- Prerequisites:
 
- ---------------
 
- 	Linux:
 
- 	-------
 
- 	On Linux, you will need to install development packages for libudev,
 
- 	libusb and optionally Fox-toolkit (for the test GUI). On
 
- 	Debian/Ubuntu systems these can be installed by running:
 
- 	    sudo apt-get install libudev-dev libusb-1.0-0-dev libfox-1.6-dev
 
- 	If you downloaded the source directly from the git repository (using
 
- 	git clone), you'll need Autotools:
 
- 	    sudo apt-get install autotools-dev autoconf automake libtool
 
- 	FreeBSD:
 
- 	---------
 
- 	On FreeBSD you will need to install GNU make, libiconv, and
 
- 	optionally Fox-Toolkit (for the test GUI). This is done by running
 
- 	the following:
 
- 	    pkg_add -r gmake libiconv fox16
 
- 	If you downloaded the source directly from the git repository (using
 
- 	git clone), you'll need Autotools:
 
- 	    pkg_add -r autotools
 
- 	Mac:
 
- 	-----
 
- 	On Mac, you will need to install Fox-Toolkit if you wish to build
 
- 	the Test GUI. There are two ways to do this, and each has a slight
 
- 	complication. Which method you use depends on your use case.
 
- 	If you wish to build the Test GUI just for your own testing on your
 
- 	own computer, then the easiest method is to install Fox-Toolkit
 
- 	using ports:
 
- 		sudo port install fox
 
- 	If you wish to build the TestGUI app bundle to redistribute to
 
- 	others, you will need to install Fox-toolkit from source.  This is
 
- 	because the version of fox that gets installed using ports uses the
 
- 	ports X11 libraries which are not compatible with the Apple X11
 
- 	libraries.  If you install Fox with ports and then try to distribute
 
- 	your built app bundle, it will simply fail to run on other systems.
 
- 	To install Fox-Toolkit manually, download the source package from
 
- 	http://www.fox-toolkit.org, extract it, and run the following from
 
- 	within the extracted source:
 
- 		./configure && make && make install
 
- 	Windows:
 
- 	---------
 
- 	On Windows, if you want to build the test GUI, you will need to get
 
- 	the hidapi-externals.zip package from the download site.  This
 
- 	contains pre-built binaries for Fox-toolkit.  Extract
 
- 	hidapi-externals.zip just outside of hidapi, so that
 
- 	hidapi-externals and hidapi are on the same level, as shown:
 
- 	     Parent_Folder
 
- 	       |
 
- 	       +hidapi
 
- 	       +hidapi-externals
 
- 	Again, this step is not required if you do not wish to build the
 
- 	test GUI.
 
- Building HIDAPI into a shared library on Unix Platforms:
 
- ---------------------------------------------------------
 
- On Unix-like systems such as Linux, FreeBSD, Mac, and even Windows, using
 
- Mingw or Cygwin, the easiest way to build a standard system-installed shared
 
- library is to use the GNU Autotools build system.  If you checked out the
 
- source from the git repository, run the following:
 
- 	./bootstrap
 
- 	./configure
 
- 	make
 
- 	make install     <----- as root, or using sudo
 
- If you downloaded a source package (ie: if you did not run git clone), you
 
- can skip the ./bootstrap step.
 
- ./configure can take several arguments which control the build. The two most
 
- likely to be used are:
 
- 	--enable-testgui
 
- 		Enable build of the Test GUI. This requires Fox toolkit to
 
- 		be installed.  Instructions for installing Fox-Toolkit on
 
- 		each platform are in the Prerequisites section above.
 
- 	--prefix=/usr
 
- 		Specify where you want the output headers and libraries to
 
- 		be installed. The example above will put the headers in
 
- 		/usr/include and the binaries in /usr/lib. The default is to
 
- 		install into /usr/local which is fine on most systems.
 
- Building the manual way on Unix platforms:
 
- -------------------------------------------
 
- Manual Makefiles are provided mostly to give the user and idea what it takes
 
- to build a program which embeds HIDAPI directly inside of it. These should
 
- really be used as examples only. If you want to build a system-wide shared
 
- library, use the Autotools method described above.
 
- 	To build HIDAPI using the manual makefiles, change to the directory
 
- 	of your platform and run make. For example, on Linux run:
 
- 		cd linux/
 
- 		make -f Makefile-manual
 
- 	To build the Test GUI using the manual makefiles:
 
- 		cd testgui/
 
- 		make -f Makefile-manual
 
- Building on Windows:
 
- ---------------------
 
- To build the HIDAPI DLL on Windows using Visual Studio, build the .sln file
 
- in the windows/ directory.
 
- To build the Test GUI on windows using Visual Studio, build the .sln file in
 
- the testgui/ directory.
 
- To build HIDAPI using MinGW or Cygwin using Autotools, use the instructions
 
- in the section titled "Building HIDAPI into a shared library on Unix
 
- Platforms" above.  Note that building the Test GUI with MinGW or Cygwin will
 
- require the Windows procedure in the Prerequisites section above (ie:
 
- hidapi-externals.zip).
 
- To build HIDAPI using MinGW using the Manual Makefiles, see the section
 
- "Building the manual way on Unix platforms" above.
 
- HIDAPI can also be built using the Windows DDK (now also called the Windows
 
- Driver Kit or WDK). This method was originally required for the HIDAPI build
 
- but not anymore. However, some users still prefer this method. It is not as
 
- well supported anymore but should still work. Patches are welcome if it does
 
- not. To build using the DDK:
 
-    1. Install the Windows Driver Kit (WDK) from Microsoft.
 
-    2. From the Start menu, in the Windows Driver Kits folder, select Build
 
-       Environments, then your operating system, then the x86 Free Build
 
-       Environment (or one that is appropriate for your system).
 
-    3. From the console, change directory to the windows/ddk_build/ directory,
 
-       which is part of the HIDAPI distribution.
 
-    4. Type build.
 
-    5. You can find the output files (DLL and LIB) in a subdirectory created
 
-       by the build system which is appropriate for your environment. On
 
-       Windows XP, this directory is objfre_wxp_x86/i386.
 
- Cross Compiling
 
- ================
 
- This section talks about cross compiling HIDAPI for Linux using autotools.
 
- This is useful for using HIDAPI on embedded Linux targets.  These
 
- instructions assume the most raw kind of embedded Linux build, where all
 
- prerequisites will need to be built first.  This process will of course vary
 
- based on your embedded Linux build system if you are using one, such as
 
- OpenEmbedded or Buildroot.
 
- For the purpose of this section, it will be assumed that the following
 
- environment variables are exported.
 
- 	$ export STAGING=$HOME/out
 
- 	$ export HOST=arm-linux
 
- STAGING and HOST can be modified to suit your setup.
 
- Prerequisites
 
- --------------
 
- Note that the build of libudev is the very basic configuration.
 
- Build Libusb. From the libusb source directory, run:
 
- 	./configure --host=$HOST --prefix=$STAGING
 
- 	make
 
- 	make install
 
- Build libudev. From the libudev source directory, run:
 
- 	./configure --disable-gudev --disable-introspection --disable-hwdb \
 
- 		 --host=$HOST --prefix=$STAGING
 
- 	make
 
- 	make install
 
- Building HIDAPI
 
- ----------------
 
- Build HIDAPI:
 
- 	PKG_CONFIG_DIR= \
 
- 	PKG_CONFIG_LIBDIR=$STAGING/lib/pkgconfig:$STAGING/share/pkgconfig \
 
- 	PKG_CONFIG_SYSROOT_DIR=$STAGING \
 
- 	./configure --host=$HOST --prefix=$STAGING
 
- Signal 11 Software - 2010-04-11
 
-                      2010-07-28
 
-                      2011-09-10
 
-                      2012-05-01
 
-                      2012-07-03
 
 
  |