ColinPitrat / kalenji-gps-watch-reader

A tool to import data from some Kalenji running watches
GNU General Public License v3.0
30 stars 11 forks source link

Dependency libxml2 not found whereas it is installed #24

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Hi,

I have downloaded kalenji-gps-watch-reader-4.7.tar.gz

when I use the make command to compile it, I get the message "Error: missing 
dependency libxml2"

but when I try to get this package with "sudo apt-get install libxml2", the 
response is "libxml2 est déjà la plus récente version disponible" : it's 
already installed ....

Can you tell me what's wrong ?

Best regards

Xubuntu 13.10

Original issue reported on code.google.com by jnmu...@gmail.com on 29 May 2014 at 11:55

GoogleCodeExporter commented 9 years ago
Hello,

in order to find where the library is on the system, the makefile uses the 
command pkg-config. You may get this message because pkg-config doesn't know 
where to find libxml2.

It is the second dependency that is checked, so I guess the first one, libusb, 
is found and therefore, pkg-config is installed on your system and is working.

Can you please try to run the following commands and give me their output ?

pkg-config --libs libxml-2.0
pkg-config --libs libusb-1.0
pkg-config --libs libcurl

Regards,
Colin

Original comment by colin.pi...@gmail.com on 30 May 2014 at 5:46

GoogleCodeExporter commented 9 years ago

Original comment by colin.pi...@gmail.com on 30 May 2014 at 5:47

GoogleCodeExporter commented 9 years ago
Hello again,

looking on the internet, I found out that on Ubuntu, libxml2 is the package 
containing the library but in order to build a software using it, you need 
another package that will contain headers: libxml2-dev.

Therefore you can try the following:
sudo apt-get install libxml2-dev

Tell me if it works. In this case, I'll enrich the error message for users that 
will encounter the same issue in the future.

Regards,
Colin

Original comment by colin.pi...@gmail.com on 30 May 2014 at 5:53

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Hi Colin,

installing libxml2-dev was the solution !

But the next dependency (libcurl) wasn't checked too. I have tried to install 
it, but no package libcurl exists ... 

So I searched on internet and found a package called libcurl4-gnutls-dev that 
seems to solve the problem : the make command start ....

... and fails later with the message "make: ctags : commande introuvable" (see 
attached file)

Another idea ?

Thanks for your help !

JN

Original comment by jnmu...@gmail.com on 30 May 2014 at 8:39

GoogleCodeExporter commented 9 years ago
Hello,

ctags is a command that is usefull for the developper: it creates a file with 
all symbols (variables, functions ...) and indicates in which file it is 
defined. Then some tools (like vim) can use it to jump to the definition or for 
auto-completion.

If you don't plan to modify the code, you don't need it.

So you have two options:
 - install it (sudo apt-get install ctags should find it)
 - remove it from the Makefile: delete line 17 that contains 'ctags -R .'

And on my side, I have 2 things to do:
 - update the error message for dependency missing to suggest the libxml-dev / libcurl4-gnutls-dev packages names
 - make ctags optional

Regards,
Colin

Original comment by colin.pi...@gmail.com on 30 May 2014 at 9:08

GoogleCodeExporter commented 9 years ago
Hi again,

searching on the internet, I found that ctags is not necessary for the 
compilation. 
(http://en.wikipedia.org/wiki/Ctags). 
So I tried to remove the line -ctags in the makefile and the make ends 
successfully !!

But now I have a problem running ./kalenji_reader : message "No known USB 
device found."
My GPS is a Keymaze 500, conected on the USB port, and waiting for PC connection

Any idea ?

Original comment by jnmu...@gmail.com on 30 May 2014 at 9:14

GoogleCodeExporter commented 9 years ago
Can you do a lsusb ?

Original comment by colin.pi...@gmail.com on 30 May 2014 at 9:17

GoogleCodeExporter commented 9 years ago
Result :
Bus 002 Device 004: ID 13d3:5711 IMC Networks 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 13d3:3315 IMC Networks Bluetooth module
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub, 
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

even if the GPS is plugged, unpluged, On or Off !

Another clue : if the GPS is plugged on the USB port but Off, he does not 
display "Battery charging in progress", as he does when Windows XP runs ...
Missing driver ?

Original comment by jnmu...@gmail.com on 30 May 2014 at 9:32

GoogleCodeExporter commented 9 years ago
Hello,

the fact that the device is not seen on USB port nor charging is very strange. 
Can you try on another USB port ? Is it on the same port that you're using it 
under Windows ?

One more thing, when using the software, use the option -D Keyamze. I just 
noticed that I messed-up the auto-detection for this device.

Regards,
Colin

Original comment by colin.pi...@gmail.com on 30 May 2014 at 9:45

GoogleCodeExporter commented 9 years ago
Great news : the device is now seen

Bus 002 Device 004: ID 13d3:5711 IMC Networks 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 13d3:3315 IMC Networks Bluetooth module
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Maybe a bad contact ?

But it doesn't work : 
jneu@ASUS1015:~/kalenji-gps-watch-reader-read-only$ ./kalenji_reader -D Keymaze
error USB device not found !

Original comment by jnmu...@gmail.com on 30 May 2014 at 9:55

GoogleCodeExporter commented 9 years ago
It's enough for me today

good night

Original comment by jnmu...@gmail.com on 30 May 2014 at 10:16

GoogleCodeExporter commented 9 years ago
You're right, mea culpa !

Even with -D Keymaze it won't work.

You'll need to edit src/device/Keymaze.h and modify getProductId function.

The function exists twice. Remove the one returning 0x230300 and uncomment the 
one returning 0x2303:
            virtual unsigned int getProductId() { return 0x2303; };

I should have done this a long time ago ! 

Regards,
Colin

Original comment by colin.pi...@gmail.com on 30 May 2014 at 10:28

GoogleCodeExporter commented 9 years ago
It's better : now I have the error "error can't access usb device: 
-3LIBUSB_ERROR_ACCESS"

Regards
JN

Original comment by jnmu...@gmail.com on 31 May 2014 at 7:43

GoogleCodeExporter commented 9 years ago
It looks like a permission issue. 
First solution is to run the program as root (for example with sudo). It is not 
a good habit but it will allow you to ensure it works well.

Second solution is to adapt your system configuration so that you have the 
rights with your regular user to access this USB device. The action to be done 
depend on your distribution and on your preference. You may need to modify udev 
configuration to define which groups owns the device. Or you may need to modify 
your user to add the group that owns it by default.

To check which group owns your device, you first need to check which bus / 
device it corresponds to with lsusb. In my case, it's bus 001 and device 006 
(it changes when you disconnect/reconnect the device):
$ lsusb
(...)
Bus 001 Device 006: ID 0483:5740 STMicroelectronics STM32F407
(...)

Then you can see the permissions using ls -l /dev/bus/usb/<bus>/<device>, for 
example for me, it's owned by user root and group uucp and permissions are 
rw-rw-r--:
$ ls -l /dev/bus/usb/001/006
crw-rw-r-- 1 root uucp 189, 5 31 mai   11:23 /dev/bus/usb/001/006

So to be able to send data to the device I need to be either user root or a 
user from group uucp.

On my distribution, archlinux, by default the device was owned by root/root so 
I modified udev configuration to use uucp group that is the one that owns USB 
devices usually.

To do this, I created a file /etc/udev/rules.d/10-keymaze700trail.rules :
$ cat /etc/udev/rules.d/10-keymaze700trail.rules 
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", 
ATTRS{idProduct}=="5740", GROUP="uucp"

In your case, you would need a file of the same kind, but changing idVendor by 
067B and idProduct by 2303. Instead of GROUP="uucp", you can use 
USER="username" or MODE="666". The last one specify the permissions to put on 
the device. The first number is for owning user, the second for owning group 
and the third for the rest of the world. 6 is for r/w, 4 would be read-only. So 
666 allows everybody to read from & write to the device.

Regards,
Colin

Original comment by colin.pi...@gmail.com on 31 May 2014 at 10:06

GoogleCodeExporter commented 9 years ago
Thanks Colin, it works !

It was a permission issue : I ran the program as root with sudo, and it solved 
te problem ! I could import my tracks ...

Next step I will adapt my configuration to give the rights to my regular user, 
but later : today is a good day to record new GPX tacks on my bike !

thank you for your patience and your kindness.

Best regards

JN

ps : sorry for my poor english, but I'm french and a Linux newbie ...

Original comment by jnmu...@gmail.com on 31 May 2014 at 10:35

GoogleCodeExporter commented 9 years ago

Original comment by colin.pi...@gmail.com on 31 May 2014 at 5:42

GoogleCodeExporter commented 9 years ago
Thank you for your feedback.
It allowed to spot and fix a few issues (including the fact that support for 
Keymaze was broken !).

Original comment by colin.pi...@gmail.com on 31 May 2014 at 5:43

GoogleCodeExporter commented 9 years ago

Original comment by colin.pi...@gmail.com on 4 Jun 2014 at 5:30