~mattmik/mixxx/mic_modifications

« back to all changes in this revision

Viewing changes to mixxx/lib/hidapi-0.7.0/linux/README.txt

  • Committer: Matt Mikolay
  • Date: 2012-10-22 14:10:21 UTC
  • mfrom: (3255.1.46 mixxx-trunk)
  • Revision ID: mikolaym@yahoo.com-20121022141021-9hxxx5o4amaqqw80
MergingĀ fromĀ lp:mixxx

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
There are two implementations of HIDAPI for Linux. One (hid.c) uses the
3
 
Linux hidraw driver, and the other (hid-libusb.c) uses libusb. Which one you
4
 
use depends on your application. Complete functionality of the hidraw
5
 
version depends on patches to the Linux kernel which are not currently in
6
 
the mainline. These patches have to do with sending and receiving feature
7
 
reports. The libusb implementation uses libusb to talk directly to the
8
 
device, bypassing any Linux HID driver. The disadvantage of the libusb
9
 
version is that it will only work with USB devices, while the hidraw
10
 
implementation will work with Bluetooth devices as well.
11
 
 
12
 
To use HIDAPI, simply drop either hid.c or hid-libusb.c into your
13
 
application and build using the build parameters in the Makefile.
14
 
 
15
 
By default, on Linux, the Makefile in this directory is configured to use
16
 
the libusb implementation. To switch to the hidraw implementation, simply
17
 
change hid-libusb.c to hid.c in the Makefile.
18
 
 
19
 
 
20
 
Libusb Implementation notes
21
 
----------------------------
22
 
For the libusb implementation, libusb-1.0 must be installed. Libusb 1.0 is
23
 
different than the legacy libusb 0.1 which is installed on many systems.  To
24
 
install libusb-1.0 on Ubuntu and other Debian-based systems, run:
25
 
        sudo apt-get install libusb-1.0-0-dev
26
 
 
27
 
 
28
 
Hidraw Implementation notes
29
 
----------------------------
30
 
For the hidraw implementation, libudev headers and libraries are required to
31
 
build hidapi programs.  To install libudev libraries on Ubuntu,
32
 
and other Debian-based systems, run:
33
 
        sudo apt-get install libudev-dev
34
 
 
35
 
On Redhat-based systems, run the following as root:
36
 
        yum install libudev-devel
37
 
 
38
 
Unfortunately, the hidraw driver, which the linux version of hidapi is based
39
 
on, contains bugs in kernel versions < 2.6.36, which the client application
40
 
should be aware of.
41
 
 
42
 
Bugs (hidraw implementation only):
43
 
-----------------------------------
44
 
On Kernel versions < 2.6.34, if your device uses numbered reports, an extra
45
 
byte will be returned at the beginning of all reports returned from read()
46
 
for hidraw devices. This is worked around in the libary. No action should be
47
 
necessary in the client library.
48
 
 
49
 
On Kernel versions < 2.6.35, reports will only be sent using a Set_Report
50
 
transfer on the CONTROL endpoint. No data will ever be sent on an Interrupt
51
 
Out endpoint if one exists. This is fixed in 2.6.35. In 2.6.35, OUTPUT
52
 
reports will be sent to the device on the first INTERRUPT OUT endpoint if it
53
 
exists; If it does not exist, OUTPUT reports will be sent on the CONTROL
54
 
endpoint.
55
 
 
56
 
On Kernel versions < 2.6.36, add an extra byte containing the report number
57
 
to sent reports if numbered reports are used, and the device does not
58
 
contain an INTERRPUT OUT endpoint for OUTPUT transfers.  For example, if
59
 
your device uses numbered reports and wants to send {0x2 0xff 0xff 0xff} to
60
 
the device (0x2 is the report number), you must send {0x2 0x2 0xff 0xff
61
 
0xff}. If your device has the optional Interrupt OUT endpoint, this does not
62
 
apply (but really on 2.6.35 only, because 2.6.34 won't use the interrupt
63
 
out endpoint).