jueves, 13 de marzo de 2008

Gnome en Ubuntu no cubre toda la pantalla

Después de mucho pensármelo, me he comprado un portátil sin sistema operativo (los hay, pero escondidos) para instalarle Ubuntu.

La buena noticia es que sin hacer nada funciona la tarjeta de sonido (una bestia negra para mi, he tenido linux en 2 ordenadores y en ninguno funcionaba, ni siquiera recompilando el kernel).

La mala: nada mas empezar, gnome (el entorno gráfico) no cubría toda la pantalla. La pantalla es panorámica, de 12 pulgadas, y las barras superior e inferior y las ventanas maximizadas sólo llegaban a 2/3 de la misma (como si fuese cuadrada).

La primera vez traté de seleccionar otra controladora gráfica de la lista, y otra pantalla en lugar de la genérica. Resultado: me cargué el entorno gráfico. Cómo no había hecho nada, preferí reinstalarlo todo de nuevo antes de empezar a tocar los archivos de configuración con el vi.

La segunda vez ya fui directamente a buscar en google el problema. Tiene solución, y es más o menos fácil. Puedes probar si la solución funciona antes de ponerte a tocar los archivos de configuración.

Abre una línea de comandos y escribe lo siguiente:

aracne@portatil:~$ xrandr

A mi me devolvió lo siguiente:
Screen 0: minimum 320 x 200, current 1280 x 800, maximum 1280 x 1280
VGA disconnected (normal left inverted right)
LVDS connected 1280x800+0+0 (normal left inverted right) 261mm x 163mm
1280x800 59.8*+ 60.0
1280x768 60.0
1024x768 60.0
800x600 60.3
640x480 59.9
TV connected 1024x768+0+0 (normal left inverted right) 0mm x 0mm
1024x768 30.0*
800x600 30.0
848x480 30.0
640x480 30.0

Uhm, así que tengo una televisión conectada además de mi pantalla... Lo que pasa es que está activa la salida de televisión y está liando a la pantalla porque tiene otro tamaño, es un bug de Ubuntu.
Para ver si es eso lo que da el problema, sólo hay que desconectar el display "sospechoso" para ver si se arregla. Ésto no es permanente, así que no se puede liar nada. A la peor, se reinicia y ya está. Escribid:
aracne@portatil:~$ xrandr --output TV --off

LVDS parece mi pantalla, así que desconecto el otro, al que xrandr llama "TV". Si se llama de otra forma, poned lo que pone antes de "connected".

Si se soluciona, perfecto, podemos hacerlo permanente. Si no se soluciona, lo que voy a decir ahora tampoco lo va a arreglar.

En el momento de desconectar el segundo display, mi pantalla pasó a ocupar toda la pantalla (yeah). Lo que pasa, es que como esto no es permanente, habría que hacerlo cada vez que inicias el ordenador. Para evitar ésto, hay que cambiar el fichero de configuración que en teoría está en /etc/X11/xorg.conf

Hay que abrirlo con un editor y añadir lo siguiente:
Section "Monitor"
Identifier "Generic Monitor"
Option "DPMS"
Option "Monitor-LVDS" "Internal Panel"
Option "Monitor-TV" "External TV"

EndSection

Section "Monitor"
Identifier "External TV"
Option "Ignore" "true"
EndSection


En rojo va lo que he añadido. La parte en negro ya debería estar más o menos así en vuestro fichero. Esto lo he copiado de otro sitio, así que no tengo muy claro cómo funciona, pero procedo a tratar de explicarlo:
Option "Monitor-XXX" "YYY"

Poneis tantas opciones dentro de la sección "Monitor" como displays os salgan con xrandr. A cada una la llamais "Monitor-XXX", donde XXX es como randr llama a cada display (en mi caso hay dos opciones, Monitor-LVDS y Monitor-TV, más arriba está lo que me salía con xrandr). En YYY podeis poner lo que querais, es como vais a describir ese display. Mejor que sea algo descriptivo.

Section "Monitor"
Identifier "ZZZ"
Option "Ignore" "true"
EndSection

En ZZZ poneis la cadena que describe el display que quereis desconectar (la habeis puesto en una opción arriba).

Ahora guardais el fichero xorg.conf. Como se necesitan permisos de administrador para cambiarlo, si os da problemas podeis hacer lo siguiente.

  • Guardar el fichero de configuración en vuestro home (por ejemplo, como "xorg_new.conf")

  • Abrir una línea de comandos y escribir:
    cd /etc/X11
    sudo mv xorg.conf xorg_old.conf

    Esto renombrara el fichero antiguo a xorg_old.conf en el mismo directorio. En el peor de los casos, solo necesitais una línea de comandos y hacer "sudo mv xorg_old.conf xorg.conf" para arreglar el desaguisado (si por ejemplo gnome dice que no le gusta tu cara ni tu nuevo fichero de configuración). Te pedirá la password.
  • sudo mv /home/[tu_nombre_de_usuario]/xorg_new.conf xorg.conf

    Esto moverá el nuevo fichero que tienes en home y lo llamará xorg.conf. De nuevo te pedirá la password

Ahora, la próxima vez que arranques, deberías tener ya bien la pantalla.

Enlaces (en inglés):
https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/156550
http://wiki.debian.org/XStrikeForce/HowToRandR12

viernes, 18 de enero de 2008

No funcionan los puertos USB en una placa base Asus P4C800E

Siguiendo con mi línea, me ofrecí voluntaria a arreglar un ordenador de un conocido (ese día no llevaba mi camiseta de "No pienso arreglar tu ordenador") al cual no le funcionaba ningún puerto USB.

Después de probarlos un poco, parecía que alguna vez se dignaban a funcionar, así que decidí formatear para asegurarme de que no fuese el software. Aparte de que el único driver que se negó a instalarse del cd de la placa fuese el de la tarjeta de red (¿Por qué siempre el único que no puedo conseguir a través de internet?), los puertos USB, con driver y todo y con una instalación limpia de windows seguían dando los mismos problemas.

Le dije que tendría que llevarlo a un servicio técnico ya que probablemente fuese un problema de hardware, pero como soy muy cabezona, cuando estaba en casa buscando el $&#$%& driver de la tarjeta de red, se me ocurrió buscar en google el modelo de la placa seguido de "USB ports do not work".

Pues resulta que la famosa placa ASUS P4C800-E tiene unos puertos que se funden por completo en ciertas circunstancias, sobre todo cuando conectas un aparato a través del USB que tiene su propio cable de alimentación. Como por ejemplo la impresora que le habían regalado y que estaba tratando de conectar. Muy buena esa.

Mi consejo: si está en garantía probablemente lo cubra, ya que es un defecto de la placa. En cualquier caso, no tiene mucho apaño, así que siempre puedes comprar una tarjeta PCI con puertos USB y olvidarte de los otros.

Enlace (en inglés)

viernes, 4 de enero de 2008

Reemplazar expresiones regulares en frontpage

Es un problema estúpido, pero me he comido la cabeza de una forma espectacular.

Supongamos que usando Frontpage queremos reemplazar un texto que varía ligeramente de una aparición a otra por el mismo texto seguido de algo.

Concretamente tenemos un montón de enlaces del tipo:

<a href="algo" name="nombre1" >

<a href="algo" name="nombre2" >


Yo quería cerrarlos sin más para que el texto no estuviese iluminado.

Buscarlos es fácil, no hay más que usar expresiones regulares. Básicamente, para los que no lo sepan, coges la parte fija, sustituyes la parte variable por una expresión regular que la describa y marcas en el diálogo de buscar y reemplazar la casilla de "expresiones regulares". En nuestro caso, buscamos:
<a href=".@" name=".@" >

que es <a href=" seguido de un número de caracteres cualesquiera seguido de " name=" seguido de otro numero de caracteres cualesquiera seguido de " >.

Uso @ en vez de * para que si hay dos ocurrencias en la misma línea no me coja la línea entera, sino que me las encuentre por separado. Si no, solo encontrará una ocurrencia mucho más gorda.

Vale, hasta aquí estupendo. Me los encuentra y todo, pero ahora aparece el problema ¿Cómo narices reemplazo el texto variable para que siga variable?

Me ha costado encontrarlo, pero está aquí. Si en la caja de reemplazar pones \0, eso es todo el texto que ha encontrado, y en mi caso sólo tengo que poner "\0</a>" para cerrar inmediatamente el enlace. También puedes cerrar partes de la búsqueda entre corchetes para luego aprovecharlas en el reemplazo. Los corchetes no hacen nada en la búsqueda.

Ejemplo:

Búsqueda:<a href=".@" name=".@" >

Uno de los textos es <a href="algo" name="nombre2" >
  • si ponemos en reemplazar "</a>" nos reemplazará el texto por </a> (y el texto desaparecerá).

  • Si ponemos en reemplazar "\0</a>", nos reemplazará el texto por sí mismo seguido de </a> (en este caso <a href="algo" name="nombre2" ></a>).


Si queremos aprovechar partes de la búsqueda, hay que meterlas entre corchetes. Luego podrás usarlas poniendo \1 para el primer corchete, \2 para el segundo y así...

Búsqueda:<a href="{.@}" name="{.@}" >

Uno de los textos es <a href="www.algo.es" name="nombre_del_enlace" >
Si ponemos en reemplazar "\0 tiene como href \1 y como nombre \2" obtendremos <a href="www.algo.es" name="nombre_del_enlace" > tiene como href www.algo.es y como nombre nombre_del_enlace.


Espero que os sirva.

jueves, 20 de diciembre de 2007

Cómo hacer un fondo transparente en Gimp

Problema: Tenemos una imagen en jpg, y queremos ponerle un fondo transparente para poder superponerla a otra imagen. ¿Cómo lo hacemos?

Os presento a nuestra imagen (Oh, qué mona...)




Abre el menú de capas (Archivo->Dialogos->Capas). Como es un jpg, habrá una sola capa, llamada fondo. Haz click derecho sobre ella y selecciona "Añadir canal Alfa".




Ahora ya se puede borrar el fondo. Puedes seleccionarlo con la varita mágica, por ejemplo, y usar la goma de borrar.




No olvides guardar la imagen luego con un formato que admita transparencia (por ejemplo el xcf de gimp) hasta que hagas el montaje, y luego podrás guardar el resultado final de nuevo en jpg.


(La solución encontrada aquí)

martes, 11 de diciembre de 2007

Thunderbird no me mueve los mensajes basura a la carpeta de correo basura

Llevo bastante tiempo usando Thunderbird para leer mi correo electrónico. Me funciona bastante bien, pero por algún motivo desconocido no me mueve jamás el correo basura a su carpeta aparte (ni cuando lo marca automáticamente ni cuando lo marco yo manualmente).

Parece ser que es un bug que se mantiene desde los más remotos orígenes de Thunderbird, y sólo les pasa a algunos desafortunados (como yo). En esta pagina (en inglés) podeis encontrar algunas cosas que pueden ayudar a solucionarlo. Lamentablemente, ninguna me ha funcionado.

Lo que he hecho es instalarme un complemento llamado ThunderBayes, que por lo menos me hace caso. Instala un programita en tu ordenador que se llama SpamBayes, que está escuchando en el puerto 8880 y le envía los correos para que los clasifique. Puedes acceder a ese programa escribiendo "http://localhost:8880/" en el navegador, y entrenarlo directamente buscando en el apartado "Train on a message, mbox file or dbx file" tu carpeta de correo basura y carpetas de correo legítimo, y seleccionando luego "train as spam" (si es una carpeta de correo basura) o "train as ham" (si lo que contiene es correo legítimo). También puedes irlo entrenando marcando el correo que te va llegando.

Para usarlo desde Thunderbird, lo único que necesitas hacer es poner el botón del complemento en tu barra de tareas. En la barra de arriba, haz click derecho y selecciona "personalizar". Te saldrá una lista de botones para añadir, busca uno que ponga "spam" y arrástralo sobre la barra. Selecciona un mensaje, haz click en la flechita del botón, y te permitirá escoger si lo quieres marcar como spam (correo basura) o ham (correo legítimo). Si pulsas en el botón, te lo marcará como lo último que hayas seleccionado. Una vez hayas marcado suficientes correos legítimos o basura, los que tengan más probabilidad de ser basura se moverán automáticamente a la carpeta basura, y los que marques manualmente como basura también (y sí, esto sí me funciona).

jueves, 19 de julio de 2007

Error 8.8.8.8 en metronic twinbox

Estaba yo un día tranquilamente cuando mi TDT integrado con satélite (concretamente un metronic twinbox evo2) dejó de funcionar. No respondía al botón de encendido, y en el display aparecía un 8.8.8.8 que parpadeaba débilmente. Probé a desenchufarlo y enchufarlo y el 8.8.8.8 seguía impertérrito.

Bueno, me fuí toda confiada a comprarme otra del mismo modelo (la verdad, me gustaba) y descubrí para mi horror que habían sacado un nuevo modelo que valía exactamente lo mismo pero que no tenía salida por cable de televisión normal, sólo por euroconector. Por el extraño montaje que tengo, debido principalmente a que uno de los euroconectores de mi televisión ha dejado de funcionar, necesitaba esa salida. Tampoco había modelos de otras marcas que la tuviesen. Ni encontré el ticket para reclamar la garantía (sí, tiene menos de dos años).

Se me ocurrió buscar en google, y tras acertar con las palabras mágicas de búsqueda, encontré un foro donde lo mencionaban. Resulta que alguno de los condensadores interiores son de un voltaje incorrecto y se estropean pasado un tiempo. Lo bueno es que tenía solución, lo malo es que la solución requería abrir el aparato, desoldar una pieza y sustituirla por otra.

En fin, manos a la obra. Sigo la guía de HCUS (¡gracias!) que podeís encontrar aquí. El servidor funciona fatal. He hecho esta guía por si deja de funcionar del todo y ya no podeis encontrarla.

Hay otro tipo de error en el que también sale un 8.8.8.8, pero que está fijo del todo, no parpadeando débilmente. Eso es un problema de firmware (que no era mi caso, ya que no estuve trasteando con el dichoso aparato antes de que dejase de funcionar). Si es el vuestro, teneis la solución en la guía que acabo de mencionar y en los enlaces del final.


  1. Abrir la caja. Os encontrareis algo como esto:


    El componente que buscamos está en la placa naranja del lateral. Hay que desatornillar esa placa y desenchufar los dos conectores (el de la corriente y el de datos) para separarla del todo de la caja.

  2. Buscar el condensador estropeado. En los foros que he estado leyendo se habla de que pueden fallar los condensadores C17 y C18. Podeis verlos aquí (también están marcados en la placa en letra de hormiga):


    En mi caso, el condensador C17 parece que está algo abombado (no dañado de forma obvia como en la guía que estoy usando). Lo que voy a hacer es sustituir sólo ese a ver si puedo ahorrarme sustituir también el otro.


  3. Una vez localizado el condensador que vamos a sustituir, le damos la vuelta a la placa y buscamos los dos sitios a los que está soldado. Como se sugiere en la guía, es muy recomendable marcarlos con rotulador de CDs para no liarse más tarde a la hora de desoldar.



  4. Llegó el momento clave. Se coge un soldador de circuitos y con cuidado se calientan los puntos donde el condesador está unido a la parte de atrás de la base hasta que se reblandece el metal. Tiras con cuidado del condensador mientras el metal está líquido para poder sacarlo. Esto se puede hacer sin ayuda, pero si teneis problemas, buscad a alguien que pueda tirar mientras desoldais.


    Una vez tengais el condensador, teneis que ir a una tienda especializada para que os den uno igual, PERO tiene que tener más voltaje (para no tener el mismo problema). HCUS sugiere pedirlo de 20 a 24 V. A mi me lo dieron de 25 V y me va bien.

  5. Una vez tengamos un nuevo condensador, hay que soldarlo en el sitio del otro. Los torpes como yo necesitamos de una persona que empuje suavemente el condensador después de que hayamos calentado el metal lo suficiente para que las puntas del condensador lo atraviesen, pero tengo entendido que hay gente más hábil (sniff).

    IMPORTANTE: Los condensadores tienen un polo positivo y uno negativo. Hay una línea blanca que recorre el lateral del condensador, y esa línea siempre se pone para que coincida con la zona rallada de la base. Mirad los componentes de al lado para aseguraros de ponerlo de la misma forma. Lo siento, pero no logré ninguna foto lo suficientemente clara de ésto.

    Una vez soldado el condensador, añadimos más metal si nos parece que falta (con cuidado) y cortamos las puntas que sobresalgan. Luego hay que atornillar de nuevo la placa a la base y conectar el cable de corriente y el de datos. Si nos encontramos optimistas, podemos también atornillar la caja.

    Cuando lo conecté de nuevo a la corriente, salieron los ochos unos segundos, y luego ¡victoria!





Coste total: 50 centimos (del nuevo condensador). Yo tenía ya un soldador, pero creo que hay soldadores a partir de 6€.




Sobre lo del soldador: Yo, como todo el mundo sabe, soy bastante torpe. Es posible hacerlo, de veras. Sólo hay que tener paciencia y acercar el soldador al metal (teniendo cuidado de no tocar mucho la placa) hasta que este se reblandezca, ir inmediatamente al otro punto para reblandecerlo y luego tirar (o empujar) con cuidado del condensador. Mientras el metal no se funda demasiado y haga chorretones por la placa (cosa que yo no he conseguido) no hay ningún problema.




Sobre las fotos: sí, sé que son horribles. No acertaba con el flash, y mi cámara no es muy buena. Se ven ¿no? Pues ya está...




Enlaces:

Post con los dos tipos de problemas (el del condensador y el del firmware) en el foro donde encontré la solución (el foro es muy bueno pero funciona fatal). Hay otros hilos sobre el mismo tema, así que buscad por ahí.

La guía made by HCUS que he usado.

jueves, 28 de junio de 2007

Cómo funciona la clave de aacs (round 2)

Bien, una vez estudiado mejor el tema, vuelvo a intentar la explicación:

Aacs es un sistema de protección anticopia para los discos de alta definición. Se basa en meter la clave de descifrado de la película dentro de mismo disco que la contiene, pero para acceder a ella se requiere un lector óptico autorizado y un reproductor software autorizado. De este modo en teoría no se puede construir simplemente un ripeador que te copie el contenido al disco duro y ya está, ya que ese ripeador no estará autorizado y no podrá obtener la clave para leer el contenido.

Antes de explicar las formas de atacar el sistema, voy a detallar un poco más el funcionamiento. De nuevo dejo los términos en inglés por si leeis algo más en otro lado.

Parte I: Descripción simplificada de aacs .

(Todas las uniones son operaciones criptográficas)


¿Por qué un disco tiene dos claves? Una de ellas está en un sitio donde no se puede escribir (por ahora) con una grabadora doméstica de discos de alta definición (la escribe una grabadora industrial), por lo que no se podría hacer una copia exacta de ese disco a otro (si no, menuda protección anticopia). No se ha metido directamente ahí la otra clave porque, simplemente, es un espacio muy pequeño y no cabe, ya veremos por qué más tarde. Llamaremos a esa clave "Volume id".

Hay otra clave que se llama "Media Key Block", y que está cifrada. Sólo los reproductores autorizados tienen la manera de descifrarla, ya que tienen un conjunto de claves secretas llamadas "device keys", de forma que al menos una de ellas descifre esa clave.

Así que: un reproductor autorizado pide el Volume id y el Media Key Block, descifra el Media Key Block con una de sus claves secretas, y hace una operación criptográfica con el resultado que ha obtenido y el Volume id para obtener la clave definitiva con la que descifrará la película.

¿Dónde está la seguridad? Obviamente un reproductor autorizado, que puede leer una película, podría permitir copiarla, ripearla, u otras operaciones "indeseables". Para evitar ésto es posible "revocar" un reproductor, de forma que no pueda seguir leyendo la clave cifrada incluida en el disco. De este modo, se fuerza a que un reproductor autorizado no ofrezca de golpe una opción de "copia esta película", o que si ha dejado escapar (o le han robado) sus claves para que las usen reproductores "pirata", éstas claves dejen de funcionar. Hablaré sobre la revocación y sobre lo que ésto implica más adelante.

Parte II: La relación entre hardware y software

El consorcio de aacs ha montado todo un sistema (ehm, digamos mafioso) para que todas las partes de la cadena sean "buenas" y no permitan a un usuario hacer operaciones "no permitidas". La cadena va como sigue:



Tanto el lector como el programa reproductor tienen unos certificados firmados que les permiten demostrar que son quienes dicen ser (supongo que para evitar unidades virtuales y ripeadores a uno y otro lado). Se demuestran entre sí que son agentes autorizados antes de que el lector comience a leer el disco (comenzando por las claves) y a darle los datos al reproductor.

¿Qué ocurre si el lector o el programa reproductor son revocados? Si el lector o el programa reproductor dejan de estar autorizados, siguen teniendo el certificado que tenían anteriormente y podrían seguir usándolo. ¿Cómo evitarlo? Se crean unas listas de lectores y reproductores revocados, de forma que si un lector o reproductor está en una de esas listas no está autorizado, aunque tenga un certificado (y el lector o el programa reproductor "bueno" debería dejar de hablarle).

¿Cómo distribuyes las listas de revocación? Si revocas un dispositivo, deberás hacer llegar a todos los lectores y reproductores una lista renovada que lo incluye. Para ello, cada vez que publicas un disco con una película, metes en el Media Key Block, además de la clave cifrada para descifrar la película, una copia de las últimas listas de revocación que tengas. De este modo el lector y el programa, cada vez que leen un disco, ven si tienen que sustituir la lista de revocación que tienen por la que aparece en el disco, viendo si ésta última es más moderna que la suya.

Resumiendo: tú tienes un programa y un lector óptico en tu ordenador. El consorcio de aacs decide revocar tu lector, por ejemplo, porque está permitiendo (queriendo o no) que reproductores no autorizados accedan al contenido del disco, o por que le han robado la clave secreta que corresponde al certificado, o simplemente porque no les ha pagado la cuota de protección de ese año. Tú no lo sabes, y te funciona todo perfectamente. Compras una película de estreno y la metes en tu ordenador. De pronto, no sólo no puedes ver esa película de estreno, sino que tu reproductor ya ha guardado la lista de revocación mejorada y desconfía del lector (o al revés), y ya no se comunica con él. No puedes ver ninguna película, ni siquiera las que veías antes. En el mejor de los casos, podrás solucionarlo conectándote a internet o obteniendo un disco que actualice el software de tu reproductor o lector, dándole un nuevo certificado que no esté revocado. En el peor de los casos estás jodido.

Yo sinceramente no creo que esa opción se use mucho, ya que si compras un disco, lo metes, y todo deja de funcionar, la gente se va a cabrear sobremanera (yo me cabrearía, vamos).

Y llegamos al modo de ataque número 1 (muy difícil pero bastante interesante): Lamentablemente las listas de revocación van firmadas criptográficamente por el consorcio de aacs, pero si, suponiendo que las listas van númeradas 1,2,3... y que un número mayor indica que es más moderna, se pudiese hacer una lista número 999.999.999 (o el número mayor posible), sólo metiendo un disco que contuviese esa lista podrías hacer que a partir de entonces el reproductor y lector sustituyesen las listas que tuviesen e ignorasen las listas de revocación posteriores (ya que no hay ninguna lista que pueda publicar aacs que sea "más actual" que esa). Así podrías hacer que tu lector no pueda ser revocado (el programa reproductor es otra historia, como diré en la siguiente entrada).

(continuará...)