giovedì 29 dicembre 2016

KDE Fail


Purtroppo dopo qualche giorno di KDE ho dovuto come al solito tornare verso lidi più sicuri e meno avventurosi (leggi: meno bacati), per cui sono tornato su Mint Cinnamon edition, meno estremo in termini di feature ma sicuramente più stabile.

Non ho capito perchè gli sviluppatori di KDE tendono ad essere entusiasti nell'inserire nuove funzionalità e paradigmi di usabilità, dolphin, plasma, e il concetto di attività in primis, ma sottovalutano la parte relativa alla risoluzione dei problemi e bug che sorgono durante l'implementazione, per cui alla fine un sistema per quanto gradevole da usare viene abbandonato per gravi problemi di usabilità.

Nel mio caso ad esempio, il touchpad ha funzionato solo per qualche riavvio dopo aver applicato la patch che indicavo nel post precedente per poi ritornare inusabile, ogni tanto lo schermo diventava nero, blocchi casuali del desktop.

In quest'ottica ho dovuto ripiegare su Cinnamon (un fork di Gnome 3) comunque ricco di feature ma stabile a sufficienza per i miei gusti. In alternativa potevo installare Mate (fork di Gnome 2) meno ricco di feature ma più adatto a hardware vecchio rispetto a Cinnamon (non il mio caso).

In ogni caso, ho anche iniziato a vedere qualcosa relativa alla programmazione dei desklet, vediamo nei prossimi post se ho combinato qualcosa!

lunedì 28 novembre 2016

Linux su Asus VivoBook F556UV



Erano diversi anni che avevo voglia di usare KDE come desktop di tutti i giorni, ma ogni volta mi sono scontrato con bug e problemi di usabilità che mi hanno impedito nell'intento. Con l'acquisto del nuovo portatile ho colto l'occasione di riprovare per l'ennesima volta kde, e mi appunto qui le varie avventure per tenere traccia delle configurazioni effettuate.

Sul sito ufficiale di kde c'è un elenco (parziale) di distribuzioni con kde, e il mio primo tentativo è stato con KDE Neon, distribuzione ufficiale degli sviluppatori che contiene l'ultimissima versione del desktop environment.

La distribuzione ha una grafica ottima ma l'avvio è risultato un po' lentino (20 secondi circa) e, pecca più grande, non supporta la scheda grafica Nvidia montata sul mio laptop: KDE Neon fa uso di Wayland come gestore della grafica, che allo stato attuale non gestisce bene le schede video Nvidia. In compenso la scheda video intel integrata funzionava molto bene.

La seconda distribuzione è stata mint versione kde. Come al solito mint è garanzia di pulizia e funzionalità essenziali, per cui mi sono trovato subito molto bene. Un grosso bug che mi ha dato molto fastidio (probabilmente presente anche su Neon, ma non ci ho fatto caso poichè preso dai tentativi di far funzionare l'NVidia) è quello del mancato supporto al touchpad: viene rilevato come un mouse, per cui le gesture come lo scroll orizzontale e verticale non funzionano, così come la supeficie dei pulsanti risulta attiva anche come movimento, per cui spesso il click del mouse sposta il cursore facendoti cliccare su oggetti non voluti, veramente fastidioso. Tra l'altro il menù di configurazione del touchpad risulta ingrigito con la frase "No touchpad found".

Per questo motivo ho optato per un'altra distribuzione, OpenSuse, che non ho mai visto in azione, per cui un po' per la curiosità di vedere come funziona, e nella speranza che lì il touchpad funzioni come si deve ho provato ad installarla. Mi sono miseramente bloccato al passaggio relativo alla partizione, l'ho trovato piuttosto oscuro e macchinoso per cui ho deciso di tentare ancora con mint.

Dopo un paio di serate di ricerca, ho trovato la soluzione!
Un genio ha messo a disposizione su github il driver per il mio touchpad, è bastato lanciare il comando indicato nel readme et...voilà: ha cominciato a funzionare tutto alla perfezione! Anche il menù di configurazione del touchpad ha tutte le voci operative! Mio salvatore!

Per cui le mie avventure con mint kde edition non sono finite!

Il portatile perfetto


Era da diverso tempo che volevo acquistare un nuovo portatile che sostituisse il mitico Dell Inspiron 6400, di cui parlavo nel primissimo post di questo stupendo blog ben nove anni e mezzo fa.

Dopo diverse settimane (mesi!) di analisi di che cosa offtre il mercato, sono giunto alla conclusione che volevo un portatile 15" con processore i7 e con hard disk SSD. Questo perchè lo schermo deve essere ben leggibile, i7 è la famiglia intel di processori più potente per il mercato consumer, e SSD perchè è una tecnologia che surclassa almeno di un fattore 5 la velocità di un disco rigido tradizionale.

Una configurazione di questo tipo non è facile da trovare, perchè tutti gli i7 che si vedono in giro hanno hard disk da terabyte, mentre i portatili con ssd sono tipicamente degli ultrabook (tipo chromebook) con una potenza (e costo) inferiore a fronte di una mobilità (in termini di durata della batteria e dimensione dello schermo contenuta) migliorata.

C'è un simpatico sito che permette di scegliere le caratteristiche preferite, ed il sistema ti fornisce una serie di laptop che le soddisfano. Il problema è che tutti i laptop elencati sono disponibili su amazon US e non sul sito italiano, per cui serve solo ad avere un'idea sul modello che vogliamo acquistare.

Dopo aver studiato le varie caratteristiche, conviene andare sui siti più famosi di e-shop tipo amazon, eprice, pixmania, ma anche quelli delle catene di elettronica tipo unieuro, euronics, expert per vedere cosa effettivamente è disponibile sul mercato italiano.

Alla fine ho acquistato da unieuro un portatile che è una bomba, per soli 800€ (non so perchè ma adesso sta a 899€(?)) con le seguenti caratteristiche:

Modello: Asus VivoBook F556UV
Monitor: 15.6"
CPU: i7-6500U
RAM: 12GB
SSD: 512GB
GPU esterna: NVIDIA GeForce GT 920MX

Le prime impressioni sono molto positive: linea elegante, design leggero e corpo compatto (il vecchio Dell è un po' un mattoncino).

Effettivamente la risoluzione 1920✕1080 rende la dimensione del monitor fin troppo grande (tutti i font sono piuttosto piccoli e dettagliati). Ho scoperto a posteriori che questa caratteristica per i monitor si chiama High DPI, per cui testo e icone appaiono molto piccoli se non gestito dal sistema operativo).

Ma qui veniamo alla vera chicca: i tempi di avvio sono eccezionali: sia sotto Windows 10 che sotto Linux Mint KDE siamo intorno ai 12 secondi dal menù di grub al desktop.


sabato 11 giugno 2016

Configurazione Raspberri PI 2

Dopo qualche mese di smanettamento con il raspberry, mi appunto qui una serie di note che ho raccolto nel frattempo.

Scelta del sistema operativo

La prima cosa da fare è selezionare il sistema operativo che girerà sul raspberry. Il consiglio che do è quello di provarne due o tre in prima persona, in modo da capire quale è quello più adatto alle proprie esigenze in base alle funzionalità offerte, configurabilità, versatilità.

La mia scelta è ricaduta su una distribuzione linux (che conosco bene), magari debian based (adoro apt), con Kodi installato sopra (mi interessa che sia un media center). In base a questi criteri, ho selezionato queste:
XBian e Osmc sono piuttosto simili, tranne che la seconda di default ha una skin personalizzata per Kodi, mentre XBian usa quella predefinita; sono entrambe debian-based, mentre OpenElec è una distribuzione ad hoc non basata su nessuna distro preesistente.

A livello di velocità di avvio, la più veloce risulta essere OpenElec, seguita da Osmc e per ultima XBian.

OpenElec, per contro, monta una serie di cartelle (tra cui /etc) su partizione read-only, per cui ha un livello di configurabilità post-installazione molto basso.

Attualmente sto usando Osmc (con skin predefinita di Kodi!) e mi sto trovando bene.

Modifica del file /boot/config.txt

La prima modifica ha lo scopo di aumentare le prestazioni, ma una ricerca di "overclock rpi2" su google porta ad un mole di risultati in cui è difficile districarsi; ad esempio ho trovato alcuni risultati interessanti qui, qui e qui, dai quali ho estratto la seguente configurazione di partenza:
arm_freq=1000
sdram_freq=500
core_freq=500
over_voltage=2
gpu_men=320
temp_limit=75
boot_delay=0
disable_splash=1
initial_turbo=30
Un'ottima guida del significato di questi e altri parametri è quella ufficiale.

La seconda modifica ha l'obiettivo di evitare che all'avvio il raspberry prenda il controllo della TV (switching automatico); questo si ottiene aggiungendo al file config.txt la riga:
hdmi_ignore_cec_init=1
Inoltre, va modificato il comportamento di Kodi direttamente nel suo menù di configurazione, raggiungibile da  Kodi > Settings > System > Input Devices > Peripherals > CEC Adapter > Devices to power on during startup....

La terza modifica serve ad avviare l'HDMI per default: questo perchè è possibile accendere la TV in maniera del tutto asincrona rispetto al raspberry, per cui voglio trovare Kodi acceso senza dover effettuare un riavvio. Questa modifica prevede l'aggiunta di queste due righe:
hdmi_force_hotplug=1
hdmi_drive=2
secondo quanto descritto qui. Questa terza modifica la volevo rimuovere a vantaggio di uno script che controlla se la tv è accesa o no, lanciando automaticamente Kodi.

La quarta modifica serve a registrare il decoder MPEG-2, in caso lo si sia acquistato separatamente. E' possibile infatti acquistare separatamente il codice che attiva la decodifica hardware di un flusso MPEG-2; il costo è abbastanza contenuto e può essere effettuato presso questo sito. Dopo qualche giorno arriva per posta il codice da inserire mediante la riga:
  
    decode_MPG2=0xYYYYYYY

Il comando che verifica se la registrazione è andata a buon fine è

    vcgencmd codec_enabled MPG2

che restituisce disabled o enabled a seconda dei casi.

Configurazione della rete

Una cosa fondamentale è quella di impostare un indirizzo IP statico, tipicamente al di fuori dell'intervallo di indirizzi gestito in DHCP dal router di casa. La comodità di usare lo stesso indirizzo IP è quella di impostare sui vari desktop (qui a casa abbiamo di tutto, PC Windows, Linux, Mac, tablet Android...) l'accesso alla condivisa samba.

Un'altra funzionalità comoda è quella di  impostare il dns dinamico come già indicato qui.

Configurare Kodi

La prima cosa da fare è configurare la lingua italiana, poi verificare che funzioni la condivisione samba ed eventualmente attivare la condivisione DLNA (richiesta dalla mia smart TV).

Avviare kodi solo se la TV è accesa


Lascio sempre il mio raspberry acceso anche se alcuni periodi lo uso molto poco. Le assicurazioni riguardo al suo bassissimo consumo vanno però corroborate da esperienza diretta, per cui mi sono collegato al raspberry e ho dato un bel htop e, sorpresa! In idle completo ho notato la CPU al 10/15% ! Mi sarei aspettato dei valori 0 virgola, eppure non era così! Allora sono andato a vedere cosa consumava più CPU e ho notato il processo Kodi.Bin.

Una ricerca su internet mi ha confermato che Kodi in idle consuma, e dipende anche dalla skin selezionata (io uso quella di default), anche se non si usa da ore ed è da quasi sempre acceso lo screensaver (il dimming).

Per questo motivo mi è venuta l'idea di lanciare kodi solo se la TV è accesa, ed ho visto che anche qualcun altro ha avuto la mia stessa idea, per cui ho deciso di creare il mio script di verifica della TV, ottenendo il seguente:
#!/bin/bash

ping -c 1 -W 1 192.168.1.7 > /dev/null

if [ $? -eq 0 ]; then

        systemctl -q status mediacenter > /dev/null

        if [ $? -ne 0 ]; then
                sudo systemctl start mediacenter
        fi

else

        systemctl -q status mediacenter > /dev/null

        if [ $? -eq 0 ]; then
                sudo systemctl stop mediacenter
        fi

fi

exit 0 

Poi ho creato il file /etc/systemd/system/checkHdmi.service con il seguente contenuto:
[Unit]
Description=Pinga la TV

[Service]
Type=simple
ExecStart=/home/osmc/checkHdmi.sh

Ed il file /etc/systemd/system/checkHdmi.timer che lancia il servizio ogni minuto:
[Unit]
Description=Check if TV is on

[Timer]
OnBootSec=60
OnUnitActiveSec=60
Unit=checkHdmi.service

[Install]
WantedBy=timers.target

Ho abilitato ed avviato il servizio con i comandi: 

systemctl enable checkHdmi.timer   
systemctl start checkHdmi.timer

Dns dinamico


La necessità è quella di raggiungere dall'esterno il server casalingo che abbiamo messo su, magari per farci ssh dall'esterno della lan di casa, un client torrent web al quale aggiungere .torrent dal telefonino mentre siamo in giro o un sito http per provare wordpress o tomcat.

Ci sono una serie di siti che forniscono dns dinamico gratuitamente, tra i quali:
  • noip (richiede mensilmente la conferma, anche se usato)
  • afraid (i subdomain possono sparire in maniera impredicibile)
  • duckdns
  • nsupdate (richiede annualmente la conferma, se non usato)

Se siamo abbstanza fortunati sul pannello di configurazione del modem/router ADSL c'è già la possibilità di settare un indirizzo dinamico, altrimenti bisogna configurarselo a mano.

Configurare il server casalingo per comunicare il nuovo IP al sito dns dinamico è un vero inferno se usiamo dyndns o inadyn, ma abbastanza semplice se usiamo il comando http che ci fornise il sito dns dinamico; tale comando aggiorna sul sito il nostro nuovo indirizzo IP visibile dall'esterno.

Per il servizio afraid è un comando wget che ho inserito nello script /etc/rc.local, ma il problema è che tale script viene eseguito prima che internet sia raggiungibile; va quindi inserito un test per verificare la connettività.

Tale test lo prendiamo per esempio da qui, ed aggiungiamo un'attesa con retry infinito, il risultato è la seguente sezione di script (ringraziamo sempre il sito tohtml.com per la conversione in HTML):
#!/bin/sh

isConnected="0"

while [ $isConnected -eq "0" ]
do
        sleep 10
        wget -q --spider http://freedns.afraid.org
        if [ $? -eq 0 ]; then
                isConnected="1"
        fi
done

wget -O /dev/null http://freedns.afraid.org/dynamic/update.php?XXX

exit 0
Da notare di questo script:
  • se internet non è raggiungibile questo script non esce;
  • se si riavvia il modem, cambia l'indirizzo IP assegnato dall'ISP e andrebbe rilanciato questo script.
Il passo successivo è attivare il port forwarding sul router, in modo da indicare che le richieste che arrivano al modem dall'esterno su determinate porte vanno rigirate sul server casalingo.

Configurazione in systemd


Adottato ormai in quasi tutte le distribuzioni, va configurato in modo che lanci all'avvio lo script di update DNS inserito sopra:
  • bisogna creare il file /etc/systemd/dynamicDns.service con il seguente contenuto:
[Unit]
Description=Aggiorna il server DNS
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
ExecStart=/home/osmc/updateDns.sh

[Install]
WantedBy=multi-user.target

Dove il file indicato nel campo ExecStart contiene lo script di cui sopra.

venerdì 3 giugno 2016

Telecomando WII per Kodi su Xbian (e forse anche per altre distribuzioni)


Per far funzionare il telecomando wii con Kodi ho dovuto effettuare i seguenti passaggi:
  1. Recuperare un dongle bluetooth
  2. Installare lo stack bluetooth di linux bluez con il comando apt-get install bluez
  3. Lanciare il comando hcitool scan e premere contemporaneamente i tasti 1 e 2 del telecomando wii: i led del telecomando lampeggieranno per una ventina di secondi in attesa del comando di accoppiamento
  4. Se il comando precedente non va a buon fine lanciare il comando hciconfig hci0 reset e riprovare con il comando al punto precedente
  5. Installare i driver wiimote con il comando apt-get install python-cwiid xbmc-eventclients-common
  6. Recuperare lo script xbmc-wiimote dalla pagina https://github.com/paulvt/xbmc-wiimote, renderlo eseguibile con il comando chmod -x e metterlo in una cartella del PATH (io l'ho messo in /usr/bin)
  7. Lanciare lo script del punto precedente con il parametro -b , dove è il valore trovato con il comando del punto 3, nel formato di 6 numeri separati da ':'
  8. In kodi il telecomando sarà riconosciuto e funzionante!
  9. Per rendere le modifiche effettive ad ogni riavvio, copiare il comando al punto 7 nel file /etc/rc.local
  10. al successivo riavvio, premere insieme i tasti 1 e 2 del telecomando wii per riattivarne il controllo

Il lettore CD non si apre


Ho una configurazione hardware per la quale non si apre lo sportello del lettore CD, ne con il tastino, ne da windows con il comando espelli, ne da linux con il comando eject.

Per windows ho risolto installando un applicativo di terze parti di cui non ricordo il nome (quando riavvierò il PC in windows lo inserirò qua dentro).

Per linux ho visto risolto usando il parametro -p, per cui il comando
eject -p
ha fatto al caso mio.

Il comando man indica la seguente informazione:
  -p   This  option  allow  you to use /proc/mounts instead /etc/mtab. It
            also passes the -n option to umount(1).
Resta da capire perchè così funziona e normalmente no...

giovedì 5 maggio 2016

Aggiungere canali a TVHeadend




Ho scoperto con orrore che bisogna aggiungersi a mano quantomeno i MUX da cui il nostro dispositivo DVB-T si prende poi i canali.

Per avere la lista di mux ho dovuto cercare su internet; per Roma ad esempio ho trovato questa, ma probabilmente la lista ufficiale è disponibile da qualche altra parte.

Il pannello di configurazione dei mux in tvheadend si raggiunge dai seguenti menù:


Ciascun mux insiste su una frequenza, per cui si seleziona il tasto verde Aggiungi, e dopo aver selezionato la rete esce fuori una schermata con tanti parametri.

Fondamentale inserire la frequenza del mux e l'ampiezza di banda a 8MHz. Portando manualmente lo stato della scansione ad ATTIVO, si forza la scansione, per cui dopo un po' l'interfaccia riporta il numero di servizi trovati.

In caso di fallimento, ho immesso anche la costellazione a QAM/64, poi la modalità di trasmissione e così via. Per gli effettivi valori di FEC ho cercato su internet il nome del MUX (ad esempio per mux rete a 1 esce questo)






sabato 30 aprile 2016

Reinstallare Windows 7 OEM


Mi è capitato tra le mani un laptop HP che non parte più a causa della corruzione dei dati di avvio, ed è quindi da reinstallare il sistema operativo.

La targhetta posta sotto il portatile dice che si tratta di un Windows 7 Home Premium (non si capisce se a 32 o a 64 bit) e contiene anche il codice di licenza.

Direttamente dal sito di Microsoft è possibile installare la iso di Windows 7, ma solo se si è in possesso di una licenza non OEM; in questo caso, bisogna rivolgersi al produttore del PC.

Si trovano in giro su internet le iso di Windows 7, io ho le istruzioni su come recuperarle da questo sito.

Per essere sicuri di aver scaricato quelle ufficiali, è utile confrontare i checksum SHA1 delle iso appena scaricate, una lista di queste si può trovare qui e riportare qua sotto per sicurezza:

Windows 7 SP1
Home Premium edition
32bit:  6071B4553FCF0EA53D589A846B5AE76743DD68FC
64bit:  6C9058389C1E2E5122B7C933275F963EDF1C07B9

Professional edition
32bit:  D89937DF3A9BC2EC1A1486195FD308CD3DADE928
64bit:  0BCFC54019EA175B1EE51F6D2B207A3D14DD2B58

Ultimate edition
32bit:  65FCE0F445D9BF7E78E43F17E441E08C63722657
64bit:  36AE90DEFBAD9D9539E649B193AE573B77A71C83

Da linux è possibile ottenere il checksum SHA mediante il comando sha1sum

Una volta ottenuto il file .ISO, bisogna installarlo su una penna USB o un DVD.

Per il DVD immagino sia facile, usando uno dei DVD burner presenti in giro.

Per la penna USB bisogna usare dei tool specifici:
  • per windows parlano tutti bene di rufus;
  • per linux bisogna usare WinUSB, unetbootin non funziona.

Dopo tutto questo giro, ho ottenuto una penna USB con l'installer di windows 7 avviabile. Ho usato l'immagine a 64 bit visto che il processore è un I5, ed al momento di inserire il codice di licenza l'installer è andato avanti tranquillamente.

Una volta inserita la penna USB e avviato windows, tra le partizioni disponibili per l'installazione mi ha elencato anche la partizione di restore. A questo punto ho pensato che fosse meglio usare il restore del produttore, per avere anche tutti i driver installati (con la modalità manuale bisogna installarsi tutti i driver da soli).

Sapendolo prima, forse avrei risparmiato un po' di tempo (anche se come vedremo in seguito non è stato tempo perso), per cui la prima regola da seguire per reinstallare il sistema operativo è:

verificare se presente e in caso affermativo usare la modalità di restore fornita dal produttore del PC 

Per il portatile HP quindi l'avvio della modalità restore si ottiene schiacciando F11 al boot.
Attivando il ripristino, però ho ottenuto un errore (0xe0ef0003), per cui ho dovuto installare windows manualmente dalla penna USB generata dalla ISO.

sabato 23 gennaio 2016

Gestione di un file video con avconv


Tagliare un file:
time avconv -i input.ts -ss 00:16:44 -t 02:15:00 -c:a copy -c:v copy filmName.mp4

Convertire un file in H.264:
time avconv -i input.ts -c:a copy -c:v libx264 -crf 18 -preset veryfast filmName.mp4

sabato 16 gennaio 2016

Se sparisce la sezione TV (Live) da Kodi



É perchè la stringa m3u del plug-in punta ad un link non funzionante...per risolvere bisogna cambiare la stringa.

Installare Flash su Vivaldi


Sto usando da qualche settimana il browser Vivaldi e sembra molto buono (veloce, ha tutte le funzioni che ci si aspettano). Ho dovuto abbandonare Firefox per un fastidioso bug per cui ad ogni apertura di Firefox usciva un messaggio di errore, perdendo la sessione di navigazione precedente (funzione che trovo fondamentale).

L'altro giorno ero sul sito di cinefili filmtv.it e volevo vedere un trailer, ma il sito mi ha risposto con un messaggio di errore nella finestra del trailer sulla mancanza del plug-in flash. Ho trovato i comandi per installare e far funzionare il plugin flash con vivaldi e me la appunto qui:

  • add-apt-repository ppa:skunk/pepper-flash
  • apt-get update
  • apt-get install pepflashplugin-installer
  • riavviare il browser