Cart 0

Testing PCsensor's TEMPerHUM Part 4 - Linux (Software Logging)

Testing PCsensor's “TEMPerHUM”

Phase 4: Testing PCsensor's “TEMPerHUM” in Linux environment

In Phase 3 we talked about using TEMPerHUM temperature & humidity sensor in Linux GUI (graphical user interface)(graphical user interface). Now for those of you who prefer Linux CLI (command line interface), it would be needed to produce (or as it is said in Linux terminology, to make) an appropriate executable file by yourself because Pcsensor company did not want (or planned) to offer any Linux equivalent for TEMPerHUM software for Windows. Solutions that we found on the web were based on various source code packages provided by individual programmers, and it was expected that the end-users would produce the program executables on their own machines. So let us start with that funny game:

Please note that we used again Linux Debian 7.11 (“Wheezy”), as we did in our previous Linux tests. In addition, we compiled the same program packages on different computer hardware (a desktop and a laptop) because of possible variations in operating system capabilities regarding different CPU type & speed, the amount of RAM memory, etc. (However, if it is not specified in a particular paragraph, only a desktop installation is described.)

1. Usb-thermometer (https://github.com/petechap/usb-thermometer)

Desktop installation: Compiling usb-thermometer was successful but as seen bellow useless. According to the instructions, you need to have libusb-dev software package already installed on your computer. My Debian 9.11 desktop installation did not have libusb-dev so I installed it from Debian software repository:

root@localhost:/usr/local/src/usb-thermometer-master# apt-get install libusb-dev 
Reading package lists... Done 
Building dependency tree       
Reading state information... Done 
The following packages were automatically installed and are no longer required: 
Use 'apt-get autoremove' to remove them. 
The following NEW packages will be installed: 
  libusb-dev 
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 
Need to get 40.8 kB of archives. 
After this operation, 239 kB of additional disk space will be used. 
Get:1 http://ftp.us.debian.org/debian/ wheezy/main libusb-dev i386 2:0.1.12-20+nmu1 [40.8 kB] 
Fetched 40.8 kB in 1min 48s (375 B/s)                                          
Selecting previously unselected package libusb-dev. 
(Reading database ... 319934 files and directories currently installed.) 
Unpacking libusb-dev (from .../libusb-dev_2%3a0.1.12-20+nmu1_i386.deb) ... 
Processing triggers for man-db ... 
Setting up libusb-dev (2:0.1.12-20+nmu1) ... 
root@localhost:/usr/local/src/usb-thermometer-master#

After installing libusb-dev, I executed make command:

root@localhost:/usr/local/src/usb-thermometer-master# make 
cc -DUNIT_TEST -o pcsensor pcsensor.c -lusb 
root@localhost:/usr/local/src/usb-thermometer-master# ./pcsensor 
Couldn't find the USB device, Exiting 
root@localhost:/usr/local/src/usb-thermometer-master#

Unfortunately, as shown in the last few lines above, the newly-built pcsensor executable did not return anything but an error message because it obviously expected the attached sensor hardware to be of the 'regular' USB type, which was not the case here (because this version of TEMPerHUM sensor was of so-called HID type, which meant it did not appear as a real USB device in Linux at all).

Laptop installation: Compiling usb-thermometer software package was successful but useless again. Before starting the compiling itself I ensured that my Debian 9.11 laptop installation was equipped with required libusb-dev software package: I used the APTonCD utility (installation disc creator for APT-cached packages) to transfer programs downloaded to the desktop machine (to avoid downloading them again over my slow dial-up access to the Internet).

root@localhost:/usr/local/src/usb-thermometer-master# make 
cc -DUNIT_TEST -o pcsensor pcsensor.c -lusb 
root@localhost:/usr/local/src/usb-thermometer-master# ./pcsensor 
Couldn't find the USB device, Exiting 
root@localhost:/usr/local/src/usb-thermometer-master# 

As shown above, the sensor did not provide any output because the software expected the device to be a 'real' USB device while it was of the HID type.

2. TEMPered (https://github.com/edorfaus/TEMPered)

Desktop and laptop installation: To compile this software there were two prerequisites: HIDAPI library and CMake build system. The author of TEMPered had suggested to build HIDAPI library from sources on GitHub: https://github.com/signal11/hidapi so I did so. (See the next paragraph.)

2.1. HIDAPI (https://github.com/signal11/hidapi)

On its side, the HIDAPI author had suggested that for building his library it was needed to install development packages libudev, libusb and optionally Fox-toolkit (for the test GUI). On Debian/Ubuntu systems these packages can be installed by running:

sudo apt-get install libudev-dev libusb-1.0-0-dev libfox-1.6-dev

(On my Debian 7.11 desktop installation, that step required to download some 4.2 MB of material from Debian repositories, which also included some extra files not listed in the above apt-get install command. On my slow dial-up connectivity it took some 20min 13s. Note: I already had all of the above installed on my Debian 7.11 laptop installation, so the next step was skipped on the laptop.)

root@localhost:/home/misko# apt-get install libudev-dev libusb-1.0-0-dev libfox-1.6-dev 
Reading package lists... Done 
Building dependency tree       
Reading state information... Done 
The following extra packages will be installed: 
  libcups2-dev libfox-1.6-0 libgl1-mesa-dev libglu1-mesa-dev libxcursor-dev 
  libxfixes-dev mesa-common-dev x11proto-fixes-dev 
Suggested packages: 
  libfox-1.6-doc 
The following NEW packages will be installed: 
  libcups2-dev libfox-1.6-0 libfox-1.6-dev libgl1-mesa-dev libglu1-mesa-dev 
  libudev-dev libusb-1.0-0-dev libxcursor-dev libxfixes-dev mesa-common-dev 
  x11proto-fixes-dev 
0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded. 
Need to get 4,226 kB of archives. 
After this operation, 15.7 MB of additional disk space will be used. 
Do you want to continue [Y/n]? y 
Get:1 http://ftp.us.debian.org/debian/ wheezy/main libcups2-dev i386 1.5.3-5+deb7u6 [323 kB] 
Get:2 http://security.debian.org/ wheezy/updates/main libxfixes-dev i386 1:5.0-4+deb7u2 [23.3 kB] 
Get:3 http://ftp.us.debian.org/debian/ wheezy/main libcups2-dev i386 1.5.3-5+deb7u6 [323 kB] 
Get:4 http://ftp.us.debian.org/debian/ wheezy/main libfox-1.6-0 i386 1.6.45-1 [1,195 kB] 
Get:5 http://ftp.us.debian.org/debian/ wheezy/main mesa-common-dev i386 8.0.5-4+deb7u2 [277 kB] 
Get:6 http://ftp.us.debian.org/debian/ wheezy/main libgl1-mesa-dev i386 8.0.5-4+deb7u2 [32.7 kB] 
Get:7 http://ftp.us.debian.org/debian/ wheezy/main libglu1-mesa-dev i386 8.0.5-4+deb7u2 [220 kB] 
Get:8 http://ftp.us.debian.org/debian/ wheezy/main libudev-dev i386 175-7.2 [61.0 kB] 
Get:9 http://ftp.us.debian.org/debian/ wheezy/main libusb-1.0-0-dev i386 2:1.0.11-1 [185 kB] 
Get:10 http://ftp.us.debian.org/debian/ wheezy/main x11proto-fixes-dev all 1:5.0-2 [19.2 kB] 
Get:11 http://ftp.us.debian.org/debian/ wheezy/main libxcursor-dev i386 1:1.1.13-1+deb7u1 [33.8 kB] 
Get:12 http://ftp.us.debian.org/debian/ wheezy/main libfox-1.6-dev i386 1.6.45-1 [1,854 kB] 
Get:13 http://ftp.us.debian.org/debian/ wheezy/main libfox-1.6-dev i386 1.6.45-1 [1,854 kB] 
Get:14 http://ftp.us.debian.org/debian/ wheezy/main libfox-1.6-dev i386 1.6.45-1 [1,854 kB] 
Fetched 2,278 kB in 20min 13s (1,877 B/s)                                      
Selecting previously unselected package libcups2-dev. 
(Reading database ... 306320 files and directories currently installed.) 
Unpacking libcups2-dev (from .../libcups2-dev_1.5.3-5+deb7u6_i386.deb) ... 
Selecting previously unselected package libfox-1.6-0. 
Unpacking libfox-1.6-0 (from .../libfox-1.6-0_1.6.45-1_i386.deb) ... 
Selecting previously unselected package mesa-common-dev. 
Unpacking mesa-common-dev (from .../mesa-common-dev_8.0.5-4+deb7u2_i386.deb) ... 
Selecting previously unselected package libgl1-mesa-dev. 
Unpacking libgl1-mesa-dev (from .../libgl1-mesa-dev_8.0.5-4+deb7u2_i386.deb) ... 
Selecting previously unselected package libglu1-mesa-dev. 
Unpacking libglu1-mesa-dev (from .../libglu1-mesa-dev_8.0.5-4+deb7u2_i386.deb) ... 
Selecting previously unselected package libudev-dev. 
Unpacking libudev-dev (from .../libudev-dev_175-7.2_i386.deb) ... 
Selecting previously unselected package libusb-1.0-0-dev. 
Unpacking libusb-1.0-0-dev (from .../libusb-1.0-0-dev_2%3a1.0.11-1_i386.deb) ... 
Selecting previously unselected package x11proto-fixes-dev. 
Unpacking x11proto-fixes-dev (from .../x11proto-fixes-dev_1%3a5.0-2_all.deb) ... 
Selecting previously unselected package libxfixes-dev. 
Unpacking libxfixes-dev (from .../libxfixes-dev_1%3a5.0-4+deb7u2_i386.deb) ... 
Selecting previously unselected package libxcursor-dev:i386. 
Unpacking libxcursor-dev:i386 (from .../libxcursor-dev_1%3a1.1.13-1+deb7u1_i386.deb) ... 
Selecting previously unselected package libfox-1.6-dev. 
Unpacking libfox-1.6-dev (from .../libfox-1.6-dev_1.6.45-1_i386.deb) ... 
Processing triggers for man-db ... 
Setting up libcups2-dev (1.5.3-5+deb7u6) ... 
Setting up libfox-1.6-0 (1.6.45-1) ... 
Setting up mesa-common-dev (8.0.5-4+deb7u2) ... 
Setting up libgl1-mesa-dev (8.0.5-4+deb7u2) ... 
Setting up libglu1-mesa-dev (8.0.5-4+deb7u2) ... 
Setting up libudev-dev (175-7.2) ... 
Setting up libusb-1.0-0-dev (2:1.0.11-1) ... 
Setting up x11proto-fixes-dev (1:5.0-2) ... 
Setting up libxfixes-dev (1:5.0-4+deb7u2) ... 
Setting up libxcursor-dev:i386 (1:1.1.13-1+deb7u1) ... 
Setting up libfox-1.6-dev (1.6.45-1) ... 
update-alternatives: using /usr/bin/fox-config-1.6 to provide /usr/bin/fox-config (fox-config) in auto mode 
update-alternatives: using /usr/bin/reswrap-1.6 to provide /usr/bin/reswrap (reswrap) in auto mode 
root@localhost:/home/misko# 

2.2. CMAKE

Desktop installation: For installing CMAKE, I used Synaptic Package Manager that besides cmake itself added cmake-data and emacsen-common, alltogether circa 6.2 MB to download. It took some additional 25 min or so to get those packages over my slow dial-up line. (By the way, for that task I could have also used my Debian 7.11 laptop, which I usually use for downloading anything bigger than 1 MB, and much faster by my university's Wi-Fi access, and what I later copy to the slow desktop computer with slow dial-up at home, but that particular day it was very rainy so I did not want to go outside and burden myself by getting wet in the academic campus.)

Laptop installation: I have already had all CMAKE stuff on the laptop. (In fact, I used all three CMAKE packages downloaded to the desktop above as the 'source-files' for the laptop's Synaptic Package Manager, so that I would not need to download them twice.)

The HIDAPI author has suggested that those users who had downloaded a source package from the website manually (i.e. if they did not run git clone), they can can skip the ./bootstrap step and go directly to the ./configure step. However that possibility did not work here properly:

root@localhost:/usr/local/src/hidapi-master# ./configure --enable-testgui --prefix=/usr/local
bash: ./configure: No such file or directory 

… so I performed ./bootstrap at first:

root@localhost:/usr/local/src/hidapi-master# ./bootstrap 
+ autoreconf --install --verbose --force 
autoreconf: Entering directory `.' 
autoreconf: configure.ac: not using Gettext 
autoreconf: running: aclocal --force -I m4 
autoreconf: configure.ac: tracing 
autoreconf: running: libtoolize --copy --force 
libtoolize: putting auxiliary files in `.'. 
libtoolize: copying file `./ltmain.sh' 
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'. 
libtoolize: copying file `m4/libtool.m4' 
libtoolize: copying file `m4/ltoptions.m4' 
libtoolize: copying file `m4/ltsugar.m4' 
libtoolize: copying file `m4/ltversion.m4' 
libtoolize: copying file `m4/lt~obsolete.m4' 
autoreconf: running: /usr/bin/autoconf --force 
autoreconf: running: /usr/bin/autoheader --force 
autoreconf: running: automake --add-missing --copy --force-missing 
configure.ac:25: installing `./ar-lib' 
configure.ac:26: installing `./config.guess' 
configure.ac:26: installing `./config.sub' 
configure.ac:22: installing `./install-sh' 
configure.ac:22: installing `./missing' 
hidtest/Makefile.am: installing `./depcomp' 
autoreconf: Leaving directory `.' 
root@localhost:/usr/local/src/hidapi-master#

… after that I executed ./configure again:

root@localhost:/usr/local/src/hidapi-master# ./configure --enable-testgui --prefix=/usr/local 
checking for a BSD-compatible install... /usr/bin/install -c 
checking whether build environment is sane... yes 
checking for a thread-safe mkdir -p... /bin/mkdir -p 
checking for gawk... no 
checking for mawk... mawk 
checking whether make sets $(MAKE)... yes 
checking for style of include used by make... GNU 
checking for gcc... gcc 
checking whether the C compiler works... yes 
checking for C compiler default output file name... a.out 
checking for suffix of executables... 
checking whether we are cross compiling... no 
checking for suffix of object files... o 
checking whether we are using the GNU C compiler... yes 
checking whether gcc accepts -g... yes 
checking for gcc option to accept ISO C89... none needed 
checking dependency style of gcc... gcc3 
checking for ar... ar 
checking the archiver (ar) interface... ar 
checking build system type... i686-pc-linux-gnu 
checking host system type... i686-pc-linux-gnu 
checking how to print strings... printf 
checking for a sed that does not truncate output... /bin/sed 
checking for grep that handles long lines and -e... /bin/grep 
checking for egrep... /bin/grep -E 
checking for fgrep... /bin/grep -F 
checking for ld used by gcc... /usr/bin/ld 
checking if the linker (/usr/bin/ld) is GNU ld... yes 
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B 
checking the name lister (/usr/bin/nm -B) interface... BSD nm 
checking whether ln -s works... yes 
checking the maximum length of command line arguments... 1572864 
checking whether the shell understands some XSI constructs... yes 
checking whether the shell understands "+="... yes 
checking how to convert i686-pc-linux-gnu file names to i686-pc-linux-gnu format... func_convert_file_noop 
checking how to convert i686-pc-linux-gnu file names to toolchain format... func_convert_file_noop 
checking for /usr/bin/ld option to reload object files... -r 
checking for objdump... objdump 
checking how to recognize dependent libraries... pass_all 
checking for dlltool... no 
checking how to associate runtime and link libraries... printf %s
 
checking for archiver @FILE support... @ 
checking for strip... strip 
checking for ranlib... ranlib 
checking command to parse /usr/bin/nm -B output from gcc object... ok 
checking for sysroot... no 
checking for mt... mt 
checking if mt is a manifest tool... no 
checking how to run the C preprocessor... gcc -E 
checking for ANSI C header files... yes 
checking for sys/types.h... yes 
checking for sys/stat.h... yes 
checking for stdlib.h... yes 
checking for string.h... yes 
checking for memory.h... yes 
checking for strings.h... yes 
checking for inttypes.h... yes 
checking for stdint.h... yes 
checking for unistd.h... yes 
checking for dlfcn.h... yes 
checking for objdir... .libs 
checking if gcc supports -fno-rtti -fno-exceptions... no 
checking for gcc option to produce PIC... -fPIC -DPIC 
checking if gcc PIC flag -fPIC -DPIC works... yes 
checking if gcc static flag -static works... yes 
checking if gcc supports -c -o file.o... yes 
checking if gcc supports -c -o file.o... (cached) yes 
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes 
checking whether -lc should be explicitly linked in... no 
checking dynamic linker characteristics... GNU/Linux ld.so 
checking how to hardcode library paths into programs... immediate 
checking whether stripping libraries is possible... yes 
checking if libtool supports shared libraries... yes 
checking whether to build shared libraries... yes 
checking whether to build static libraries... yes 
checking for gcc... (cached) gcc 
checking whether we are using the GNU C compiler... (cached) yes 
checking whether gcc accepts -g... (cached) yes 
checking for gcc option to accept ISO C89... (cached) none needed 
checking dependency style of gcc... (cached) gcc3 
checking for g++... g++ 
checking whether we are using the GNU C++ compiler... yes 
checking whether g++ accepts -g... yes 
checking dependency style of g++... gcc3 
checking how to run the C++ preprocessor... g++ -E 
checking for ld used by g++... /usr/bin/ld 
checking if the linker (/usr/bin/ld) is GNU ld... yes 
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes 
checking for g++ option to produce PIC... -fPIC -DPIC 
checking if g++ PIC flag -fPIC -DPIC works... yes 
checking if g++ static flag -static works... yes 
checking if g++ supports -c -o file.o... yes 
checking if g++ supports -c -o file.o... (cached) yes 
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes 
checking dynamic linker characteristics... (cached) GNU/Linux ld.so 
checking how to hardcode library paths into programs... immediate 
checking for gcc... gcc 
checking whether we are using the GNU Objective C compiler... no 
checking whether gcc accepts -g... no 
checking dependency style of gcc... gcc3 
checking for pkg-config... /usr/bin/pkg-config 
checking pkg-config is at least version 0.9.0... yes 
checking whether make supports nested variables... yes 
checking operating system... i686-pc-linux-gnu 
 (Linux back-end) 
checking for libudev... yes 
checking for clock_gettime in -lrt... yes 
checking for libusb... yes 
checking for the pthreads library -lpthreads... no 
checking whether pthreads work without any flags... no 
checking whether pthreads work with -Kthread... no 
checking whether pthreads work with -kthread... no 
checking for the pthreads library -llthread... no 
checking whether pthreads work with -pthread... yes 
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE 
checking if more special flags are required for pthreads... no 
checking for PTHREAD_PRIO_INHERIT... no 
checking for fox... no 
checking for fox... yes 
configure: creating ./config.status 
config.status: creating pc/hidapi-hidraw.pc 
config.status: creating pc/hidapi-libusb.pc 
config.status: creating Makefile 
config.status: creating hidtest/Makefile 
config.status: creating libusb/Makefile 
config.status: creating linux/Makefile 
config.status: creating mac/Makefile 
config.status: creating testgui/Makefile 
config.status: creating windows/Makefile 
config.status: creating config.h 
config.status: executing depfiles commands 
config.status: executing libtool commands 
root@localhost:/usr/local/src/hidapi-master# 

… there were no complaints so far, so I executed make:

root@localhost:/usr/local/src/hidapi-master# make 
make  all-recursive 
make[1]: Entering directory `/usr/local/src/hidapi-master' 
Making all in linux 
make[2]: Entering directory `/usr/local/src/hidapi-master/linux' 
  CC     hid.lo 
  CCLD   libhidapi-hidraw.la 
make[2]: Leaving directory `/usr/local/src/hidapi-master/linux' 
Making all in libusb 
make[2]: Entering directory `/usr/local/src/hidapi-master/libusb' 
  CC     hid.lo 
  CCLD   libhidapi-libusb.la 
make[2]: Leaving directory `/usr/local/src/hidapi-master/libusb' 
Making all in hidtest 
make[2]: Entering directory `/usr/local/src/hidapi-master/hidtest' 
  CXX    hidtest.o 
  CXXLD  hidtest-libusb 
  CXXLD  hidtest-hidraw 
make[2]: Leaving directory `/usr/local/src/hidapi-master/hidtest' 
Making all in testgui 
make[2]: Entering directory `/usr/local/src/hidapi-master/testgui' 
  CXX    test.o 
  CXXLD  hidapi-hidraw-testgui 
  CXXLD  hidapi-libusb-testgui 
make[2]: Leaving directory `/usr/local/src/hidapi-master/testgui' 
make[2]: Entering directory `/usr/local/src/hidapi-master' 
make[2]: Nothing to be done for `all-am'. 
make[2]: Leaving directory `/usr/local/src/hidapi-master' 
make[1]: Leaving directory `/usr/local/src/hidapi-master' 
root@localhost:/usr/local/src/hidapi-master# 

… no complaints there too, so I went to perform make install:

root@localhost:/usr/local/src/hidapi-master# make install 
Making install in linux 
make[1]: Entering directory `/usr/local/src/hidapi-master/linux' 
make[2]: Entering directory `/usr/local/src/hidapi-master/linux' 
 /bin/mkdir -p '/usr/local/lib' 
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libhidapi-hidraw.la '/usr/local/lib' 
libtool: install: /usr/bin/install -c .libs/libhidapi-hidraw.so.0.0.0 /usr/local/lib/libhidapi-hidraw.so.0.0.0 
libtool: install: (cd /usr/local/lib && { ln -s -f libhidapi-hidraw.so.0.0.0 libhidapi-hidraw.so.0 || { rm -f libhidapi-hidraw.so.0 && ln -s libhidapi-hidraw.so.0.0.0 libhidapi-hidraw.so.0; }; }) 
libtool: install: (cd /usr/local/lib && { ln -s -f libhidapi-hidraw.so.0.0.0 libhidapi-hidraw.so || { rm -f libhidapi-hidraw.so && ln -s libhidapi-hidraw.so.0.0.0 libhidapi-hidraw.so; }; }) 
libtool: install: /usr/bin/install -c .libs/libhidapi-hidraw.lai /usr/local/lib/libhidapi-hidraw.la 
libtool: install: /usr/bin/install -c .libs/libhidapi-hidraw.a /usr/local/lib/libhidapi-hidraw.a 
libtool: install: chmod 644 /usr/local/lib/libhidapi-hidraw.a 
libtool: install: ranlib /usr/local/lib/libhidapi-hidraw.a 
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib 
---------------------------------------------------------------------- 
Libraries have been installed in: 
   /usr/local/lib 

If you ever happen to want to link against installed libraries 
in a given directory, LIBDIR, you must either use libtool, and 
specify the full pathname of the library, or use the `-LLIBDIR' 
flag during linking and do at least one of the following: 
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable 
     during execution 
   - add LIBDIR to the `LD_RUN_PATH' environment variable 
     during linking 
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag 
   - have your system administrator add LIBDIR to `/etc/ld.so.conf' 

See any operating system documentation about shared libraries for 
more information, such as the ld(1) and ld.so(8) manual pages. 
---------------------------------------------------------------------- 
 /bin/mkdir -p '/usr/local/include/hidapi' 
 /usr/bin/install -c -m 644 ../hidapi/hidapi.h '/usr/local/include/hidapi' 
make[2]: Leaving directory `/usr/local/src/hidapi-master/linux' 
make[1]: Leaving directory `/usr/local/src/hidapi-master/linux' 
Making install in libusb 
make[1]: Entering directory `/usr/local/src/hidapi-master/libusb' 
make[2]: Entering directory `/usr/local/src/hidapi-master/libusb' 
 /bin/mkdir -p '/usr/local/lib' 
 /bin/bash ../libtool   --mode=install /usr/bin/install -c   libhidapi-libusb.la '/usr/local/lib' 
libtool: install: /usr/bin/install -c .libs/libhidapi-libusb.so.0.0.0 /usr/local/lib/libhidapi-libusb.so.0.0.0 
libtool: install: (cd /usr/local/lib && { ln -s -f libhidapi-libusb.so.0.0.0 libhidapi-libusb.so.0 || { rm -f libhidapi-libusb.so.0 && ln -s libhidapi-libusb.so.0.0.0 libhidapi-libusb.so.0; }; }) 
libtool: install: (cd /usr/local/lib && { ln -s -f libhidapi-libusb.so.0.0.0 libhidapi-libusb.so || { rm -f libhidapi-libusb.so && ln -s libhidapi-libusb.so.0.0.0 libhidapi-libusb.so; }; }) 
libtool: install: /usr/bin/install -c .libs/libhidapi-libusb.lai /usr/local/lib/libhidapi-libusb.la 
libtool: install: /usr/bin/install -c .libs/libhidapi-libusb.a /usr/local/lib/libhidapi-libusb.a 
libtool: install: chmod 644 /usr/local/lib/libhidapi-libusb.a 
libtool: install: ranlib /usr/local/lib/libhidapi-libusb.a 
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib 
---------------------------------------------------------------------- 
Libraries have been installed in: 
   /usr/local/lib 

If you ever happen to want to link against installed libraries 
in a given directory, LIBDIR, you must either use libtool, and 
specify the full pathname of the library, or use the `-LLIBDIR' 
flag during linking and do at least one of the following: 
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable 
     during execution 
   - add LIBDIR to the `LD_RUN_PATH' environment variable 
     during linking 
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag 
   - have your system administrator add LIBDIR to `/etc/ld.so.conf' 

See any operating system documentation about shared libraries for 
more information, such as the ld(1) and ld.so(8) manual pages. 
---------------------------------------------------------------------- 
 /bin/mkdir -p '/usr/local/include/hidapi' 
 /usr/bin/install -c -m 644 ../hidapi/hidapi.h '/usr/local/include/hidapi' 
make[2]: Leaving directory `/usr/local/src/hidapi-master/libusb' 
make[1]: Leaving directory `/usr/local/src/hidapi-master/libusb' 
Making install in hidtest 
make[1]: Entering directory `/usr/local/src/hidapi-master/hidtest' 
make[2]: Entering directory `/usr/local/src/hidapi-master/hidtest' 
make[2]: Nothing to be done for `install-exec-am'. 
make[2]: Nothing to be done for `install-data-am'. 
make[2]: Leaving directory `/usr/local/src/hidapi-master/hidtest' 
make[1]: Leaving directory `/usr/local/src/hidapi-master/hidtest' 
Making install in testgui 
make[1]: Entering directory `/usr/local/src/hidapi-master/testgui' 
make[2]: Entering directory `/usr/local/src/hidapi-master/testgui' 
 /bin/mkdir -p '/usr/local/bin' 
  /bin/bash ../libtool   --mode=install /usr/bin/install -c hidapi-hidraw-testgui hidapi-libusb-testgui '/usr/local/bin' 
libtool: install: /usr/bin/install -c .libs/hidapi-hidraw-testgui /usr/local/bin/hidapi-hidraw-testgui 
libtool: install: /usr/bin/install -c .libs/hidapi-libusb-testgui /usr/local/bin/hidapi-libusb-testgui 
make[2]: Nothing to be done for `install-data-am'. 
make[2]: Leaving directory `/usr/local/src/hidapi-master/testgui' 
make[1]: Leaving directory `/usr/local/src/hidapi-master/testgui' 
make[1]: Entering directory `/usr/local/src/hidapi-master' 
make[2]: Entering directory `/usr/local/src/hidapi-master' 
make[2]: Nothing to be done for `install-exec-am'. 
 /bin/mkdir -p '/usr/local/share/doc/hidapi' 
 /usr/bin/install -c -m 644 README.txt AUTHORS.txt LICENSE-bsd.txt LICENSE-gpl3.txt LICENSE-orig.txt LICENSE.txt '/usr/local/share/doc/hidapi' 
 /bin/mkdir -p '/usr/local/lib/pkgconfig' 
 /usr/bin/install -c -m 644 pc/hidapi-hidraw.pc pc/hidapi-libusb.pc '/usr/local/lib/pkgconfig' 
make[2]: Leaving directory `/usr/local/src/hidapi-master' 
make[1]: Leaving directory `/usr/local/src/hidapi-master' 
root@localhost:/usr/local/src/hidapi-master# 

… no complaints there too ...

root@localhost:/usr/local/src/hidapi-master# cd linux 
root@localhost:/usr/local/src/hidapi-master/linux# make -f Makefile-manual 
g++ -Wall -g hid.o ../hidtest/hidtest.o `pkg-config libudev --libs` -lrt -o hidtest-hidraw 
cc -Wall -g `pkg-config libudev --libs` -lrt -shared -fpic -Wl,-soname,libhidapi-hidraw.so.0 hid.o -o libhidapi-hidraw.so 
root@localhost:/usr/local/src/hidapi-master/linux# 

(The above two actions produced hidtest-hidraw executable.)

root@localhost:/usr/local/src/hidapi-master/linux# cd .. 
root@localhost:/usr/local/src/hidapi-master# cd testgui 
root@localhost:/usr/local/src/hidapi-master/testgui# make -f Makefile-manual 
g++ -Wall -g ../libusb/hid.o test.o -ludev -lrt -lpthread `fox-config --libs` `pkg-config libusb-1.0 --libs` -o testgui 
root@localhost:/usr/local/src/hidapi-master/testgui# 

(The above three steps produced testgui executable.)

… now I wanted to perform some tests with HIDAPI software:

root@localhost:/usr/local/src/hidapi-master/hidtest# ./hidtest-hidraw 
Device Found 
  type: 0c45 7402 
  path: /dev/hidraw0 
  serial_number: 
  Manufacturer: RDing 
  Product:      TEMPer1F_H1_V1.4 
  Release:      1 
  Interface:    0 

Device Found 
  type: 0c45 7402 
  path: /dev/hidraw1 
  serial_number: 
  Manufacturer: RDing 
  Product:      TEMPer1F_H1_V1.4 
  Release:      1 
  Interface:    1 

unable to open device 
root@localhost:/usr/local/src/hidapi-master/hidtest# ./hidtest-libusb 
Device Found 
  type: 0c45 7402 
  path: 0003:002e:00 
  serial_number: (null) 
  Manufacturer: RDing 
  Product:      TEMPer1F_H1_V1.4 
  Release:      1 
  Interface:    0 

Device Found 
  type: 0c45 7402 
  path: 0003:002e:01 
  serial_number: (null) 
  Manufacturer: RDing 
  Product:      TEMPer1F_H1_V1.4 
  Release:      1 
  Interface:    1 

unable to open device 
root@localhost:/usr/local/src/hidapi-master/hidtest# 

… then I tried the following (changed the directory):

root@localhost:/usr/local/src/hidapi-master/hidtest# cd .. 
root@localhost:/usr/local/src/hidapi-master# cd linux 
root@localhost:/usr/local/src/hidapi-master/linux# ./hidtest-hidraw 
Device Found 
  type: 0c45 7402 
  path: /dev/hidraw0 
  serial_number: 
  Manufacturer: RDing 
  Product:      TEMPer1F_H1_V1.4 
  Release:      1 
  Interface:    0 

Device Found 
  type: 0c45 7402 
  path: /dev/hidraw1 
  serial_number: 
  Manufacturer: RDing 
  Product:      TEMPer1F_H1_V1.4 
  Release:      1 
  Interface:    1 

unable to open device 
root@localhost:/usr/local/src/hidapi-master/linux# 

… then I tried this (changed the directory again):

root@localhost:/usr/local/src/hidapi-master/linux# cd .. 
root@localhost:/usr/local/src/hidapi-master# cd testgui 
root@localhost:/usr/local/src/hidapi-master/testgui# ./testgui 

… and it finally opened this window:

… then I tried connection to the first device listed (although both seemed the same):

… then I tried to “Send Output Report” (did not return anything back), following by “Send Feature Report” (it just closed that window prematurely), then re-opened that GUI again, following by “Get Feature Report” that returned some bytes see bellow:

… that was all with that GUI. (Connecting to the second device listed was possible but sending/receiving reports failed with some unclear error messages.)

Well, I got back to work with TEMPered package again:

root@localhost:/usr/local/src/hidapi-master/testgui# cd /usr/local/src/TEMPered-master 
root@localhost:/usr/local/src/TEMPered-master# 

root@localhost:/usr/local/src/TEMPered-master# make 

This 


Older Post Newer Post

Related Posts

The Raspberry Pi Tutorial - A Beginner’s Guide
The Raspberry Pi Tutorial - A Beginner’s Guide
The Raspberry Pi has a number of ports which you will use to control the Raspberry Pi, and it can use to control othe...
Read More
Ryanteck Traffic HAT - Summary
Ryanteck Traffic HAT - Summary
The TrafficHAT is an Add-on board for the Raspberry Pi designed to help teach Basic Programming & Soldering. The ...
Read More
Waveshare 10.1
Waveshare 10.1" Screen Assembly Guide
Waveshare 10.1" Screen Assembly Guide In the waveshare kit you'll received the following items: Screen (pre-assemble...
Read More