La Xerox WorkCentre 3225 è una macchina multifunzione A4: scanner, fax, stampante laser B/N, dotata di connettività di rete cablata 802.3 10/100Mbps e Wi-Fi 802.11b/g/n (sia modalità client che direct/AP).
Il problema che si è presentato era il seguente: anche dopo aver installato i driver Linux, scaricabili dal sito Xerox, lo scanner non veniva riconosciuto:
$ scanimage -L
No scanners were identified. If you were expecting something different, check that the scanner is plugged in, turned on and detected by the sane-find-scanner tool (if appropriate). Please read the documentation which came with this software (README, FAQ, manpages).
Una rapida occhiata su Google, prospettava una delle possibili soluzioni che ,nel mio caso, ha funzionato.
Da terminale eseguire:
$ sudo cp /usr/lib64/sane/libsane-smfp* /usr/lib/x86_64-linux-gnu/sane
N.B. se l'OS è 32-bit il path dovrebbe invece essere /usr/lib/sane/libsane-smfp
quindi lanciare di nuovo il comando per visualizzare tutti gli scanner disponibili:
$ scanimage -L
L'output ora elenca correttamente lo scanner rilevato:
device `smfp:net;192.168.1.2' is a XEROX WorkCentre 3225 on 192.168.1.2 Scanner
PrettyPrint
giovedì 5 marzo 2020
Debian / MX Linux XFCE : nomi icone non abbreviati e icone meno distanziate
Aggiornamento: 11-Agosto-2020
La prima cosa che avevo notato del desktop XFCE di MX Linux era l'abbreviazione dei nomi delle icone sul desktop.
Questa impostazione mi dava alquanto fastidio, ma fortunatamente
esiste un'apposita voce di MX Tweaks (aka RIfiniture) che consente di disabilitare l'accorciamento dei nomi lunghi:
Purtroppo, successivamente a questa modifica, i nomi non vengono più abbreviati ma si presenta un nuovo problema "cosmetico"...e cioè l'eccessivo
padding/spacing fra icone, per il quale, invece, non è previsto nessun
tweak user-friendly
Dopo una rapida consultazione di Google, scopro che il problema può essere aggirato cambiando alcune proprieta di un CSS della configurazione GTK.
Dal terminale:
$ nano ~/.config/gtk-3.0/gtk.css
Modificare il file aggiustando i valori di cellpadding/spacing a 0
e reducendo la proporzione della larghezza a un valore compreso fra 2.2 (distanza minore) e 2,75 (distanza maggiore)
da trovare sperimentalmente; nel mio caso, ho trovato il valore 3.0
/*set custom gtk3/css code below */
XfdesktopIconView.view {
-XfdesktopIconView-label-alpha:0;
-XfdesktopIconView-selected-label-alpha:0;
-XfdesktopIconView-ellipsize-icon-labels:0;
-XfdesktopIconView-tooltip-size:128;
-XfdesktopIconView-cell-spacing:0;
-XfdesktopIconView-cell-padding:0;
-XfdesktopIconView-cell-text-width-proportion: 3.0;
}
N.B. occorre uscire da Xfce affinché le modifiche apportate abbiano effetto
Si consiglia quindi di riordinare le icone sul desktop. Ecco il risultato finale:
martedì 25 febbraio 2020
Linux (Debian) : estrarre file icona da un .exe
Dopo aver installato su Debian, con Wine, il software windows Electronics Workbench 5, (un simulatore CAE "abandoned", era Windows 3.1....ma ancora validissimo per scopi educativi)....mi serviva un'icona da associare all'avviatore sul desktop XFCE.
L'icona può essere estratta dallo stesso file eseguibile windows (nel mio caso, WEWB32.EXE).
Procedimento
Da una shell di root (o se preferite, sudo) eseguire:
#apt install icoutils
portarsi nella cartella in cui è contenuto il file exe del programma, es:
$ cd /home/francesco/.wine/drive_c/EWB512
quindi lanciare il comando:
$ wrestool -x --output=. -t14 ./WEWB32.EXE
l'elenco dei soli file con estensione ico ci darà il nome dei file estratti.
$ ls *.ico
Nel mio caso il file .ico è:
WEWB32.EXE_14_1_0.ico
Dalla proprietà dell'avviatore, selezionato il suddetto file .ICO come icona ecco il risultato....
domenica 19 gennaio 2020
Ubuntu/Debian creare facilmente un hotspot sul proprio laptop/Raspberry
Dopo aver installato Ubuntu sul mio netbook 10" la prima cosa che mi è venuta in mente è stata quella di metterci su un hotspot "free access" per condividere file di lavoro, durante presentazioni Una sorta di "pirate box"....
Il procedimento va bene, ovviamente, per ogni distro Ubuntu based/like: parliamo dunque di Raspbian oppure di Debian, in quest'ultimo caso, ovviamente, usando "su -c" al posto di sudo
Il pacchetto che trasforma un computer con scheda di rete wireless in hotspot è "hostapd"; ma chi lo rende facile da configurare è "create_ap". Di seguito i passi da seguire:
1) INSTALLAZIONE HOSTAPD
Occorre git (nel caso non fosse già installato) e dnsmasq che farà da demone DHCP per i client che si collegheranno all'hot-spot:
sudo apt-get install git hostapd dnsmasq
2) INSTALLAZIONE CREATE_AP
cd
git clone https://github.com/oblique/create_ap
cd create_ap
sudo make install
3) TEST DEL L'INSTALLLAZIONE
Occorrerrà innanzitutto individuare il nome dell'interfaccia di rete wireless sulla quale verrà "acceso" l'hotspot. Il comando da lanciare è:
Molto probabilmente l''interfaccia di rete wireless ha nome; wlan0.
Con il comando:
sudo create_ap wlan0 MYHOTSPOT
"accendiamo " su wlan0 un hotspot aperto con SSID "MYHOTSPOT", senza password
Invece con il comando:
sudo create_ap wlan0 MYHOTSPOT 12345678
"accendiamo" un hotspot con SSID 'MYHOTSPOT' e password '12345678' , crittografia WPA2, sull'interfaccia wlan0.
Per spegnerlo basterà un Ctrl-C
Per fare in modo che create_ap si avvii in automatico all'avvio (sconsigliato ovviamente nel caso del laptop, ma consigliato nel caso il Raspberry faccia solo questo) e configurarlo come servizio:
sudo systemctl enable create_ap.service
in questo caso vari parametri vanno editati nel file di configurazione /etc/create_ap.conf
sudo nano /etc/create_ap.conf
in cui i parametri principali da modificare sono:
CHANNEL=6
WIFI_IFACE=wlan0
INTERNET_IFACE=eth0
SSID=MYHOTSPOT
PASSPHRASE=12345678
quindi è possibile modificare anche il canale wireless al fine di evitare interferenze con altre emissioni vicine. La INTERNET_IFACE invece è il nome dell'interfaccia collegata a internet; nel caso di Raspberry potrebbe essere la ethernet eth0 collegata al modem router casalingo.
CREDITI
https://github.com/oblique/create_ap
Il procedimento va bene, ovviamente, per ogni distro Ubuntu based/like: parliamo dunque di Raspbian oppure di Debian, in quest'ultimo caso, ovviamente, usando "su -c" al posto di sudo
Il pacchetto che trasforma un computer con scheda di rete wireless in hotspot è "hostapd"; ma chi lo rende facile da configurare è "create_ap". Di seguito i passi da seguire:
1) INSTALLAZIONE HOSTAPD
Occorre git (nel caso non fosse già installato) e dnsmasq che farà da demone DHCP per i client che si collegheranno all'hot-spot:
sudo apt-get install git hostapd dnsmasq
2) INSTALLAZIONE CREATE_AP
cd
git clone https://github.com/oblique/create_ap
cd create_ap
sudo make install
3) TEST DEL L'INSTALLLAZIONE
Occorrerrà innanzitutto individuare il nome dell'interfaccia di rete wireless sulla quale verrà "acceso" l'hotspot. Il comando da lanciare è:
Molto probabilmente l''interfaccia di rete wireless ha nome; wlan0.
Con il comando:
sudo create_ap wlan0 MYHOTSPOT
"accendiamo " su wlan0 un hotspot aperto con SSID "MYHOTSPOT", senza password
Invece con il comando:
sudo create_ap wlan0 MYHOTSPOT 12345678
"accendiamo" un hotspot con SSID 'MYHOTSPOT' e password '12345678' , crittografia WPA2, sull'interfaccia wlan0.
Per spegnerlo basterà un Ctrl-C
Per fare in modo che create_ap si avvii in automatico all'avvio (sconsigliato ovviamente nel caso del laptop, ma consigliato nel caso il Raspberry faccia solo questo) e configurarlo come servizio:
sudo systemctl enable create_ap.service
in questo caso vari parametri vanno editati nel file di configurazione /etc/create_ap.conf
sudo nano /etc/create_ap.conf
in cui i parametri principali da modificare sono:
CHANNEL=6
WIFI_IFACE=wlan0
INTERNET_IFACE=eth0
SSID=MYHOTSPOT
PASSPHRASE=12345678
quindi è possibile modificare anche il canale wireless al fine di evitare interferenze con altre emissioni vicine. La INTERNET_IFACE invece è il nome dell'interfaccia collegata a internet; nel caso di Raspberry potrebbe essere la ethernet eth0 collegata al modem router casalingo.
CREDITI
https://github.com/oblique/create_ap
Installare Nodered e johnny-five su Ubuntu/Raspbian
1) INSTALLAZIONE DI NODE.JS
Dalla pagina di installazione di Nodered si legge:
We recommend the use of node.js LTS 6.x or 6.x . Node-RED no longer supports node.js 0.10.x or 0.12.x.
Node.js 7.x is under active development and is not recommended for a stable base
Raspbian, così come Ubuntu, installano di default, dal proprio repository Node.js 0,1, che quindi non va bene per Nodered.
Occorre installare una versione stabile (attualmente la 6) mentre la 7 è attualmente versione di sviluppo
Per Raspberry Pi V1 l'unica versione installabile è la 4 (l'unica supportata dalla CPU). Per hardware successivi ,così come un PC con Ubuntu, invece, dovrebbe andare bene la 7:
#STEP 1
Rimuovere ogni eventuale installazione precedente di nodejs e npm (il package manager di javascript):
sudo apt-get purge nodejs npm
#STEP 2
Per il Raspberry Pi, l'installazione cambia a seconda della versione ossia della CPU se ARMv61 per il Pi1, oppure ARMv7 e v8, per le versioni 2 e 3. Per conoscere la CPU del proprio Pi, lanciare il seguente comando:
cat /proc/cpuinfo | grep model
Nel caso del Rpi 1, si avrà:
model name : ARMv6-compatible processor rev 7 (v6l)
* Raspberry Pi 1 (ARM v61)
Scaricare la versione LTS (attualmente 8.9.3)
wget https://nodejs.org/dist/latest-v8.x/node-v8.9.3-linux-armv6l.tar.gz
cd
tar zxvf node-v8.9.3-linux-armv6l.tar.xz
Copiare, quindi, la directory in /usr/local:
cd node-v6.10.2-linux-armv6l
sudo cp -R bin/ /usr/local/
sudo cp -R include /usr/local/
sudo cp -R lib/ /usr/local/
sudo cp -R share/ /usr/local
* Raspberry Pi2(ARM v7), Pi3 (ARM v8), PC, laptop:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
Installare nodejs (aggiungere curl nel caso che questo non sia già installato):.
sudo apt install -y curl nodejs
#STEP 3
Per tutti i casi, verificare le versioni installate con:
node -v
npm -v
npm -v
2) INSTALLAZIONE DI NODERED
Completata l'installazione di Node.js si passa all'installazione di Nodered tramite npm:
sudo npm install -g --unsafe-perm node-red
N.B. L'installazione potrebbe durare diversi minuti. Non chiudere la finestra del terminale fino al termine della procedura (barra al 100%)
Terminata l'installazione è così possibile eseguire node--red:
node-red
Con un qualsiasi browser aprendo l'indirizzo:
http://RPI_IP:1880
3) AGGIUNTA DI JOHNNY-FIVE A NODE-RED
cd .node-red
sudo npm i node-red-contrib-gpio
CREDITI
https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions
http://raspberrypi.stackexchange.com/questions/48303/install-nodejs-for-all-raspberry-pi
http://nodered.org/docs/getting-started/installation
http://raspberrypi.stackexchange.com/questions/48303/install-nodejs-for-all-raspberry-pi
http://nodered.org/docs/getting-started/installation
mercoledì 3 luglio 2013
Raspberry Pi - Installare WiringPi e compilare il primo programma
Prima di generare il file eseguibile occorre installare, nel caso non sia già installata, la libreria WiringPi
Lanciare in successione da shell i seguenti comandi:
Compilazione e linking possono essere fatte contestualmente specificando con
L'accesso alla funzione
E' sempre possibile eseguire il programma in background, ignorando però i messaggi di errore e sulla console (come eventuali
L'esecuzione del programma può essere terminata dal terminale (mediante il classico
L'installazione della libreria wiringPi
Lanciare in successione da shell i seguenti comandi:
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git://git.drogon.net/wiringPiQuindi:
cd wiringPi git pull originInfine, senza spostarsi dalla directory
wiringPi
:
./build
Compilazione e collegamento
Compilazione e linking possono essere fatte contestualmente specificando con
-l
la libreria wiringPi
(prestare attenzione alle maiuscole/minuscole).
pi@raspberrypi ~ $ gcc -o blink blink.c -lwiringPi
Esecuzione e interruzione del programma
L'accesso alla funzione
wiringPiSetup()
richiede privilegi di root. Quindi qualsiasi programma che sia stato scritto usando wiringPiSetup()
deve essere lanciato mediante sudo
:
pi@raspberrypi ~ $ sudo ./blink
E' sempre possibile eseguire il programma in background, ignorando però i messaggi di errore e sulla console (come eventuali
printf()
presenti nel programma.
pi@raspberrypi ~ $ sudo ./blink &> /dev/null
L'esecuzione del programma può essere terminata dal terminale (mediante il classico
Ctrl-C
) o ancora, se il relativo processo è in background, con sudo killall blink
< Raspberry Pi - Il primo programma, far lampeggiare un LED
Risorse e strumenti usati: [0] WiringPi, Download and Install [1] Blink
martedì 2 luglio 2013
Raspberry Pi - Il primo programma, far lampeggiare un LED
Far lampeggiare un LED è il primo programma che si affronta per conoscere meglio un computer interfacciato al mondo esterno
L'anodo del LED è collegato al pin fisico 11 del GPIO, mediante un resistore di limitazione R1 da 330 Ω ; il catodo è collegato alla massa del Raspberry (pin fisico 6). Il LED si accende quando si manda sul pin un bit 1 (corrispondente a circa 3,3V) e si spegne inviando un bit zero (circa 0V).
Per il calcolo della resistenza R1 di limitazione, si è assunta una tensione diretta del LED rosso pari a 1,8V. Per la corrente di uscita di un pin GPIO è bene mantenersi fra i 3mA e i 5mA; con 5mA il LED ha una luminosità sufficiente. Dunque, la resistenza di limitazione sarà facilmente calcolabile come:
Il programma in linguaggio C, usa le estensioni wiringPi, che consentono di facilitare le comuni operazioni di lettura, scrittura sul GPIO di Raspberry Pi
Analizziamo il programma.
Per i pin si può seguire il seguente schema di commento:
Esse vanno a inizializzare la libreria
L'istruzione
La chiamata alla funzione
La funzione
La fase successiva sarà quella di generazione dell'eseguibile e della sua esecuzione ovviamente dopo aver installato la libreria WiringPi.
L'hardware
L'anodo del LED è collegato al pin fisico 11 del GPIO, mediante un resistore di limitazione R1 da 330 Ω ; il catodo è collegato alla massa del Raspberry (pin fisico 6). Il LED si accende quando si manda sul pin un bit 1 (corrispondente a circa 3,3V) e si spegne inviando un bit zero (circa 0V).
Per il calcolo della resistenza R1 di limitazione, si è assunta una tensione diretta del LED rosso pari a 1,8V. Per la corrente di uscita di un pin GPIO è bene mantenersi fra i 3mA e i 5mA; con 5mA il LED ha una luminosità sufficiente. Dunque, la resistenza di limitazione sarà facilmente calcolabile come:
Il software
Il programma in linguaggio C, usa le estensioni wiringPi, che consentono di facilitare le comuni operazioni di lettura, scrittura sul GPIO di Raspberry Pi
BLINK.C
#include <wiringPi.h> #define LED_PIN 0 // LED rosso (0 WiringPI, GPIO17, pin 11) int main (void) { // --- Init wiringPiSetup() pinMode (LED_PIN, OUTPUT); // configura LED_PIN come pin di uscita // --- Loop while (1) { digitalWrite (LED_PIN, HIGH) ; // Accendi LED delay (500) ; // Tienilo acceso per 500ms digitalWrite (LED_PIN, LOW) ; // Spegni LED delay (500) ; // Tienilo spento per 500ms } return 0 ; }
Analizziamo il programma.
#include <wiringPi.h>Ogni programma che usi
wiringPi
ovviamente dovrà prevedere la direttiva di inclusione del file header.
#define LED_PIN 0
#define LED_PIN 0
è una direttiva al processore. Tutte le successive occorrenze di LED_PIN
verranno sostituite con il numero 0
.
Per i pin si può seguire il seguente schema di commento:
// Descrizione del pin (numero_pin WiringPI, GPIOxx, numero_pin_fisico)ossia
// Led rosso 1 (0 WiringPI, GPIO17, pin 11)In questo modo, di ciascun pin si saprà sempre la numerazione secondo i tre modi: wiringPi, GPIO e pin fisico, agevolando così la fase di montaggio e di debug.
// --- Init if (wiringPiSetup() == -1) exit(1); pinMode (LED_PIN, OUTPUT); // configura LED_PIN di uscitaIl primo gruppo di istruzioni che troviamo nella
main()
sono quelle raggruppate dal commento Init
.
Esse vanno a inizializzare la libreria
WiringPi
e a configurare i pin utilizzati, se di ingresso o uscita mediante la funzione pinMode()
.
L'istruzione
pinMode (LED_PIN, OUTPUT);
consente di configurare il nostro LED_PIN
, come pin di uscita sul quale potremo dunque inviare bit 0 e 1.
La chiamata alla funzione
wiringPiSetup()
va fatta una sola volta, comunque prima che si inizino a invocare le estensioni wiringPi
, quindi è bene collocarla come prima istruzione in assoluto della main()
.
// --- Loop while (1) { digitalWrite (LED, HIGH) ; // Accendi LED delay (500) ; // Tienilo acceso per 500ms digitalWrite (LED, LOW) ; // Spegni LED delay (500) ; // Tienilo spento per 500ms }Il ciclo
while(1){}
è il classico "loop senza fine" dei sistemi embedded: le istruzioni contenute nel corpo del while
verranno eseguite ripetutamente, finché non si spegne/resetta il computer ovvero si interrompe in qualche modo l'esecuzione del programma (vedi pagina successiva). E' del tutto equivalente a for(;;)
. La funzione
digitalWrite()
manda sul pin desiderato (specificato nel primo parametro) un bit 0 (LOW
) o un bit 1 (HIGH
).
Per mantenere/acceso il LED si usa la funzione delay()
che genera un ritardo pari al valore (espresso in ms
) passato come argomento; quindi, nel nostro caso, il LED rimarrà acceso/spento per mezzo secondo.
La fase successiva sarà quella di generazione dell'eseguibile e della sua esecuzione ovviamente dopo aver installato la libreria WiringPi.
> Raspberry Pi - Installare WiringPi e compilare il primo programma
Risorse e strumenti utilizzati: [0] Fritzing [1] Editor online LaTeX [2] Google Pretty Print [3] FidoCadJ
Iscriviti a:
Post (Atom)