English firmware for Xiaomi MiJia radio walkie-talkie (MJDJJ01FY)

One of the star products of Xiaomi is its walkie-talkie. The truth is that I am very happy with it, the design is exquisite and its battery lasts long enough to forget to charge it. But the bad thing was that the user interface was only in Chinese, which is very complicated to understand.
Even though the Internet indicates that it already has an interface in English, they do not say how to update it or the steps for this, treating it as if it were a secret …
Well after searching a lot I found the right steps to update it. It can be done with both iPhone and Android.

On iPhone we will download the My PTT application.

Mi PTT iPhone

In Android if we do not have a Xiaomi phone (we do not have access to the Xiaomi app store) we simply go to Mi App Store (Also, we must have enabled on the phone the option that allows us to open applications from other locations).

Mi App Store

Then we look for I installed the My PTT.

Mi PTT Android

Now comes the trick, in order to update the firmware to English, the first thing we should do is change the language of the phone interface. Yes, you must change the language of the phone to English (United States). Once this is done, the application will also change to English instead of Chinese.
In the second step we will look for the option to update the firmware of the walkie-talkie. The application will indicate that the language of the application will be unified with the application. When the walkie-talkie is updated, its interface will be in English.

Mi PTT Update Firmware

It is not necessary to have the application installed to use it, so it can be remove without problems. Channels can be added in the same device. One of the good things that are added when updating the firmware is the support of the band 440-470. That is, you can configure the PMR446 channels (At least here in Europe are allowed for public use).

If this has been useful, do not hesitate to comment!

Firmware en inglés para la radio Xiaomi MiJia walkie-talkie (MJDJJ01FY)

Uno de los productos estrella de xiaomi es su walkie-talkie. La verdad que estoy muy contento con el, el diseño es exquisito y su batería dura lo suficiente para olvidarse de cargarlo. Pero lo malo era que la interface de usuario solo estaba en chino, lo cual es muy complicado de entender.
Aún que en internet se indica que el mismo ya posee una interface en inglés, no dicen cómo actualizar el mismo o no dan los pasos para esto, tratando como si de un secreto se tratara…
Pues luego de buscar bastante he encontrado los pasos correctos para actualizar el mismo. Se puede hacer tanto con iPhone como con Android.

En iPhone nos descargaremos la aplicación Mi PTT.

Mi PTT iPhone

En Android si no tenemos un teléfono Xiaomi (no se tiene acceso a la app store de Xiaomi) simplemente entramos a Mi App Store (Deberemos tener activado en el teléfono la opción que nos permita abre aplicaciones desde otras ubicaciones).

Mi App Store

Luego buscamos he instalamos la Mi PTT.

Mi PTT Android

Ahora viene el truco, para poder actualizar el firmware a inglés, lo primero que debemos es cambiar el idioma de la interface del teléfono. Si, se deberá cambiar el idioma del teléfono a Inglés Estados Unidos. Realizado esto la aplicación también cambiará a inglés en lugar de chino.
En el segundo paso buscaremos la opción para actualizar el firmware del walkie-talkie. La aplicación nos indicará que el idioma del mismo será unificado con el de la aplicación. Al actualizase el walkie-talkie su interface estará en inglés.

Mi PTT Update Firmware

No es necesario tener la aplicación instalada para utilizar el mismo, por lo que se puede des instalar sin problemas. Desde el mismo dispositivo se pueden agregar los canales. Una de las cosas buenas que se agregan al actualizar el firmware en la banda 440-470. O sea que se pueden configurar los canales PMR446. Al menos aquí en Europa son los permitidos de uso público.

¡Si te ha sido util, no dudes en comentar!

cpuminer-multi en Debian 9 (cpu miner)

Hace algún tiempo estaba buscando un CPU miner para poder utilizando en Debian y minar cryptonight (Monero/XMR y Bytecoin/BCN), por suerte he encontrado una vieja version que aun funciona para minar con CPU. Mientras busco alguna version mas optimizada, aquí esta la receta:
Como descargar y compilar CPUminer en Debian.

Instalaremos algunas dependencias:

apt-get update
apt-get install libcurl4-openssl-dev git
apt-get install  build-essential
apt-get install autotools-dev autoconf
apt-get install libcurl3 libcurl4-gnutls-dev

Descargamos la ultima version de cpuminer-multi:

mkdir /downloads
cd /downloads
git clone https://github.com/wolf9466/cpuminer-multi
cd cpuminer-multi Compilamos: ./autogen.sh
CFLAGS="-march=native" ./configure
make

Para instalarlo:

make install

Para ejecutarlo:

./minerd -a cryptonight -o stratum+tcp://pool:port 3 -p x -u usuario -t

Por ejemplo:

./minerd -a cryptonight -o stratum+tcp://mine.moneropool.com:3333 -p x -u USUARIO -t

Usuario junto a MinerGate:

Bytecoin/BCN:

./minerd -a cryptonight -o stratum+tcp://bcn.pool.minergate.com:45550 -u [email protected] -p x

Monero/XMR:

./minerd -a cryptonight -o stratum+tcp://xmr.pool.minergate.com:45550 -u [email protected] -p x

MinerGate, posee un cliente para minar varias crypto monedas, para Windows, Linux y MacOS.

Nginx + RTMP compilado y empaquetado en Debian

RMTP es uno de los protocolos de streaming mas usados actualmente. Fue desarrollado por Macromedia, tras la compra de Macromedia por parte de Adobe. Este ultimo librero gran parte de las especificaciones del protocolo, lo que ha generado su masificación.

Existen varios servicios con los que se pueden realizar streaming via RMTP, como el crtmpserver (free) y el Wowza (Commercial). Pero el modulo de Nginx es muy atractivo, ya que con el cual se puede realizar streaming y transcoding.
El mismo se llama nginx-rtmp-module. (Actualmente no esta incluido en el paquete de Debian, supongo que sera por algún problema de licencia … ¿?).

Manos a la obra

Primero verificaremos que tenemos lo necesario para compilar e software.
Instalaremos “build-essential” el cual contiene los paquetes necesarios para compilar software, “devscripts” nos ayudara a compilar los paquetes  “deb” y “libav-tools” (opcional) el cual posee la herramienta “avconv”, que es el reemplazo para el “ffmpeg”.
Avconv lo utilizaremos para hacer transcoding.

Ejecutamos:

# apt-get install build-essential devscripts libav-tools

Instalado estos 3 paquetes, configuramos las dependencias para compilar el paquete de “nginx”, ejecutamos:

# apt-get build-dep nginx

Ahora crearemos un directorio donde guardaremos el código de nginx, por ejemplo:

# mkdir /tmp/nginx; cd /tmp/nginx

Dentro del directorio, obtenemos el fuente utilizado en Debian ejecutando:

# apt-get source nginx

(En este caso obtenemos la version 1.6.2 “nginx-1.6.2”).

Descargamos el código del modulo, has click aquí para ver las utilizar versiones disponibles. (En este caso es la version 1.1.7).

# wget https://github.com/arut/nginx-rtmp-module/archive/v1.1.7.tar.gz

Descomprimimos el mismo:

# tar zxvf v1.1.7.tar.gz

Copiamos el directorio que contiene el modulo dentro del código fuente de Nginx.

# cp -a nginx-rtmp-module-1.1.7 nginx-1.6.2/debian/modules/nginx-rtmp-module

Agregamos en modulo en la configuración del paquete, para esto editamos en archivo “nginx-1.6.2/debian/rules” con tu editor favorito.

# nano nginx-1.6.2/debian/rules

Buscamos la sección en el archivo “full_configure_flags”, en esta sección podemos ver la lineas:

–add-module=$(MODULESDIR)/nginx-auth-pam \
–add-module=$(MODULESDIR)/nginx-dav-ext-module \
–add-module=$(MODULESDIR)/nginx-echo \
–add-module=$(MODULESDIR)/nginx-upstream-fair \
–add-module=$(MODULESDIR)/ngx_http_substitutions_filter_module

Agregamos la linea:

–add-module=$(MODULESDIR)/nginx-rtmp-module 

Debería quedar así:

–add-module=$(MODULESDIR)/nginx-auth-pam \
–add-module=$(MODULESDIR)/nginx-dav-ext-module \
–add-module=$(MODULESDIR)/nginx-echo \
–add-module=$(MODULESDIR)/nginx-upstream-fair \
–add-module=$(MODULESDIR)/ngx_http_substitutions_filter_module \
–add-module=$(MODULESDIR)/nginx-rtmp-module

(Noten que se escapo la ultima linea). Guardamos los cambios y salimos.

Ahora editamos el archivo “nginx-1.6.2/debian/source/include-binaries”, si este archivo no existe, lo creamos:

# nano nginx-1.6.2/debian/source/include-binaries

Dentro de este colocamos las siguientes lineas:

debian/modules/nginx-rtmp-module/test/rtmp-publisher/RtmpPlayer.swf debian/modules/nginx-rtmp-module/test/rtmp-publisher/RtmpPublisher.swf debian/modules/nginx-rtmp-module/test/rtmp-publisher/RtmpPlayerLight.swf debian/modules/nginx-rtmp-module/test/www/bg.jpg debian/modules/nginx-rtmp-module/test/www/jwplayer_old/player.swf debian/modules/nginx-rtmp-module/test/www/jwplayer/jwplayer.flash.swf

Compilando

Procedemos a compilar el software, apara esto ejecutamos:

# cd nginx-1.6.2/; debuild

(Si existe algún error, aparecera durante este proceso!)

Si todo va bien al final veremos un error de PGP, ya que no tenemos una firma valida (Mas información acerca de como se compila y empaqueta en Debian):

debsign: gpg error occurred!  Aborting….
debuild: fatal error at line 1295:
running debsign failed

Este error lo podemos ignorar este error, subimos un directorio “cd ..” y veremos que tenemos nuestros paquetes listos:

nginx_1.6.2-5+deb8u1_all.deb
nginx-common_1.6.2-5+deb8u1_all.deb
nginx-doc_1.6.2-5+deb8u1_all.deb
nginx-extras_1.6.2-5+deb8u1_amd64.deb
nginx-extras-dbg_1.6.2-5+deb8u1_amd64.deb
nginx-full_1.6.2-5+deb8u1_amd64.deb
nginx-full-dbg_1.6.2-5+deb8u1_amd64.deb
nginx-light_1.6.2-5+deb8u1_amd64.deb
nginx-light-dbg_1.6.2-5+deb8u1_amd64.deb

Instalamos los paquetes:

# dpkg -i nginx-full_*.deb nginx-common_*.deb


(Opcional)

Pues ya tenemos compilado he instalado el Nginx,  bloquearemos estos paquetes para que los mismo no se actualicen por error.

# echo “nginx-common hold” | dpkg –set-selections
# echo “nginx-full hold” | dpkg –set-selections

Verificamos:

# dpkg –get-selections | grep nginx
nginx-common hold
nginx-full hold

Esto evitara que al realizar una actualización los paquetes tambien sean actualizados. Si requieres una actualización, deberas volver a compilar los mismos con la nueva versión del código.


Una configuración de prueba simple.

Para evitar el “espagueti code”, crearemos un directorio en “/etc/nginx/”, podemos ponerle el nombre que deseemos, en mi caso lo llamare “rtmp”:

# mkdir /etc/nginx/rtmp

Dentro de este directorio podremos las configuraciones de nuestro streaming. Creamos un archivo que luego llamaremos desde el archivo de configuración de nginx:

# nano /etc/nginx/rtmp/stream.conf

Dentro del archivo, pegamos el siguiente código:

rtmp {
server {
listen 1935;
chunk_size 4096;
# Permitimos que todos publiquen
allow publish all;
# Permitimos que todos visualicen
allow play all;
# Nombre de la aplicación
application envivo {
# Activamos el streaming
live on;
# No salvamos el stream
record off;
}}}

(No te olvides de indentar, para que se vea mas atractivo 😉
Editamos el archivo de configuración de nginx, para que cargue el archivo que hemos creado:

# nano /etc/nginx/nginx.conf

Agregamos la siguiente linea al final del archivo:

include /etc/nginx/rtmp/*.conf;

Reiniciamos el nginx:

# /etc/init.d/nginx restart

Y verificamos que el mismo este escuchando en el puerto “1935”:

netstat -anpt | grep nginx

tcp        0      0 0.0.0.0:1935            0.0.0.0:*               LISTEN      5695/nginx -g daemo

Con este pequeño ejemplo, ya podremos enviar datos al servidor. Por ejemplo si enviamos contenido desde una aplicación como “OBS”, lo haremos mediante la siguiente URL:

rtmp://la_ip_de_tu_server/envivo/

Indicamos la contraseña que queramos, en mi caso usare “pelicula”.
Así que si queremos ver el stream desde un reproductor, como el VLC, deberemos abrir al dirección:

rtmp://la_ip_de_tu_server/envivo/pelicula

En el proximo articulo explicare todas las opciones del modulo (RTMP, HSL, DASH). Su modulo de control, estadísticas y por supuesto, el transcoding.

No duden en comentar 😉

¿La mentira de las llamadas WIFI de Orange?

La verdad que hace mucho tiempo que no escribo en mi blog, de hecho había decidido limpiarlo y dejarlo morir lentamente, utilizando solo el dominio para mantener mis cuentas de correos. Pero ayer a la noche recibí un SMS que me hizo pensar un poco, el SMS de Orange, del cual soy cliente, dice lo siguiente:

Lanzamos las llamadas Wi Fi, habla donde antes parecía imposible. Solo tienes que activarlo en los ajustes de tu iPhone + info…

Lo primero que se me paso por la cabeza fue un “Pero estos se quieres ahorrar el use del espectro radioeléctrico”, pero tuve algún pensamiento positivo, “la gente que vive fuera podar ahorrarse unos euros”. Pero las dudas fueron disipadas, según leo en las paginas de Orange:

¿Puedo utilizarlo en redes Wi-Fi del extranjero para llamar más barato?
Por el momento el servicio solo está disponible en redes Wi-Fi de España. Estamos trabajando para ampliarlo a redes Wi-Fi del extranjero, para que nuestros clientes puedan llamar de forma más económica cuando estén de viaje.

¡No! Como se me paso por la cabeza que nos podrían brindar semejante servicio…

Otra cosa que me llamo la atención, es la cantidad de notas de prensa que hay en internet sobre esta funcionalidad… y todo es “para mejorar la cobertura”.

Mucho iPhone, Android y demás yerbas… todo sigue siendo igual que hace 20 años, cuando comencé a utilizar móvil… hay que pagar por usar… pagas por el dispositivo, pagas por el servicio.