oriolrius.cat

Des del 2000 compartiendo sobre…

Tag: linux

winmail.dat en linux

Reading time: 1 – 2 minutes

Més d’un cop he rebut un adjunt als correus que provenen d’usuaris d’Outlook, aquest adjunt del que ús parlo és el winmail.dat. Sovint els he fet re-enviar l’adjunt perquè això és un format que no podia obrir des del meu client de correu (MUA). Avui m’ha tornat ha passat però tenia molt d’interés en saber què hi havia dins d’aquell fitxer (winmail.dat) així que he trobat una eina per linux, el tnef, que em permet desempaquetar aquest format MIME (Multipurpose Internet Mail Extensions) propietat de Microsoft, concretament el format és el ms-tnef (Transport Neutral Encapsulation Format). Perquè ens fem una idea i fent un símil amb el món linux/unix vindria a ser un tar amb algunes funcions més sobretot orientades a incorporar informació RTF (Rich Text Format).

nova versió del devilspie

Reading time: 1 – 2 minutes

A finals del 2004 vaig parlar del devilspie una eina que em permet llençar les aplicacions als workspaces. Doncs bé la qüestió és que la nova versió del Devil’s pie ha canviat totalment el format de configuració i totes les configuracions que tenia montades per la versió antiga no m’han servit per res.

L’antiga sintaxis es basava en XML l’actual s’assembla més a un algoritme. Abans tot estava en un fitxer de configuració i ara s’han de crear fitxers amb l’extenció .ds dins el directori ~/.devilspie i dins podem veure coses com aquestes:

(if (contains (window_name) "Firefox") (set_workspace 4))

La configuració anterior envia el firefox a l’area de treball 4, un altre idea perquè quedi clar el senzill que és d’usar, carreguem l’asmn perquè estigui present a totes les arees de treball:

(if (contains (window_name) "aMSN") (pin))

Ara uns links cap als manuals de veritat:

error booting gentoo linux: populating /dev with device nodes…

Reading time: 2 – 2 minutes

Des d’ahir a la tarda que li dono voltes a un problema arrancant una gentoo que fa mesos que funcionava sense problemes. La qüestió és que de bones a primeres va començar a donar un problema i no continuava arracant. L’última informació que donava el /sbin/rc era un error a la línia 24 i just abans publicava aquesta informació: populating /dev with device nodes…. L’error era raríssim deia algo així com: /sbin/rc: line 24: cannot redirect standard input from /dev/null gentoo. Aquest línia del fitxer /sbin/rc diu el següent:

linia 23 - einfo " Populating /dev with device nodes..."
linia 24 - try tar -jxpf /lib/udev-state/devices.tar.bz2 -C /dev

Finalment la solució era tan senzilla com comentar la línia 24, fàcil… però complicat de trobar. La solució l’he trobat gràcies a una pàgina boníssima sobre com funciona el UDEV: Computer Help for the New and Veteran User for Linux: UDEV Setup. Realment recomano moltíssim la pàgina és boníssima.

Sobre el meu error jo entenc que el problema és que per algún problema d’incosistència del sistema de fitxers s’ha perdut l’inode que apuntava a devices.tar.bz2 que és una còpia dels fitxers de /dev. Llavors els tar de la línia 24 fallava i és clar no es podia descomprimir. Al comentar-lo l’inici segueix perfectament i els pròpi UDEV genera els fitxers de /dev dinàmicament a mesura que es van requerint.

liferea i beagle: ja no falta tant…

Reading time: 3 – 5 minutes

beagle-logo.png

Com molts sabeu com a lector de blogs uso el bloglines malgrat ser el lector més comode que he trobat, sota els meus gustos i costums, li trobo algún defecte. Els defectes que té són just els que supleix liferea, però és clar, aquesta aplicació per linux té just els defectes que són virtuts en bloglines. De què parlo, doncs que un -liferea- és un sistema ideal per centrelitzar la lectura de news en un PC i a més per autoindexar tot el que llegim gràcies a beagle i l’altre -bloglines- és una aplicació online perfecte. Pots llegir des de qualsevol lloc les teves sindicacions amb una comoditat i faclitat molt excepcionals. Així doncs, en pof i jo fa temps, quan vaig parlar per primer cop del liferea, varem comentar la possibilitat de que liferea aprofites l’API, pública, de bloglines per mantenir sincronitzada la lectura de blogs. Amb això guanyem que podem tenir més d’un client online/offline als nostres linux, o sigui liferea, sincronitzat amb el bloglines que ens permet quan estem en un PC no linux online, o des d’un linux que no es nostre online també continuar llegint els nostres feeds pendents.

Bé doncs tota aquesta paranoia, aviat serà possible ahir vaig anar a parar a la web del liferea i vaig veure que ja van per la versió 1.0.x, o sigui, que la cosa ha avançat força des de que jo parlava d’aquest software a la versió 0.6.0. La qüestió és que vaig entrar al fòrum de requests a veure si es deia alguna cosa sobre la idea de la que parlavem en pof i jo. Efectivament al forum de requests per noves versions es parla d’això i es comenta que a la versió 1.1.x ja s’inclourà aquest funcionalitat. Així doncs, ja no falta gaire. Per si sou uns curiosos i voleu veure la nota que he trobat sobre el tema:
[1356013] Add support to Sync with Bloglines Sync API
.

També aprofito per recomanar-vos que proveu el beagle, un buscador local fet en mono al més pur estil google search. Tot i que jo diria que beagle va veure la llum avanç que el google search. Malgrat la gentoo té paquets molt antics d’aquesta eina, molt lluny de la potència de les últimes versions. M’han encantat funcions d’indexació com:

  • Indexa feeds del liferea
  • Indexa converses del nostre IM
  • Indexa les pàgines web que visitem amb el firefox
  • Indexa tot el correu de l’evolution
  • Indexa tots els nostres documents d’openoffice, pdf, txt, m$ office, etc
  • Indexa les nostres fotografies, tot i que no entenc molt bé sota quin criteri fora del nom ho pot fer
  • etc

Realment una eina molt recomanble i jo diria que cada dia amb més potència, a més és molt interessant el sistema d’indexació que usa. Perquè deixa corrent un dimoni que va generant tasques a fer i que es van encuant i en funció de la carrega del sistema el dimoni usa més o menys recursos del sistema per indexar. A més aprofita funcions del kernel que l’avisen quan hi han variacions al sistema de fitxers perquè el dimoni pugui anar a indexar els canvis del sistema de fitxers.

Configurant OvisLink Evo-W54USB (rt2570) – WiFi USB dongle

Reading time: 3 – 4 minutes

ovislink-wifi-usb.jpg

No sé si heu intentat alguna vegada comprar un dongle USB amb Wifi i que funcioni amb Linux. Doncs realment no és cosa fàcil, quasi sense voler aquesta setmana n’he comprat dos es tracta concretament un dongle força petito compatible amb IEEE 802.11g, suport WPA, etc. Doncs bé, hi ha una web on s’esta desenvolupament el driver per les targetes wifi que disposen d’aquest chipset tan les USB com les PCI i les PCMCIA. En el nostre cas la que interessa és la USB, malgrat el chipset en si s’anomena rt2500 concretament el model USB usa el chipset 2570. A més potser el millor és el seu cost a preu de PVD m’ha costat 24€ (kinyo) però si mireu per les webs fraceses podreu veure que el preu de frança de PVP val 18€. És el bonic del nostre país.

Un cop aclarit això quan entreu a la web del projecte: rt2x00 Open Source Project ja sabeu quins drivers heu de descarregar. Potser heu sentit a parlar de que s’esta treballant en unificar tots els drivers de targetes wifi sobre uns mòduls base que implementin de la mateixa forma una serie d’interficies d’accés als dispositius. Amb això es preten que sigui més senzill desenvolupar software wifi que funcioni en totes les targetes de xarxa inal·lambriques per wifi. Cosa que ara mateix es complicat, degut a que cada desenvolupador ha tirat pel seu cantó. Així doncs, el que intento explicar és que s’esta treballant en que aquest driver també funcioni sobre aquesta base comuna. Malgrat això no he aconseguit fer-lo funcionar, compilava i es carregava correctament però després la targeta no acabava de funciona no detectava cap xarxa ni tan sols s’encenia l’únic LED que porta.

Així doncs, us recomano que descarregueu el paquet “Latest BETA rt2570 driver: v1.1.0-b1” de la secció de download de la web del driver opensource. Això m’ha funcionat perfecte amb un kernel 2.6.13.2 però no m’ha funcionat amb un kernel 2.6.14.2, per aquest he hagut de baixar el paquet “rt2x00 nightly CVS tarball: rt2x00-CVS”, concretament la nightly version del dia d’avui (3 de Febrer del 2006). Aquesta versió m’ha compilat sense problemes amb un kernel 2.6.14.2. Els passos per la instal·lació del driver ben senzills:

# tar xvfz rt2570-1.1.0-b1.tar.gz
# cd rt2570-1.1.0-b1/Module
# make
# make install

Això ens instal·la el següent mòdul rt2570.ko aquest al fer l’install es posa a /lib/modules/2.6.14.2/extra/rt2570.ko. Després com sempre fem un depmod -a i ja podem carregar el mòdul modprobe rt2570, un cop carregat el mòdul llavors el kernel ens torna el següent missatge (dmesg):

RT25usb  Driver version 1.0.0

Després d’això ja podem usar les típiques eines per configurar el nostre enllaç wifi amb linux: iwconfig, iwpriv, etc. un petit consell és que primer configureu la IP del dispositiu amb l’ifconfig i després els paràmetres wifi, ara s’hauria de fer pampallugues el LED del dongle. Sinó fa pampallugues no funciona, almenys a mi no m’ha funcionat cap cop, encara que si que és capaç de detectar-me xarxes però res no enllaça amb res. Encanvi quan fa pampallugues llavors ja teniu possibilitats de que funcioni 🙂

Que hi hagi sort amb el tema…

OX – OpenXchange

Reading time: 3 – 4 minutes

ox.png

Acabo de llegir a través de la Linux Gazette que avui s’ha presentat el Open Xchange 5, malgrat ser un producte comercial basat en software lliure. Jo diria que és una de les solucions més recomanables per no tenir cap servidor Win en un xarxa de clients Win. Aquest software funciona directament sobre Suse i RH. Amb una mica de paciència segur que el podem fer anar sobre gentoo. El que realment m’agrada és que avui s’ha presentat un Samba OXtender aquest ens permet autenticar els nostres clients win a la xarxa, fer de servidor d’impresores de la mateixa forma que ho fa un win i obviament també servidor de recursos compartits.

Per mi una de les avantatges que oferia Win a través d’AD era els servieis d’LDAP i de kerberos que permeten tenir centralitzades totes les comptes d’usuaris en un servidor/s, o sigui, que podem tenir tots els fitxers, recursos, correu, etc. dels usuaris de la xarxa als servidors d’storage de la mateixa. Doncs bé jo diria que OX és la primera solució amb cara i ulls que fa el mateix per linux. Potser només li trobo a faltar que el seu entorn web es basi en AJAX per millorar l’experiència de l’usuari final. Però jo diria que a nivell de funcionalitats té totes les que podem necessitar.

El groupware integra totes les funcions que podem somiar i alguna més: correu, tasques, calendaris, calendaris compartits, llibreta de direccions privada, per grups i d’empresa, forums, servidor de documents, seguiment de projectes, servei d’IM, etc. Si a tot això hi afegim el control d’impresores, recursos compartits i autenticació única de l’usuari a l’accedir a la sessió de la seva màquina. Jo diria que tenim un servidor realment amb cara i ulls per substituir el W2k3 en moltes PIMES.

Potser podrieu trobar a faltar serveis de FAX i el de PBX. Que com sabeu seria senzillissim integrar dins la mateixa màquina, clúster de màquines, o el que tinguem com a servidors, només s’hauria d’instal·lar un HylaFAX i un Asterisk, per exemple. A més podriem fer que el servei de FAX es distribuis per correu, per no gastar paper, i els clients disposessin d’una impresora virtual que fos el FAX com que la BBDD d’usuaris del OX esta en un LDAP podriem fins hi tot connectar la llibreta de direccions del OX al FAX (impresora virtual) perquè quan volguessim enviar un FAX poguessim consultar l’agenda. Una altre opció seria fer tot això des de l’Outlook que esta suportat a través d’un plugin al propi OX.

Si els dubtes el teniu en l’accés online a la informació, tots els serveis de groupware i mail són accessibles via Web. A més el OX també disposa de plugins pels nostres dispositius mòbils: handhelds, smartphones, etc. (tan win com palm) per sincronitzar-los quan estiguem en ruta (roadwarriors).

Bé ara només us queda jutjar a vosaltres mateixos i si algú ja ha jugat amb tot això si us plau, que ho digui, perquè m’agradaria tenir opinions de primera mà. No com les meves que es basen en ‘elucubracions mentals’.

cutter – tallem connexions TCP/IP en linux

Reading time: < 1 minute

Aquesta eina la vaig veure fa molt temps al blog de Xavier Caballé, però no me l’havia pogut mirar fins avui i per no perdre la referència aquí va aquesta nota. Jo diria que la funcionalitat queda molt clara en el títol de l’article i en el propi nom de l’eina. Amb cutter quan veiem un socket TCP actiu al nostre linux, o tots els sockets que provenen d’una IP, els podrem desconnectar a l’instant de forma ben simple.

problema amb el mixer de gnome

Reading time: 2 – 2 minutes

Avui he fet un update del gnome 2.10 al 2.12 a la gentoo i misteriosament després d’això el mixer d’audio no em funcionava correctament he buscat informació de l’error i m’ha portat a un problema amb el paquet media-libs/gstreamer. He vist que faltava registrar el pluging a un registre que té aquesta aplicació, això es fa amb la comanda: gst-register-0.8 però a l’executar la comanda en qüestió dona el següent error:

Rebuilding global_registry (/var/lib/cache/gstreamer-0.8/registry.xml) ...
Added plugin gstvideo with 0 features.
Added plugin audiorate with 1 feature.
...
Added plugin autodetect with 2 features.
ERROR: Caught a segmentation fault while loading plugin file:
/usr/lib/gstreamer-0.8/libgstvideotestsrc.so
Please either:
- remove it and restart.
- run with --gst-disable-segtrap and debug. 

Així doncs he hagut de buscar informació sobre aquest error als forums de gentoo, concretament la solució l’he trobat a: gst-register-0.8 seg.fault libgstvideotestsrc.so [Solved]. Resumint, la solució és tan senzilla com:

rm /usr/lib/gstreamer-0.8/libgstvideotestsrc.*
gst-register-0.8
rm /usr/lib/gstreamer-0.8/libgstvideobalance.*
gst-register-0.8

En l’enllaç del forum es discuteix una mica de que pot venir aquest error, però la veritat és que tampoc acaben d’arribar a una conclusió massa clara, concretament la idea que exposen és la de desinstal·lar el paquet dev-libs/liboil i tornar a instal·lar el gstreamer sense dependencies, però jo no tinc instal·lada aquesta llibreria i també m’ha donat el mateix problema que a ells. Així que ni idea de perquè passa.

Introduïnt el PIN a la VRA de forma automàtica

Reading time: 3 – 5 minutes

Aquest és un d’aquells posts que podria tenir 40 títols diferents. De fet, només vull passar-vos un parell de trossos de codi un en C i l’altre en perl, que el que fan és obrir el port serie virtual que crea el modem UMTS/GPRS PCMCIA de Vodafone després l’hi envia la comanda AT corresponent per introduir el PIN del SIM que porta la targeta i llestos.

Abans de passar als temes de codis un petit resum d’ordres AT útils per temes de PIN:

AT+CPIN=1234 -> Introduim el PIN a la SIM del mòdem.
AT+CPIN? -> preguntem al mòdem si ja hem introduit la SIM.
AT+CPWD="SC",old_pin,new_pin -> canviem el PIN de la SIM.

De fet, si no voleu fer un codi tan bonic com el que jo uso, també podeu fer una cosa tan senzilla com aquesta:

# echo AT+CPIN=1234 > /dev/tts/USB0

Sent 1234 el codi PIN i /dev/tts/USB0 el dispositiu serie que crea el modem PCMCIA de vodafone.

Anant a codis una miqueta més interessants aquí teniu un trosset de codi C per fer el mateix que em fet en l’ordre anterior:

#include <stdio.h>   /* Standard input/output definitions */
#include <string.h>  /* String function definitions */
#include <unistd.h>  /* UNIX standard function definitions */
#include <fcntl.h>   /* File control definitions */
#include <errno.h>   /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */
main() {
	int fd;
	fd = open_port();
	init_modem(fd);
	close(fd);
}
int open_port(void) {
	int fd; /* File descriptor for the port */
	struct termios options;
	fd = open("/dev/tts/USB0", O_RDWR | O_NOCTTY | O_NDELAY);
	if (fd == -1) {
		/*
		* Could not open the port.
		*/
		perror("open_port: Unable to open /dev/tts/USB0 - ");
	}
	else fcntl(fd, F_SETFL, 0);
	/* get the current options */
	tcgetattr(fd, &options);
	cfsetispeed(&options, B19200);
	cfsetospeed(&options, B19200);
	/* set raw input, 1 second timeout */
	options.c_cflag &= ~PARENB;
	options.c_cflag &= ~CSTOPB;
	options.c_cflag &= ~CSIZE;
	options.c_cflag |= CS8;
	options.c_cflag     |= (CLOCAL | CREAD);
	options.c_cflag	    &= ~CNEW_RTSCTS;
	/* set the options */
	tcsetattr(fd, TCSANOW, &options);
	return (fd);
}
int                  /* O - 0 = MODEM ok, -1 = MODEM bad */
init_modem(int fd)   /* I - Serial port file */
{
	char buffer[255];  /* Input buffer */
	char *bufptr;      /* Current char in buffer */
	int  nbytes;       /* Number of bytes read */
	int  tries;        /* Number of tries so far */
	for (tries = 0; tries < 3; tries ++) {
		/* send an AT command followed by a CR */
		if (write(fd, "AT+CPIN=1234\r", 13) < 13) continue;
			/* read characters into our string buffer until we get a CR or NL */
			bufptr = buffer;
			while ((nbytes = read(fd, bufptr, buffer + sizeof(buffer) - bufptr - 1)) > 0) {
				bufptr += nbytes;
				if (bufptr[-1] == '\n' || bufptr[-1] == '\r') break;
			}
		/* nul terminate the string and see if we got an OK response */
		*bufptr = '\0';
		if (strncmp(buffer, "OK", 2) == 0) return (0);
	}
	return (-1);
}

Com en l’exemple anterior el dispositiu serie és /dev/tts/USB0 i el codi PIN 1234. Aquest codi és un copy/paste de la part d’un serial howto que ja no recordo ni d’on el vaig treure. Només m’he quedat amb el codi que em calia i hi he afegit algunes otpions que hi havia al howto però no als exemples de codi.

A continuació penjo un codi equivalent fet en perl. Com podeu veure aquest codi en perl té una dependència de la llibreria CPAN: Device::Gsm. Amb aquest llibreria també és molt senzill enviar SMS i descobrir algunes informacions del telèfon, com el fabricant o l’imei.

use Device::Gsm;
my $gsm = new Device::Gsm( port => '/dev/tts/USB0', pin => '4466' );
if( $gsm->connect() ) {
  print "connected!\n";
} else {
  print "sorry, no connection with gsm phone on serial port!\n";
}
# Register to GSM network (you must supply PIN number in above new() call)
print $gsm->register();

Problemes amb el fitxer /etc/localtime (zic)

Reading time: 1 – 2 minutes

Fent un break en la nateja del diumenge després d’estar el dissabte treballant a l’oficina fins a les 0:30 he decidit escriure un dels articles tècnics que tinc pendents. Es tracta d’una tonteria que em passava en un dels linux que tinc instal·lats. El tema esta en que quan li demanava l’hora al sistema date em sortia el següent:

Fri Nov 25 09:50:19 Local time zone must be set--see zic manual page 2005

Bàsicament el problema esta en el fitxer de localtime la solució en forma de cookbook:

zic -d /usr/share/zoneinfo/Europe
zic -l /usr/share/zoneinfo/Europe/YOUR_ZONE

La primera ordre ens indica el directori on hi ha els fitxers de localtime i la segona ordre enllaça el fitxer genèric amb el nostre fitxer local que esta a /etc/localtime.

Després de fer això ja em surt el forma convencional. Una d’aquelles tonteries que ens poden fer perdre hores i hores de googlejar.