Blackphone, el smartphone que quiere proteger la privacidad y la seguridad de los usuarios

blackphone-2

Tiempos revueltos para la privacidad y la seguridad de los usuarios han hecho que aparezcan todo tipo de iniciativas para tratar de salvaguardar esos valores en servicios y productos hardware. Es el caso de Blackphone, un nuevo smartphone desarrollado por Geeksphone —creadores de los conocidos Peak y Keon con Firefox OS— y Silent Circle.

El objetivo de los Blackphone es precisamente el de mantener la privacidad y seguridad de los usuarios, y para ello uno de los pilares es hacer uso de una versión personalizada de Android a la que han bautizado como PrivatOS.

Entre los impliados en el proyecto están Phil Zimmermann, creador de PGP, además de Javier Agüera y Rodrigo Silva-Ramos, co-fundadores de Geeksphone, además de Jon Callas, co-fundador de PGP y que es CTO de Silent Circle.

La presentación de Blackphone, en el MWC 2014

Las empresas implicadas tienen ya una trayectoria conocida en el segmento de la movilidad. La española Geeksphone fue la primera en lanzar terminales con Boot2Gecko (la versión “no homologada” de Firefox OS, idéntica a ésta en todo y que pudimos probar en el Keon), y mantienen en paralelo el lanzamiento del terminal Revolution del que pronto tendremos también más detalles.

blackphone-1

Por su parte, Silent Circle es una empresa especializada en privacidad en móviles que ofrece servicios de envío de mensajes, realización de llamadas y transferencias de archivos de forma segura desde cualquier móvil. Es de esperar que la combinación de los esfuerzos de sus responsables ofrezca un producto interesante a la hora de tratar de proteger esa privacidad y seguridad de los usuarios que ahora está viéndose comprometida por temas como el de los escándalos de la NSA.

De momento no hay datos concretos sobre cuáles serán las especificaciones de este smartphone y qué características especiales tendrá PrivatOS, pero todos esos detalles se desvelarán durante el Mobile World Congress de Barcelona. De hecho el periodo de pre-reserva de terminales se abrirá el próximo 24 de febrero, durante la celebración de esta feria de la movilidad.

Referencias

– Artículo original “Blackphone, el smartphone que quiere proteger la privacidad y la seguridad de los usuarios” escrito por ( Google+, @javipas) el miércoles 15 de enero de 2014 en Xatakamovil.com

– Página oficial del proyecto Blackphone aquí.

Arduino – Capítulo 4 – Interfaz de una nave espacial

Ahora que ya tenemos las bases de la electricidad bajo control, es el momento de aprender a controlar cosas con Arduino. En este capítulo vamos a construir algo que podría ser la interfaz de una nave espacial en una película de ciencia ficción de los años 70. Crearemos un panel de control con un pulsador y luces que se encenderán al accionar dicho pulsador. Un led verde estará encendido hasta que pulsemos el botón. Cuando Arduino reciba la señal del pulsador, la luz verde se apagará y otras dos empezarán a parpadear.

Los pins digitales de Arduino solo pueden leer dos estados: cuando hay tensión en un pin de entrada, y cuando no la hay. Este tipo de entrada es normalmente conocida como digital (o algunas veces binaria, por tener dos estados). A estos dos estados se les refiere como Alto o bajo (HIGH y LOW en inglés). HIGH es lo mismo que decir “¡Tenemos tensión aquí!”, y LOW lo mismo que “¡No hay tensión en este pin!”. Cuando le indicamos a un pin de salida un nivel HIGH utilizando el comando digitalWrite(), lo estamos activando, pero cuando le indicamos un nivel LOW, lo estamos desactivando.

Los pins digitales de Arduino pueden actuar tanto como entradas como salidas. En nuestro código, podemos configurarlos para que funcionen dependiendo de la acción que deseemos que hagan. Cuando dichos pins funcionan como salidas, podemos activar componentes tales como diodos leds. Si los configuramos como entradas, podemos comprobar por ejemplo, si un pulsador ha sido activado o no. Como los pins 0 y 1 se utilizan para la comunicación con el pc, es mejor utilizar los pines a partir del número 2.

Montando el circuito

Pasemos ahora al montaje del circuito. Para ello seguiremos los pasos siguientes:

1 – Conecta la alimentación de 5v y la tierra de la placa Arduino a la protoboard.

2 – Colocamos un led verde y dos rojos en dicha protoboard.

3 – Cogemos una resistencia de 220Ω y conectamos uno de sus terminales al cátodo del led verde (la patilla corta) y el otro, lo conectamos a masa. Cogemos otras dos resistencias de 220Ω y repetimos el proceso para los otros dos leds.

4 – A continuación, realizamos una conexión entre el ánodo del led verde (la patilla larga) y el pin 3 del Arduino.

5 – Los ánodos de los leds rojos, los conectamos uno al pin 4 y el otro al pin 5.

6 – Colocamos un pulsador en la protoboard, tal y como se muestra en la figura de más abajo. Conectamos un lado del pulsador a la alimentación y el otro lado al pin 2 del Arduino. Necesitaremos añadir una resistencia de 10kΩ entre la tierra y la conexión del pulsador con el pin del Arduino.

Tras seguir los pasos anteriores, debería de quedarnos un circuito como el de la figura siguiente:

Protoboard

Su esquema eléctrico correspondiente sería:

Esquema electrico

El código

Todo programa de Arduino posee dos funciones principales. Las Funciones son partes de un programa informático que ejecutan comandos específicos. Dichas funciones tienen nombres únicos, y son “llamadas” cuando se las necesita. Las obligatorias son las llamadas setup() y loop().  Estas funciones necesitan ser declaradas, lo que significa que hay que decirle al Arduino que acción van a llevar a cabo dichas funciones.  setup() y loop() se declaran de la siguiente manera:

void setup(){

}

void loop(){

}

En este programa, vamos a crear una variable antes de adentrarnos en la parte principal del programa. Las variables son nombres que se colocan en la memoria de Arduino y de las que podemos saber el valor de su contenido. Dicho contenido puede cambiar dependiendo de las instrucciones que le demos al programa.

Los nombres de variables suelen describir que tipo de valor están guardando estas. Por ejemplo, una variable cuyo nombre sea switchState, nos estará diciendo que almacena el estado de un pulsador. Por otro lado, una variable cuyo nombre sea “x”, no nos estará diciendo mucho acerca de que valor está guardando.

Para crear una variable necesitamos declarar de que tipo es. El tipo de dato int se refiere a un número entero (también llamado integer); este es cualquier número sin coma decimal. Cuando declaramos una variable, normalmente debemos indicarle un valor inicial; a esto se le llama inicializar una variable. La declaración de dicha variable debe acabar siempre con un punto y coma (;).

1    int switchState=0;

La función setup() solo se ejecuta una vez, cuando Arduino se pone en funcionamiento. Este es el punto donde configuraremos los pines digitales para que sean inputs o outputs, utilizando una función llamada pinMode(). Los pines conectados a los leds serán de salida (outputs) y el pin del pulsador será de entrada (input).

2    void setup(){

3        pinMode(3, OUTPUT);
4        pinMode(4, OUTPUT);
5        pinMode(5, OUTPUT);
6        pinMode(2, INPUT);
7    }

La función loop() se ejecuta de forma continua después de que la función setup() haya concluido. En loop() es donde comprobaremos el voltaje de la entrada, y cambiaremos el estado de las salidas en on o en off. Para comprobar el nivel de voltaje en la entrada, deberemos utilizar la función digitalRead(), la cual comprueba el voltaje del pin escogido. Para escoger el pin que queremos comprobar, digitalRead() espera un argumento.

8    void loop(){

9        switchState = digitalRead(2);
10        //Esto es un comentario.

Los argumentos son información que le pasamos a las funciones, diciéndole a estas como deben realizar su trabajo. Por ejemplo, digitalRead() necesita un argumento: que pin debe comprobar. En nuestro programa, digitalRead() comprobará el estado del pin 2 y guardará dicho valor en la variable switchState. Si hay tensión en el pin cuando llamamos a la función digitalRead(), la variable switchState almacenará el valor HIGH (o 1). Si no hay tensión en dicho pin, switchState guardará el valor LOW (o 0).

En programación, la declaración if() comprara dos cosas, y determina si dicha comparación es cierta o falsa (true o false). A continuación, en función del resultado de la comparación, realizará las acciones que le hayamos indicado. Cuando en programación comparamos dos cosas, utilizamos el símbolo ==. Si solo utilizáramos un signo igual, estaríamos asignando un valor a la variable en lugar de realizar dicha comparación.

11        if(switchState == LOW) {
12        //el pulsador no ha sido presionado.

digitalWrite() es el comando que nos permite enviar 5v o 0v a un pin de salida. Dicha función tiene dos parámetros: a que pin enviar el voltaje y que voltaje enviarle, si HIGH o LOW.

13            digitalWrite(3, HIGH);    //Led verde.
14            digitalWrite(4, LOW);    //Led rojo.
15            digitalWrite(5, LOW);    //Led rojo.
16        }

La condición if() tiene un componente opcional llamado else que permite ejecutar código cuando no se cumple la primera condición. En nuestro caso, tras haber comprobado si el pulsador estaba en un nivel LOW, escribiremos el código para un nivel HIGH dentro de la condición else.

Para hacer que los leds rojos parpadeen cuando el pulsador sea presionado, necesitamos apagar y encender dichos leds dentro de la condición else. El código sería el siguiente:

17        else{    //el pulsador es activado.
18            digitalWrite(3, LOW);
19            digitalWrite(4, LOW);
20            digitalWrite(5, HIGH);

21            delay(250);    //esperamos un cuarto de segundo.
22            //cambiamos los leds.
23            digitalWrite(4, HIGH);
24            digitalWrite(5, LOW);
25            delay(250);    //esperamos un cuarto de segundo.

26        }
27    }//volvemos al principio del bucle.

Después de asignarles a los leds un estado concreto, queremos que Arduino haga una pausa antes de que vuelva a cambiar el estado de los mismos. Si no esperamos, las luces cambiarán de estado tan rápido que nos parecerá que siempre están igual. Esto es debido a que Arduino ejecuta el bucle loop() miles de veces por segundo, y los leds cambian de estado tan rápido que no nos daríamos cuenta. La función delay() nos permite indicarle al Arduino que deje de ejecutar lo que esta haciendo durante el lapso de tiempo que le indiquemos. delay() tiene un argumento que indica el número de milisegundos antes de que siga ejecutando el código siguiente. Hay 1000 milisegundos en un segundo, por tanto, delay(250) realizará una pausa en la ejecución del código de un cuarto de segundo de duración.

Puesta en marcha

Una vez que hemos programado nuestro Arduino, veremos como el led verde esta encendido. Cuando apretemos el pulsador, los leds rojos empezarán a parpadear y el verde se apagará. Probemos a cambiar el tiempo de las dos funciones delay(); prestemos atención a lo que ocurre con las luces y como cambia la respuesta del sistema en función del tiempo de parpadeo. Cuando invocamos a la función delay() en nuestro programa, ésta detiene cualquier otra funcionalidad. No se leerá ningún sensor hasta que no haya concluido el periodo de tiempo establecido. Los delays se utilizan con frecuencia, pero cuando diseñemos nuestros propios proyectos tenemos que tener cuidado con que no interfieran con nuestra interfaz de manera innecesaria.

Bien. En este proyecto hemos creado nuestro primer programa de Arduino para controlar el estado de unos leds en función de un pulsador. Hemos utilizado variables, el condicional if()…else y funciones para leer el estado de una entrada y cambiar el estado de las salidas.

Espero que os haya gustado.

Un saludo y muchas gracias por leer este artículo.  ^_^

Referencias

Artículo basado en el capítulo “Project 02 – Spaceship Interface” del libro “Arduino Projects Book” distribuido por Arduino.cc junto con su “The Arduino Starter Kit“.

Project Novena: ¿Se puede construir un portátil totalmente Open Source?

Project-Novena-1

El Open Source es una filosofía tradicionalmente asociada al desarrollo software, pero poco a poco esos mismos principios están intentando aplicarse también a desarrollos hardware en los que todos los componentes y los diseños hacen uso de esa filosofía abierta que permite compartir, modificar y redistribuir esos diseños sin limitaciones.

Uno de los últimos ejemplos en este campo es el de la creación de un portátil Open Source bajo el llamado Project Novena, un impresionante esfuerzo que ha tenido éxito y que ha permitido a sus desarrolladores crear un equipo cuyo diseño está lejos de los modernos ultrabooks, pero cuyas prestaciones son destacables.

La idea es aún más interesante si tenemos en cuenta el hecho de que el descubrimiento de los programas de espionaje y monitorización masivos de la NSA siguen levantando muchas sospechas entre los usuarios de informática. Esa idea de un portátil Open Source también facilita en cierta medida la privacidad que muchos buscan.

Un proyecto complejo

Por supuesto, había muchos requisitos a cumplir para contar con un portátil totalmente Open Source. Por ejemplo, todos los componentes debían contar con documentación abierta y disponible. En el caso de los procesadores, explican los responsables de Project Novena, solo FreeScale daba la talla, con manuales de programación inmensos que ofrecen todas las garantías para este tipo de proceso.

Project-Novena-3

Entre los componentes más destacados estaban las pantallas —por lo visto es complicado encontrar paneles LCD de alta gama y que cumplan los requisitos buscados, y finalmente optaron con un adaptador LCD que pudiera dar flexibilidad a la hora de trabajar con distintos paneles.

En el apartado software —también importante— la idea era, por supuesto, no depender de drivers binarios (binary blobs), algo que puso en problemas la elección de los chips WiFi, pero no tanto de la GPU —como sabrán los linuxeros, los avances en controladores Open Source para Intel, AMD y NVIDIA va por muy buen camino— y esa apuesta les salió muy bien, ya que todo parece funcionar —incluida la reproducción multimedia— realmente bien.

En ese diseño, otra ventaja: la posibilidad de añadir y quitar componentes con una facilidad impresionante y quitando únicamente un par de tornillos. Eso, unido a la inclusión de algunos elementos muy de hackers como un FPGA en la placa base, dos tarjetas de red Ethernet, un puerto USB OTG o un conector de alta velocidad para el citado FPGA.

Project Novena, un portátil diferente y con futuro

El resultado, notable: la placa base se comporta de forma notable según sus responsables, y la pantalla integrada es una LED de 13 pulgadas con una resolución fantástica de 2.560 × 1.700 píxeles. La carcasa se ha realizado con aleaciones de aluminio y una cubierta de piel, y en el interior hay paneles 3D impresos con una impresora 3D Form 1.

Project-Novena-2

Las especificaciones completas se muestran en la página oficial del proyecto, y aunque evidentemente no contaremos con componentes comparables a los de un Ultrabook de última generación el resultado es más que decente:

  • CPU quad-core Freescale iMX6 (Cortex A9 a 1,2 GHz)
  • GPU Vivante GC2000
  • Arranque desde una tarjeta microSD
  • Puerto SATA-II (3 Gbps) para conectar unidades SSD
  • Puerto Mini PCIe, conector de doble canal LVDS para pantallas LCD hasta QXGA (2.048 × 1.536 píxeles)
  • Controlador para pantalla táctil resistiva
  • Conectores para altavoces internos de 1,1 W y 8 ohmios
  • Dos puertos USB 2.0 internos para el teclado y el ratón o trackpad
  • Micrófono digital
  • Acelerómetro
  • Módulo WiFi AW-NU137 opcional
  • 3 puertos UART internos
  • Puerto HDMI
  • Lector SD
  • Puerto de auriculares y micrófono
  • Dos puertos USB 2.0
  • Dos puertos GbE, pudiendo usar el portátil como un router o un dispositivo de filtrado de paquetes
  • Puerto USB OTG
  • EEPROM serie para almacenar por ejemplo registros en caso de cuelgues
  • FPGA Spartan-6 CSG324, que por ejemplo puede usarse con su bus para minería de Bitcoins

El resultado ha sido tan destacado que los creadores de Project Novena están pensando seriamente en crear una campaña de financiación colectiva para fabricar estos portátiles Open Source de forma masiva si hay interés por parte de la comunidad. Si no te importa el diseño, puede que estos equipos sean la respuesta a muchas de vuestras demandas.

Referencias

– Artículo original “Project Novena: ¿Se puede construir un portátil totalmente Open Source?” escrito por ( Google+, @javipas) el jueves 9 de enero de 2014 en Xataka.com

– Página oficial de Project Novena.

– Project Novena en Twitter: @novenakosagi

VIA APC Rock es el miniordenador con Firefox OS que quiere rivalizar con las Raspberry Pi

APC-rock

La popularidad de las Raspberry Pi ha hecho que otros fabricantes traten de aprovechar un terreno en el que hasta ahora nadie se había adentrado. Hoy en día hay soluciones para todos los gustos, pero ninguna de ellas parecía apostar por Firefox OS… hasta ahora.

Eso es lo que hace el APC Rock, un rediseño de un modelo anterior, el APC 8750, y que incluye todo lo necesario para que desarrolladores y aficionados a estos temas comiencen a trabajar y disfrutar de la plataforma Firefox OS de una forma similar a lo que se hace con las famosas RPi.

La placa de APC hace uso del formato Neo-ITX (compatible con Mini-ITX y Micro-ATX) y cuenta con un procesador VIA ARM Cortex-A9 a 800 MHz, además de 512 MB de memoria RAM y 4 GB de almacenamiento de serie, aunque podemos ampliar esa capacidad con la ranura microSD integrada.

Esta solución es capaz de ofrecer resoluciones de hasta 720p —no hablan de 1080p, quizás esto sea un problema para muchos— y entre sus conectores destacan los HDMI, VGA, USB 2.0 (x2), microUSB (OTG), y puertos de auriculares y micrófono.

Contamos también con un puerto Ethernet 10/100, y para los desarrolladores se incluye un conector de 20 pines ARM-JTAG y un GPIO extra, además de buses SPI e I2C.

APC Rock, APC Paper… ¿y APC Scissors?

Aunque VIA ya había desarrollado productos con Boot2Gecko (el nombre de Firefox OS cuando esos productos aún no han sido homologados por Mozilla) en esta ocasión parece que esa certificación es total, y quienes estén interesados ya pueden adquirir este dispositivo por 59 dólares.

APC-Paper

De hecho existe una versión de 99 dólares, llamada VIA APC Paper —nos faltan las tijeras, diría yo—, que dispone de una carcasa de aluminio que ofrece esa sensación de producto acabado aunque cuidado, en este caso no dispondremos de puerto VGA. Como no podía ser de otra forma, el código de Firefox OS para estos APC está disponible en GitHub.

Referencias

– Artículo original “VIA APC Rock es el miniordenador con Firefox OS que quiere rivalizar con las Raspberry Pi” escrito por ( Google+, @javipas) el jueves 9 de enero de 2014 en Xataka.com

– Página oficial de APC Rock.

Linksys resucita el mítico WRT54G y lo adapta a los nuevos tiempos

linksys-wrt-1900ac

Para muchos el Linksys WRT54G es un producto icónico. Este router fue uno de los más vendidos de todos los tiempos, y se convirtió en todo un éxito gracias a su soporte de firmwares Open Source que le dotaban de todo tipo de prestaciones.

Ese router original que se lanzó en diciembre de 2002 vuelve a tratar de conquistar el mercado con una nueva versión que hereda aquel diseño pero que mejora en muchas prestaciones. Ante ustedes el Linksys WRT 1900AC.

Por supuesto, una de las características que definen a este modelo es el soporte de la conectividad 802.11ac, además de integrar un procesador dual-core mucho más potente a 1,2 GHz, cuatro antenas desmontables (en lugar de las habituales tres) y puertos eSATA y USB 2.0/3.0.

La apuesta por firmware Open Source, impecable

Linksys no ha olvidado a los que durante todos estos años aprovecharon este router para instalar firmwares abiertos, y está proporcionando los prototipos con el SDK y las APIs a los desarrolladores del conocido OpenWRT, pero además planean ofrecer un firmware Open Source propio disponible para descarga cuando el router se ponga finalmente a la venta.

Otra de las novedades de este router es la característica Network Map que permite gestionar de forma más sencilla la configuración de cada dispositivo conectado a la red.

El precio, de 299,99 dólares, no es precisamente bajo, pero según el vicepresidente de Linksys, Mike Chen, “será el router más potente de su clase en el mercado. No hemos escatimado para hacer de este router el sueño de cualquier usuario avanzado“.

Referencias

– Artículo original “Linksys resucita el mítico WRT54G y lo adapta a los nuevos tiempos” escrito por ( Google+, @javipas) el martes 7 de enero de 2014 en Xataka.com