~$ mtkbabel -t -p /dev/ttyUSB0 -f mytrack ERROR: Opening serial device /dev/ttyUSB0: Permesso negato at /usr/bin/mtkbabel line 1748.In pratica il datalogger MTK viene connesso su una porta USB (/dev/ttyUSB0) sulla quale, però, l'utente non ha i permessi necessari e, conseguentemente, il programma mtkbabel non riesce a scaricare i dati.
In prima battuta ho risolto così
sudo chmod 666 /dev/ttyUSB0ma la soluzione è temporanea, perchè al successivo riavvio del computer il problema si ripresenta.
Occorre in qualche modo fornire a udev le informazioni necessarie per gestire il dispositivo. Cercando una soluzione ho trovato questo link che mi ha portato ad una soluzione del problema.
Ecco la procedura che ho seguito passo a passo.
Inserire il cavo USB; datalogger in posizione LOG.
Aprire un terminale e digitare:
~$ dmesg | tail
[ 7566.896621] cp210x 6-2:1.0: device disconnected
[ 7678.240077] usb 6-2: new full-speed USB device number 6 using uhci_hcd
[ 7678.398104] usb 6-2: New USB device found, idVendor=10c4, idProduct=ea60
[ 7678.398112] usb 6-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 7678.398117] usb 6-2: Product: CP2102 USB to UART Bridge Controller
[ 7678.398122] usb 6-2: Manufacturer: Silicon Labs
[ 7678.398126] usb 6-2: SerialNumber: 0001
[ 7678.403970] cp210x 6-2:1.0: cp210x converter detected
[ 7678.516154] usb 6-2: reset full-speed USB device number 6 using uhci_hcd
[ 7678.664078] usb 6-2: cp210x converter now attached to ttyUSB0
L'ultima riga riportata dice che il dispositivo è connesso alla porta
ttyUSB0
; con udevadm è possibile avere più notizie:
~$ udevadm info -a -n /dev/ttyUSB0
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/pci0000:00/0000:00:1d.0/usb6/6-2/6-2:1.0/ttyUSB0/tty/ttyUSB0':
KERNEL=="ttyUSB0"
SUBSYSTEM=="tty"
DRIVER==""
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb6/6-2/6-2:1.0/ttyUSB0':
KERNELS=="ttyUSB0"
SUBSYSTEMS=="usb-serial"
DRIVERS=="cp210x"
ATTRS{port_number}=="0"
[... e molto altro!]
I dati che servono possono essere trovati filtrando l'output di udevadm
riportato sopra:
~$ udevadm info -a -n /dev/ttyUSB0 | grep '{serial}' |head -n1
ATTRS{serial}=="0001"
~$ udevadm info -a -n /dev/ttyUSB0 | grep '{idVendor}' |head -n1
ATTRS{idVendor}=="10c4"
~$ udevadm info -a -n /dev/ttyUSB0 | grep '{idProduct}' |head -n1
ATTRS{idProduct}=="ea60"
Si può ora creare il file denominato 72-mtkdatalogger.rules
nella home;
questo file conterrà gli elementi trovati sopra:ATTRS{idVendor}=="10c4",ATTRS{idProduct}=="ea60",ATTRS{serial}=="0001",MODE="0440",GROUP="plugdev"dove
MODE="0440"
significa permesso di lettura per il proprietario e per
il gruppo (vedere, ad esempio, la spiegazione sul comando chmod) e
GROUP="plugdev"
attribuisce il dispositivo ad un gruppo del quale il
proprietario fa parte.Copiare ora il file appena creato nella directory
/etc/udev/rules.d
:~$ sudo cp 72-mtkdatalogger.rules /etc/udev/rules.d/72-mtkdatalogger.rulesscollegare il dispositivo e riavviare udev:
~$ sudo udevadm control --reload-rulesRicollegando il dispositivo MTK (in posizione LOG) alla porta USB, non si dovrebbe più ottenere il messaggio di errore visto all'inizio (almeno... questa è stata la mia esperienza!).