Utilità: elencare le interfacce hardware in uso su Raspbian (o su Linux, più genericamente)

2 minuti di lettura

Talvolta si rende necessaria l’installazione sul proprio computer o mini/micro-computer dotato di sistema operativo Linux di componenti esterni, collegati sulle più disparate interfacce.

Alcuni di questi casi, per esempio, è l’adozione in domotica personale di dongle USB come ConBee , CC2531, Aeotec Z-Stick e molti altri; in realtà le interfacce possibili non sono solo le USB, ma possono essere ben altre: è il caso per esempio di RaspBee, antenna ZigBee da installarsi direttamente sulla piedinatura GPIO di Raspberry Pi.

Quale sia il componente, talvolta capita di dover conoscerne l’assegnazione logica effettuata dal sistema operativo. Perché? Beh, talvolta i software che poi vi si interfacciano hanno bisogno che gli venga indicata tale coordinata, in quanto magari incapaci di rilevarla da sé.

UN SEMPLICE SCRIPT

Per effettuare tale ricerca proponiamo un semplicissimo ma efficace script.
Una volta collegati via SSH al Raspberry o alla macchina Linux in questione, provvedere a creare lo script in questione:

sudo nano ports.sh

e copiare all’interno dell’editor che si aprirà il seguente codice:

#!/bin/bash

for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do
    (
        syspath="${sysdevpath%/dev}"
        devname="$(udevadm info -q name -p $syspath)"
        [[ "$devname" == "bus/"* ]]
        eval "$(udevadm info -q property --export -p $syspath)"
        [[ -z "$ID_SERIAL" ]]
        echo "/dev/$devname - $ID_SERIAL"
    )
done

Poi uscire e salvare (CTRL-X, Y, invio).
Eseguire poi i seguenti comandi:

sudo chmod 777 ports.sh 
./ports.sh

Il secondo comando eseguirà lo script, il quale riporterà un output similare al seguente:

/dev/bus/usb/001/001 - Linux_4.19.81-v7+_dwc_otg_hcd_DWC_OTG_Controller_3f980000.usb
/dev/bus/usb/001/007 - dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2119893
/dev/ttyACM1 - dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2119893
/dev/bus/usb/001/003 - 0424_2514
/dev/bus/usb/001/006 - 0424_7800
/dev/bus/usb/001/002 - 0424_2514
/dev/ttyACM0 - 0658_0200
/dev/bus/usb/001/004 - 0658_0200

Questo elenco riporta tutte le interfacce allocate. La prima parte è l’allocazione logica assegnata dal sistema operativo (eg. /dev/bus/usb/001/001) mentre la seconda l’etichetta descrittiva del device. 

Ovviamente bisognerà autonomamente capire quale sia quella che ci interessa utilizzare.

N.b. Nell’esempio di cui sopra si nota una duplicazione dell’entity “dresden_elektronik_ingenieurtechnik_GmbH_ConBee_II_DE2119893“. Questo perché viene elencato sia l’indirizzo della porta al quale è fisicamente connesso il device USB (/dev/bus/usb/001/007) sia l’indirizzo alias logico (/dev/ttyACM1). Si consiglia di utilizzare sempre quest’ultimo tipo di indirizzamento piuttosto che il primo, e il motivo è semplice: in caso di cambio di porta, l’alias logico non cambia mai (evitando quindi problemi di configurazione sui software che utilizzino i device in questione.

Laddove ci nteressi elencare solo i dispositivi USB, il comando è:

./ports.sh | grep USB
   
Telegram News Channel