PrettyPrint

giovedì 5 marzo 2020

Debian 10/MX Linux 19: Xerox 3225 scanner non riconosciuto, come risolvere

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



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....

CREDITI: https://unix.stackexchange.com/a/510365




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

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

Ddecomprimerla nella propria home dir

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


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



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


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/wiringPi
Quindi:
cd wiringPi
git pull origin
Infine, 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'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 uscita
Il 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