martedì 30 giugno 2009

Atlantide Media Center: menù di partenza

Un po' di brainstorming per il media center:
  • ogni menù ha una voce 'setup' che permette di configurare gli aspetti di quel menù, come ad esempio il percorso dove trovare i file multimediali, o il comando da impostare per riprodurli
  • ogni menù ha una voce 'indietro' ('esci' su quello principale)
  • dati possono essere directory e file, che si possono rinominare, cancellare, copiare, spostare; si possono creare directory nuove
  • se evidenziata una cartella, ti dice il numero di file e la data del più recente
  • se evidenziato un file ti dice dimensione, data e lunghezza (e magari copertina e info IMDB o equivalente italiano!)
  • nel menù 'Guarda TV' la funzione 'Setup' attiva la funzione di popolamento dei canali, e il comando per la visualizzazione dei canali stessi
  • i programmi registrati vanno in 'Registra TV', si possono poi spostare a piacere; in quel menù sono presenti le programmazioni
E ora un po' di codice python...

#!/usr/bin/python
########################################################
# Note sul nome delle variabili e funzioni :
# iniziano tutte con una sequenza che indica il tipo
#
# i = intero
# s = surface
# str = stringa
# font = font
# r = rect
########################################################
# Imports
########################################################
import pygame, sys, os
from pygame.locals import *
########################################################
# Inizializzazione variabili
########################################################
pygame.init()
iiResolution = (800, 600)
fontDefault = pygame.font.Font(None, 36)
# set screen resolution
pygame.display.set_mode(iiResolution, 0, 32)
sScreen = pygame.display.get_surface()
strBackgroundFile = os.path.join(".","Atlantis_by_aksu.jpg")
sBackground = pygame.image.load(strBackgroundFile)
strCurrentMenu = os.path.join(".","main.mnu")
########################################################
# Functions
########################################################
def drawMenu(menuFile, iSelected):
# Disegna il contenuto del menuFile ed evidenzia il selected
global sForeground, fontDefault
##################################
file = open(menuFile, 'r')
i=0
centerx = sForeground.get_rect().centerx
offsy = sForeground.get_rect().centery/2
for line in file:
line = line.replace ( "\n", "" )
sText = fontDefault.render(line, 1, (255, 255, 255))
rText = sText.get_rect()
rText.centerx = centerx
rText.y = i*32+offsy
if i == iSelected:
rText2 = rText.inflate(118,4)
rText2.centerx = centerx
sBox = pygame.Surface.convert_alpha(pygame.Surface((rText2.width, rText2.height)))
sBox.fill((0, 255, 255, 100))
sForeground.blit(sBox, rText2)
sForeground.blit(sText, rText)
i=i+1
# Setup string
sText = fontDefault.render("Setup", 1, (255, 255, 255))
rText = sText.get_rect()
rText.centerx = sForeground.get_rect().centerx
rText.y = i*32+offsy
sForeground.blit(sText, rText)
# Exit/back string
i=i+1
sText = fontDefault.render("Exit", 1, (255, 255, 255))
rText = sText.get_rect()
rText.centerx = sForeground.get_rect().centerx
rText.y = i*32+offsy
sForeground.blit(sText, rText)
##################################
def input(events):
# Gestisce gli eventi di input
global iItemSelected
##################################
for event in events:
if event.type == KEYDOWN:
if event.key == K_UP:
iItemSelected -= 1
elif event.key == K_DOWN:
iItemSelected += 1
elif event.key == K_ESCAPE:
sys.exit(0)
else:
print event
########################################################
# Main
########################################################
iItemSelected =0

# Main loop
while True:
sForeground = pygame.transform.scale(sBackground, iiResolution)
input(pygame.event.get())
pygame.display.flip()
drawMenu(strCurrentMenu, iItemSelected)
sScreen.blit(sForeground, (0,0))

domenica 28 giugno 2009

Atlantide Media Center: prime prove

Nell'ottica di implementare un front-end grafico per la mia linux-box, sto studiando il python e pygame.

Questo è il risultato di un paio d'ore di smanettamento:

#!/usr/bin/python

import pygame, sys, os

from pygame.locals import *

screenwidth = 800
screenheight = 600

pygame.init()

# set screen resolution
pygame.display.set_mode((screenwidth, screenheight))#, pygame.FULLSCREEN)
screen = pygame.display.get_surface()

back_file_name = os.path.join(".","Atlantis_by_aksu.jpg")
back_surface = pygame.image.load(back_file_name)

font = pygame.font.Font(None, 36)
text = font.render("Guarda un film", 1, (255, 255, 255))
textpos = text.get_rect()
textpos.centerx = back_surface.get_rect().centerx
back_surface.blit(text, textpos)

fore_surface = pygame.transform.scale(back_surface, (screenwidth, screenheight))

screen.blit(fore_surface, (0,0))

pos = 0,0

def input(events):
for event in events:
if event.type == MOUSEBUTTONDOWN:
sys.exit(0)
elif event.type == MOUSEMOTION:
global pos
pos = pygame.mouse.get_pos()
screen.blit(back_surface, (pos[0],pos[1]))
else:
print event

# Main loop
while True:
input(pygame.event.get())
pygame.display.flip()

Visualizzare codice sorgente in HTML

Per visualizzare del codice C all'interno di una pagina HTML, ho effettuato i seguenti passi:
  • usato il programma code2html, che non necessita di installazione, basta aprire il pacchetto tar.gz ed estrarre l'eseguibile, e si esegue con il comando code2html codice.c codice.c.html
  • con un editor sostituire ai tab la stringa &#09";" (senza doppi apici), come suggerisce wikipedia
  • ricopiare dal tag "<" pre > al < /pre > ed incollare nel codice html...et voilà
Da notare che il programma code2html gestisce più linguaggi di quelli indicati nella sua homepage, tra cui il python.

Un altro metodo potrebbe essere quello di usare lo SCIntilla Text Editor, e sfruttare la funzione Export→as HTML..., ma non lo sto usando perchè adopera i CSS che in questo blog non posso inserire, inoltre il codice creato è piuttosto complesso.

Un terzo metodo che ho usato oggi a distanza di 6 anni è il seguente:
  1. andare alla pagina https://www.palfrader.org/code/code2html/cgi/
  2. riempire il form e cliccare invia richiesta (si può lasciare il campo HTML title vuoto)
  3. cliccare con il tasto destro sulla pagina creata, visualizzare il sorgente e copiare la parte che ci interessa compresa tra i tag PRE
Un altro sito utile per la formattazione in HTML è hilite.me che supporta molti più linguaggi rispetto al link precedente.

Ultimo usato: tohtml.com

martedì 23 giugno 2009

Configurazione di firefox

Se per qualcuno Firefox è sicuramente il miglior browser sulla piazza (me compreso) è grazie alla sua configurabilità e alle estensioni, che rendono la navigazione in internet una gran comodità; (certo non è stato esente da problemi, come quando si freezava ogni 3 per 2 e per la gestione delle animazioni flash).

Ecco un breve appunto su come configurarlo al meglio.

Lista delle estensioni utili
  • adblock (plus)
  • Context Search
  • DownThemAll
  • Gmail space
  • Google Bookmarks button
  • Plain Text Links
  • gTranslate (provare quick TransLation)
Configurazione
  • tutte le tab sempre visibili: da about:config mettere browser.tabs.tabMinWidth a 0
  • scrivere nella barra indirizzi rallenta: da about:config mettere
browser.urlbar.matchOnlyTyped = True
browser.urlbar.matchBehaviour = 2 (provare 0 che con 2 mi si blocca)
browser.urlbar.maxRichResults = (max results, put between 2-5)
browser.urlbar.search.timeout = (search timeout, put something lower than 100, depending on ur needs)
Motori di ricerca da impostare
  • wikipedia en, it
  • wordreference en-it
  • de mauro paravia
  • virgilio sinonimi & contrari
  • wordnet
  • acronymfinder

domenica 14 giugno 2009

Chi fa da se fa per tre

Freevo, il media center che sto usando adesso, non mi sta soddisfacendo troppo:
- è di installazione complicata
- spesso alcune funzioni indicate nel wiki non vanno (ad esempio per giocare con il mame)
- per far funzionare la tv sia in visualizzazione che in registrazione bisogna evocare antichi riti voodoo
- le istruzioni per l'installazione non sono sufficienti

Ad esempio ho scoperto da poco che per poter funzionare correttamente freevo ha bisogno di lanciare altri processi suoi, separatamente e rigorosamente a mano...ma non è indicato da nessuna parte...molto utile!

Dopo diversi mesi di utilizzo di freevo, ho deciso di provare ad impostare da me un mio media center, appoggiandomi ai programmi che ho potuto vedere in azione finora, come ad esempio mplayer.

Con Mplayer, infatti, si possono eseguire operazioni di visualizzazione filmati, canali tv e la possibilità di registrarli facilmente.

L'idea è quindi quella di implementare un front-end grafico, che permetta l'esecuzione di Mplayer per le suddette operazioni, con l'aggiunta della possibilità di lanciare il mame per i giochi da bar.

Il front-end sarà implementato in Python, linguaggio che non conosco ma che sembra abbastanza facile, assieme alla libreria pygame che fornisce immediate funzionalità grafiche senza dover conoscere l'hardware sottostante.

lunedì 1 giugno 2009

Freevo & il topo

Non avendo ancora acquistato un telecomando per controllare freevo, mi sono inventato un modo per poter usare in alternativa il mouse.

Ho appositamente creato una pagina nel wiki di freevo, nella quale descrivo come si configura.

Quello che non ho indicato, ma che potrebbe essere utile farlo in un altra pagina del wiki, è come lanciare freevo dopo che la fase di avvio del mediabox è terminata.

Ho deciso infatti di non eseguire automaticamente freevo, visto che potrei avere bisogno del media box solo come server (mldonkey o file) e non per vedere un film. Inoltre, l'esecuzione di freevo incrementa l'uso della CPU dal 3 al 30% (in modalità idle!), per cui in ottica di risparmio energetico e di durata di componenti hardware ho deciso di lanciarlo solo in caso di necessità.

Login automatico

La prima cosa da fare è quella di impostare il login automatico: si compila il semplice file dal nome autologin.c contentente:
int main() { execlp( "login", "login", "-f", "nomeutente", 0); }
dove al posto di nomeutente si mette l'utenza con cui si vuole effettuare l'accesso automatico.

Poi si modifica il file /etc/event.d/tty1 (/etc/init/tty1.conf) in modo che risulti simile a questo:


start on stopped rc2
start on stopped rc3
start on stopped rc4
start on stopped rc5

stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /sbin/getty -n -l /usr/local/sbin/autologin 38400 tty1
dove /usr/local/sbin/autologin è il programma compilato poco sopra.


Segnalazione di boot terminato

Nel file .bashrc, eseguito automaticamente nel passo precedente, si mette alla fine la seguente sequenza di comandi:
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
beep
./mousem
fi
Con beep si intende un comando che esegue un suonetto, disponibile nella fattispecie eseguendo "sudo apt-get install beep" da terminale. Se non si sente il suonetto, probabilmente è disabilitato nel file /etc/modprobe.d/blacklist, riabilitarlo commentando la riga "blacklist pcspkr".


Lancio di freevo a schermo spento

Il comando mousem del passo precedente è un altro applicativo scritto in c da compilare
#include <stdio.h>
#include <gpm.h>
#include <unistd.h>

int my_handler(Gpm_Event *event, void *data) {
switch(event->buttons) {
case 1:
printf("tasto dx\n");
break;
case 2:
printf("tasto cx\n");
break;
case 4:
printf("\a\n");
execl("/home/zac/vai.sh", "vai.sh", (char *)0);
break;
}
return 0;
}

int main() {
Gpm_Connect conn;
int c;
conn.eventMask = ~0; /* Want to know about all the events */
conn.defaultMask = 0; /* don't handle anything by default */
conn.minMod = 0; /* want everything */
conn.maxMod = ~0; /* all modifiers included */

if(Gpm_Open(&conn, 0) == -1)
printf("Cannot connect to mouse server\n");

printf("mouse menù\n");

gpm_handler = my_handler;
while((c = Gpm_Getc(stdin)) != EOF)
printf("%c", c);
Gpm_Close();
return 0;
}
Questo programma associa al tasto sinistro del mouse l'esecuzione di un programma a nostra scelta, nella fattispecie lo script vai.sh che contiene:
#!/bin/sh
xinit
./mousem
che esegue il server x, e quando si esce da freevo rilancia automaticamente il programma che ascolta il mouse.


mercoledì 15 aprile 2009

Linux Media Center: hardware consigliato


Principali caratteristiche di un media box devono essere la dimensione contenuta e la bassa rumorosità. La scelta dell'hardware ricade quindi su schede madri con form-factor ridotto, come ad esempio le Mini-Itx, e la totale assenza di ventole (fanless).

Infatti la potenza richiesta per decodificare/visualizzare filmati mpeg, o per videoregistrare da fonti esterne, o ancora per giocare con il mame, non è altissima, ed una CPU a 1GHz (magari con decoder hardware) va più che bene.

La mia scelta è quindi ricaduta su una scheda madre LN10000EG della VIA, dotata di processore fanless, decoder e uscita TV, e di chipset (north e southbridge) abbastanza supportati da linux (il supporto non è ancora al 100%, bisogna comunque smanettare).

Per chi abita a Roma uno dei pochi negozi che le tratta è Facal Point, che consiglio anche per la gentilezza & disponibilità del personale: ho avuto dei problemi di avvio della scheda madre, dovuti all'incompatibilità con la RAM da me scelta, per cui mi hanno fatto delle prove lì per lì con vari banchi fino a che non abbiamo trovato quello funzionante. Per la cronaca, avevo preso un banco da 1GB della Corsair, ma non è risultato compatibile, così come uno di marca Kingston; un banco di marca sconosciuta coreana invece ha funzionato al primo colpo...

Per quanto riguarda la RAM ho optato per 1GB nell'ottica di avere meno rallentamenti possibile durante l'esecuzione di operazioni di codifica-decodifica di stream video, e di poter avere in esecuzione più processi contemporaneamente (tipo i vari server samba, ssh, mldonkey, ecc..).
Probabilmente anche 512MB sono sufficienti...

Per quanto riguarda il case, ne ho cercato uno con trasformatore esterno, tipo quello dei portatili, estremamente silenzioso e a basso consumo (un massimo di 60w, anche se il manuale della scheda madre dichiara un consumo medio di circa 20 watt). La marca è NILOX, e un'immagine è la seguente:
Il problema è che al suo interno c'è spazio solo per un dispositivo di tipo slim, per cui il mio hard disk l'ho dovuto montare con il coperchio del case aperto appoggiato sopra per dissipare il calore.

domenica 22 marzo 2009

Recupero dei dati


Mi è capitato ultimamente di avere a che fare con hard disk esterni usb che hanno smesso di funzionare in toto od in parte.

Sto avendo l'impressione che la tecnologia USB per l'archiviazione dei dati non sia molto affidabile. Già il fatto di dover smontare il dispositivo per poterlo rimuovere anche sotto windows sembra rendere il procedimento incline agli errori: che succede se non lo smonto? Se salta la luce? Se il sistema si blocca per un qualunque motivo?

In caso che succeda qualcosa di brutto alla nostra penna usb, fortunatamente ci viene in aiuto questo splendido tool: Photorec. Non bisogna farsi ingannare dal nome, questo simpatico programma è in grado di recuperare dai meandri delle nostre memorie file pdf, documenti word, musica, immagini, video, eseguibili.

Sarà la terza volta che questo tool mi salva alla grande da situazioni altrimenti disperate! Sarà il caso di donare qualcosa?

martedì 6 gennaio 2009

Trust Mouse Optical Wireless in Linux

La mia pigra navigazione sul divano o intense sessioni a Wesnoth sul letto sono da oggi attività più semplici grazie ad un comodo mouse ottico wireless per il portatile acquistato per la befana. Un cavo in meno attorno al notebook è veramente una gran comodità, così come l'alta sensibilità di movimento e la morbidezza data dal sensore ottico.

L'unica attenzione da porre è quella verso il ricevitore USB che sporge (di 2 cm), per cui in caso di movimenti o cuscini appoggiati si potrebbe piegare (certo che uno come quello qua sotto risolverebbe sicuramente questo problema!)

Inserite le batterie (magari ricaricabili, da 1,5V e non da 1,2!) ed infilato il ricevitore USB, il comando dmesg mostra il seguente output:
usb 4-1: new low speed USB device using uhci_hcd and address 2
usb 4-1: configuration #1 chosen from 1 choice
usbcore: registered new interface driver hiddev
input: MLK Trust Mouse 15313 as /devices/pci0000:00/0000:00:1d.3/usb4/4-1/4-1:1.0/input/input11
input,hiddev96,hidraw0: USB HID v1.10 Mouse [MLK Trust Mouse 15313] on usb-0000:00:1d.3-1
usbcore: registered new interface driver usbhid
/build/buildd/linux-2.6.24/drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
Una cosa fastidiosa che salta subito all'occhio è la completa assenza di un bottone dello spegnimento del mouse, per cui il laser rimane accesso anche a pc spento, con conseguente spreco di energia...

La confezione indica che il raggio di applicazione della comunicazione radio è di 8 metri, per cui nell'ottica media center lo si potrebbe usare addirittura come telecomando! Vanno comunque configurati i due bottoni aggiuntivi attivabili col pollice. Prendendo spunto dalla ricerca effettuata in questo vecchio post, verifico se nel frattempo sono state implementate soluzioni migliori.

In effetti è così, come indicato in questo post di ubuntuforums. Ho eseguito le istruzioni fino allo step 5, ma ho avuto difficoltà nel capire quale voce del file di configurazione /etc/X11/imwheel/imwheelrc attiva la funzione indetro e avanti di firefox con i tasti pollice. Per effettuare i test si modificano i file di configurazione e si lancia la riga messa nel file amouse.desktop, tipicamente imwheel -k -b "0 0 0 0 8 9". Alla fine ho creato il mio file ~/.imwheelrc contenente:
".* - Mozilla Firefox"
None,Thumb1,Control_L|KP_Subtract
None,Thumb2,Control_L|KP_Add

Da verificare se il bug di imwheel si ripresenta o meno, visto che nel post sopraindicato pare che sia preso in considerazione nello step 3.

lunedì 5 gennaio 2009

Orthodox file managers

Dal libro dell'ortodossia.

E' dai tempi del dos che faccio uso di un orthodox file manager:
Il problema di mc è che dopo aver usato tanto Total Commander sotto windows, ci si abitua a dei comodi comandi assenti nella controparte sotto linux, come ad esempio:
  • tasto canc per cancellare;
  • rotellina per scrollare l'elemento selezionato;
  • tasto destro per selezionare il file
Un'altro aspetto che imposto sempre in total commander, è il classico sfondo blu, scritte azzurrine, giallo per i selezionati, inverso per gli elementi attivi e font leggibile.

Insomma, ogni tanto mi vien da installare soluzioni alternative, ma con scarsi risultati: sembra che a tutti manca qualcosina, o siano ancora poco maturi, instabili e pieni di bug per un uso avanzato giornaliero.

Da provare:
Tux Commander v. 0.6.50-dev
Premendo invio su un file jpg, mi aspetto che parta un visualizzatore di immagini, invece appare questo dialog:

selezionando l'opzione "Si", viene fuori una schermata che permette di configurare un'applicazione per ciascuna estensione...ma il sistema già conosce queste informazioni...le devo re-inserire per tux commander io a mano? Direi proprio di no. Avanti il prossimo!

BeeSoft Commander v.2.27
Il sito indicato nell'about non è raggiungibile (pessimo segno). Su quest'altro sito che sembra essere ufficiale si legge che ci sono 2 versioni a seconda delle librerie qt usate. Ho trovato questa recensione, su un blog dal titolo interessante. Insomma, questo ofm non permette di visualizzare il contenuto di un pdf nè cliccandoci sopra né con il tasto F3-View. Inoltre la configurabilità è molto bassa, e non mi permette di impostare i colori da me usati solitamente. Neext!

Deco
File manager in console, senza interazione col mouse: scartato!

Gnome Commander
Sarebbe perfetto se non fosse per un maledettissimo bug che affligge le installazioni in italiano che fa crashare clamorosamente l'applicazione tentando di cancellare un file! Che peccato! Il prossimo!

muCommander
Il migliore clone di mc/tc finora! Se non fosse per la lentezza (è scritto in java) non ci sarebbe niente da eccepire! Da usare per un po'!

Ultimate Commander

Non esistono package da installare, ma va compilato a mano. Niente di grave, se non fosse che richiede la suite Mono, il che mi rende molto restio ad installarlo...

wxCommander


Il package di installazione di linux al momento non sembra raggiungibile...

XFE
Problemi con questo commander:
  • non seleziona i file col tasto INS
  • non apre gli archivi
  • non mostra le immagini
  • difficile configurazione dei colori
Il prossimo!

Pygoscelis


This project has not released any files.

Atol

Sembra un progetto vecchio non più supportato...


Conclusioni

Non esiste un buon equivalente di Total Commander sotto linux; l'unico che mi ha convinto di più è stato muCommander, ma mi riservo il giudizio dopo un po' di utilizzo...

Aggiornamento 1
Problemi con muCommander:
- non si possono ridimensionare i campi, il nome lungo di un file viene tagliato
- lentezza generale (es. per cancellare un file)

Aggiornamento 2
Abbiamo risolto il bug che affliggeva la versione italiana di gnome-commander! Mi includo anche io per aver suggerito che si trattava di un problema nella localizzazzione!! bene!! Adesso posso usarlo anche io!! Per adesso bisogna installarsi il file .mo sistemato a mano, ma mi aspetto che il fix venga incluso nella prossima versione!

sabato 3 gennaio 2009

Linux Media Center: i primi passi

Avevo invero acquistato un gioiellino di hard disk multimediale, ma il fatto che non fosse compatibile con la mia TV (dopo un milione di prove è risultata l'unica sulla quale si vedeva in bianco e nero!) e che implementava un terzo delle funzionalità precedentemente elencate mi ha spinto ad assemblare da me un media box. Ho così recuperato un vecchio PC che stava prendendo polvere e l'ho rimesso su; questa è la configurazione Hardware:
  • CPU: AMD k6 III 400MHz
  • RAM: 256 mega
  • Scheda Video: Nvidia Geforce MX 440
  • Scheda Audio: Sound Blaster 16 su slot ISA
  • Scheda Ethernet: una vecchia supportata senza problemi da linux
  • Scheda di aquisizione video Typhoon TV Tuner PCI del '98 (un pezzo vintage)
A prescindere dall'hardware impiegato, i vari passi da seguire per impostare un media box dal punto di vista software sono i seguenti:
  • installare una distribuzione che si conosce e con facilità di configurazione (ho scelto prima debian e poi ubuntu perchè mi trovo bene con apt)
  • impostare un indirizzo IP fisso, comodo per far riferimento sempre allo stesso indirizzo in caso di accesso SSH, VNC, Samba, ecc, modificando il file /etc/network/interfaces:
auto eth0
iface eth0 inet static
address 192.168.0.3
netmask 255.255.255.0
gateway 192.168.0.1
  • impostare un name resolver (DNS), modificando il file /etc/resolv.conf
  • installare un server SSH, per amministrare comodamente il media box dal proprio pc: pacchetto openssh-server (e pacchetto openssh-client sul client);
  • seguire la procedura per l'autologin via SSH, troppo comoda;
  • installare il server VNC: pacchetto x11vnc; si lancia quando serve con il comando x11vnc -display :0
  • installare driver nVidia, per questo vecchio modello bisogna scaricare la versione 96.43.05, e rimuovere il supporto glx da xorg.conf;
  • sistemare una fastidiosa cornicetta blu attorno ai filmati con il comando 'xvattr -a XV_COLORKEY -v 0'
  • attivare l'autologin;
  • attivare il supporto al Network Time Protocol;
  • attivare la soundblaster: è una scheda vecchia e le distribuzioni moderne non la configurano automaticamente: bisogna inserire in /etc/modules la voce 'sb16';
  • rimuovere il gracchiare della scheda audio giocando con i valori del mixer; ho risolto con aumix -L /etc/aumixrc
  • installare la condivisione samba
  • intallare e configurare mldonkey
  • rimuovere paccheti inutili, font, printing (sarebbe interessante avere però una stampante di rete)
  • attivare l'acpi con la stringa acpi=force nella riga che lancia il kernel in /boot/grub/menu.lst
  • entrare direttamente in modo grafico andando a lanciare xinit nel file /etc/event.d/tty1

La ricerca del software da media box mi ha fatto optare prima per Elisa (bello, ma un po' lento), poi per Freevo, leggermente più performante e dotato anche della possibilità di videoregistrare, assente in Elisa.

domenica 23 novembre 2008

Linux Media Center: le funzionalità

Sono convinto che la tecnologia di oggi possa fare molte più cose di quanto ci offra il mercato dei media box. Un mini-pc da pochi soldi con porta ethernet e uscita tv può fornire una soluzione completa di intrattenimento domestico, se è fornito poi anche l'ingresso tv per la registrazione siamo a cavallo. Il problema è che configurazioni di questo tipo se ne trovano poche in giro di e si fa prima ad assemblarsene uno a mano.

Un media center come si deve dovrebbe avere le seguenti caratteristiche (in ordine di importanza):
  • uscita TV: elemento fondamentale per la connessione con la tv da salotto, non voglio nemmeno prendere in considerazione la visione dei film sul monitor del PC o sul portatile (anche se sdraiati sul letto con il portatile in panza è abbastanza sfizioso).
  • telecomando: senza il quale dovremmo accedere con una tastiera/mouse bluetooth (funzionerebbe sicuramente, ma sarebbe piuttosto ingombrante!)
  • porta ethernet: con doppio funzionamento: può andare su internet a scaricare i contenuti (audio, video, meteo, guida TV), ma utile anche nella intranet per connettersi al mediabox e accedere ai suoi contenuti, per cancellare, rinominare, configurare, recuperare, ecc.
  • ingresso TV: fondamentale se si vogliono registrare video da fonti esterne, come decoder satellitare/terrestre, input da un lettore DVD, videocamera, ecc.
  • porte USB: possibilità di collegare memorie esterne (dischi, penne) per visualizzarne i contenuti (e magari scriverceli pure)
  • server stampante/fax/fotocopiatrice/macchinetta del caffé...ma sto divagando...
Altre funzioni più in dettaglio, potrebbero essere le seguenti:
  • Visualizzazione di stream video, come le partite sui canali tv internet, o da youtube (chi ha detto youporn? :), o ancora meglio, le demo da demoscene.tv!
  • Ascolto di stazioni radio, sia italiane che internazionali
  • decoder digitale satellitare o terrestre
  • Videogiochi
  • client peer-to-peer sempre acceso
  • server NAS

domenica 14 settembre 2008

Quest for best audio player

Nella mia infinita ricerca per il player definitivo per linux, sto accumulando esperienze ed impressioni dei vari player.

Rhythmbox: il player di default mi è piaciuto subito, ma poi mi sono scontrato con un paio di imperfezioni (UI non molto precisa, se non suona non sai perchè) ed un grave bug che affliggeva una versione di gstreamer.

Songbird: lo sto per abbandonare: il fatto che non si riescano a cancellare dei file dalla UI mi irrita alquanto.

Audacious: lo sto per provare adesso...ha anche il supporto per last.fm che giudico fondamentale.

Configurazione di mldonkey



Dopo aver installato mldonley, bisogna notare che viene installato un file nella directory /etc/init.d dal nome mldonkey-server, il quale lancia il servizio mlnet come utente mldonkey creato appositamente durante l'installazione.

I file di mldonkey si trovano quindi nella cartella /var/lib/mldonkey, inclusi i file scaricati che si trovano in incoming/ e i file temporanei in temp/. Questo è piuttosto scomodo, per cui si consiglia di creare dei link simbolici in posizioni più comode come ad esempio Documenti/scaricati.

Da evitare quindi il lancio del servizio mlnet da utente normale/root, poichè si avrebbero 2 istanze attive contemporaneamente, oltretutto con file di configurazione e file in scaricamento differenti.

La configurazione procede manualmente effettuando i seguenti passaggi:

Modifica della password di amministrazione

Entrare in modalità configurazione con il comando
telnet 127.0.0.1 4000
(se questo comando non funziona, è perché è stato appena installato, bisogna riavviare la macchina attendere un minuto che torni su il servizio)
accedere come amministratore con il comando
auth admin ""
cambiare password con il comando:
passwd "nuova password"
si consiglia di inserire la stessa password con cui si accede alla propria rete wifi: non è facilissimo resettare la password di mldonkey per cui è necessario non dimenticarsela.

Attivare l'accesso a mldonkey dalla lan locale
set allowed_ips "127.0.0.1 192.168.0.255"
Per bloccare mldonkey eseguire il seguente comando (da verificare):
sudo -u mldonkey /etc/init.d/mldonkey-server stop

Utili consigli per ricompilare mldonkey e importare i download da a/emule, qui.

Configurazione del router

Per sapere quali porte aprire, consultare nel log di mldonkey, le voci che riportano "using port...", oppure, ancora più comodo, usare il comando "portinfo" da telnet.

I comandi possono anche essere invocati direttamente da sancho, nella tab Console.

Il comando portinfo ad esempio fornisce la seguente lista:

    --Portinfo--
Network   |  Port|Type
----------+------+-------------------
BitTorrent|  6882|client_port TCP
BitTorrent|  6881|tracker_port TCP
BitTorrent|  2844|dht_port UDP
Core      |  4080|http_port
Core      |  4000|telnet_port
Core      |  4001|gui_port
Donkey    | 11215|client_port TCP
Donkey    | 11219|client_port UDP


Per verificare la correttezza della configurazione delle porte sul router, si usa il comando id e si verifica se sui server connessi siamo con Id Alto (HighID) oppure no:

For 91.200.42.119:9939 (eMule Security No3) --->   87.20.226.181 (HighID)
For 91.200.42.47:3883 (eMule Security No2) --->   87.20.226.181 (HighID)
For 195.154.109.229:4232 (!! www.Sharing-Devils.org No.1 !!) --->   87.20.226.181 (HighID)
For 212.83.184.152:7111 (PeerBooter) --->   87.20.226.181 (HighID)


Recuperare i download da una installazione all'altra

I file da tenere sono quelli che iniziano con "urn_ed2k_" nella cartella /var/lib/mldonkey/temp, il file di configurazione dei download è il files.ini, da sovrascrivere a quello originale nella cartella /var/lib/mldonkey/.

Configurazione della GUI

Scaricare ed installare sancho, installare la lingua italiana.

Tentativo di configurazione Webcam Spycam 100


Nel tentativo di configurare la webcam in questione, la prima prova da fare è andare al sito del produttore per vedere se è supportata o presente un driver linux: niente da fare (qui i driver per windows).

All'immissione della webcam usb, ubuntu riconosce qualcosa, poichè spunta la seguente schermata:

Il comando dmesg riporta le seguenti informazioni:
usb 4-1: new full speed USB device using uhci_hcd and address 2
usb 4-1: configuration #1 chosen from 1 choice
Linux video capture interface: v2.00
/build/buildd/linux-2.6.24/drivers/media/video/stv680.c: [stv680_probe:1425] STV(i): STV0680 camera found.
/build/buildd/linux-2.6.24/drivers/media/video/stv680.c: [stv680_probe:1465] STV(i): registered new video device: video0
usbcore: registered new interface driver stv680
/build/buildd/linux-2.6.24/drivers/media/video/stv680.c: [usb_stv680_init:1546] STV(i): usb camera driver version v0.25 registering
/build/buildd/linux-2.6.24/drivers/media/video/stv680.c: STV0680 USB Camera Driver v0.25
/build/buildd/linux-2.6.24/drivers/media/video/stv680.c: [stv_init:374] STV(i): CIF is supported
/build/buildd/linux-2.6.24/drivers/media/video/stv680.c: [stv_init:392] STV(i): Camera has 0 pictures.
Si nota che:

* linux sembra riconoscere correttamente la webcam;
* il chipset riconosciuto è il STV0680;
* è riconosciuto il Common Intermediate Format.

Ho provato a vedere se il programma cheese riesce a comunicare con la webcam, ma niente da fare.

Dopo un paio di riavvii si è messa a funzionare...volevo catturare con cheese la schermata che da di default quando non è attaccato nulla, quando, sorpresa!, ha funzionato!

Questa è una foto di prova...


da notare che inverte i colori: lo sfondo normale è questo qui, e l'effetto curioso che la seconda iterazione (ho fotografato l'output di cheese stesso) mostra invece i colori corretti.

Ho provato con l'applicazione camorama, che sembra meglio di cheese solo per quanto riguarda i controlli sull'immagine (anche se ho visto che funziona solo il controllo Luminosità). Sulla pagina about di camorama leggo che sfrutta video4linux. Lanciando il gestore di pacchetti synaptic e ricercando la stringa "v4l" escono fuori un paio di applicazioni interessanti:
  1. dov4l
  2. v4l-conf
che promettono ambedue di configurare le impostazioni dei dispositivi v4l.

Li installo entrambi, poi noto che non installano nessuna applicazione nel menù di gnome, quindi bisogna esplorare le proprietà del pacchetto installato di synaptic.

Del secondo pacchetto noto l'applicazione v4l-info, che lanciata fornisce il seguente output:
### video4linux device info [/dev/video0] ###
general info
VIDIOCGCAP
name : "STV0680"
type : 0x1 [CAPTURE]
channels : 1
audios : 0
maxwidth : 352
maxheight : 288
minwidth : 176
minheight : 144

channels
VIDIOCGCHAN(0)
channel : 0
name : "STV Camera"
tuners : 0
flags : 0x0 []
type : CAMERA
norm : 0

tuner
ioctl VIDIOCGTUNER: Invalid argument

audio
ioctl VIDIOCGAUDIO: Invalid argument

picture
VIDIOCGPICT
brightness : 32767
hue : 32767
colour : 32767
contrast : 32767
whiteness : 0
depth : 24
palette : RGB24

buffer
VIDIOCGFBUF
base : (nil)
height : 0
width : 0
depth : 0
bytesperline : 0

window
VIDIOCGWIN
x : 0
y : 0
width : 352
height : 288
chromakey : 0
flags : 0
Ho provato a modificare i parametri hue, color da linea di comando, ma non sembra applicarli.

Per quanto riguarda lo scattare le foto, il dispositivo prevede 5 modalità di funzionamento:
  1. Hr: High Resolution
  2. Ct: Video clip
  3. Cl: Clear all
  4. St: Self-timer
  5. Lr: Low resolution
si passa da una modalità all'altra premendo il tasto grigio, e si attiva mediante il bottone lilla.

Se l'illuminazione per una foto è scarsa, la webcam protesta con un rumore basso, altrimenti il rumore è più squillante ed il contatore delle foto rimaste decrementa di uno.

Il problema è quando si tenta di importare le foto: f-spot crasha miseramente. Inoltre, staccando e ricollegando la webcam i contatori delle foto si resettano, come se le perdesse tutte: forse con un paio di batterie dentro è meglio.

UPDATE del 11-04-2009

Non so cosa ho fatto l'altra volta per farla funzionare, ma adesso la schermata che mi da cheese è la seguente:
strano, perchè /dev/video0 viene anche creata...

sabato 19 gennaio 2008

Sessione di configurazione a vuoto...

Dal sito elart è disponibile una pagina di utili consigli per ottimizzare ubuntu. Ho provato a seguirli uno per uno, per vedere l'impatto di ciascuna singola modifica sul sitema.

Risultato finale...un vero disastro!

La premessa: ho preso i tempi di avvio della macchina come test per la velocità, così come una pagina di test per misurare la velocità di rete.

Valori iniziali:
  • dall'avvio al prompt dell'utente: 30"
  • dall'invio della password all'apertura di un file di testo posto sul desktop: 30"
  • pagina di test di rete: ~ 1000ms

Cominciamo dall'inizio:

  • Disabilitare l'IPv6:
pagina di test: ~ 900ms, guadagno di un decimo di secondo

  • Abilitare l'esecuzione concorrente dei processi di avvio:
il sistema carica, ma da problemi di HAL (rimosso)

  • Disabilitamo i caratteri orientali in Firefox
non vedo miglioramenti di sorta, ma lo lascio perchè non ho interesse a visualizzare pagine con caratteri non latini


  • Installiamo preload:
  • Velocizziamo il caricamento dei programmi tramite prelink:
non installati: non mi va di aggiungere tempi di attesa all'avvio

  • Ottimizziamo l'uso della RAM
ho 2 giga di ram e la swap non mi viene mai usata...

  • Installare un kernel a bassa latenza (serve solo a chi usa Ubuntu per comporre musica)
non provato...ne varrà la pena?

  • Modificare il file host
non effettuato: il file è leggermente diverso, è più o meno già così

  • Ottimizziamo i parametri del disco rigido di tipo ATA/IDE non serve con dischi riconosciuti come sdx
dischi riconosiuti come sdx....ho provato ad installare sdparm, ma la lista delle opzioni sembra piuttosto complicata...

  • Ottimizziamo ulteriormente l'accesso al disco su partizioni ext3
fatto: non si vedono miglioramenti nelle prestazioni (ma l'ho lasciato)

  • Ottimizzare/riottimizzare il processo di boot (avvio)
fatto: non si vedono miglioramenti nelle prestazioni (?)


ho fatto altre modifiche, tipo mettere noatime, nodiratime nel file /etc/fstab, ma niente di che:


>sudo hdparm -Tt /dev/sda6
 Timing cached reads:   1928 MB in  2.00 seconds = 964.29 MB/sec
 Timing buffered disk reads:  118 MB in  3.05 seconds =  38.70 MB/sec


>...con noatime

 Timing cached reads:   2010 MB in  2.00 seconds = 1005.74 MB/sec
 Timing buffered disk reads:  116 MB in  3.01 seconds =  38.57 MB/sec

>...con nodirtime
 Timing cached reads:   2022 MB in  2.00 seconds = 1011.18 MB/sec
 Timing buffered disk reads:  116 MB in  3.01 seconds =  38.59 MB/sec


>...attivando data=writeback

 Timing cached reads:   1940 MB in  2.00 seconds = 970.61 MB/sec
 Timing buffered disk reads:  118 MB in  3.05 seconds =  38.67 MB/sec


Conclusioni:
è stata una perdita di tempo netta, me lo scrivo qui in modo che la prossima volta che mi viene l'impulso di ottimizzare il sistema, ci penso 1000 volte!

mercoledì 12 dicembre 2007

Installazione di una fotocamera Waitec Caddy 22

Dopo aver sottratto con l'inganno alla fidanzata questa vecchia macchinetta fotografica digitale:
una vecchia Caddy 22 della Waitec, ho provato a collegarla alla Gutsy.

Come per magia, il sistema reagisce di conseguenza e mostra questa schermata:
Cliccando su 'Importa foto', appare questa finestra che visualizza come il sistema l'abbia riconosciuta come una D-Link DSC 350F:
Probabilmente il chipset contenuto nella macchina fotografica è quello identificato dalla mia Gutsy.

Da questa schermata si vede inoltre un esempio dell'uso della razionalizzazione della cartella dei documenti: tutte le immagini scaricate verranno sistemate nella cartella Immagini.

Un altro commento da fare riguarda il formato delle foto: PPM che sta per Portable PixMap, un formato per le immagini descritto qui e qua nella wikipedia.

Devo dire che lo scaricamento foto funziona egregiamente, e la loro conversione in formati più umani la si può ottenere con gimp (anche se sarebbe più opportuno che avvenisse automaticamente).

Volevo attivare, se possibile, una funzione webcam, cioè la ripresa diretta dell'immagine della fotocamera, ma dopo una ricerca su internet mi sembra di aver capito che non è possibile.

Nella ricerca ho installato i pacchetti gphoto e gtkam, ma servono solo per le foto e li ho quindi rimossi; per la cronaca, il comando gphoto2 -a ha fornito le seguenti informazioni:
Capacità della fotocamera : D-Link DSC 350F
Supporto alla porta seriale : sì
Supporto USB : sì
Scelte di cattura :
: Immagine
Supporto per la configurazione : no
Cancella file selezionati su fotocamera: sì
Cancella tutti i file su fotocamera: no
Supporto per l'anteprima dei file: sì
Caricamento file su fotocamera : no
tra le scelte di cattura, vedo solo Immagine, quindi deduco che non sia presente la funzionalità di webcam.

Durante queste ricerche, ho provato ad installare questo driver, ma con scarsi risultati.

sabato 24 novembre 2007

Return to Innocence

Con il rilascio di Ubuntu 7.10, e dopo aver letto tanto su linux a 64 bit, ne ho approfittato ed ho installato la versione _AMD64. Mi ha (facilmente) convinto il discorso di possedere potente hw a disposizione e di non usarlo appieno altrimenti; inoltre, mi ha irritato il tanto discutere dell'affidabilità e dei (presunti) problemi della versione a 64 bit: dovevo toccare con mano.

In quest'ottica, ho ordinato il CD dall'ottimo servizio ShipIt, che ha portato il CD a casa mia il 14 novembre, circa 1 mese dopo l'uscita della 7.10.

Infilo il cd live, e dopo circa 4 minuti ho finalmente la schermata del desktop operativa.

4 minuti mi sembrano tanti, ma questo è il problema di tutte le distribuzioni live, così come la generale lentezza per il fatto di accedere continuamente al CD anche per navigare nei menù. E' positivo il fatto di mostrare a chiunque un sistema con linux funzionante, ma da l'impressione che linux stesso sia lento come una lumaca.

In ogni caso, selezionando l'icona Install, parte l'installazione, ma si presenta quasi subito un problema: l'installer non mi vede le 5 partizioni già presenti. 4 partizioni erano già presenti all'acquisto del portatile, la 5a l'ho creata io installando feisty ad aprile; la mia intenzione era di installare gutsy su feisty e finirla lì.

Invece, come capitato anche ad altri, gparted ha dei problemi a leggere le partizioni speciali DELL e vede il disco come se fosse vuoto.

Che fare? Alla fine decido di azzardare, cancello la tabella delle partizioni e preparo il disco da 120GB in questo modo:
  • 40GB per Vista
  • 78GB per Linux
  • 2GB come area di swap
Immetto il cd di Vista fornito da DELL, seleziono la partizione ed installo il sistema operativo. Dopo circa 1 ora e 30' il sistema è perfettamente funzionante, aggiornato (nel frattempo si è connesso alla rete wi-fi ed ha scaricato gli update) e, cosa più importante, privo delle miriadi di applicazioni trial e bloatware che appesantivano il PC prima della formattazione!! A saperlo prima...

Passo al cd di Ubuntu, anche qui l'installazione fila liscia come l'olio, c'è da dire che richiede le stesse informazioni di Vista, fa le stesse operazioni di aggiornamento via wireless, il tutto in metà tempo (45 minuti)

Risultato finale:
  • Vista che va una bellezza
  • HD occupato in pieno (anche se mi sa che qualcosa è rimasto nascosto per bene)
  • Gutsy Gibbon a 64 bit è eccezzionale. Molto + "responsivo" di Feisty a 32!!

C=64 su N=70

L'idea di far girare giochi del vecchio Commodore 64 sul cellulare è veramente allettante, perchè coniuga il piacere di rivivere vecchie emozioni ed il gusto di averle a portata di mano sul proprio dispositivo portatile.

A tal proposito esiste il progetto frodo, ospitato su sourceforge, che permette di eseguire i giochi in formato .d64 o .t64 su vari dispositivi, tra cui i cellulari con sistema Symbian.

L'ho installato sotto Vista, con il software ufficiale PC-Suite, ma ho letto che è possibile installare i .sis anche sotto linux; prima o poi lo devo provare.

Una volta riavviato il cell, l'applicazione si trova come al solito alla voce preferiti.

Ho installato il gioco Bruce Lee, disponibile qui, e dopo averci giocato un po' ho riscontrato i seguenti problemi:
  • Lancio dell'immagine .d64 non documentato: bisogna copiare l'immagine nella cartella documents/e32frodo
  • La musica dello scrolling va a scatti
  • Gestione complessa della tastiera
  • Lo schermo risulta schiacciato, magari era meglio in orizzontale...
  • Colori errati
Insomma un progetto completamente inutile, per quanto è apprezzato lo sforzo del programmatore nel creare questo simpatico hack.

Automatizzazione delle operazioni


L'attività di smanettamento e configurazione della mia linux box avviene quotidianamente; la possibilità di ricercare soluzioni e configurazioni ottimali del sistema in maniera approfondita e l'opportunità di poter accedere ad ogni aspetto del sistema è il motivo che mi fa preferire Linux a Windows.

Per evitare che questa attività risulti in una completa perdita di tempo, conviene salvare le informazioni e le soluzioni trovate da qualche parte per poterle poi ritrovare e riutilizzare in seguito.

Una volta trovata la configurazione giusta, sarebbe opportuno creare uno script per poter replicare la configurazione su un'altra installazione.

Ad esempio, sarebbe comodo uno script per l'attivazione dei tasti laterali del mouse, come descritto in questo post.

I passi per ottenere la configurazione indicata nel suddetto post sono: la modifica del file xorg.conf, l'installazione di un pacchetto (imwheel) e la configurazione dello stesso.

Si potrebbe fare uno script che per la modifica usa il comando sed, per l'installazione apt e per la configurazione sempre sed o echo "riga-da-aggiungere" >> file-di-configurazione.

Un'altro metodo a cui stavo pensando prevede la creazione di un pacchetto .deb; ho sbirciato il formato del .deb e mi sembra che contenga tutto quello che serve:
  • meta-informazioni del pacchetto
  • controllo delle dipendenze: ad esempio la configurare dei tasti laterali richiede il pacchetto imwheel
  • preint e postint: script lanciati automaticamente prima e dopo l'installazione del .deb: utili per preparare e configurare il sistema; nel nostro caso potrebbe essere utile verificare la presenza del dev nel preint, e di aggiornare imwheel.conf nel postint.

In quest'ottica, sarebbe utile analizzare le soluzioni attuali per la creazione di un pacchetto .deb, ed in caso non siano soddisfacenti, di crearne una personalizzata.