<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="http://mariodebian.com/styles/rss.css" type="text/css"?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
>
 <channel>
  <title>MarioDebian, mi devlog</title>
  <link>http://mariodebian.com/blog/1</link>
  <description>&lt;p&gt;Bitácora de un desarrollador newbie.&lt;/p&gt;
</description>
  <pubDate>Thu, 26 Aug 2010 22:33:19 +0200</pubDate>
  <generator>http://www.lifetype.net</generator>
    <item>
   <title>TCOS en Ubuntu Lucid 10.04, the perfect setup</title>
   <description>
    &lt;p&gt;Ya tenemos un&amp;nbsp;&lt;a href=&quot;http://argentina.tcosproject.org/2009/09/18/instalacion-de-tcos-con-dnsmasq-en-jaunty/&quot;&gt;art&amp;iacute;culo para instalar y configurar TCOS en Ubuntu 9.04 Jaunty&lt;/a&gt;, ahora voy a dar unos peque&amp;ntilde;os trucos para instalarlo en Lucid.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ol&gt;	&lt;li&gt;Instalar Ubuntu 10.04 Lucid (quiz&amp;aacute;s sirva para otras *buntu), yo lo he probado con Ubuntu y GNOME.&lt;/li&gt;	&lt;li&gt;A&amp;ntilde;adir el siguiente repositorio:&lt;br /&gt;	&lt;br /&gt;	&lt;strong&gt;&lt;em&gt;deb&amp;nbsp;&lt;a href=&quot;http://tcosproject.org&quot;&gt;http://tcosproject.org&lt;/a&gt;&amp;nbsp;lucid main&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;	&lt;li&gt;El repositorio est&amp;aacute; firmado con mi clave GPG por lo que cuando actualicemos nos dar&amp;aacute; un error, para a&amp;ntilde;adir la clave se puede instalar el paquete &lt;strong&gt;&lt;em&gt;tcos-keyring&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;	&lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;span style=&quot;font-weight: normal; font-style: normal&quot;&gt;Luego instalamos el paquete &lt;/span&gt;tcos&lt;span style=&quot;font-weight: normal&quot;&gt;&lt;span style=&quot;font-style: normal&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;	&lt;li&gt;&lt;strong&gt;&lt;em&gt;&lt;span style=&quot;font-weight: normal&quot;&gt;&lt;span style=&quot;font-style: normal&quot;&gt;Actualizar el paquete GDM, en el repositorio de TCOs est&amp;aacute; disponible la versi&amp;oacute;n&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span style=&quot;font-size: 12px; font-family: &#039;Lucida Grande&#039;, &#039;Helvetica Neue&#039;, Verdana, Arial, sans-serif&quot;&gt;2.30.2.is.2.30.2-0ubuntu1.lucid.tcos2 que tiene unas ligeras mejoras con respecto al que trae Ubuntu:&lt;br /&gt;	&lt;br /&gt;	- Desactivado IPV6 - desgraciadamente las nuevas versiones del gdm lo traen activado por defecto y XDMCP no funciona&lt;br /&gt;	-&amp;nbsp;&lt;a href=&quot;http://mail.gnome.org/archives/gdm-list/2010-June/msg00010.html&quot;&gt;Parche para la inicializaci&amp;oacute;n del buffer XdmcpFill()&lt;/a&gt;&lt;br /&gt;	-&amp;nbsp;&lt;a href=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=624958&quot;&gt;Parche para el TimedLogin remoto&lt;/a&gt;&lt;br /&gt;	- Otras peque&amp;ntilde;as mejoras&lt;br /&gt;	&lt;br /&gt;	&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;&lt;span style=&quot;font-size: 12px; font-family: &#039;Lucida Grande&#039;, &#039;Helvetica Neue&#039;, Verdana, Arial, sans-serif&quot;&gt;Lanzar el configurador de servidor desde el men&amp;uacute; Administraci&amp;oacute;n o ejecutar: &lt;strong&gt;&lt;em&gt;sudo tcos-configurator&lt;br /&gt;	&lt;br /&gt;	&lt;a id=&quot;res_300&quot; href=&quot;http://mariodebian.com/gallery/1/tcosconfigurator1.png&quot;&gt;&lt;img src=&quot;http://mariodebian.com/gallery/1/previews/tcosconfigurator1.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;br /&gt;	&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;&lt;span style=&quot;font-size: 12px; font-family: &#039;Lucida Grande&#039;, &#039;Helvetica Neue&#039;, Verdana, Arial, sans-serif&quot;&gt;En la primera pesta&amp;ntilde;a configurar el interfaz de red que atender&amp;aacute; a los terminales ligeros y el rango DHCP.&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;&lt;span style=&quot;font-size: 12px; font-family: &#039;Lucida Grande&#039;, &#039;Helvetica Neue&#039;, Verdana, Arial, sans-serif&quot;&gt;En la segunda pesta&amp;ntilde;a a&amp;ntilde;adir usuarios (si se quiere que funcione el autologin usar el mismo prefijo que los nombres de equipo)&lt;br /&gt;	&lt;br /&gt;	&lt;a id=&quot;res_301&quot; href=&quot;http://mariodebian.com/gallery/1/tcosconfigurator2.png&quot;&gt;&lt;img src=&quot;http://mariodebian.com/gallery/1/previews/tcosconfigurator2.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;br /&gt;	&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;&lt;span style=&quot;font-size: 12px; font-family: &#039;Lucida Grande&#039;, &#039;Helvetica Neue&#039;, Verdana, Arial, sans-serif&quot;&gt;En la tercera pesta&amp;ntilde;a activar la entrada remota de GDM y opcionalmente el timeout y autologin&lt;br /&gt;	&lt;br /&gt;	&lt;a id=&quot;res_302&quot; href=&quot;http://mariodebian.com/gallery/1/tcosconfigurator3.png&quot;&gt;&lt;img src=&quot;http://mariodebian.com/gallery/1/previews/tcosconfigurator3.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;br /&gt;	&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;&lt;span style=&quot;font-size: 12px; font-family: &#039;Lucida Grande&#039;, &#039;Helvetica Neue&#039;, Verdana, Arial, sans-serif&quot;&gt;En la cuarta pesta&amp;ntilde;a lanzar Tcosconfig&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;&lt;span style=&quot;font-size: small; font-family: &#039;Lucida Grande&#039;, &#039;Helvetica Neue&#039;, Verdana, Arial, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 12px&quot;&gt;Seleccionar la plantilla &lt;strong&gt;&lt;em&gt;tcos.conf.all&lt;/em&gt;&lt;/strong&gt; y dar siguiente hasta la parte de construcci&amp;oacute;n de la imagen, pulsar el bot&amp;oacute;n contruir y cuando termine guardar.&lt;br /&gt;	&lt;br /&gt;	&lt;a id=&quot;res_202&quot; href=&quot;http://mariodebian.com/gallery/1/tcosconfig-new-1.png&quot;&gt;&lt;img src=&quot;http://mariodebian.com/gallery/1/previews/tcosconfig-new-1.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;br /&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;&lt;span style=&quot;font-size: small; font-family: &#039;Lucida Grande&#039;, &#039;Helvetica Neue&#039;, Verdana, Arial, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 12px&quot;&gt;A continuaci&amp;oacute;n unos peque&amp;ntilde;os trucos para evitar problemas&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Desactivar Multicast DNS, se edita /etc/nsswitch.conf y se cambia la l&amp;iacute;nea:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;blockquote style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px&quot; class=&quot;webkit-indent-blockquote&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px&quot;&gt;	&lt;div&gt;	hosts: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;files mdns4_minimal [NOTFOUND=return] dns mdns4	&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;por&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;blockquote style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px&quot; class=&quot;webkit-indent-blockquote&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px&quot;&gt;	&lt;div&gt;	hosts: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;files dns	&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;(esto desactiva los servicios AVAHI que no son imprescindibles y que aumentan mucho los timeouts de login de GDM o incluso SSH)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Verificar el correcto funcionamiento de los DNS, lo recomendable es desinstalar network-manager y configurar una IP fija en /etc/network/interfaces (de hecho el configurador del servidor de TCOS deber&amp;iacute;a haberlo hecho ya).&lt;/p&gt;&lt;p&gt;Comprobar que la primera l&amp;iacute;nea de /etc/resolv.conf es la IP interna de nuestro servidor&lt;/p&gt;&lt;p&gt;Comprobar que en /etc/resolv.conf.real tenemos los DNS de nuestro proveedor de internet o en su defecto unos que funcionen.&lt;/p&gt;&lt;p&gt;Comprobaremos que el archivo /etc/gdm/custom.conf tiene este aspecto:&lt;/p&gt;&lt;blockquote style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px&quot; class=&quot;webkit-indent-blockquote&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px&quot;&gt;	&lt;p&gt;	[xdmcp]	&lt;/p&gt;	&lt;p&gt;	Enable=true	&lt;/p&gt;	&lt;p&gt;	MaxPending=60	&lt;/p&gt;	&lt;p&gt;	MaxWaitIndirect=80	&lt;/p&gt;	&lt;p&gt;	MaxWait=75	&lt;/p&gt;	&lt;p&gt;	PingIntervalSeconds=35	&lt;/p&gt;	&lt;p&gt;	MaxPendingIndirect=30	&lt;/p&gt;	&lt;p&gt;	MaxSessions=40	&lt;/p&gt;	&lt;p&gt;	DisplaysPerHost=4	&lt;/p&gt;	&lt;p&gt;	[daemon]	&lt;/p&gt;	&lt;p&gt;	TimedLogin=/usr/sbin/tcos-gdm-autologin --local=usuario-que-usara-el-servidor|	&lt;/p&gt;	&lt;p&gt;	TimedLoginEnable=true	&lt;/p&gt;	&lt;p&gt;	TimedLoginDelay=1	&lt;/p&gt;	&lt;p&gt;	[security]	&lt;/p&gt;	&lt;p&gt;	AllowRemoteAutoLogin=true	&lt;/p&gt;&lt;/blockquote&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Podemos activar el debug en GDM (clave [debug]Enable=True ) y ver el syslog mientras los equipos intentan cargar por red.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Si hemos seguido todos los pasos con total exactitud tendremos un servidor TCOS funcionando en menos de media hora (contando la&amp;nbsp;instalaci&amp;oacute;n&amp;nbsp;de Ubuntu)&lt;/div&gt;
   </description>
   <link>http://mariodebian.com/post/1/692</link>
   <comments>http://mariodebian.com/post/1/692</comments>
   <guid>http://mariodebian.com/post/1/692</guid>
      <dc:creator>mario</dc:creator>
      
    <category>TCOS</category>
         <pubDate>Thu, 22 Jul 2010 17:37:46 +0200</pubDate>
   <source url="http://mariodebian.com/rss/rss20/1">MarioDebian, mi devlog</source>
                                                                 </item>
    <item>
   <title>Compilando drivers de TDT (DVB) AverTV TwinStar 07ca:0825</title>
   <description>
    &lt;p&gt;
Me he hecho con un nuevo receptor de TDT USB, el anterior (15a4:9016 Afatech Technologies, Inc. AF9015 DVB-T USB2.0 stick) me estaba dando muchos problemas y la poca se&amp;ntilde;al que llega a mi habitaci&amp;oacute;n me hac&amp;iacute;a perder varios canales.
&lt;/p&gt;
&lt;p&gt;
En este HOWTO intentar&amp;eacute; de manera sencilla explicar como compilar una nueva versi&amp;oacute;n de V4L previamente parcheada para el nuevo hardware.
&lt;/p&gt;
&lt;p&gt;
&lt;span style=&quot;font-size: large&quot;&gt;1.- Reconocimiento
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Lo primero es abrir el receptor (si lo piensas devolver no deber&amp;iacute;as hacerlo) para identificar los chips, en el m&amp;iacute;o se puede ver que tiene 2 chips (receptor doble) del tipo AF9035B y AF9033.
&lt;/p&gt;
&lt;p&gt;
Buscando por varios sitios encuentro este hilo: &lt;a href=&quot;http://patchwork.kernel.org/patch/61950/&quot;&gt;http://patchwork.kernel.org/patch/61950/&lt;/a&gt; que explicaque hay que aplicar dos parches al kernel y compilar, en lugar de compilar el kernel he usado la rama Mercurial del proyecto V4L.
&lt;/p&gt;
&lt;p&gt;
&lt;span style=&quot;font-size: large&quot;&gt;2.- Descargamos V4L&lt;/span&gt;
&lt;/p&gt;
&lt;pre&gt;
hg clone http://linuxtv.org/hg/v4l-dvb
&lt;/pre&gt;
&lt;p&gt;
En el enlace que he puesto antes explica que hay que aplicar 2 parches,el primero del &lt;a href=&quot;http://linuxtv.org/wiki/index.php/TerraTec_Cinergy_T_Stick&quot;&gt;m&amp;eacute;todo B de este wiki&lt;/a&gt;, y el segundo elque adjunta en ese hilo. Yo he aplicado los dos (corregido los rechazos) y preparado un nuevo parche &amp;uacute;nico, que puedes descargar de aqu&amp;iacute;: &lt;a id=&quot;res_358&quot; href=&quot;http://mariodebian.com/gallery/1/af9035.v4l.hg.diff&quot;&gt;af9035.v4l.hg.diff&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;span style=&quot;font-size: large&quot;&gt;3.- Parchear&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
En el directorio v4l-dvb ejecutamos lo siguiente:
&lt;/p&gt;
&lt;pre&gt;
cat /ruta/al/parche/af9035.v4l.hg.diff | patch -p1
&lt;/pre&gt;
&lt;p&gt;
&lt;span style=&quot;font-size: large&quot;&gt;4.- Compilar&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Teniendo nuestras cabeceras del kernel instaladas (apt-get install linux-headers-`uname -r`) ejecutamos &lt;strong&gt;make&lt;/strong&gt;. 
&lt;/p&gt;
&lt;p&gt;
&lt;span style=&quot;font-size: large&quot;&gt;5.- Instalar&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
No es recomendable instalarlo encima ya que si algo no va bien tendremos que reinstalar nuestro kernel, vamos a instalarlo en el directorio update del kernel para que si queremos en un futuro podamos borrarlo y no estropear nuestro kernel. &lt;strong&gt;Es muy importante compilar e instalar como usuario (no como ROOT) ya que no se ejecutar&amp;aacute;n o copiar&amp;aacute;n cosas que no queramos&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre&gt;
make install DESTDIR=`pwd`/tmp
sudo mkdir -p /lib/modules/`uname -r`/updates
sudo cp -ra tmp/lib/modules/`uname -r`/kernel/drivers/media/ /lib/modules/`uname -r`/updates/v4l
sudo depmod -a 
&lt;/pre&gt;
&lt;p&gt;
(va a dar errores de copia de firmware... no problem !!!)
&lt;/p&gt;
&lt;p&gt;
&lt;span style=&quot;font-size: large&quot;&gt;5.- Instalar el firmware&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Descargamos este archivo: &lt;a id=&quot;res_359&quot; href=&quot;http://mariodebian.com/gallery/1/dvb-usb-af9035-01.fw&quot;&gt;dvb-usb-af9035-01.fw&lt;/a&gt; y lo copiamos en /lib/firmware/ 
&lt;/p&gt;
&lt;p&gt;
&lt;span style=&quot;font-size: large&quot;&gt;6.- Pruebas antes de conectar&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;$ sudo modinfo dvb-usb-af9035&lt;/strong&gt;
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;em&gt;filename:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /lib/modules/2.6.32-2-686/updates/v4l/dvb/dvb-usb/dvb-usb-af9035.ko&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;license:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPL&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;description:&amp;nbsp;&amp;nbsp;&amp;nbsp; Afatech AF9035 driver&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;author:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Antti Palosaari &amp;lt;crope@iki.fi&amp;gt;&lt;/em&gt;&lt;br /&gt;
	&lt;strong&gt;&lt;em&gt;alias:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usb:v07CAp0825d*dc*dsc*dp*ic*isc*ip*&amp;nbsp; &amp;lt;======= here is it!!!&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;
	&lt;em&gt;alias:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usb:v0CCDp0093d*dc*dsc*dp*ic*isc*ip*&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;alias:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usb:v15A4p9035d*dc*dsc*dp*ic*isc*ip*&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;alias:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usb:v15A4p1003d*dc*dsc*dp*ic*isc*ip*&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;alias:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usb:v15A4p1002d*dc*dsc*dp*ic*isc*ip*&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;alias:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usb:v15A4p1001d*dc*dsc*dp*ic*isc*ip*&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;alias:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usb:v15A4p1000d*dc*dsc*dp*ic*isc*ip*&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;depends:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dvb-usb,usbcore&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;vermagic:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.6.32-2-686 SMP mod_unload modversions 686 &lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;parm:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; debug:set debugging level (int)&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;parm:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adapter_nr:DVB adapter numbers (array of short)&lt;/em&gt;&lt;br /&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;span style=&quot;font-size: large&quot;&gt;7.- Conectamos&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Ejecutamos en un terminal: sudo tail -f /var7log/syslog, deber&amp;iacute;a salir algo como esto:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;usb 1-3: new high speed USB device using ehci_hcd and address 6&lt;br /&gt;
	usb 1-3: New USB device found, idVendor=07ca, idProduct=0825&lt;br /&gt;
	usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3&lt;br /&gt;
	usb 1-3: Product: A825&lt;br /&gt;
	usb 1-3: Manufacturer: AVerMedia TECHNOLOGIES, Inc.&lt;br /&gt;
	usb 1-3: SerialNumber: 0000000000000&lt;br /&gt;
	usb 1-3: configuration #1 chosen from 1 choice&lt;br /&gt;
	dvb-usb: found a &#039;Avermedia TwinStar&#039; in cold state, will try to load a firmware&lt;br /&gt;
	usb 1-3: firmware: requesting dvb-usb-af9035-01.fw&lt;br /&gt;
	dvb-usb: downloading firmware from file &#039;dvb-usb-af9035-01.fw&#039;&lt;br /&gt;
	dvb-usb: found a &#039;Avermedia TwinStar&#039; in warm state.&lt;br /&gt;
	dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.&lt;br /&gt;
	DVB: registering new adapter (Avermedia TwinStar)&lt;br /&gt;
	af9033: firmware version: LINK:11.15.10.0 OFDM:5.48.10.0&lt;br /&gt;
	DVB: registering adapter 0 frontend 0 (Afatech AF9033 DVB-T)...&lt;br /&gt;
	mxl5007t 4-00c0: creating new instance&lt;br /&gt;
	mxl5007t_get_chip_id: unknown rev (3f)&lt;br /&gt;
	mxl5007t_get_chip_id: MxL5007T detected @ 4-00c0&lt;br /&gt;
	dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.&lt;br /&gt;
	DVB: registering new adapter (Avermedia TwinStar)&lt;br /&gt;
	af9033: firmware version: LINK:11.15.10.0 OFDM:5.48.10.0&lt;br /&gt;
	DVB: registering adapter 1 frontend 0 (Afatech AF9033 DVB-T)...&lt;br /&gt;
	mxl5007t 4-00c1: creating new instance&lt;br /&gt;
	mxl5007t_get_chip_id: unknown rev (3f)&lt;br /&gt;
	mxl5007t_get_chip_id: MxL5007T detected @ 4-00c1&lt;br /&gt;
	dvb-usb: Avermedia TwinStar successfully initialized and connected.&lt;br /&gt;
	usbcore: registered new interface driver dvb_usb_af9035&lt;/em&gt; 
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
En /dev/dvb se crear&amp;aacute;n nuevos dispositivos:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	tree /dev/dvb/&lt;br /&gt;
	/dev/dvb/&lt;br /&gt;
	├── adapter0&lt;br /&gt;
	│&amp;nbsp;&amp;nbsp; ├── demux0&lt;br /&gt;
	│&amp;nbsp;&amp;nbsp; ├── dvr0&lt;br /&gt;
	│&amp;nbsp;&amp;nbsp; ├── frontend0&lt;br /&gt;
	│&amp;nbsp;&amp;nbsp; └── net0&lt;br /&gt;
	└── adapter1&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; ├── demux0&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; ├── dvr0&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; ├── frontend0&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; └── net0
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Si algo no funciona, como por ejemplo nos sale esto por el syslog:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;usb 1-3: new high speed USB device using ehci_hcd and address 5&lt;br /&gt;
	usb 1-3: New USB device found, idVendor=07ca, idProduct=0825&lt;br /&gt;
	usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3&lt;br /&gt;
	usb 1-3: Product: A825&lt;br /&gt;
	usb 1-3: Manufacturer: AVerMedia TECHNOLOGIES, Inc.&lt;br /&gt;
	usb 1-3: SerialNumber: 0000000000000&lt;br /&gt;
	usb 1-3: configuration #1 chosen from 1 choice&lt;br /&gt;
	dvb_usb_af9035: disagrees about version of symbol dvb_usb_device_init&lt;br /&gt;
	dvb_usb_af9035: Unknown symbol dvb_usb_device_init&lt;/em&gt; 
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
... es porque ten&amp;iacute;amos cargados m&amp;oacute;dulos dvb_* , tenemos que mirar los que estan cargados (&lt;strong&gt;lsmod&lt;/strong&gt;) y quitarlos (&lt;strong&gt;rrmod&lt;/strong&gt;), si sigue sin ir podemos probar a reiniciar.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
   </description>
   <link>http://mariodebian.com/post/1/691</link>
   <comments>http://mariodebian.com/post/1/691</comments>
   <guid>http://mariodebian.com/post/1/691</guid>
      <dc:creator>mario</dc:creator>
      
    <category>Debian</category>
      
    <category>DVB</category>
      
    <category>TDT</category>
         <pubDate>Sat, 27 Feb 2010 16:38:23 +0100</pubDate>
   <source url="http://mariodebian.com/rss/rss20/1">MarioDebian, mi devlog</source>
                                   </item>
    <item>
   <title>Mi primer app en android: RsyncDroid</title>
   <description>
    &lt;p&gt;
Presento mi nueva aplicaci&amp;oacute;n (mejor no mirar el c&amp;oacute;digo) para android: RsyncDroid.
&lt;/p&gt;
&lt;p&gt;
Es como si fuese un HolaMundo pero un poco m&amp;aacute;s complejo, pero me ha servido para aprender un poco Java y sobre todo para ver su entorno de desarrollo basado en Eclipse. El debugger (ddms) es la leche y se puede estudiar muy bien lo que va haciendo nuestra aplicaci&amp;oacute;n mientras se ejecuta... me ha gustado.
&lt;/p&gt;
&lt;p&gt;
&lt;span style=&quot;font-size: large&quot;&gt;Instalaci&amp;oacute;n&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Lo primero es conseguir el binario de rsync, he preparado este script (necesita ser root del tel&amp;eacute;fono) 
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;wget http://adqmisc.googlecode.com/svn/trunk/androidutils/rsync/rsync-3.0.6-arm-softfloat-linux-gnueabi.gz&lt;br /&gt;
zcat rsync-3.0.6-arm-softfloat-linux-gnueabi.gz &amp;gt; rsync&lt;br /&gt;
&lt;br /&gt;
./adb push rsync /sdcard/rsyncdroid/rsync&lt;br /&gt;
./adb shell mount -o remount,rw /dev/block/mtdblock0 /system&lt;br /&gt;
./adb shell &amp;quot;cat /sdcard/rsyncdroid/rsync &amp;gt; /system/bin/rsync&amp;quot;&lt;br /&gt;
./adb shell chmod 755 /system/bin/rsync&lt;br /&gt;
./adb shell mount -o remount,ro /dev/block/mtdblock0 /system&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Ahora instalaremos este apk: &lt;a id=&quot;res_354&quot; href=&quot;http://mariodebian.com/gallery/1/rsyncdroid.apk&quot;&gt;rsyncdroid.apk&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;./adb install -r ~/Desktop/rsyncdroid.apk &lt;br /&gt;
401 KB/s (18269 bytes in 0.044s)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;pkg: /data/local/tmp/rsyncdroid.apk&lt;br /&gt;
Success&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style=&quot;font-size: large&quot;&gt;Capturas de pantalla&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a id=&quot;res_355&quot; href=&quot;http://mariodebian.com/gallery/1/rsyncdroid1.png&quot;&gt;&lt;img src=&quot;http://mariodebian.com/gallery/1/previews/rsyncdroid1.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;a id=&quot;res_356&quot; href=&quot;http://mariodebian.com/gallery/1/rsyncdroid2.png&quot;&gt;&lt;img src=&quot;http://mariodebian.com/gallery/1/previews/rsyncdroid2.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a id=&quot;res_357&quot; href=&quot;http://mariodebian.com/gallery/1/rsyncdroid3.png&quot;&gt;&lt;img src=&quot;http://mariodebian.com/gallery/1/previews/rsyncdroid3.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
El programa es muy sencillo, lo que hace es arrancar, parar y ver el estado del proceso rsync, si no existe la configuraci&amp;oacute;n usa una base en la que se comparte el contenido de la memoria SD. Es recomendable a&amp;ntilde;adir algo como &amp;quot;&lt;strong&gt;hosts allow = xx.xx.xx.xx&lt;/strong&gt;&amp;quot;, para permitir el acceso s&amp;oacute;lo desde la IP que queramos (&lt;em&gt;man rsyncd.conf&lt;/em&gt;).
&lt;/p&gt;
&lt;p&gt;
La primera vez que lo ejecutemos nos pedir&amp;aacute; el permiso de root (rsync se ejecuta en un puerto privilegiado).
&lt;/p&gt;
&lt;p&gt;
&lt;span style=&quot;font-size: large&quot;&gt;Script para copia de datos&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;rsync -Pavz --no-g --no-p --no-numeric-ids \&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; htcmagic::sdcard/ --delete /home/mario/htcmagic/backup/&lt;/em&gt; 
&lt;/p&gt;
&lt;p&gt;
Yo me he hecho un script un poco m&amp;aacute;s complejo para (por la madrugada) hacer ping al tel&amp;eacute;fono y si est&amp;aacute; en la wifi de mi red hacer la copia incremental (creando enlaces duros) y borrando las copias de seguirdad que tengan m&amp;aacute;s de 30 d&amp;iacute;as.
&lt;/p&gt;
   </description>
   <link>http://mariodebian.com/post/1/690</link>
   <comments>http://mariodebian.com/post/1/690</comments>
   <guid>http://mariodebian.com/post/1/690</guid>
      <dc:creator>mario</dc:creator>
      
    <category>android</category>
      
    <category>htc</category>
         <pubDate>Sat, 09 Jan 2010 17:25:06 +0100</pubDate>
   <source url="http://mariodebian.com/rss/rss20/1">MarioDebian, mi devlog</source>
                                                                 </item>
    <item>
   <title>Diferencias entre algo sencillo y algo enrevesado</title>
   <description>
    &lt;p&gt;
Hoy me he puesto a intentar hacer una cutre aplicaci&amp;oacute;n para Android (que est&amp;aacute; tan de moda) y de paso a programar mis primeras l&amp;iacute;neas en JAVA. &amp;iquest;Qu&amp;eacute;n invent&amp;oacute; ese lenguaje del diablo? Se merece las 7 plagas seguidas de una lapidaci&amp;oacute;n p&amp;uacute;blica, y voy a ello con un ejemplo muy simple.
&lt;/p&gt;
&lt;p&gt;
Vamos a intentar partir una cadena de texto por espacios, &lt;strong&gt;en Python&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre&gt;
&amp;gt;&amp;gt;&amp;gt; a=&amp;quot;esto   es una cadena   de texto&amp;quot;
&amp;gt;&amp;gt;&amp;gt; a.split()
[&#039;esto&#039;, &#039;es&#039;, &#039;una&#039;, &#039;cadena&#039;, &#039;de&#039;, &#039;texto&#039;]
&lt;/pre&gt;
&lt;p&gt;
N&amp;oacute;tese que entre alguna de las palabras hay m&amp;aacute;s de un espacio.
&lt;/p&gt;
&lt;p&gt;
Ahora vamos a hacerlo &lt;strong&gt;en JAVA&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre&gt;
public class test {
public static void main(String args[]) {
String a;
String [] aArray;
int i;
a=&amp;quot;esto   es una cadena   de texto&amp;quot;;
aArray=a.split(&amp;quot; &amp;quot;);
for (i=0; i&amp;lt;aArray.length; i++) {
System.out.println(&amp;quot;index=&amp;quot; + i + &amp;quot; aArray=&amp;quot; + aArray[i]);
}
}
}
&lt;/pre&gt;
&lt;p&gt;
Que como resultado da:
&lt;/p&gt;
&lt;pre&gt;
index=0 aArray=esto
index=1 aArray=
index=2 aArray=
index=3 aArray=es
index=4 aArray=una
index=5 aArray=cadena
index=6 aArray=
index=7 aArray=
index=8 aArray=de
index=9 aArray=texto
&lt;/pre&gt;
&lt;p&gt;
No quiero ir de listillo, pero necesitar 6 veces m&amp;aacute;s c&amp;oacute;digo para no hacerlo bien es como volver al esamblador. He intentado hacer &lt;strong&gt;aArray=a.trim().split(&amp;quot; &amp;quot;)&lt;/strong&gt; pero ni con esas...seguro que hay una forma rebuscada de hacerlo, en python no hay que pensar tanto. Adem&amp;aacute;s es bastante m&amp;aacute;s lento que python y eso que se ejecuta compilado en bytecode:
&lt;/p&gt;
&lt;pre&gt;
$ time python -c &amp;quot;a=&#039;esto   es una cadena   de texto&#039;; print a.split()&amp;quot; &amp;gt;/dev/null
real	0m0.026s
user	0m0.020s
sys	0m0.004s
&lt;/pre&gt;
&lt;pre&gt;
$ time java test &amp;gt; /dev/null
real	0m0.135s
user	0m0.064s
sys	0m0.016s
&lt;/pre&gt;
   </description>
   <link>http://mariodebian.com/post/1/689</link>
   <comments>http://mariodebian.com/post/1/689</comments>
   <guid>http://mariodebian.com/post/1/689</guid>
      <dc:creator>mario</dc:creator>
      
    <category>android</category>
         <pubDate>Fri, 08 Jan 2010 00:49:02 +0100</pubDate>
   <source url="http://mariodebian.com/rss/rss20/1">MarioDebian, mi devlog</source>
     </item>
    <item>
   <title>Montando un NAS con Debian Lenny (Intel SS4200)</title>
   <description>
    &lt;p&gt;
Mi &amp;uacute;ltimo &amp;laquo;capricho&amp;raquo; ha sido comprarme un &lt;a href=&quot;http://es.wikipedia.org/wiki/Network-attached_storage&quot;&gt;NAS&lt;/a&gt; para tenerlo como servidor de almacenamiento y aplicaciones en mi peque&amp;ntilde;a red de casa.
&lt;/p&gt;
&lt;p&gt;
Despu&amp;eacute;s de buscar entre muchos modelos y ver las desventajas de los m&amp;aacute;s peque&amp;ntilde;os, basados en micros ARM (lentos) me decid&amp;iacute; por el &lt;a href=&quot;http://www.intel.com/design/servers/storage/ss4200/index.htm&quot;&gt;Intel SS4200&lt;/a&gt;, tuvo que ver que hab&amp;iacute;ua bastante documentaci&amp;oacute;n de montarlo desde &lt;a href=&quot;http://www.binarito.com/?cat=7&quot;&gt;el blog de binarito&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
&lt;a id=&quot;res_347&quot; href=&quot;http://mariodebian.com/gallery/1/2009-12-31%2014.50.46.jpg&quot;&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
&lt;img src=&quot;http://mariodebian.com/gallery/1/previews/2009-12-31%2014.50.46.png&quot; border=&quot;0&quot; /&gt;
&lt;/div&gt;
&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
El NAS es un poco m&amp;aacute;s grande de lo que me esperaba (lo que est&amp;aacute; encima es un disco USB de 3.5&amp;quot;) pero si lo vemos por dentro es bastante l&amp;oacute;gico ya que tiene 4 discos y la refrigeraci&amp;oacute;n es a trav&amp;eacute;s del flujo desde la parte delantera. 
&lt;/p&gt;
&lt;p&gt;
&lt;a id=&quot;res_348&quot; href=&quot;http://mariodebian.com/gallery/1/2009-12-31%2014.51.31.jpg&quot;&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
&lt;img src=&quot;http://mariodebian.com/gallery/1/previews/2009-12-31%2014.51.31.png&quot; border=&quot;0&quot; /&gt;
&lt;/div&gt;
&lt;/a&gt; He comprado 4 discos Western Digital (son m&amp;aacute;s silenciosos y m&amp;aacute;s duraderos que los t&amp;iacute;picos Seagate), el NAS lo he comprado por ebay en una tienda alemana por unos 216 &amp;euro; y los dicos (1 TB) me han costado 325 &amp;euro;.
&lt;/p&gt;
&lt;p&gt;
&lt;span style=&quot;font-size: large&quot;&gt;Instalaci&amp;oacute;n&lt;/span&gt;
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Como el NAS no tiene tarjeta gr&amp;aacute;fica hay varias opciones de instalarlo, la que aparentemente es la &amp;uacute;nica es mediante un &lt;a href=&quot;http://ss4200.pbworks.com/Console-Access-via-RS232&quot;&gt;cable serie DB9-IDC10 con el esquema de conexi&amp;oacute;n DTK/Intel&lt;/a&gt;. (&lt;a href=&quot;http://www.binarito.com/?p=362&quot;&gt;howto instalaci&amp;oacute;n por cable serie&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Los que conocemos un poco linux sabemos que se puede instalar un sistema operativo en un disco duro conectado en una m&amp;aacute;quina y si lo conectamos a otra y hacemos unos pocos cambios, la instalaci&amp;oacute;n sirve y funciona correctamente, as&amp;iacute; que esta fue mi opci&amp;oacute;n, el primer disco duro lo conect&amp;eacute; a un equipo normal e hice uns instalaci&amp;oacute;n de Debian lenny b&amp;aacute;sica, el &amp;uacute;nico detalle a tener en cuenta es hacer que en cada reinicio no se guarde la MAC de la tarjeta de red, para eso edit&amp;eacute; /etc/rc.local a&amp;ntilde;adiendo esta l&amp;iacute;nea&lt;br /&gt;
	&lt;pre&gt;
	cat /dev/null &amp;gt; /etc/udev/rules.d/70-persistent-net.rules
	&lt;/pre&gt;
	antes del exit 0. Esto se puede quitar una vez tengamos en disco en el NAS.&lt;/li&gt;
	&lt;li&gt;La instalaci&amp;oacute;n es muy simple, he usado una partici&amp;oacute;n primaria de unos 10GB para el sistema y el resto lo he dejado como &lt;strong&gt;Linux Raid Autodetect&lt;/strong&gt;. Hay que configurarle una &lt;strong&gt;IP fija en /etc/network/interfaces&lt;/strong&gt; e &lt;strong&gt;instalar ssh&lt;/strong&gt; para poder entrar una vez que lo pinchemos en el NAS.&lt;/li&gt;
	&lt;li&gt;Desmontamos el disco del PC y conectamos el disco (en la ranura 1) en el NAS, conectando el resto de los discos.&lt;/li&gt;
	&lt;li&gt;Conectamos cable de red y alimentaci&amp;oacute;n y encendemos, puede que en el primer arranque no carguepero despu&amp;eacute;s de un botonazo s&amp;iacute; lo hace (quiz&amp;aacute;s la primera vez que la BIOS ve los discos no sabe desde donde arrancar)&lt;/li&gt;
	&lt;li&gt;Una vez que lo tenemos funcionando nos conectamos por ssh y empezamos a instalar aplicaciones...
	&lt;ul&gt;
		&lt;li&gt;ssmtp - reemplazar&amp;aacute; a exim4 y nos permitir&amp;aacute; enviar avisos a la cuenta que indiquemos, yo lo he configurado para que me mande a mi cuenta de gmail cuando pase algo&lt;/li&gt;
		&lt;li&gt;mdadm y lvm2 - Para montar el RAID y luego crear los vol&amp;uacute;menes, con unos discos tan grandes es recomendable usar algo como esto... para montar el RAID5 he ejecutado lo siguiente:&lt;br /&gt;
		&lt;br /&gt;
		Clonamos las particiones a todos los discos
		&lt;pre&gt;
		sfdisk -d /dev/sda &amp;gt; sda.pf
		sfdisk /dev/sdb &amp;lt; sda.pf
		sfdisk /dev/sdc &amp;lt; sda.pf
		sfdisk /dev/sdd &amp;lt; sda.pf
		&lt;/pre&gt;
		Creamos el RAID
		&lt;pre&gt;
		mdadm --create /dev/md0 --level=5 -n 4 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2
		pvcreate /dev/md0
		vgcreate vg0 /dev/md0
		lvcreate --name mirror --size 350G vg0
		lvcreate --name descargas --size 400G vg0
		mkfs.ext3 -m 0 -L mirror /dev/vg0/mirror
		mkfs.ext3 -m 0 -L descargas /dev/vg0/descargas
		&lt;/pre&gt;
		A&amp;ntilde;adir al /etc/fstab
		&lt;pre&gt;
		/dev/mapper/vg0-mirror /mnt/mirror ext3 rw,noatime 0 0
		/dev/mapper/vg0-descargas /mnt/descargas ext3 rw,noatime 0 0 &lt;br /&gt;
		&lt;/pre&gt;
		&lt;/li&gt;
		&lt;li&gt;
		smartmontools -  Monitoriza la salud de los discos y avisa por mail si algo empieza a fallar.
		&lt;/li&gt;
		&lt;li&gt;hddtemp - Es imprescindible que los discos esten lo m&amp;aacute;s frescos posible, ahora mismo estan los 4 entre 36 y 42&lt;/li&gt;
		&lt;li&gt;ntpdate - para que se sincronice la hora (cada d&amp;iacute;a desde el crontab)&lt;/li&gt;
		&lt;li&gt;rsync - impresincible para copiar datos de manera eincremental, hacer backups, etc...&lt;/li&gt;
		&lt;li&gt;m&amp;oacute;dulo ss4200 - es un m&amp;oacute;dulo del kernel para controlar a trav&amp;eacute;s de /sys el estado de los leds frontales, de hecho me he hecho un script que por defecto apaga todos y los enciende si pasa algo raro. En &lt;a href=&quot;http://ss4200.pbworks.com/Debian-Led&quot;&gt;la web&lt;/a&gt;, explican como parchear el kernel pero no es necesario ya que se puede compilar como m&amp;oacute;dulo y las cabeceras de Debian (linux-headers-2.6.26-2-686)&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;No ten&amp;iacute;a claro si usar RAID5 o un doble RAID1 con la soluci&amp;oacute;n mixta RAID10, en la doc del paquete mdadm no recomiendan usar RAID5 aunque no acabo de tener muy claros los motivos.&lt;/li&gt;
	&lt;li&gt;Una de las cosas que he probado es instalar Xvfb (virtual framebuffer X server) para tener un programa gr&amp;aacute;fico arrancado (lease estilo JDownloader o un cliente bittorrent) &lt;a href=&quot;http://mariodebian.com/resource/1/353&quot;&gt;aqu&amp;iacute; el script&lt;/a&gt;.&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://mariodebian.com/resource/1/352&quot;&gt;Este es el script para activar los leds (cada 10 minutos desde el cron) en caso de emergencia&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Resumiendo, tener un NAS no es algo que necesite todo el mundo, pero en mi caso (uso port&amp;aacute;til en lugar de sobremesa desde hace muchos a&amp;ntilde;os) los discos USB no estan hechos para funcionar 365/24 y ya me han petado unos cuantos.
&lt;/p&gt;
   </description>
   <link>http://mariodebian.com/post/1/688</link>
   <comments>http://mariodebian.com/post/1/688</comments>
   <guid>http://mariodebian.com/post/1/688</guid>
      <dc:creator>mario</dc:creator>
      
    <category>Personal</category>
      
    <category>Debian</category>
      
    <category>nas</category>
         <pubDate>Thu, 31 Dec 2009 15:53:38 +0100</pubDate>
   <source url="http://mariodebian.com/rss/rss20/1">MarioDebian, mi devlog</source>
     </item>
    <item>
   <title>Microsoft ha perdido el tren en educación</title>
   <description>
    &lt;p&gt;
S&amp;iacute;, si no te le crees empieza a creertelo. Quiz&amp;aacute;s hoy no y ma&amp;ntilde;ana tampoco pero lo veremos y el tiempo pondr&amp;aacute; a cada uno en su sitio.
&lt;/p&gt;
&lt;p&gt;
Cuando &lt;a href=&quot;http://www.google.com&quot;&gt;otros&lt;/a&gt; se dedican a poner un mont&amp;oacute;n de servicios en l&amp;iacute;nea, ellos siguen pensando que al escritorio a&amp;uacute;n le queda algo que ofrecer. En otra ocasi&amp;oacute;n ya comentar&amp;eacute; lo acojonado que me tiene el nuevo monopolio.
&lt;/p&gt;
&lt;p&gt;
Hace muchos a&amp;ntilde;os hizo algo que no supo hacer nadie, poner algo muy elitista (un ordenador/PC y un sistema operativo) en manos del gran p&amp;uacute;blico, y eso debemos agradecerselo en su justa medida, pero hoy es una losa que pesa demasiado y que no deja innovar (si no se quiere) lo suficientemente r&amp;aacute;pido al resto de nuevos visionarios&amp;trade;. 
&lt;/p&gt;
&lt;p&gt;
Se hacen p&amp;uacute;blicos &lt;a href=&quot;http://www.educacion.es/horizontales/prensa/convocatorias/2009/12/microsoft.html&quot;&gt;acuerdos&lt;/a&gt; cuando ven que est&amp;aacute;n a punto de perder el tren. Su modelo de negocio se virtualiza y ven como su facturaci&amp;oacute;n se resentir&amp;aacute;, por lo que proponen cobrar licencias por a&amp;ntilde;o (por ejemplo un Windows XP $100/a&amp;ntilde;o, s&amp;iacute;, por a&amp;ntilde;o) regalan su sistema operativo si compras la suite ofim&amp;aacute;tica y otro tipo de jugadas que hace 10 a&amp;ntilde;os ni se les hubiera pasado por la cabeza &amp;iquest;desesperaci&amp;oacute;n? 
&lt;/p&gt;
&lt;p&gt;
Los colegios (me refiero a los privados, los p&amp;uacute;blicos est&amp;aacute;n en otra dimensi&amp;oacute;n con demasiada burocracia y politiqueo) aceptan con mejores ganas el Software Libre, varios de &lt;a href=&quot;http://thinetic.es&quot;&gt;nuestros&lt;/a&gt; clientes est&amp;aacute;n migrando todas sus aulas e instalaciones a, al menos, un modelo de arranque dual con las miras de quitar para siempre el sistema operativo de las 7 letras en uno o dos a&amp;ntilde;os, otros directamente (y de la noche a la ma&amp;ntilde;ana) cambian uno por otro (reciclando con &lt;a href=&quot;http://www.tcosproject.org&quot;&gt;TCOS&lt;/a&gt; por ejemplo) aparcan sus dominios en Google Apps, y reciben con los ojos como platos cualquier nuevo invento que les ayude a reducir costes y ser m&amp;aacute;s productivos (estamos montando un mont&amp;oacute;n de filtros de control de contenido, VPNs y gestores documentales)
&lt;/p&gt;
&lt;p&gt;
Creo que no soy un reci&amp;eacute;n llegado (llevamos algo m&amp;aacute;s de 3 a&amp;ntilde;os trabajando para educaci&amp;oacute;n) y desde la cercan&amp;iacute;a se ven mucho mejor las tendencias. En Castilla y Le&amp;oacute;n y supongo que en otras comunidades, el colegio privado/concertado marca tendencia y el p&amp;uacute;blico suele imitarle si ve que funciona.
&lt;/p&gt;
&lt;p&gt;
Como las capas &lt;a href=&quot;http://es.wikipedia.org/wiki/Modelo_OSI&quot;&gt;OSI/TCP,&lt;/a&gt; la peque&amp;ntilde;a empresa es una parte necesaria en la modernizaci&amp;oacute;n de la educaci&amp;oacute;n y es la que hace de pasarela, ayuda y formaci&amp;oacute;n para el desarrollo de las TICs, debemos saber hacerlo y creo que cada d&amp;iacute;a hay m&amp;aacute;s empresas siguiendo estas direcciones.
&lt;/p&gt;
&lt;p&gt;
As&amp;iacute; que hag&amp;aacute;moslo, por el Software Libre en Educaci&amp;oacute;n. 
&lt;/p&gt;
&lt;p&gt;
PD.- Se que no escribo mucho &amp;uacute;ltimamente pero con la entrada de hoy os podeis imaginar que tenemos mucho trabajo &lt;img src=&quot;http://mariodebian.com/js/tinymce/plugins/emotions/images/smiley-laughing.gif&quot; border=&quot;0&quot; alt=&quot;Laughing&quot; title=&quot;Laughing&quot; /&gt;
&lt;/p&gt;
   </description>
   <link>http://mariodebian.com/post/1/687</link>
   <comments>http://mariodebian.com/post/1/687</comments>
   <guid>http://mariodebian.com/post/1/687</guid>
      <dc:creator>mario</dc:creator>
      
    <category>General</category>
         <pubDate>Wed, 09 Dec 2009 20:48:21 +0100</pubDate>
   <source url="http://mariodebian.com/rss/rss20/1">MarioDebian, mi devlog</source>
     </item>
    <item>
   <title>HOWTO cacheado de repositorios Debian/Ubuntu para colegios/instituciones</title>
   <description>
    &lt;p&gt;
La idea de este HOWTO es poder cachear paquetes deb en un servidor local cuando en un centro tienen varios equipos con Debian/Ubuntu instalado (supongo que valdr&amp;aacute; para otros casos menos concretos)
&lt;/p&gt;
&lt;p&gt;
1.- Tenemos que tener un servidor haciendo de puerta de enlace, pongamos que tiene como IP en la LAN interna: 192.168.1.1
&lt;/p&gt;
&lt;p&gt;
2.- En ese equipo tenemos que instalar un apache, el paquete &lt;a href=&quot;http://packages.debian.org/source/unstable/approx&quot;&gt;approx&lt;/a&gt; y un servidor DNS, me quedo con dnsmasq. Se pueden tener m&amp;aacute;s cosas, yo por ejemplo tengo montado un squid transparente.
&lt;/p&gt;
&lt;p&gt;
3.- Configuramos approx para que cachee paquetes, en /etc/approx/approx.conf a&amp;ntilde;adimos estas 2 l&amp;iacute;neas al final:
&lt;/p&gt;
&lt;pre&gt;
ubuntu http://uk.archive.ubuntu.com/ubuntu
debian http://ftp.uk.debian.org/debian
&lt;/pre&gt;
&lt;p&gt;
L&amp;oacute;gicamente pon los repositorios que vayan mejor seg&amp;uacute;n tu zona geogr&amp;aacute;fica y &lt;u&gt;&lt;strong&gt;no uses los principales&lt;/strong&gt;&lt;/u&gt;. Es importante que apuntemos a uno local, porque si apuntamos al principal haremos un bucle infinito. Approx por defecto sirve los repos en el puerto 9999, ahora necesitamos redirigir el 80 al 9999 de nuestra m&amp;aacute;quina. Se puede hacer con iptables (sabiendo las IPs de destino) o se puede hacer con mod_proxy de apache2.
&lt;/p&gt;
&lt;p&gt;
4.- Creamos un site para apache /etc/apache2/sites-available/cache.mirror:
&lt;/p&gt;
&lt;pre&gt;
ProxyRequests Off
ProxyPass /debian/ http://localhost:9999/debian/ 
ProxyPassReverse /debian/ http://192.168.1.1:9999/debian/
&lt;br /&gt;
ProxyPass /ubuntu/ http://localhost:9999/ubuntu/ 
ProxyPassReverse /ubuntu/ http://192.168.1.1:9999/ubuntu/
&lt;/pre&gt;
&lt;p&gt;
5.- Lo activamos:
&lt;/p&gt;
&lt;pre&gt;
# a2enmod proxy
# a2enmod proxy_http
# a2ensite cache.mirror
/etc/init.d/apache2 restart
&lt;/pre&gt;
&lt;p&gt;
6.-Ahora viene la magia... como los equipos de la red interna tienen 192.168.1.1 como DNS y gateway (y si no, lo forzamos con iptables) editamos /etc/hosts y a&amp;ntilde;adimos:
&lt;/p&gt;
&lt;pre&gt;
# cache paquetes deb
192.168.1.1 archive.ubuntu.com
192.168.1.1 ftp.debian.org
&lt;/pre&gt;
&lt;p&gt;
En los equipos del centro tenemos que configurar los repositorios con estos repositorios, si usamos uno nacional no cachear&amp;aacute;... Por ejemplo este ser&amp;iacute;a el contenido de un sources.list de Ubuntu Hardy:
&lt;/p&gt;
&lt;pre&gt;
deb http://archive.ubuntu.com/ubuntu hardy main universe multiverse restricted
deb http://archive.ubuntu.com/ubuntu hardy-updates main universe multiverse restricted
deb http://archive.ubuntu.com/ubuntu hardy-security main universe multiverse restricted
&lt;/pre&gt;
&lt;p&gt;
7.-Reiniciamos dnsmasq (que lee el /etc/hosts antes de hacer peticiones DNS hacia fuera)
&lt;/p&gt;
&lt;p&gt;
8.- Para comprobar que est&amp;aacute; funcionando en nuestro servidor miramos /var/cache/approx/ y veremos como empiezan a aparecer archivos. El paquete tiene 2 utilidades que se ejecutan diaria y semanalmente, una para actualizar los Packages.gz y otra para hacer limpieza por lo que no deber&amp;iacute;amos preocuparnos de tener que mantener el sistema.Supongo que si crece exager&amp;aacute;damente y borramos el contenido de la cache seguir&amp;aacute; funcionando y volver&amp;aacute; a descargar...
&lt;/p&gt;
&lt;p&gt;
Esta soluci&amp;oacute;n desde el punto de vista de consumo de ancho de banda es mejor que debmirror ya que s&amp;oacute;lo cacheamos los paquetes seg&amp;uacute;n se instalan, con debmirror se descarga el repositorio completo.
&lt;/p&gt;
   </description>
   <link>http://mariodebian.com/post/1/686</link>
   <comments>http://mariodebian.com/post/1/686</comments>
   <guid>http://mariodebian.com/post/1/686</guid>
      <dc:creator>mario</dc:creator>
      
    <category>Linux</category>
      
    <category>Debian</category>
         <pubDate>Thu, 08 Oct 2009 16:02:12 +0200</pubDate>
   <source url="http://mariodebian.com/rss/rss20/1">MarioDebian, mi devlog</source>
     </item>
    <item>
   <title>Accesorios de mi HTC Magic</title>
   <description>
    &lt;p&gt;
Despu&amp;eacute;s de gastarme los dineros en eBay por el m&amp;oacute;vil estuve buscando accesorios &amp;uacute;tiles ya que este m&amp;oacute;vil se &amp;laquo;zampa&amp;raquo; la bater&amp;iacute;a si no andas con cuidado, y este es el resultado despu&amp;eacute;s de esperar: 
&lt;/p&gt;
&lt;p&gt;
&lt;a id=&quot;res_346&quot; href=&quot;http://mariodebian.com/gallery/1/20090927125050.v1.jpg&quot;&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
&lt;img src=&quot;http://mariodebian.com/gallery/1/previews/20090927125050.v1.png&quot; border=&quot;0&quot; /&gt; &lt;br /&gt;
&lt;/div&gt;
&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
El consumo de bater&amp;iacute;a tambi&amp;eacute;n se puede mejorar con aplicaciones, la mejor que he encontrado sin duda es &lt;a href=&quot;http://es.androlib.com/android.application.com-acme-android-powermanagerpro-jmnz.aspx&quot;&gt;PowerManager&lt;/a&gt;, de hecho he descargado la versi&amp;oacute;n de pago ($0,99)
&lt;/p&gt;
   </description>
   <link>http://mariodebian.com/post/1/685</link>
   <comments>http://mariodebian.com/post/1/685</comments>
   <guid>http://mariodebian.com/post/1/685</guid>
      <dc:creator>mario</dc:creator>
      
    <category>Personal</category>
      
    <category>htc</category>
         <pubDate>Sun, 27 Sep 2009 13:09:29 +0200</pubDate>
   <source url="http://mariodebian.com/rss/rss20/1">MarioDebian, mi devlog</source>
     </item>
    <item>
   <title>Estamos de mudanza: mariodebian.com</title>
   <description>
    &lt;p&gt;
A partir de ahora este blog se mueve a su propio dominio:
&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;span style=&quot;font-size: x-large&quot;&gt;&lt;a href=&quot;http://mariodebian.com&quot;&gt;http://mariodebian.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Actualiza tu lector de RSS con el nuevo dominio (el viejo empezar&amp;aacute; a apuntar al nuevo) 
&lt;/p&gt;
   </description>
   <link>http://mariodebian.com/post/1/684</link>
   <comments>http://mariodebian.com/post/1/684</comments>
   <guid>http://mariodebian.com/post/1/684</guid>
      <dc:creator>mario</dc:creator>
      
    <category>Personal</category>
         <pubDate>Sat, 26 Sep 2009 18:07:40 +0200</pubDate>
   <source url="http://mariodebian.com/rss/rss20/1">MarioDebian, mi devlog</source>
     </item>
    <item>
   <title>Compilando rsync en Android</title>
   <description>
    &lt;p&gt;
Hace muy pocos d&amp;iacute;as que he aterrizado en el mundo de &lt;a href=&quot;http://www.android.com/&quot;&gt;android&lt;/a&gt; pero creo que voy avanzando poco a poco. Voy a publicar una minireceta de como compilar utilidades linux (sencillas) nativamente en Android. Antes de empezar ser&amp;iacute;a bueno recordar que los binarios de Android se compilan para arquitectura &lt;a href=&quot;http://en.wikipedia.org/wiki/ARM_architecture&quot;&gt;ARM&lt;/a&gt; por lo que o usamos un emulador (tipo qemu) o un toolchain. Yo he usado el toolchain para compilar nativamente, con el emulador deber&amp;iacute;amos compilar en est&amp;aacute;tico y el binario ocupar&amp;aacute; bastante m&amp;aacute;s. Vamos por pasos:
&lt;/p&gt;
&lt;p&gt;
1.- Descargar el git de android, &lt;a href=&quot;http://source.android.com/download&quot;&gt;viene muy bien explicado aqu&amp;iacute;&lt;/a&gt;. Yo lo he descargado en mi $HOME/toolchain.
&lt;/p&gt;
&lt;pre&gt;
mkdir ~/toolchain
cd toolchain
wget http://android.git.kernel.org/repo
chmod +x repo
./repo init -u git://android.git.kernel.org/platform/manifest.git
./repo sync
&lt;/pre&gt;
&lt;p&gt;
2.- Hora de tomarse algo, descarga la friolera de 2.1 GiB, seguimos, hay que compilar la parte base (librer&amp;iacute;as)
&lt;/p&gt;
&lt;pre&gt;
make BUILD_TINY_ANDROID=true
&lt;/pre&gt;
&lt;p&gt;
3.- Tarda otro buen ratillo, ahora compilamos la parte oprofile (lo he compilado aqu&amp;iacute; porque as&amp;iacute; ten&amp;iacute;a a mano los includes de popt.h que son los &amp;uacute;nicos que he necesitado), &lt;a href=&quot;http://blog.chinaunix.net/u/8059/showart_1420446.html&quot;&gt;cargamos el entorno de ayuda&lt;/a&gt; y compilamos el directorio actual y subdirectorios con &amp;quot;mm&amp;quot;:
&lt;/p&gt;
&lt;pre&gt;
cd external/oprofile
. ../../build/envsetup.sh
mm 
&lt;/pre&gt;
&lt;p&gt;
4.- Ahora descargamos las fuentes de rsync (pueden valer las de Debian)
&lt;/p&gt;
&lt;pre&gt;
dget -u http://ftp.uk.debian.org/debian/pool/main/r/rsync/rsync_3.0.6-1.dsc
cd rsync-3.0.6
&lt;/pre&gt;
&lt;p&gt;
5.- La parte que m&amp;aacute;s me ha costado ha sido entender los Makefile de Android que se llaman Android.mk. Este es mi Android.mk para rsync:
&lt;/p&gt;
&lt;pre&gt;
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
flist.c\
rsync.c\
generator.c\
receiver.c\
cleanup.c\
sender.c\
exclude.c\
util.c\
main.c\
checksum.c\
match.c\
syscall.c\
log.c\
backup.c\
options.c\
io.c\
compat.c\
hlink.c\
token.c\
uidlist.c\
socket.c\
hashtable.c\
fileio.c\
batch.c\
clientname.c\
chmod.c\
acls.c\
xattrs.c\
progress.c\
pipe.c\
params.c\
loadparm.c\
clientserver.c\
access.c\
connection.c\
authenticate.c\
lib/wildmatch.c\
lib/compat.c\
lib/snprintf.c\
lib/mdfour.c\
lib/md5.c\
lib/permstring.c\
lib/pool_alloc.c\
lib/sysacls.c\
lib/sysxattrs.c\
zlib/deflate.c\
zlib/inffast.c\
zlib/inflate.c\
zlib/inftrees.c\
zlib/trees.c\
zlib/zutil.c\
zlib/adler32.c\
zlib/compress.c\
zlib/crc32.c
LOCAL_SRC_FILES += netbsd_getpass.c
LOCAL_STATIC_LIBRARIES := \
libpopt
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/.. \
$(LOCAL_PATH)/../libdb \
$(LOCAL_PATH)/../libutil \
$(LOCAL_PATH)/../libop \
$(LOCAL_PATH)/../libabi
LOCAL_MODULE := rsync
include $(BUILD_EXECUTABLE)
&lt;/pre&gt;
&lt;p&gt;
El archivo netbsd_getpass.c lo he tomado de ~/toolchain/external/dropbear/netbsd_getpass.c ya que Android no debe tener la rutina getpass(), s&amp;oacute;lo se usa si la rutina getpassf() de rsync nativa falla.
&lt;/p&gt;
&lt;p&gt;
6.- A compilar toca, s&amp;oacute;lo hay que ejecutar &amp;quot;mm&amp;quot; dentro del directorio rsync-3.0.6 y si todo va bien veremos al final:
&lt;/p&gt;
&lt;pre&gt;
target Executable: rsync (out/target/product/generic/obj/EXECUTABLES/rsync_intermediates/LINKED/rsync)
target Non-prelinked: rsync (out/target/product/generic/symbols/system/bin/rsync)
target Strip: rsync (out/target/product/generic/obj/EXECUTABLES/rsync_intermediates/rsync)
Install: out/target/product/generic/system/bin/rsync
make: se sale del directorio `/home/mario/toolchain&#039;
&lt;/pre&gt;
&lt;p&gt;
7.- Para copiarlo al m&amp;oacute;vil (conectar el cable USB y activar el modo depuraci&amp;oacute;n USB en las preferencias)Necesitamos el SDK de Android.
&lt;/p&gt;
&lt;pre&gt;
cd ~/sdk/tools
sudo ./adb kill-server
sudo ./adb remount
sudo ./adb push ~/toolchain/out/target/product/generic/system/bin/rsync /system/bin
sudo ./adb shell chmod 755 /system/bin
&lt;/pre&gt;
&lt;p&gt;
Ya podemos abrir el terminal desde android (o desde adb shell) y ejecutar rsync para ver si se copio bien.
&lt;/p&gt;
&lt;p&gt;
Se me ocurren miles de cosas sencillas (&lt;a href=&quot;http://code.google.com/p/gscript-android/&quot;&gt;GScript&lt;/a&gt; + rsync) para tener las fotos publicadas en un blog, hacer copias de seguridad remotas (incrementales) o incluso usarlo para descargar contenido pudiendo perder la conexi&amp;oacute;n temporalmente.
&lt;/p&gt;
&lt;p&gt;
Rizando el rizo, estar&amp;iacute;a guapo hacer un peque&amp;ntilde;o frontend con las opciones m&amp;aacute;s usadas y llamarlo desde una aplicaci&amp;oacute;n APK.
&lt;/p&gt;
&lt;p&gt;
Como pr&amp;oacute;ximo objectivo compilar alguna otra cosa que hecho en falta (&amp;iquest;git? etc...) 
&lt;/p&gt;
   </description>
   <link>http://mariodebian.com/post/1/683</link>
   <comments>http://mariodebian.com/post/1/683</comments>
   <guid>http://mariodebian.com/post/1/683</guid>
      <dc:creator>mario</dc:creator>
      
    <category>Linux</category>
      
    <category>Proyectos</category>
      
    <category>android</category>
         <pubDate>Tue, 15 Sep 2009 03:13:49 +0200</pubDate>
   <source url="http://mariodebian.com/rss/rss20/1">MarioDebian, mi devlog</source>
     </item>
   </channel>
</rss>