BCM4322 en Linux/Ubuntu

BCM4322 en Linux

Después de comprarme un portátil Dell 6400 y sobrevivir con el XP que traía de serie ha llegado el momento de mejorar. El equipo posee un Core 2 Duo y 4 GB de RAM pero aun así he instalado un lubuntu. No es una distro como tal , sino una combinación de paquetes diferentes. Posee por defecto el escritorio LXDE , con  la misma filosofía de XFCE pero algo más compatible con QT.

BCM4322

Para este hardware se necesita un driver especial , es necesario extraer el firmware y generar el driver. Menos mal que hay un paquete que realiza todas estas tareas.

Revisamos que tenemos el hardware BCM4322

# lspci -nn | grep 0280
0c:00.0 Network controller [0280]: Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller [14e4:432b] (rev 01)

Instalamos el driver

# sudo apt-get install --reinstall bcmwl-kernel-source

Esperamos a:

Running module version sanity check.
depmod.......

Ya tenemos el driver instalado , ahora podemos reiniciar o cargar el modulo del kernel desde consola con el comando

# sudo modprobe wl

 

Doble monitor en Lubuntu

Doble monitor

Problemas con el Doble monitor en Windows y Linux , el mismo problema para ser exacto , no se detecta la resolución del monitor y asigna por defecto las tres básicas. El monitor es 1080p y esta funcionando a 768p lo cual es una tortura

doble_monitor

Dispositivos gráficos conectados , en mi caso LVDS es el portátil y VGA1 el monitor externo

Mediante terminal y con la herramienta xrandr configuraremos la resolución del monitor externo y su colocación

Borrar un modo , muy útil si lo has asignado mal

    sudo xrandr --rmmode 1920x1080_60.0

Obtener los parámetros de refresco para una resolución

    gtf 1920 1080 60.0

Crear un modo (resolución , frecuencia y refrescos de pantalla)

    sudo xrandr --newmode "1920x1080_60.0" 172.80 1920 2040 2248 2576  1080 1081 1084 1118 -HSync +Vsync

Asignar un modo a uno de los dispositivos conectados

    sudo xrandr --addmode VGA1 1920x1080_60.0

Habilitar un modo asignado previamente a ese dispositivo

    sudo xrandr --output VGA1 --mode 1920x1080_60.0

A partir de ahora utilizaremos el ArandR , con las instrucciones de Lubuntutips

Con la herramienta AranrD , un interfaz para mejorar el uso de xrand ,  se guardan todos los cambios en un fichero de Script de shell. He colocado las pantallas como las quiero ver , igualadas por el marco inferior como referencia  y lo en guardado en un el fichero sh. ahora lo edito  y he copiado y pegado el contenido en e mi fichero de script. Así tras asignar la nueva resolución puedo colocar las pantallas como yo quiero.

En este caso cuando se apaga o desconecta el monitor externo el modo 1080 pasa a ser asignado a la salida TV1 , así que se tras crear el modo se puede comentar y no volver a usar.

Script en Bash de ejemplo para configurar una nueva resolución en el monitor externo (VGA1)

#!/bin/bash

#No es necesario , pero la primera vez sí
echo "borrar modo 1080"
xrandr --rmmode "1920x1080_60.0"

#No es necesario , pero la primera vez sí
echo "nuevo modo"
xrandr --newmode "1920x1080_60.0" 172.80 1920 2040 2248 2576  1080 1081 1084 1118 -HSync +Vsync

echo "Asignar resolucio al monitor externo"
xrandr --addmode VGA1 1920x1080_60.0

echo "Establecer la reoslucion"
xrandr --output VGA1 --mode 1920x1080_60.0

#Creado con ArandR
echo "ordenar pantaallas"
xrandr --output DP3 --off --output DP2 --off --output DP1 --off --output TV1 --off --output HDMI2 --off --output HDMI1 --off --output LVDS1 --mode 1280x800 --pos 1920x280 --rotate normal --output VGA1 --mode 1920x1080_60.0 --pos 0x0 --rotate normal

CyanogenMod 10.2 en Galaxy SII

CyanogenMod 10.2 en Galaxy SII

Ya no hay actualizaciones para este fantástico terminal. Después de 2 años y un cambio de pantalla , va a seguir conmigo , gracias a las CustomROM y para mi  la CyanogenMod es la elegida. Los años que lleva funcionan y el ritmo de actualizaciones es impresionante.

En mi caso viniendo de una StockROM  necesito un nuevo recovery. El oficial de Samsung no sirve para instalar una CustomROM. Ya no se si hay mas recovery , todo el mundo utiliza ClockWorkMod. No debemos de olvidar una versión de Odín ya que va a ser necesaria para dar primer paso.
Este proceso se basa copiar el fichero de ROM de CyanogenMod 10.2 y los binarios de aplicaciones de Google en la memoria SD , desde el recovery lanzaremos la instalación de ambas. En lineas generales tenemos la idea .

 

Recursos necesarios

Descargar  las Gapps , el ROM y el Odín,  publico el enlace con el listado de Gapps según versiones de la CyanogenMod , respecto a al ROM esta es la página de descargas. Solo nos falta el Odín , esta vez en versión 3.07

Para acceder al recovery se necesita apagar el terminal  y encenderlo presionado Volup + Home + Power

Pasos

  • Copiar el fichero de la CyanogenMod 10.2 y de la Gapps en el raiz de la tarjeta de memoria
  • Flashear el CWM mediante Odín
    • Se asigna el fichero del recovery al campo PDA
    • Se marcan exclusivamente
      • Auto Reboot Check
      • F. Reset Time Check
  • Reiniciar y no configurar nada
  • Acceder al recovery y validar el funcionamiento
  • Realizar los wipe de cache/data user/cache Davlink
  • En el recovery elige instalar zip desde sdcard
  • Reiniciar y arrancar por primera vez sin configurar ninguna cuenta
  • Accedemos al recover y repetimos procedimiento para las Gapps

Ya tenemos instalada una CyanogenMod 10.2 en nuestro flamante Galaxy SII , y un recovery para las emergencias

Plantilla HTML5 y CSS Responsive

html5_css3_jquery

Responsive con HTML5 , CSS y algo de JQuery

Me he visto involucrado en la realización de un plantilla con diseño Responsive. Toda una aventura la verdad.

Todo se basa en esta frase:

La diversión de los navegadores , cada uno hace lo que le da la gana , que bonitas son las sorpresas ¿y como se verá esto en IE9? ¿IE6? …. como un niño el día de reyes , sorpresas y sorpresa

Ahora vamos con la estructura elegida

JQuery + JQuery UI

Esto lo digo ahora , porque cuando empece no pensé en ello y al final , revisas el trabajo realizado  y como lo has llevado acabo, te queda una conclusión “Existe un orden que he de usar para la próxima vez”. No se si lo haré  porque no se si repetiré este trabajo , pero bueno aquí lo dejo apuntado como guía para el siguiente que lo necesite

Las fases para la realización se pueden dividir en

Para realizar el enmaquetado de las capas he utilizado BlueGriffon , un editor web OpenSource muy bueno , bastante ligero y multiplataforma.

Recursos CSS

  • http://www.w3.org/TR/CSS21/box.html
  • http://manelgarcia.com/recursos-web/tutorial/listas-horizontales-con-css/

Formularios

  • http://www.mcanam.com/generadores/html/formularios.php
  • http://www.miguelmanchego.com/2009/formato-formulario-css-hoja-estilo/
  • http://www.echoecho.com/htmlforms11.htm

Detalles en los que no había pensado

http:// www.html5test.com

Win-SSHFs Montar FS sobre SSH (Windows)

Win-SSHFs

Win-SSHFs  utiliza un sistema de ficheros linux en un windows a través de SSH. La arquitectura se basa en una conexión ssh a un servidor  en la que tengamos que trabajar con ficheros y un equipo windows como cliente.

Este sistema te permite montar el sistema de ficheros como una unidad de windows , además de la seguridad que otorga las conexiones ssh .

Personalmente el modificar ficheros y tener que subirlo al servidor me parece un atraso , el WinSCP o Filezilla se hacen izando una mezcla de un poco pesado ya que no fueron diseñados para esta tarea.

Utilizando:

  • Dokan Library 0.6.0
  • .NET
  • Un poco de cabeza se ha creado este proyecto.

Sobre todo Win-SSHFs es fácil de usar

[flickr]http://www.flickr.com/photos/12949201@N08/9374177056/[/flickr]

Podemos asignar diferentes conexiones a letras del sistema y poder trabar de forma trasparente.

Montecarlo y Recovery

Recovery

Esto es lo que queremos ponerle a nuestro Montecarlo.  Esto nos proporciona el acceso al borrado de caches , particionar la SD para instalar aplicaciones en ella , resetear el terminal , arregla los permisos, un largo etcétera de operaciones.

Requisitos

Instalar los drivers de ZTE Montecarlo, esto se puede hacer la primera vez que enchufas el móvil, es recomendable reiniciar el equipo. Yo no he conseguido que me funcione nuca, así que realizo una actualización de los drivers.

Pasos

  • Conectamos por USB el movil al Pc y dejamos que se instalen los drivers de ZTE
  • Reiniciamos el pc (importante)
  • Desconectamos el movil y activamos la depuración USB en ajustes->aplicaciones->desarrollo->activamos depuración USB
  • Volvemos a conectar el movil
  • Ejecutamos el 0_Install_CWM_recovery.bat que hay en la carpeta que hemos descomprimido al principio
  • Veremos que el movil se reinicia y se queda un rato en la pantalla que sale “ZTE-Skate”, luego debe volver a reiniciarse solo
  • Ahora deberemos tener correctamente instalado el Clockworkmod Recovery en nuestro Skate.
  • Podemos entrar al recovery encendiendo el móvil y acto seguido dejar pulsado volumen- hasta que el móvil vibre, entonces entrara al recovery.

Problemas comunes

Los drivers no se instalan correctamente ,  esto se debe que los referentes a almacenamiento son estándar  y los de gestión del dispositivo no.  Así que puedes tener unos drivers sin instalar.

[flickr]http://www.flickr.com/photos/12949201@N08/9371231847/[/flickr]

Solución:

Descargamos >esto< (Enlace alternativo) y lo descomprimimos donde queramos.

Actualicemos los drivers del dispositivo de nombre Android y con interrogación , en la consola de “Administración de equipos”\”Administrador de dispositivos

Descomprimimos el fichero y le indicamos al asistente de los drivers la ruta de la carpeta “usb_driver”

Ahora ya podemos lanzar el instalador del recovery

Fuentes:

http://www.htcmania.com/showthread.php?t=285880

http://www.htcmania.com/showthread.php?t=361627

Partimage

El porque de todo esto

He adquirido una vieja gloria de portátil y venia con licencia de Windows XP. Va a tocar actualizarlos , vaya ideas que tengo a veces.
Revisamos que tenga el SP3 de rigor y de damos al “Windows Update” , toma ya!!! 250MB en actualizaciones. Esto va a ser un trabajo de chinos.

[flickr]http://www.flickr.com/photos/12949201@N08/9373859616/[/flickr]

Poco a poco ejecutamos las actualizaciones de windows , una y otra vez aparecen nuevos parches. Esto se consigue poniendo de requerimientos un software nuevo , en una versión antigua , y en la siguiente ejecución del Windows Update tendremos más y más.  Solo llevo 1,8 GB de actualizaciones  así que hay que buscar un método de backup.

El backup

La búsqueda del software tiene como requisito que sea de tipo Ghost.  En OpenSource existe Partimage , ha sido probarlo y enamorarme. Ellos mismo recomienda utilizar el CdSystemRescue como sistema de arranque.

Yo he utilizado un almacenamiento externo para guardar la imagen , para ello he tirado de dmseg tras enchufar el disco externo , obtengo /dev/sdX que corresponde y lo monto en una carpeta dentro de root ,  una costubre.

El sistema de archivos del PinchoUSB es NO-Persisntente !!!! , así que utiliza un disco externo u otra partición en el equipo para no perder lo

Los pasos

Desde la interfaz de consola ejecutamos el partimage y lo configuramos desde ncurses. Los datos que te piden es la partición o disco que quieres hacer imagen  , la ruta donde guardar el resultado (donde hayas montado el recurso).

 

[flickr]http://www.flickr.com/photos/12949201@N08/9371082155[/flickr]

La opciones son el nombre , si quieres que se comprima mucho o poco,  usar un servidor de red y decir si se parte en varios volúmenes.

Si no hemos indicado que se cree la imagen en el recurso externo deberemos de copiarla ahora , antes de apagar.

 

Sidebar dinámico en Cherry

sidebar dinámica en Cherry

[flickr]http://www.flickr.com/photos/12949201@N08/9348328122/[/flickr]

Estoy trabajando con el Framwork de Cherry y me he encontrado un sidebar estático , un poco malo. No es normal que te dejen editarlo con toda la felicidad del mundo en el backer de WP y luego resulta que no se ve ni un widget que no hayas metido a código en sidebar.php.

Localizar el fichero

Tener en cuenta que aunque uses un tema que use el Framwork debes de mirar quien genera el sidebar , el tema hijo o el de Cherry. Para verificarlo tenemos que revisar el código del functions.php del tema hijo y buscas la función de registro de sidebar .

 
register_sidebar(array(

Si no lo tenemos ahí  el siguiente fichero a revisar es el del framework  , para encontrarlo es muy divertido ya que utiliza un include del fichero sidebar-init.php

 
include_once (CHILD_DIR . '/includes/sidebar-init.php');

Con esto hemos de revisar el fichero sidebar-init.php en la carpeta includes del FW Cherry

Aquí vemos que en los comentarios indican que es estática , así que hemos de hacer un nuevo script , en este fichero , para tener en el mismo lugar la nueva.

Mi script

Esto es todo el código que me ha hecho falta  , se ha guardado en el fichero sidebar.php de la carpeta del Framework Cherry 2.0

 

 

Notas

[box type=”info”] Nota: He utilizado el campo id utilizado en el registro del sidebar en el fichero functions. [/box]

Con esto y un bizcocho hemos mejorado un Framework, ahora administrarlo va a ser un atarea más simple. No en vano hemos perdido la actualización del Framework Cherry de forma automática tendremos que manejar este fichero modificado para utilizar en la siguiente actualización

Fuentes:

WordPress: Un sidebar diferente en cada-pagina

XPrivacy y yo

XPrivacy

La locura de la privacidad se ha desatado. Los “States” espían , pero no todo , las redes sociales ya les hacen parte del trabajo. Como si empre se ha pedido en el mundo empresarial  , la información ha de estar relacionada y aquí ha sido y es la máxima.

Ejemplos:

  • Redes Sociales + PRISM = reconstrucción de toda tu vida
  • Google (historial de navegación , marcadores , Maps , Google+ , Android (numero de teléfono , confirmación del email , contactos , que tecnología usas ) = reconstrucción de tu vida y predicción de personalidad.

No olvidemos del mundo empresarial “LinkedIn” , ha tenido varios robos de claves y fue de las primera red social en utilizar tu datos para publicidad

Realmente de esto no podemos escapar , cada persona debe elegir que quiere escribir. Lo importante es no engañarnos  , no existe información privada , antes o después  terminará en algún recopilar de información.

Ahora la fiesta esta en hacer funcionar esto en nuestro teléfono.

[appbox googleplay id=biz.bokhorst.xprivacy]

En harina

Bien tenemos una App en el market que no nos sirve para nada. Es el módulo de permiso para Framework mucho más grande.

Necesitamos al FrameWork XPOSED , para ello el root en nuestro dispositivo es obligatorio. Una pena que no pueda explicar esto , demasiado amplio para este post.

Estos son los dos hilos principales en XDA de cada componente:

[FRAMEWORK ONLY!] Xposed – ROM modding without modifying API

[MOD][XPOSED][4.0+] XPrivacy 1.7.7 The ultimate privacy manager

La lista de requerimientos se compone de :

  • Root
  • Exposed
  • XPrivacy

No voy a dejarlo ahí  , simplemente hay que leer bien  esta guía oficial:  https://github.com/M66B/XPrivacy#installation

CSS y jSignature, personalización

CSS y jSignature

CSS y jSignature , con estas notas quiero recoger los códigos que he utilizados para personalizar este Script JS , CSS y jSignature
Proyecto original:
http://willowsystems.github.io/jSignature/#/about/
GitHub:
https://github.com/brinley/jSignature
Ejemplos de de JSignature
http://www.unbolt.net/jSignature/
Integración:




CSS:

div {
	margin-top:1em;
	margin-bottom:1em;
}
input {
	padding: .5em;
	margin: .5em;
}
select {
	padding: .5em;
	margin: .5em;
}

#signatureparent {
	color:darkblue;
	max-width:350px;
	padding:20px;
	/*margin-left: 15em;
	position: relative;
	float:right;*/
	padding-right:30px;

}
#content{
	display: inline-block;
}

#undo {
	position: relative  !important;
}
/*This is the div within which the signature canvas is fitted*/
#signature {
	border: 2px dotted black;
	background-color:lightgrey;
}

/* Drawing the 'gripper' for touch-enabled devices */ 
html.touch #content {
	float:left;
	width:92%;
}
html.touch #scrollgrabber {
	float:right;
	width:4%;
	margin-right:2%;
	background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAAAAACh79lDAAAAAXNSR0IArs4c6QAAABJJREFUCB1jmMmQxjCT4T/DfwAPLgOXlrt3IwAAAABJRU5ErkJggg==)
}
html.borderradius #scrollgrabber {
	border-radius: 1em;
}