giovedì 4 settembre 2014

aMule-daemon - non funziona dopo un aggiornamento di sistema, vediamo come risolvere


E' buona abitudine aggiornare regolarmente il sistema operativo, ed è quello che faccio quasi quotidianamente anche sul mio Raspberry Pi con i classici comandi:

> sudo apt-get update
> sudo apt-get upgrade

Mi è capitato recentemente di notare, al termine dell'aggiornamento, che x pacchetti erano stati aggiornati e 41 pacchetti non erano stati aggiornati. Ho proceduto allora ad aggiornare tutti i pacchetti con il comando

> sudo apt-get dist-upgrade

Al termine dell'aggiornamento completato senza messaggi d'errore ho notato però che amule-daemon non funzionava più e dava questo messaggio d'errore:

amule: error while loading shared libraries: libbfd-2.22-system.so: cannot open shared object file: No such file or directory

Ho quindi cercato la libreria libbfd con il comando:

> sudo apt-cache search libbfd

Ho così scoperto che il problema risiede nel pacchetto binutils, che risulta regolarmente installato, ma è stato aggiornato dalla versione 2.22-8 alla 2.24.51.
Sembra che la nuova versione di questo pacchetto sia incompatibile con l'attuale versione di amule-daemon, durante un tentativo di compilazione del pacchetto infatti, ho ricevuto un avviso che mi segnalava l'assenza o il non riconoscimento del file header binutils.h.

La soluzione a questo problema quindi è il downgrade del pacchetto binutils, cioè sostituire la versione 2.24.51 con la vecchia 2.22-8, con questo comando:

> sudo apt-get install binutils=2.22-8

Questo comando genererà il seguente output:

Reading package lists... Done
Building dependency tree      
Reading state information... Done
Suggested packages:
  binutils-doc
The following packages will be REMOVED:
  binutils-dev
The following packages will be DOWNGRADED:
  binutils
0 upgraded, 0 newly installed, 1 downgraded, 1 to remove and 0 not upgraded.
Need to get 0 B/4,521 kB of archives.
After this operation, 12.4 MB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 74365 files and directories currently installed.)
Removing binutils-dev ...
dpkg: warning: downgrading binutils from 2.24.51.20140425-1~rpi1rpi2 to 2.22-8
(Reading database ... 74354 files and directories currently installed.)
Preparing to replace binutils 2.24.51.20140425-1~rpi1rpi2 (using .../binutils_2.22-8_armhf.deb) ...
Unpacking replacement binutils ...
Processing triggers for man-db ...
Setting up binutils (2.22-8) ...

Ora potete lanciare amule-daemon in background con il comando:

> amuled -f

Ora amule-daemon funziona regolarmente. In questo post ho parlato in particolare del Raspberry Pi, ma è comunque valido per qualunque sistema che utilizzi Debian o derivati.

venerdì 2 maggio 2014

LiberAcus 2.0 - la nuova versione del programma di gestione per sartorie

Ho appena rilasciato la versione 2.0 di LiberAcus, il programma di gestione per sartorie.
Da poco più di un anno porto avanti questo progetto, è un software libero rilasciato con licenza GPL versione 3, l'ho sviluppato in C++ ed utilizza le librerie GTK 3, gira su qualsiasi sistema GNU/Linux.

Le novità introdotte sono molte, tante le novità strutturali interne del programma ed altrettante le nuove funzionalità a disposizione dell'utente finale.


La novità di rilievo riguarda la gestione delle prestazioni nella ricevuta e la stampa delle etichette, ho introdotto il concetto di capo di vestiario sul quale si possono eseguire diverse prestazioni. Come potete vedere nell'esempio qui sotto, sulla gonna verranno effettuate due prestazioni: la sostituzione della chiusura lampo e il restringimento del punto vita. Questa ricevuta genererà la stampa di due etichette, una per la camicia ed una per la gonna. La precedente versione del programma invece avrebbe stampato un'etichetta per ogni prestazione, per un totale di tre etichette da applicare su due soli capi.
la finestra per l'inserimento di una nuova ricevuta
Sotto potete vedere un esempio di anteprima di stampa di un'etichetta che verrà spillata sul capo di vestiario come promemoria.

Un'altra novità visibile dall'utente è il nuovo pannello delle preferenze dal quale è possibile personalizzare vari aspetti del programma.

Il resto delle novità interne riguarda la correzione di bug ed una gestione dati diversa che dovrebbe garantire prestazioni migliori in presenza di grandi quantità di dati.
Per tutti coloro interessati allo sviluppo di questo programma potete contattarmi e raggiungere il sito del progetto.
Se invece siete interessati all'utilizzo di questo programma per la vostra attività, siete liberi di scaricarlo ed utilizzarlo a vostro piacimento.
Potete scaricare direttamente la tarball del programma da questo link:
https://drive.google.com/file/d/0B6BUiE6is8MyQWlLeEZwMmxJLWM/edit?usp=sharing

Una volta scaricato l'archivio, dal Terminale, andate nella posizione in cui si trova il file e decomprimetelo con

unzip liberacus-2.0.tar.gz

Ora entrate nella directory liberacus-2.0 con il comando

cd liberacus-2.0

Quindi potete procedere alla compilazione

./configure

make

sudo make install

Ora potete avviare l'applicazione da Terminale digitando

liberacus

venerdì 7 marzo 2014

Raspberry Pi: come ottenere la risoluzione ottimale per il vostro monitor o televisore

Nella guida precedente (leggi qui) abbiamo visto come risolvere i problemi con il collegamento HDMI al televisore o al monitor del Raspberry Pi, in questo post vediamo invece come ottenere la risoluzione ottimale per il vostro schermo.
Spesso infatti la risoluzione scelta dal Raspberry Pi con i valori di default è la classica VGA 640x480, decisamente bassa!
il file di riferimento è sempre config.txt che troviamo in /boot, ci sono due opzioni che regolano la modalità video e la risoluzione, sono hdmi_group e hdmi_mode.

hdmi_group definisce il tipo di HDMI del display collegato, i valori possibili sono:
0 = valore di default
1 = CEA
2 = DMT

Il valore di default sceglierà il tipo in base alle informazioni ottenute dall'EDID (Extended Display Identification Data), che è una struttura di dati forniti dal display, in pratica sono le informazioni che utilizzano i computer per conoscere che tipo di monitor è collegato e quali risoluzioni sono supportate.

hdmi_mode imposta la modalità video e la risoluzione, c'è una lunga lista di valori possibili che evito di riportare qui, ma che potete vedere su questo sito.

Ora che conosciamo un minimo di teoria, passiamo alla pratica: come faccio a sapere quale sia la risoluzione ottimale del mio monitor o televisore?

Aprite il file di configurazione per modificarlo da terminale con

sudo nano /boot/config.txt

Prima cosa da fare è abilitare le due opzioni hdmi_group e hdmi_mode cancellando il carattere '#' all'inizio delle righe ed impostiamo entrambi i valori a 1, così da ottenere una risoluzione standard VGA (640x480).

Salvate le modifiche premendo i tasti Ctrl + o, premete il tasto Invio per confermare il nome del file, quindi uscite dall'editor con Ctrl + x.

Ora riavviate il Raspberry Pi con

sudo reboot

Dopo il login digitate questo comando per ottenere le informazioni dal vostro monitor/TV

/opt/vc/bin/tvservice -d edid.dat

Avete così ottenuto l'EDID, ora andiamo a leggere le informazioni contenute con il seguente comando

/opt/vc/bin/edidparser edid.dat

Verranno visualizzate sul terminale molte informazioni, dal costruttore del display alla lista di tutte le risoluzioni supportate. Sarà qualcosa di simile a quello che ho ottenuto io:


Enabling fuzzy format match...
Parsing edid.dat...
HDMI:EDID version 1.3, 1 extensions, screen size 16x9 cm
HDMI:EDID features - videodef 0x80 !standby !suspend !active off; colour encoding:RGB444|YCbCr422; sRGB is not default colourspace; preferred format is native; does not support GTF
HDMI:EDID found monitor range descriptor tag 0xfd
HDMI:EDID monitor range offsets: V min=0, V max=0, H min=0, H max=0
HDMI:EDID monitor range: vertical is 49-61 Hz, horizontal is 15-46 kHz, max pixel clock is 80 MHz
HDMI:EDID monitor range does not support GTF
HDMI:EDID found monitor name descriptor tag 0xfc
HDMI:EDID monitor name is SAMSUNG
HDMI:EDID found preferred CEA detail timing format: 1280x720p @ 60 Hz (4)
HDMI:EDID found CEA detail timing format: 1280x720p @ 50 Hz (19)
HDMI:EDID established timing I/II bytes are 20 00 00
HDMI:EDID found DMT format: code 4, 640x480p @ 60 Hz in established timing I/II
HDMI:EDID standard timings block x 8: 0x0101 0101 0101 0101 0101 0101 0101 0101
HDMI:EDID parsing v3 CEA extension 0
HDMI:EDID monitor support - underscan IT formats:no, basic audio:yes, yuv444:yes, yuv422:yes, #native DTD:1
HDMI:EDID found CEA detail timing format: 1920x1080i @ 60 Hz (5)
HDMI:EDID found CEA detail timing format: 1920x1080i @ 50 Hz (20)
HDMI:EDID found CEA detail timing format: 720x480p @ 60 Hz (2)
HDMI:EDID found CEA detail timing format: 720x576p @ 50 Hz (17)
HDMI:EDID found CEA format: code 4, 1280x720p @ 60Hz (native)
HDMI:EDID found CEA format: code 19, 1280x720p @ 50Hz
HDMI:EDID found CEA format: code 5, 1920x1080i @ 60Hz
HDMI:EDID found CEA format: code 20, 1920x1080i @ 50Hz
HDMI:EDID found CEA format: code 3, 720x480p @ 60Hz
HDMI:EDID found CEA format: code 18, 720x576p @ 50Hz
HDMI:EDID found audio format 2 channels PCM, sample rate: 32|44|48 kHz, sample size: 16|20|24 bits
HDMI:EDID found HDMI VSDB length 6
HDMI:EDID HDMI VSDB has physical address 1.0.0.0
HDMI:EDID HDMI VSDB supports AI:yes, dual link DVI:no
HDMI:EDID HDMI VSDB deep colour support - 48-bit:no 36-bit:no 30-bit:no DC_yuv444:no
HDMI:EDID HDMI VSDB has no latency information
HDMI:EDID adding mandatory support for CEA (1) 640x480p @ 60Hz
HDMI:EDID filtering formats with pixel clock > 162 MHz or h. blanking > 1023
HDMI:EDID best score mode initialised to CEA (1) 640x480p @ 60 Hz with pixel clock 25 MHz (score 0)
HDMI:EDID best score mode is now CEA (1) 640x480p @ 60 Hz with pixel clock 25 MHz (score 61864)
HDMI:EDID best score mode is now CEA (2) 720x480p @ 60 Hz with pixel clock 27 MHz (score 3066472)
HDMI:EDID CEA mode (3) 720x480p @ 60 Hz with pixel clock 27 MHz has a score of 66472
HDMI:EDID best score mode is now CEA (4) 1280x720p @ 60 Hz with pixel clock 74 MHz (score 5190888)
HDMI:EDID DMT mode (4) 640x480p @ 60 Hz with pixel clock 25 MHz has a score of 18432
HDMI:EDID CEA mode (5) 1920x1080i @ 60 Hz with pixel clock 74 MHz has a score of 4273832
HDMI:EDID CEA mode (17) 720x576p @ 50 Hz with pixel clock 27 MHz has a score of 2566472
HDMI:EDID CEA mode (18) 720x576p @ 50 Hz with pixel clock 27 MHz has a score of 66472
HDMI:EDID CEA mode (19) 1280x720p @ 50 Hz with pixel clock 74 MHz has a score of 4617160
HDMI:EDID CEA mode (20) 1920x1080i @ 50 Hz with pixel clock 74 MHz has a score of 3732360
HDMI:EDID preferred mode remained as CEA (4) 1280x720p @ 60 Hz with pixel clock 74 MHz
HDMI:EDID has HDMI support and audio support
edid_parser exited with code 0


Ho evidenziato in grassetto e sottolineato due righe in particolare, perché sono quelle che ci dicono qual'è la modalità video preferita.
Nel mio caso, come potete vedere dall'ultima riga evidenziata qui sopra, la risoluzione preferita è CEA (4), corrispondente a 1280x720p @ 60 Hz.

CEA è il tipo di HDMI, quindi imposterò hdmi_group=1, il numero tra parentesi corrisponde invece al valore da inserire per impostare la modalità video, quindi nel mio caso hdmi_mode=4.

Una volta a conoscenza dei valori ottimali per il vostro monitor/TV, andate a modificare di nuovo il file di configurazione con

sudo nano /boot/config.txt

sostituite i valori di hdmi_group e hdmi_mode con quelli ottimali e ricordatevi di verificare che l'opzione hdmi_safe sia disabilitata, altrimenti la risoluzione sarà bloccata su VGA (640x480).
Vi ricordo che un opzione, per essere disabilitata, deve avere il carattere '#' all'inizio della riga.
Ora salvate con la solita combinazione Ctrl + o, Invio, Ctrl + x e riavviate con

sudo reboot

Ora il vostro Raspberry Pi utilizza la risoluzione ottimale del vostro monitor/TV.


giovedì 27 febbraio 2014

Raspberry Pi: come risolvere i problemi con la connessione HDMI

Sono in molti ad avere problemi di connessione del Raspberry Pi ad un televisore/monitor tramite la porta HDMI, spesso ci si ritrova davanti ad uno schermo completamente nero.
Anche io ho incontrato lo stesso problema, la connessione tramite video composito funzionava perfettamente, ma provando a collegarlo tramite HDMI nessun segnale!
La soluzione a questo problema si trova in un file di configurazione in /boot, andiamo subito a modificarlo con:

sudo nano /boot/config.txt

Il file si presenta con una lista di opzioni di configurazione e molti commenti che aiutano a capire a cosa serve ciascuna voce (il tutto ovviamente in inglese).
Le righe che iniziano con il carattere # sono commenti e di conseguenza vengono ignorati dal sistema, molte delle opzioni presenti nel file sono precedute dal suddetto carattere e quindi di fatto disabilitate. Per abilitare un opzione basterà rimuovere il carattere all'inizio della riga.

La prima opzione del file è hdmi_safe=1, che attiva la modalità “sicura”, cioè imposta i parametri per la massima compatibilità possibile con tutti i tipi di TV/monitor. Tenete presente che, se attivate questa opzione, la risoluzione in uscita sarà la standard VGA (640x480).

Saltando le opzioni relative alle dimensioni e posizione dello schermo, troverete hdmi_force_hotplug=1, che forza l'uscita video su HDMI anche quando non viene rilevato alcun monitor collegato. Il Raspberry Pi infatti, in fase di boot, verifica se è presente un monitor HDMI collegato, se non lo rileva viene impostata di default l'uscita video composito. Questa è l'opzione che ha risolto il mio problema!

Altra opzione degna di nota è hdmi_drive=2, che forza la modalità HDMI (video + audio), piuttosto che DVI (solo video).

Per finire, config_hdmi_boost=4, che rafforza il segnale e previene problemi di interferenze o assenza completa di segnale.

Ricapitolando, ho abilitato le seguenti opzioni ed ho risolto ogni problema:

hdmi_force_hotplug=1
hdmi_drive=2
config_hdmi_boost=4

Dopo aver concluso le modifiche salvate premendo i tasti Ctrl + o, premete il tasto Invio per confermare il nome del file, quindi uscite dall'editor con Ctrl + x.
Ora potete riavviare con sudo reboot e godervi l'uscita video sulla vostra TV.