COTARD DELUSION: NUEVO DISCO DE MOBYDICK

Ya se que se sale de la temática habitual de este blog, pero no quería dejar pasar la oportunidad de difundir el nuevo proyecto del músico y gran gordo amigo Eneko Burzako también conocido como MobyDick.

En este caso para edición de su nuevo disco ha optado por el crowdfunding, y sobra decir que sus anteriores discos, y este, están publicados bajo licencias creative commons. Si os interesan estos temas y os gusta la buena música, a continuación tenéis el enlace al proyecto en goteo.org.

http://goteo.org/project/nuevo-disco-mobydick

Las alternativas a Android

Dejando de lado el ecosistema privativo de Apple, Microsoft o RIM, algunos pensaran que Android está solo dentro del mundo de sistemas operativos móviles Open Source. Nada mas lejos de la realidad, diferentes alternativas están siendo desarrolladas y alcanzando niveles de madurez aceptables para a corto medio plazo competir con Android.

Algunos, seguramente penséis, que interés existe en segmentar mas el mercado cuando ya existe una alternativa Open Source que actualmente es conocida y extensamente implantada. Pues la razones son diversas:

  1. Android para muchos no es totalmente Open Source (+pdf)
  2. Las operadoras quieren “pillar cacho” en el mercado de las mobile stores (WAC)
  3. Estrategias multidispositivo diferentes (móvil+escritorio+tv)
  4. Competir con Android y robarle una porción de mercado (o todo, google no fue el primer buscador y existían buscadores previos dominando el mercado. También existen otros ejemplos como Symbian o Internet Explorer)

En ese sentido quiero hacer un repaso al ecosistema actual de sistemas operativos móviles “libres”.

FirefoxOS (boot2gecko)

Una de las alternativas que puede que se materialice mas a corto plazo, gracias o de la mano de Telefonica. FirefoxOs (antes conocido como boot2gecko) es la apuesta de Mozilla por un sistema operativo basado en la plataforma Open Web/HTML5 no solo de cara a las aplicaciones sino que todo su entorno de usuario (Gaia) esta desarrollado también en tecnologías Open Web.

Uno de sus principales socios es Telefónica, que lo ha adoptado como su principal caballo de Troya de cara a competir en la guerra por la distribución de aplicaciones y contenidos en dispositivos móviles. En esta apuesta, Telefónica ha llegado a un acuerdo con la empresa española GeeksPhone para el suministro de dispositivo móviles de bajo coste con este sistema operativo integrado, lo cual también pretende romper el mercado de la telefonía en cuanto a la subvención de terminales se refiere, después de la perdida de clientes sufrida, vamos, lo que se viene a decir, dos pájaros de un tiro.

Tizen

De las cenizas de MeeGo (que a su vez fue una combinación de los sistemas operativos móviles Moblin, creado por Intel, y Maemo, creado por Nokia) resurge Tizen, como la alternativa apoyada por la Linux Foundation o empresas como Intel o la propia Samsung.

La apuesta es similar a la de FirefoxOs, es decir, una plataforma basada en tecnología Open Web/HTML5, pero en este caso inciden mas que el sistema de Mozilla en que sea un sistema operativo orientado a ejecutarse en múltiples dispositivos, ya sean televisores, tablets u ordenadores a bordo de vehículos. Es quizá esto ultimo y el apoyo de la Linux Foundation su gran baza, ya que la apuesta actual de Samsung parece que claramente es Android.

Ubuntu

Parece que Canonical apuesta firmemente por que Ubuntu funcione en múltiples dispositivos. La apuesta por el entorno de escritorio Unity estaba totalmente orientada a que la interfaz de acceso a los diferentes dispositivos, como Pcs, televisores o tablets, fuera lo mas común y homogénea posible, y en el caso de los teléfonos móviles también ha sido así según la presentación realizada hace pocos días.

Ademas de la popularización de Ubuntu en el PCs, una de las principales bazas de este sistema operativo es la posibilidad de que gracias a un “docking” o adaptador, nuestro móvil se convierta en una estación de trabajo, conectándolo a una pantalla o teclado. Esta posibilidad ya existía con la solución Ubuntu for Android también desarrollada por canonical, pero es con su propio sistema operativo para móviles con lo que cobra mayor sentido e integración.

Ubuntu apuesta por HTML5 como principal plataforma para el desarrollo de aplicaciones, aunque de cara a aplicaciones de alto rendimiento o requerimientos gráficos altos como juegos ofrece una plataforma de desarrollo basada en QML.

Open WebOS

Tras la decisión de HP de cesar el soporte y desarrollo de WebOs, inicio Open WebOs como un proyecto Open Source, y a mediados de Septiembre de 2012 vio la luz una primera versión alpha del sistema operativo. Además hace pocos días salio la noticia de que había sido posible ejecutar Open WebOs 1.0 en un tablet Nexus 7 de google.

Como su propio nombre indica, es un sistema basado en Web. Hay que tener en cuenta que WebOs fue uno de los principales precursores de la utilización de la plataformas Open Web como entorno multiplataforma y sobre todo orientado a dispositivos moviles, pero por desgracia, no es suficiente para asegurar que este sistema podrá competir con FirefoxOs, Tizen o Ubuntu.

Bada

Aunque el proyecto no es Open Source gran parte de sus componentes si lo son y en muchas ocasiones se ha rumoreado con su liberación, y es por eso que se ha añadido a esta lista.

En principio la apuesta personal de Samsung, pero como hemos visto, la marca coreana también esta detrás de Tizen y actualmente apuesta por Android para los terminales de gama alta. Es por eso que en la actualidad, Samsung, ha orientado este sistema operativo a dotar de “inteligencia” a sus terminales de gama mas baja, gracias a que este sistema consume menos recursos que Android. Su potencial únicamente radica en que es una solución desarrollada por uno de los principales fabricantes de terminales móviles, pero aun así, la posibilidades de que este sistema tenga algún tipo de éxito son remotas por diversas razones; APIs cerradas, limitación de instalación de aplicaciones, limitación de utilización de aplicaciones VoIP o el hecho de que es un sistema que no permite ejecutar aplicaciones en paralelo.

ArinOs

ArinOs es un proyecto que empecé hace bastante tiempo, cuando apareció por aquel entonces ChromeOS. La idea de ChromeOs me parecía interesante pero también tenia mis dudas sobre las soluciones “todo en la nube” en cuento a privacidad y libertad. Además me parecía difícil de meter mano en su interior y mas aun en caso de querer integrarlo en nuevos dispositivos.

Es por eso que el objetivo de ArinOs era ofrecer una plataforma sencilla en su concepto y software que permitiera poder crear un Sistema Operativo Web de forma sencilla sobre todo orientado a poder ser adaptado y extendido fácilmente a diferentes dispositivos, como puede ser un punto de información, una maquina dispensadora de billetes de transporte o un televisor.

ArinOs Logo

La idea era simple, y en cierta medida existían aproximaciones similares en el caso de los terminales móviles como era PhoneGap: Extender la API de JavaScript para poder conectarnos con un “core” externo que extendiera las funcionalidades de nuestro navegador y así poder acceder mediante JavaScript a código de alto nivel que nos permitiera por ejemplo acceder a dispositivos industriales o funcionalidad especifica no común.

Por tanto podemos decir que ArinOs se basa en un navegador extendido que permite comunicarnos con un servidor (en este caso en Python) que interpreta los comandos, los ejecuta y nos devuelve el resultado. Por tanto podemos crear nuestra librería en Python, por un lado, y en JavaScript, por otro, y comunicarlas a través de ArinOS.

ArinOs schema

La elección de Python como entrono para el servidor, se justificaba, basándonos en la posibilidad de cargar código de forma dinámica y que además nos permite acceder a librerías externas mediante ctypes.

La intención de ArinOs, por tanto no es competir con B2G (FirefoxOs) o ChromeOs, ni mucho menos, sino la de ofrecer una herramienta que permita introducir dispositivos marginales al mundo de las aplicaciones y sistemas operativos HTML5/WEB.

Todavía este proyecto esta en una fase muy temprana y solo tengo partes parciales de la funcionalidad. Espero sacar algún rato entre todos mis proyectos personales para seguir avanzando ya que queda mucho trabajo, como implementar diferentes métodos de comunicación entre el cliente y el servidor (síncrona o asíncrona), establecer una estructura del servidor correcta donde sea sencillo incluir librerías tanto en Python como en código nativo o definir una estructura para aplicaciones y que incluso, en un futuro, que tanto las aplicaciones de Chrome como de FirefoxOs puedan funcionar en este sistema.

De momento podéis acceder a su repositorio de GitHub en la siguiente dirección.

https://github.com/ikeralbeniz/ArinOs

Firefox TV: (Firefox OS + Raspberry Pi) * Set-Top-Box

Cuando llegó mi Raspberry Pi, me surgieron miles de ideas de como aprovechar este mini-ordenador que cuesta al rededor de 35€. Por un lado se me ocurrió compilar un receptor software de DVB-T2 en el que estamos trabajando en el laboratorio y también se me ocurrió utilizarlo como centro multimedia con un cliente web de Bittorrent para añadir mis torrents desde el trabajo. Pero finalmente la idea que mas me motivaba y que mezclaba varios proyectos que tenia entre manos era la de hacer correr el sistema operativo B2G (Boot To Gecko) o también llamado Firefox OS en mi Raspberry Pi. Firefox Os es un nuevo sistema operativo WEB basado en en el motor de Firefox (Gecko), que tiene como intención competir con Android y IOs en el mundo de los terminales móviles inteligentes. En este caso la apuesta de Firefox OS es que todas las aplicaciones e incluso el sistema operativo (o por lo menos la parte de interfaz) sea Web, estrategia mas consolidada en los sistemas operativos de los televisores inteligentes y que viene impulsada por las capacidades que ofrece HTML5.

Firefox OS

Teniendo en cuenta todo esto ¿Por que no desarrollar un pequeño Set-Top-Box utilizando una Raspberry Pi en el que corra Firefox Os adaptado a las características (dimensión e interfaces de entrada) de un televisor?. La idea es ofrecer una alternativa low-cost y lo mas OpenSource posible a soluciones del estilo smart-hub de Samsung, con todas las posibilidades que ofrecería en cuanto a explotación de nuestros televisores como centro de ocio, trabajo o incluso servicios de tele-asistencia.

En siguiente posts explicaré los pasos que estoy siguiendo para configurar mi Firefox TV ya que por ahora tengo una pequeña aproximación que le faltan algunos retoques como se puede ver en el siguiente vídeo.

Aplicación para Programas de Fiestas

Desde hace tiempo tenía pensado hacer una aplicación que se conectara a algún servicio de datos para consultar los programas de fiestas de los diferentes pueblos. Por otro lado también existía la opción de crear una aplicación genérica sencilla fácilmente actualizable y adaptable a diferentes programas con la intención de generar una aplicación para cada programa de fiestas. Ambas tenias pros y contras:

Aplicación Genérica Aplicación Especifica
A favor
Tener toda la información No necesidad de conexión
Al ser online se actualiza Mas fácil de mantener
Una única aplicación Posibilidad de cierta customizacion (publicidad local o imágenes)
En contra
Necesidad de mantener infraestructura de servidor Market lleno de programas de fiestas
Mucho trabajo actualizar y mantener
Necesidad de conectividad

Al final tras algún intento de desarrollar un servicio que se alimentara de páginas de fiestas de terceros, opten por la segunda aproximación, la de hacer una aplicación especifica con el programa de fiestas de un pueblo concreto. En este caso, quise hacerla para Fiestas de San Ignacio de Algorta, peor por problemas de tiempo, al final, la hice para Fiestas del Puerto Viejo de Algorta.

null

La aplicación ya esta publicada y es gratuita, y el siguiente paso será publicar el código fuente y un breve tutorial de cómo crear tu propio programa de fiestas a partir de este. También publicaré los fuentes de los iconos y demás recursos para mantener una línea de estilo común.

Publicada en GitHub la primera versión del parser de Dalvik en Python

Pues eso, el titulo lo dice todo, la primera versión y algo limitada del parser de Dalvik en python ya esta publicada en mi GitHub. Es un proyecto antiguo que pensaba que había publicado pero hoy me he dado cuenta de que no y me he animado a subirla.

https://github.com/ikeralbeniz/pyDalvikParser

Es una versión muy preliminar que no llegue a completar del todo pero creo que es un buen punto de partida, ya que permite obtener la estructura completa del código original de la aplicación de Android. Es la librería que uso en mi aplicación de desensamblado online que publique hace tiempo.

http://ikalbenizapps.appspot.com/androidforensics/

Podéis adjuntar un archivo .dex y os generara la estructura del código original.

Generar un TS (Transport Stream) valido para DVB-T y DVB-T2 (TDT)

Tras mucho buscar por internet y probar miles de software (emulados con wine, compilados, crackeados…) al final como siempre la solución estaba más cerca de lo que creía. Y es que al final es posible generar este tipo de streams con FFMPEG. La solución es sencilla:

ffmpeg -i input.mpg -vcodec copy -acodec copy 
-mpegts_original_network_id 0x1122 /
-mpegts_transport_stream_id 0x3344 /
-mpegts_service_id 0x5566 /
-mpegts_pmt_start_pid 0x1500 /
-mpegts_start_pid 0x150 /
-metadata service_provider="Iker Perez de Albeniz" /
-metadata service_name="TeleAlbeniz" /
-y out.ts

la primera línea indicamos el input y como el formato original es MPEG2 indicamos que copie el códec de video y audio. Las siguientes líneas completan las tablas e información necesarias para los receptores de TDT

Control de dispositivos VISA a través de Ethernet en Linux

Gran parte de los equipos utilizados en sistemas de telecomunicaciones como los analizadores de espectros, osciloscopios, etc. han utilizado mayormente el sistema GPIB para comunicarse entre ellos y un PC.

GPIB es un estándar de bus digital con corto alcance diseñado por HP para conectar dispositivos de teste y medidas con PCs. Este sistema fue diseñado para ser robusto y fiable en entornos industriales, pero tiene el problema que en sistemas GNU/Linux su integración no es trivial (instalación de módulos en el kernel…) y su mantenimiento es cuestionable. Aparte como se he comentado, es un bus de corto alcance, lo cual establece ciertas limitaciones lógicas que no permite aprovechar el nivel tecnológico actual, como podría ser controlar un analizador de espectro remoto a través de una conexión 3G.

Es por eso que cada vez mas equipos disponen de una interfaz Ethernet que ofrecen nuevas funcionalidades de control y diseño de infraestructuras de control y medida.

El protocolo utilizado para controlar dichos dispositivos es conocido como VXI11. aunque en muchos caso lo mas fácil es buscar por Ethernet VISA (Virtual Instrument Software Architecture) que es el estándar que engloba todo los protocolos de control de hardware de medida.

En esta pagina encontrareis mas información sobre VXI11 y referencias a las empresas implicadas en el desarrollo y mantenimientos de estas tecnologías. Además se encuentra el código fuente en el que nos basaremos para nuestro howto.

El código que podéis descargar aquí es el mismo que esta en la pagina anterior, salvo que se han añadido los archivos libvxi11.cpp y libvxi11.h y se ha modificado el Makefile para generar la librería libvisa.so

http://dl.dropbox.com/u/15629561/ikeralbeniz.net/libvisa_src.zip

El contenido de libvxi11.cpp es el siguiente:


#include "libvxi11.hpp"

#define BUF_LEN 100000

using namespace std;

CLINK		*clink;

extern "C" int visaConnect(const char * device_ip)
{
    clink = new CLINK;
    int response = -1;
    try {
        response=vxi11_open_device(device_ip,clink);
    }catch( char * str ) {
      cout << "Exception raised: " << str << '\n';
    }
    return response;
}

extern "C" int visaSend(const char * command)
{
    int response= vxi11_send(clink, command);
    return response;
}

extern "C" long visaReceive(char buffer[], int buffer_length)
{
    long bytes_returned = vxi11_receive(clink, buffer, BUF_LEN);
    return bytes_returned;
}

extern "C" int visaClose(const char * device_ip)
{
    int response=vxi11_close_device(device_ip,clink);
    return response;
}

Lo único que hacemos es exponer cuatro funciones básicas para el manejo de equipos de medida a través de Ethernet/VXI11.

En caso de querer utilizar esta librería en c++ solo seria necesario incluir el archivo libvxi11.h y la librería libvisa.so.

#ifndef LIBVXI11_HPP_INCLUDED
#define LIBVXI11_HPP_INCLUDED

#include <iostream>
#include "vxi11_user.h"

using namespace std;

extern "C" int visaConnect(const char * device_ip);
extern "C" int visaSend(const char * command);
extern "C" long visaReceive(char buffer[], int buffer_length);
extern "C" int visaClose(const char * device_ip);



#endif // LIBVXI11_HPP_INCLUDED

En caso de querer usarlo en .Net deberíamos crear una clase VISA y mediante DLLImport exponer los mismos métodos.

using System;
using System.Text;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.IO;

namespace MyProject
{
	public class VISA
	{
		public const string libpath = "libvisa.so";
			
		[DllImport(libpath)]
		public static extern int visaConnect(string device_ip);		
			
		[DllImport(libpath)]
		public static extern int visaSend(string command);
			
		[DllImport(libpath)]
		public static extern int visaReceive(byte[] buffer, int buffer_length);
			
		[DllImport(libpath)]
		public static extern int visaClose(string device_ip);
	}
}

Espero que este post os sea de gran ayuda.

El resurgimiento del P2P???

Ya se veia venir, pero al final esta ocurriendo. Tras el cierre de MegaUpload, parece que el P2P esta resurgiendo, y ademas con fuerza. En mi caso hace dos semanas reinstale mi cliente de BitTorrent y todavía no iba excesivamente bien, lo achaqué a que no compartia muchos archivos y que la gente con lo servicios de Descarga Directa habría dejado de usar estos servicios de forma masiva. Este finde pasado, la cosa ha cambiado sustancialmente, mis descargas bajaban a 4Mb/s de media, lo cual me pico la curiosidad y me puse a buscar estadísticas de trafico.


Estadísticas globales

Estadísticas del trafico trafico total los últimos 30 dias


Estadísticas 7 días

Estadísticas de trafico P2P los últimos 7 dias


Estadísticas 30 días

Estadísticas de trafico P2P los últimos 30 dias

La tendencia ascendente todavia es muy poco pronunciada, pero las redes sociales se empiezan a llenar de tweets de gente comentando su vuelta al P2P y lo bien que va.


victor p2p
Gallir p2p

En pocos dias volveremos a ver de nuevo los datos de trafico y comprobaremos si es cierto que el P2P esta resurgiendo.

Obtener drivers USB Samsung sin instalar Kies

Los que desarrollamos para Android en sistemas operativos como GNU/Linux o MacOs X no solemos tener problemas para acceder a los teléfonos a través de USB, bien para instalar aplicaciones o acceder a los logs a través de ADB. El problema lo tenemos cuando queremos hacer esto mismo en sistemas Windows y nos encontramos que al conectar el móvil al PC nos aparece un mensaje de dispositivo desconocido o que no encuentra los drivers.

En mi caso, hace poco he me hecho con un Samsung Galaxy SI II con el que estoy haciendo unas pruebas. Y lo primero que hice fue buscar los drivers para poder conectarme vía ADB. Mi sorpresa fue encontrar un montón de referencias a un paquete instalador de drivers para dispositivos Samsung que no me funcionaba. Otras referencias me indicaban que instalara Kies, un software de Samsung para acceder al dispositivos, sincronizar y demás herramientas que suelen ofrecer las empresas fabricantes de teléfonos móviles. Por supuesto, no estaba dispuesto a instalar todo una suite para instalar unos drivers USB, por lo que pensé que quizás seria posible obtener los driver del propio paquete de instalación de Kies.

Por lo tanto, lo primero que hice fue buscar Kies en Google y acceder a la pagina oficial de Kies donde descargué el software para Windows

http://org.downloadcenter.samsung.com/downloadfile/ContentsFile.aspx?CDSite=UNI_ES&CDCttType=SW&ModelType=N&ModelName=FM_UPDATE&idyn=N&VPath=SW/201105/20110512115717796/Kies_2.0.2.11071_128_2.exe

Por otro lado me descargué también el UniversalExtractor, el cual es un software capaz de desempaquetar instaladores, y ya que al fin y al cabo un instalador no es mas que un contenedor de binarios con instrucciones de donde copiarlos, no tiene mayor misterio acceder a su interior (la otra opción es instalar Kies coger el driver y desinstalarlo después).

http://legroom.net/scripts/download.php?file=uniextract161

Une vez instalado el UniversalExtractor, accedemos a nuestro directorio de descargas y extraemos el instalador de Kies seleccionando la opción “Instalshield /b Interconector

Lo que hará que se nos cree una carpeta Kies_XXXXXX\ uni_xuemcfc\

Dentro de esta carpeta tendremos otro instalador MSI “Samsung Kies.msi“. Que volveremos a extraer de manera parecida pero esta vez con la opción “MSI Instalador Administrativo“.

Al desempaquetar el MSI obtendremos el contenido del instalador de Kies y si indagáis encontrareis que el instalador de los Drivers USB esta en Samsung Kies\program files\Samsung\Kies\USB Driver con el nombre de SAMSUNG_USB_Driver_for_Mobile_Phones.exe

Ejecutáis el instalador y pronto veréis como Windows va reconociendo vuestros dispositivos móviles.

El nombre del instalador de drivers es el mismo que el que en foros anteriores había encontrado e instalado pero que no me funcionaban. Esto se debía a que eran versiones anteriores del instalador de drivers que no contenían los drivers compatibles con el Samsung Galaxy S II. Por tanto en vez de alojar el instalador en un repositorio y enlazarlo en foros, he creído mas interesante mostrar como obtener la ultima versión del instalador de drivers a partir del instalador de Kies.

Espero que os haya sido de utilidad.

1 2 3 4 5 6  Scroll to top