domenica 7 febbraio 2010

Se funziona solo Google

Me lo segno qui perché oggi pomeriggio sono impazzito su questa cosa; avoglia ad impostare i DNS di OpenDNS:
  • 208.67.222.222
  • 208.67.220.220
o di google:
  • 8.8.8.8
  • 8.8.4.4
Ricordarsi di mettere user e password corretti nel modem ADSL: in caso contrario, alcuni provider ti fanno andare solo su google e sulle loro homepage.

Alice contro il vento

Nella mia necessità di un modem adsl con filo, sono riuscito a recuperare un vecchio modem Alice Gigaset della Siemens.

Connesso al pc via cavo ethernet, il modem correttamente assegna al pc un indirizzo ip mediante DHCP. Connettendosi con il browser al modem, una schermata ci mostra lo stato del modem, ma non si vede da nessuna parte la possibilità di configurare il modem, come ad esempio il nome e la password, o altri parametri importati (VCI, MUX, PPPoATM o PPPoE, ecc).

Dopo una breve ricerca su internet, una paginetta ben fatta mostra come rendere questo modem perfettamente configurabile e funzionante per tutti i provider. Riporto qui brevemente che bisogna connettersi all'URL http://192.168.1.1/upload.html e scaricare il firmware che si trova nella paginetta di cui sopra.

Seguite le istruzioni, all'indirizzo del modem appare finalmente una interfaccia grafica con tutte le funzionalità di configurazione disponibili, quindi basta inserire i parametri del nostro providet, et voilà, il modem si connette senza colpo ferire!

Il modem è indicato supportare solo la tecnologia ADSL, ma funziona anche su linee ADSL 2+.

Aggiornamenti ubuntu - 2

Fermo restando quanto detto nel post precedente, mi trovo costretto a diffidare ulteriormente degli aggiornamenti automatici.

L'altro giorno, come al solito, ho aggiornato il mio sistema. Alla fine dell'aggiornamento, però, un messaggio abbastanza preoccupante riportava un errore nell'aggiornamento di FUSE.

Al successivo riavvio, il pc si è bloccato dopo il logo ubuntu con un messaggio di errore relativo all'assenza di un file nella cartella script (non ricordo bene il testo, l'ho inserito come ricerca in google ma non sto ritrovando la cronologia...); ovviamente su google nessuno ha avuto il mio problema...

Fortunatamente il sistema si avviava con il kernel precedente, anche se i driver video Nvidia non venivano caricati per cui l'unica risoluzione video possibile era 800 x 600.

Ho effettuato un po' di tentativi, ma alla fine sono riuscito a risolvere il problema.

Tra i tentativi andati a vuoto:
  • da linea di comando: sudo apt-get install --fix-broken
  • sudo dpkg -- configure -a
  • sudo apt-get remove/install ubuntu-desktop
  • da synaptic: reinstallazione del kernel difettoso
Tra i tentativi che avrei provato:
  • da synaptic: rimozione di tutta la linea del kernel non funzionante
Tentativo andato a buon fine:
  • attivato per default da grub il kernel funzionante
  • reinstallato con envy il driver della scheda video
ora il sistema funziona!!

Maledizione!

Aggiornamenti ubuntu - 1

E' buon uso nell'informatica tenere sempre ben aggiornato un sistema, nell'ottica di essere protetto da eventuali bachi nel software che compromettono la stabilità e la sicurezza del sistema stesso.

Così come windows, le migliori distribuzioni linux offrono un comodo sistema di aggiornamento automatico, che permette di avere un sistema sicuro anche a chi di pc ne capisce poco.
Tutto questo è molto bello e funziona alla perfezione fintantoché si installano solo le applicazioni presenti nei repository ufficiali.

Mi sono capitati almeno due casi in cui l'aggiornamento ha reso inservibili dei software che avevo installato (magari con qualche difficoltà):
Entrambi questi software si installano compilando porzioni di codice rispetto alla versione di kernel attuale, per cui se si cambia versione del kernel (e con gli update questo può capitare 3-5 volte l'anno), tali software smettono di funzionare.

Se per vmware la cosa si risolve perdendo un po' di tempo a rieffettuare l'installazione, per i driver della penna DVB bisogna ingegnerarsi un po', perchè la procedura che mi ero salvato non funziona più: non sono più presenti dei sorgenti necessari che avevo trovato con tanta fatica e va cercato chissà dove un altro sistema per farla funzionare.

Morale della faccenda, tra un update del kernel e l'altro, è di fondamentale importanza verificare che le applicazioni compilate funzionino ancora. Se non funzionano si è costretti a ricompilare o, come nel mio caso, ad usare il kernel vecchio.

sabato 30 gennaio 2010

Thumbnail

Per la generazione automatica di mini-immagini significative da una collezione di film, ci viene in aiuto il comodo mplayer, mediante il seguente comando:
mplayer test.mpeg -ss 22 -nosound -vo jpeg
-frames 1
Questo comando crea, a partire dal file test.mpg, 22esimo secondo, un file chiamato "00000001.jpg" contenente uno screenshot del filmato.

Nel progetto di un media center, questo risulta utile per visualizzare, di fianco alla lista, uno screenshot del film selezionato in quel momento:
  • Il sistema cerca il file film.jpg nella cartella nascosta .cache/
  • se lo trova lo visualizza nel riquadro
  • se non lo trova lo genera con il comando sopra, lo salva nella cartella nascosta con il nome del film e lo visualizza

domenica 18 ottobre 2009

Virtualizzare, oggi


Volendo portarmi appresso una chiavetta USB con su l'immagine virtuale di un'installazione di un linux da condividere tra casa e lavoro, stavo sperimentando le varie soluzioni di virtualizzazione presenti in giro.

Poichè a casa ho ubuntu, mentre in ufficio Windows XP, mi sono concentrato sulle due soluzioni multi-piattaforma: VirtualBox e VmWare.

A livello di sensazione, Virtual Box mi sta molto più simpatico, per cui ho iniziato con questo. Dopo averlo usato un po' posso elencare vantaggi e svantaggi:

Pro:
  • E' presente nei repository di ubuntu per cui si installa molto facilmente.
  • La creazione e l'esecuzione di una macchina virtuale è molto semplice.
  • Sicuramente usa l'estensione VT del mio processore.
Contro:
  • La procedura per spostare la macchina virtuale da un pc all'altro è abbastanza ostica: non è possibile copiare semplicemente un file o una cartella ma bisogna lanciare un comando da shell, poi aggiornare un file xml etc etc.
Ho provato ultimamente VmWare, e come prime impressioni posso dire che:

Pro:

  • Copia della macchina virtuale molto semplice: basta copiare il contenuto della directory che la contiene ed eseguirla su di un altro pc.
Contro:
  • L'installazione è un po' particolare, bisogna prima installarsi la versione server, che serve per creare una macchina virtuale, e poi si installa il player che effettivamente la esegue.
  • Il player non fa uso dell'estensione VT.

Procedura di installazione di VmWare

Mi appunto qui la sequenza delle operazioni necessarie all'installazione, creazione ed esecuzione di una macchina virtuale usando le soluzioni free di VmWare:
  1. Installare il server, password nella mail usata per la registrazione, segnarsi il numero di serie
  2. modificare /etc/vmware/hostd/authorization.xml
  3. Scaricare il player.

domenica 27 settembre 2009

Atlantide Media Center: Video Streaming

Gli utlimi aggiornamenti riguardo al media center scritto in python sono:
  • ho contattato il creatore dell'immagine che inizialmente avevo impostato come sfondo, per sapere se potevo usarla in via 'ufficiale'. L'autore, gentilissimo e bravissimo, mi ha risposto che i diritti di quell'immagine sono già venduti (buon per lui). Dopo una infruttuosa ricerca su internet, ho deciso di farmene una da me. Con Gimp ho quindi creato questo sfondo, che mi sembra adeguato.
  • ho attivato la visualizzazione del canale demoscene.tv alla tv! Da shell bisogna lanciare il seguente comando:
    mplayer -vc vp6 -framedrop -fs http://91.121.4.152:PORTA
    se PORTA = 8000: streaming in alta risoluzione (qui da me spesso si blocca)
    se PORTA = 8074: streaming in bassa risoluzione (meglio)
    se PORTA = 8072: streaming in bassa risoluzione del canale OldSchool! Amiga rulez! :)
  • ho impostato i movimenti all'interno del menù mediante i bottoni del mouse con il seguente codice:
    if event.type == MOUSEBUTTONDOWN:
    #sx
    if event.button == 1:
    command = lCurrentMenu[iItemSelected][1]
    globals()[command]()
    #cx
    #elif event.button == 2:
    #dx
    elif event.button == 3:
    sys.exit(0)
    #su
    elif event.button == 4:
    iItemSelected -= 1
    #giu
    elif event.button == 5:
    iItemSelected += 1

lunedì 27 luglio 2009

Problemi di mldonkey

E' già la terza volta che il servizio mldonkey del media-center non parte più.

La prima volta ho reinstallato il pacchetto e sono riuscito a ripristinare i download recuperando i file che iniziano con "urn_ed2k_" nella cartella /var/lib/mldonkey/temp e il vecchio file di configurazione files.ini.

Dopo di chè ho creato un back-up archivio della cartella /var/lib/mldonkey.

La seconda volta che si è bloccato, ho ripristinato l'archivio vecchio, e recuperato il file files.ini; la cartella /var/lib/mldonkey/temp è un link simbolico, da ripristinare.

La terza volta, il file files.ini era corrotto, ma ho recuperato quello che viene automaticamente backuppato ad ogni lancio del server, situato nella sottocartella old_config/.

Sarà forse il caso di rendere un po' più robusta la gestione dei file di configurazione?

E' anche vero che la versione installata nel media box è la 2.9.5, mentre l'ultima ad oggi è la 3.0.0., che magari risolve il problema. Potrei provare a sostituire il binario mlnet contenuto nella cartella /usr/bin (da fare).

mercoledì 22 luglio 2009

Super penna! (usb)

Ho una penna usb bella spaziosa (16GB), e mi stavo giustappunto chiedendo come sfruttarla bene.

Mi piacerebbe avere una partizione con un linux permanente installato, una swap se serve, e il resto dello spazio vfat o ntfs per l'accesso da macchine win come normale penna usb.

Un primo tentativo: ho partizionato la penna in questo modo:
Dispositivo Boot Start End Blocks Id System
/dev/sdb1 * 1 9538 2441712 83 Linux
/dev/sdb2 9539 62111 13458672+ 5 Esteso
/dev/sdb5 9539 11492 500208 82 Linux swap / Solaris
/dev/sdb6 11493 62111 12958448 c W95 FAT32 (LBA)
ed installato un linux mediante l'utility usb-creator, ma non è andato a buon fine:
  1. senza la penna inserita all'avvio non si boota più il pc!!
  2. la penna non è letta da windows (nemmeno la partizione fat32...forse perchè estesa?)
  3. la penna non boota
per risolvere il primo grave punto, ho dovuto avviare il pc con la penna, ed entrare nel sistema insstallato; poi ho smontato la penna e reinstallato grub con il comando grub-install /dev/sda (sda=partizione locale).

Per risolvere il punto 2 pensavo di mettere la partizione fat32 nella primaria, ed installare linux nell'estesa, istruendo grub dove andare a prendersi i file di boot.

Per quanto riguarda il punto 3, il manuale del GRUB potrebbe essermi d'aiuto, sopratutto le istruzioni per installare grub manualmente.

Una procedura per rendere avviabile la penna usb è con syslinux: il comando syslinux /dev/sdb1 dovrebbe fare al nostro caso; il problema è che alcune penne non bootano con alcuni sistemi per misteriosi motivi di incompatibilità, per cui spesso una penna che pare non bootare in realtà potrebbe funzionare su un altro pc.

C'è anche da dire che l'utility di creazione di dischi di avvio di default per ubuntu ogni tanto sembra fallire (avviando da penna il menù di selezione rimane quello dell'iso precedente) e non riconosce le iso non ubuntu (?)

Un programma da tenere in considerazione è Plop, un boot manager che potrebbe aiutare all'avvio da usb.

domenica 12 luglio 2009

Sessione di VNC con x11vnc

Alcune volte sorge la necessità di accedere da remoto al media box in modalità grafica.
In questo caso ci viene in aiuto programma x11vnc, che implementa un server vnc.
Si installa il pacchetto omonimo, e si esegue con il comando (via ssh):
x11vnc -display :0
Non lo metto in esecuzione automatica, perchè non mi serve automaticamente, ma solo saltuariamente.

Per la visualizzazione, lanciare dal client il programma "Visualizzatore di desktop remoti" nel menù Internet.

Apt/dpackage da linea di comando

Ci sono occasioni (tipo la gestione del media box via ssh) in cui risulta comodo o necessario accedere alla lista di pacchetti installati/installabili senza l'ausilio di interfaccie grafiche (synaptic in primis). Ecco quindi una breve lista di comandi da terminale utili all'uopo:
  • lista di pacchetti installati: dpkg -l
  • lista di pacchetti installabili: less /var/lib/dpkg/available
  • ricerca di una stringa all'interno dei pacchetti: apt-cache search "stringa"
  • ricerca di un file all'interno dei pacchetti: dpkg -S "file"
  • lista di file installati da un pacchetto: dpkg-query -L

martedì 7 luglio 2009

Caratteri Unicode comodamente disponibili


Uno degli elementi più utili da aggiungere al pannello di gnome è sicuramente la Tavolozza Caratteri.

Questo breve post per indicare quali simboli mi sono più utili:
«»·~→ª✓
ÀÈÌÒÙ
Altri simboli si possono aggiungere sfruttando una comoda utility raggiungibile dal menù Applicazioni→Accessori→Tabella caratteri, o ancora meglio, inserita nella barra di menù di Gnome (il nome è Tavolozza caratteri):


In alcuni casi nella tabella caratteri non si trova il simbolo che si vuole aggiungere, come ad esempio il "check mark" (✓) che ho aggiunto per ultimo, per cui è necessario andare su google e cercare "check mark unicode"; in questo modo si recupera con il copia-incolla il carattere richiesto.
Ricerche che riguardano le lettere ad apice o pedice si possono fare usando i termini "unicode superscript" o subscript.

Un buon sito dove cercare i caratteri unicode è il seguente:
http://unicode-table.com/en/

andando a spulcuiare nella tabella mostrata dal sito, si notano un'infinità di caratteri interessanti a partire dai codici:
(per cercare a partire da un codice: http://unicode-table.com/en/#codice)

2010: percento, punti interrogativi, punti per liste (‰, ‱, ⁈, ⁋, ⁍)
2100: caratteri matematici e fisici: omega, gradi, farheneit, frazioni, numeri romani (Ω, ℇ, ℃, ℉, ℕ, ℝ, ⅀, ⅗, Ⅷ)
2200: insiemistica (∉, ∩, , ≅)
2470: elenco numerato (⒄, ⒗, ⒦, Ⓦ)
2600: tempo, religione, oroscopo (☀, ☔, ☠, ☣, ☧, ,☪, ☭, ♎, ♕, ♤, )
2710: asterischi (✥, ✾, ❅, ❂)
3370: unità di misura (㎆, ㎉, ㎓, , ㎨)

e molto altro...

Un altro modo per ricercare caratteri unicode, è usare questo splendido tool che permette di disegnare con il mouse il carattere cercato, ed il sistema trova i caratteri unicode simili a quello disegnato. Utilissimo! Ulteriori informazioni su questo blog italiano.


sabato 4 luglio 2009

Un Mare Di Musica

A partire da un post su Ubuntu Forums, ecco una lista di possibili posti dove poter scaricare un sacco di musica interessante:
- Jamendo
- magnatune
http://www.ghacks.net/2005/12/03/free-music-list-december-2005/
-remix kwed org
netlabels
http://netlabels.org/
http://www.archive.org/details/netlabels
http://www.nettare.org/
http://www.eclassical.com/

streaming:
- shoutcast
- icecast

...

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.