community italiana di domotica personale
 
Utilità: elencare le interfacce hardware in uso su Linux Debian, Raspberry Pi OS (o altre distro Linux)

Utilità: elencare le interfacce hardware in uso su Linux Debian, Raspberry Pi OS (o altre distro Linux)

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 della voce “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 interessi elencare solo i dispositivi USB, il comando è:

./ports.sh | grep USB
Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa.