Shell scripting :funciones ,subshells y variables de entorno


Bash , c-shell  o simplemente shell scripting es  un lenguaje de script  creado a fines de la década de 1980 por un programador llamado Brian Fox, que trabajaba para la Free Software Foundation . Fue pensado como una alternativa de software libre para el shell Bourne (de hecho, su nombre es un acrónimo de Bourne Again SHell ), e incorpora todas las características de ese shell, así como nuevas características como la aritmética de enteros y el control de trabajo

Bash es un “shell de Unix”, es decir  una interfaz de línea de comandos para interactuar con el sistema operativo por lo que está ampliamente disponible, siendo el shell predeterminado en muchas distribuciones de GNU / Linux y en Mac OSX, con puertos existentes para muchos otros sistemas.

En post anteriores hemos hablado en una primera aproximación  al lenguaje c-sheall  con el primer ejemplo famoso de  Hello world y avanzando comandos ,tuberías ,variables ,parámetros y salidas posibles y en un segundo post  sobre el  uso de las Tuberías , sustitución de comandos,operadores ,asignación de variables ,Bucles , literales , variables   y aritmética no entera

En este  post  vamos  a continuar  avanzando en el conocimiento de este lenguaje con el uso de las funciones, subshells  y las  variables de entorno

close up code coding computer

 

 

 

Funciones de shell 

Una función de shell es un tipo especial de variable que es esencialmente un script dentro de otro script. Gracias a estas funciones c-shell  nos permite agrupar una secuencia de comandos en un solo comando con nombre, lo cual es particularmente útil si la secuencia de comandos necesita ejecutarse desde muchos lugares dentro del script  .

Como una función de shell puede incluso consistir en un solo comando; esto puede ser útil si el comando es particularmente complicado, o si su significado no sería inmediatamente obvio para un lector,es  decir, las funciones de shell pueden servir para dos propósitos:

  • pueden guardar la escritura
  • Pueden permitir un código más legible mediante la creación de comandos con nombres intuitivos

Como ejemplo considere la siguiente secuencia de comandos:

#! / bin / bash
# Uso: get_password VARNAME 
# Le pide al usuario una contraseña y lo guarda como $ VARNAME. 
# Devuelve un estado de salida distinto de cero si la entrada estándar no es un terminal, o si el 
comando # "leer" devuelve un estado de salida distinto de cero. 
get_password ()  { 
  si  [[ -t 0  ]]  ;  then
    read -r -p 'Contraseña:' -s "  $ 1  "  &&  echo 
  else 
    return  1
   fi
 }

get_password PASSWORD &&  echo  "  $ PASSWORD  "

El script anterior crea una función de shell llamada get_password que le pide al usuario que escriba una contraseña y almacena el resultado en una variable específica. Luego ejecuta get_password PASSWORD para almacenar la contraseña como $ PASSWORD ; y por último, si la llamada a get_password tuvo éxito (según lo determinado por su estado de salida), la contraseña recuperada se imprime en la salida estándar (que obviamente no es un uso realista pues  el objetivo aquí es simplemente demostrar el comportamiento de get_password ).

La función get_password no hace nada que no se pueda hacer sin una función de shell, pero el resultado es mucho más legible. La función invoca la lectura de comando incorporada (que lee una línea de entrada del usuario y la guarda en una o más variables) con varias opciones con las que la mayoría de los programadores de Bash no estarán familiarizados:

  • La opción -r desactiva un significado especial para el carácter de barra diagonal inversa;
  • la opción -p hace que aparezca un mensaje específico, en este caso Contraseña:, al principio de la línea;
  • la opción -s evita que se muestre la contraseña a medida que el usuario lo escribe. Desde la -s la opción también evita que se muestre la nueva línea del usuario,

El comando echo proporciona una nueva línea y además, la función usa la expresión condicional -t 0 para asegurarse de que la entrada del script proviene de un terminal (una consola) y no de una archivo o de otro programa que no sabría que se está solicitando una contraseña. (Esta última característica es discutible; dependiendo de la funcionalidad general del script,pues  puede ser mejor aceptar una contraseña de entrada estándar independientemente de su origen, suponiendo que la fuente se diseñó teniendo en cuenta el script). El punto general es que darle un nombre a la secuencia de comandos – get_password – hace que sea mucho más fácil para un programador saber qué hace.

Dentro de una función de shell, los parámetros posicionales$ 1 , $ 2 , etc., así como $ @ , $ * y $ # ) se refieren a los argumentos con los que se llamó a la función, no a los argumentos del script que contiene la función. Si se necesitan estos últimos, entonces deben pasarse explícitamente a la función, usando "$ @" . (incluso entonces, shift y set solo afectarán a los parámetros posicionales dentro de la función, no a los de la persona que llama).

Una llamada de función devuelve un estado de salida, al igual que un script (o casi cualquier comando). Para especificar explícitamente un estado de salida, use el comando return , que finaliza la llamada a la función y devuelve el estado de salida especificado. (El comando de salida no se puede usar para esto, ya que terminaría la secuencia de comandos completa, como si se llamara desde fuera de una función). Si no se especifica ningún estado de salida, ya sea porque no se da ningún argumento al comando de devolución o porque se llega al final de la función sin haber ejecutado un comando de retorno , a función devolverá el estado de salida del último comando que se ejecutó.

Incidentalmente, cualquiera de las funciones o () pueden omitirse de una declaración de función, pero al menos una debe estar presente. En lugar de , muchos programadores escriben  de manera similar, la notación {...} que no es exactamente necesaria y no es específica de las funciones; es simplemente una notación para agrupar una secuencia de comandos en un solo comando compuesto.

El cuerpo de una función debe ser un comando compuesto, como un bloque {…} o una instrucción if ; {…} Es la opción convencional, incluso cuando todo lo que contiene es un comando compuesto único y, por lo tanto, teóricamente podría prescindirse de él.function get_password ( )get_password ()

Subshells 

En Bash, uno o más comandos se pueden envolver entre paréntesis, lo que hace que esos comandos se ejecuten en una “subshell”(también hay algunas formas en que se pueden crear subshells implícitamente) Un subshell recibe una copia del “entorno de ejecución” del contexto circundante, que incluye cualquier variable, entre otras cosas; pero cualquier cambio que haga a subshell al entorno de ejecución no se vuelve a copiar cuando se completa la subshell.

Así, por ejemplo, este script: #! / bin / bash

foo  = barra
 echo  "  $ foo  "  # imprime 'barra'

# subshell:
 (
  echo  "  $ foo  "  # imprime 'barra' - la subshell hereda las variables de sus padres 
  baz  = bip
   echo  "  $ baz  "  # imprime 'bip' - la subshell puede crear sus propias variables 
  foo  = foo
   echo  "  $ foo  "  # imprime ' foo '- la subshell puede modificar variables heredadas
 )

echo  "  $ baz  "  # no imprime nada (solo una nueva línea) - se pierden las nuevas variables de la subshell 
echo  "  $ foo  "  # imprime 'barra' - los cambios de la subshell a las variables antiguas se pierden

La ejecución imprimirá esta salida:

bar

bar

bip

foo

bar

Si necesitase llamar a una función que modifica una o más variables, pero en realidad no desea que esas variables se modifiquen, puede ajustar la llamada a la función entre paréntesis, para que tenga lugar en una subshell. Esto “aislará” las modificaciones y evitará que afecten el entorno de ejecución circundante.Dicho esto: cuando sea posible, es mejor escribir funciones de tal manera que este problema no se presente para comenzar, pues la palabra clave local puede ayudar con esto.

Lo mismo ocurre con las definiciones de funciones; al igual que una variable regular, una función definida dentro de una subshell no es visible fuera de la subshell.

Una subshell también delimita los cambios a otros aspectos del entorno de ejecución; en particular, el comando cd (“cambiar directorio”) solo afecta a la subshell. Así, por ejemplo, este script:

  #! / bin / bash

cd /
 pwd  # imprime '/'

# subshell:
 (
  pwd  # prints '/' - la subshell hereda el directorio de trabajo 
  cd home
   pwd  # prints '/ home' - la subshell puede cambiar el directorio de trabajo 
)  # end of subshell

pwd  # prints '/': los cambios de la subshell en el directorio de trabajo se pierden

imprime esto:

/ / /casa /

Si su script necesita cambiar el directorio de trabajo antes de ejecutar un comando dado, es una buena idea usar una subshell si es posible,. de lo contrario, puede resultar difícil hacer un seguimiento del directorio de trabajo al leer un script. Alternativamente, los comandos incorporados pushd y popd se pueden usar para un efecto similar.

 

Una declaración de salida dentro de una subshell termina solo esa subshell. Por ejemplo, este script:

  #! / bin / bash
(  exit  0  )  &&  echo  'subshell successed' 
(  exit 1  )  ||  echo  'subshell failed'

imprime esto:

 subshell tuvo éxito
subshell falló

Al igual que en una secuencia de comandos en su conjunto, exit de los valores predeterminados  devuelve el estado de salida del comando de última ejecución, y una subshell que no tiene una instrucción de salida explícita devolverá el estado de salida del comando de última ejecución.

Variables de entorno

Ya hemos visto que, cuando se llama a un programa, recibe una lista de argumentos que se enumeran explícitamente en la línea de comandos. Lo que no hemos mencionado es que también recibe una lista de pares nombre-valor denominados “variables de entorno”.

Diferentes lenguajes de programación ofrecen diferentes formas para que un programa acceda a una variable de entorno; Los programas C pueden usar getenv (" variable_name ") (y / o aceptarlos como un tercer argumento para main ), los programas Perl pueden usar $ ENV {' variable_name '} , los programas Java pueden usar System.getenv (). Get (" variable_name ") , y así sucesivamente.

En Bash, las variables de entorno se convierten simplemente en variables regulares de Bash. Así, por ejemplo, la siguiente secuencia de comandos imprime el valor de la variable de entorno HOME :

#! / bin / bash
echo  "  $ HOME  "

Sin embargo, lo contrario no es cierto: las variables regulares de Bash no se convierten automáticamente en variables de entorno. Así, por ejemplo, este script:

#! / bin / bash
foo  = bar
bash -c 'echo $ foo'

Esto no imprimirá la barra , porque la variable foo no se pasa al comando bash como una variable de entorno. ( De bash -c scripts argumentos ... corre el Bash script de una línea de la escritura ).

Para convertir una variable Bash normal en una variable de entorno, tenemos que “exportarla” al entorno. La siguiente secuencia de comandos hace la impresión de barras :

#! / bin / bash
export  foo  = bar
bash -c 'echo $ foo'

Tenga en cuenta que la exportación no solo crea una variable de entorno; en realidad marca la variable Bash como una variable exportada, y las asignaciones posteriores a la variable Bash también afectarán a la variable de entorno. Ese efecto es ilustrado por este script:

#! / bin / bash
foo  = bar
bash -c 'echo $ foo'  # no imprime nada 
export foo
bash -c 'echo $ foo'  # imprime 'bar' 
foo  = baz
bash -c 'echo $ foo'  # imprime 'baz'

El comando de exportación también se puede usar para eliminar una variable de un entorno, incluyendo la opción -n ; por ejemplo, export -n foodeshace el efecto de export foo. Y múltiples variables pueden ser exportadas o no exportadas en un solo comando, como export foo barexport -n foo bar.

Es importante tener en cuenta que las variables de entorno solo se pasan a un comando; nunca se reciben de vuelta de un comando. En este sentido, son similares a las variables y subshells regulares de Bash. Así, por ejemplo, este comando:

#! / bin / bash
export  foo  = bar
bash -c 'foo = baz'  # no tiene efecto 
echo  "  $ foo  "  # print 'bar'

barra de estampados ; el cambio a $ foo dentro del script de una línea no afecta el proceso que lo invocó. (Sin embargo, podría afectar a cualquier script que fueron llamados a su vez por ese guión.)

Si se desea una variable de entorno dada para un solo comando, se puede usar la sintaxis, con la sintaxis de una asignación de variable (o múltiples asignaciones de variables) que precede a un comando en la misma línea. (Tenga en cuenta que, a pesar de usar la sintaxis de una asignación de variable, esto es muy diferente de una asignación de variable Bash normal, en que la variable se exporta automáticamente al entorno y en que solo existe para el comando. Si desea evitar la confusión de sintaxis similar hacer las cosas diferentes, se puede utilizar la común utilidad Unix env para el mismo efecto que la utilidad también hace que sea posible. eliminar una variable de entorno para un comando – o incluso para eliminar todas las variables de entorno para un comando) Si. $ varvar =value commandya existe, y se desea incluir su valor real en el entorno para un solo comando, que se puede escribir como .var = " $var " command

Aparte: a veces es útil colocar definiciones de variables, o definiciones de funciones, en un script de Bash (por ejemplo, header.sh ) que puede ser llamado por otro script de Bash (por ejemplo, main.sh ). Podemos ver que simplemente invocar ese otro script Bash, como ./header.sh o como bash ./header.sh , no funcionará: las definiciones de variables en header.sh no serán vistas por main.sh , ni siquiera si “exportado” esas definiciones. (Este es un punto de confusión común: exportar las variables de exportación al entorno para que otros procesos puedan verlas, pero solo las ven los procesos secundarios , no los padres.) Sin embargo, podemos usar el comando incorporado Bash (“punto”) o fuente , que ejecuta un archivo externo casi como si fuera una función de shell. Si header.sh se ve así:

 foo  = función de barra
 baz ()
 {
  echo  "  $ @  "
 }

entonces este script:

#! / bin / bash
. header.sh
baz "  $ foo  "

imprimirá 'barra' .

Alcance 

Ahora hemos visto algunos de los caprichos del alcance variable en Bash.

Para resumir lo que hemos visto hasta ahora:

  • Las variables regulares de Bash están orientadas al shell que las contiene, incluidas las subshells en ese shell.
    • No son visibles para ningún proceso secundario (es decir, para programas externos).
    • Si se crean dentro de una subshell, no son visibles para el shell principal.
    • Si se modifican dentro de una subshell, esas modificaciones no son visibles para el shell principal.
    • Esto también se aplica a las funciones, que en muchos aspectos son similares a las variables regulares de Bash.
  • Las llamadas de función no se ejecutan inherentemente en subshells.
    • Una modificación de variable dentro de una función generalmente es visible para el código que llama a la función.
  • Las variables de Bash que se exportan al entorno tienen un alcance al shell que las contiene, incluidas las subshells o procesos secundarios en ese shell.
    • El comando incorporado de exportación se puede utilizar para exportar una variable al entorno. (También hay otras formas, pero esta es la forma más común).
    • Difieren de las variables no exportadas solo en que son visibles para los procesos secundarios. En particular, todavía no son visibles para shells principales o procesos primarios.
  • Los scripts de Bash externos, como otros programas externos, se ejecutan en procesos secundarios. El o el comando integrado de origen se puede utilizar para ejecutar un script de este tipo internamente, en cuyo caso no se ejecuta de forma inherente en una subshell.

Ademas a  esto añadimos ahora:

  • Las variables de Bash que están localizadas en una función-llamada están sujetas a la función que las contiene, incluyendo cualquier función llamada por esa función.
  • El comando incorporado local se puede usar para localizar una o más variables a una llamada de función, usando la sintaxis local var1 var2o . (también hay otras formas, por ejemplo, el comando declarar incorporado tiene el mismo efecto, pero esta es probablemente la forma más común).local var1 = val1 var2 = val2)
  • Se diferencian de las variables no localizadas en que desaparecen cuando finaliza su función-llamada. En particular, todavía son visibles para subshells y llamadas de función hijo. Además, al igual que las variables no localizadas, se pueden exportar al entorno para que también las vean los procesos secundarios.

En efecto, usar local para localizar una variable en una función-llamada es como poner la función-llamada en una subshell, excepto que solo afecta a una variable; otras variables pueden dejarse sin ser “locales”.

 

Una variable que se establece dentro de una función (ya sea mediante asignación o mediante un comando for-loop u otro comando incorporado) debe marcarse como “local” utilizando el comando incorporado local , para evitar que se afecte accidentalmente el código fuera del función, a menos que se desee específicamente que la persona que llama vea el nuevo valor.

Es importante tener en cuenta que, aunque las variables locales en Bash son muy útiles, no son tan locales como las variables locales en la mayoría de los otros lenguajes de programación, ya que son vistos por llamadas de funciones secundarias. Por ejemplo, este script:

#! / bin / bash

foo  = bar

function f1 ()
 {
  echo  "  $ foo  "
 }

function f2 ()
 {
  local  foo  = baz
  f1 # imprime 'baz'
 }

 f2

En realidad se imprimirá baz en lugar de barra . Esto se debe a que el valor original de $ foo está oculto hasta que devuelve f2 . (En la teoría del lenguaje de programación, una variable como $ foo se dice que tiene un “ámbito dinámico” en lugar de un “ámbito léxico”).

Una diferencia entre local y subshell es que mientras que un subshell toma inicialmente sus variables de su shell principal, una declaración como local foo oculta inmediatamente el valor anterior de $ foo ; es decir, $ foo se desestabiliza localmente. Si se desea inicializar el $ foo local al valor del $ foo existente , debemos especificarlo explícitamente, mediante el uso de una declaración como local foo = "$ foo" .

Cuando una función sale, las variables recuperan los valores que tenían antes de sus declaraciones locales (o simplemente se anulan, si no se habían anulado). Curiosamente, esto significa que un script como este:

 #! / bin / bash

function f ()
 {
  foo  = baz
   local  foo  = bip
 }

foo  = bar
 F
echo  "  $ foo  "

Realmente imprimirá baz : la declaración foo = baz en la función surte efecto antes de que la variable se localice, por lo que el valor baz es lo que se restaura cuando la función regresa.Y dado que local es simplemente un comando ejecutable, una función puede decidir en tiempo de ejecución si localizar una variable dada, por lo que este script:

#! / bin / bash

function f ()
 {
  si  [[  "  $ 1  "  ==  'sí'  ]]  ;  entonces
    Foo
   local fi
  foo  = baz
 }

foo  = bar
f yes # modifica un $ foo localizado, por lo que no tiene ningún efecto 
echo  "  $ foo  "  # imprime 'barra' 
f # modifica el $ foo no localizado, configurándolo en 'baz' 
echo  "  $ foo  "  # imprime 'baz'

Este script en realidad se imprimirá

 bar
baz

 

Anuncios

Instalar Google Street View en una tableta Kindle Fire


Nadie puede discutir la excelente relacion calidad/precio de la nueva generación de unos de los  tabletas más vendido: la Fire 7 ahora más fina y ligera ycon mayor autonomía

Esta tableta  cuenta con una pantalla mejorada  (con pantalla IPS de 7 pulgadas con mayor contraste y textos más definidos,)  un procesador Quad-Core de 1,3 GHz , hasta 8 horas de batería,  almacenamiento interno de 8 o 16 GB y ranura microSD para obtener hasta 256 GB de espacio adicional.

Una de las principales características de las famosas  tabletas  Fire de Amazon es que se encuentran ancladas a su ecosistema ,incluso cuando son  adquiridas,  pues vienen pre-configuradas  para un  usuario  de Amazon,  para que la experiencia de instalación sea la  mas sencilla posible .Desgraciadamente esta comodidad tiene también una gran  pega pues todo el interfaz  :solo orientado a ser usada dentro del ecosistema de Amazon , que  sin duda resulta muy seductor  pues ofrece entre otras las siguientes ventajas:

  • Acceso a  de millones de canciones, eBooks Kindle, apps y juegos del Appstore de Amazon, como Prime Video, Netflix, Facebook, Instagram y Spotify (no es compatible con Google Play Store).
  • Los miembros Prime tienen acceso ilimitado a películas, series y almacenamiento seguro para fotos sin ningún coste adicional.

Como  vemos , la experiencia “Amazon” incluye una pantalla de inicio de Amazon, aplicaciones de Amazon precargadas , contenidos exclusivos de Amazon   y por supuesto  la tienda de aplicaciones y contenidos de Amazon  (obviamente no incluye Google Pay Store)

Aún no contando con el market de Google  como hemos visto en este blog , es posible instalar  aplicaciones  que no estén en el market de Amazon  de manera extraoficial desde hace años, y esta nueva tableta de Amazon no es una excepción.

El proceso en términos generales siempre que la app no use los servicios de Google es  de lo más sencillo ,pues  solo necesita descargar desde la red la aplicación   en formato APK . Por  ejemplo  de hecho en efecto podemos instalar la app de Gooogle Street View buscando el apk correspondiente en la red   e instalando el apk  en la tableta,pero desgraciadamente  con  esta app  y otras tantas  hay un problema, que aunque en efecto se puede instalar desde un apk, no funciona  por si mismo  porque  necesita de los servicios de Google para funcionar ,   de modo que si quiere instalar alguna app que haga  uso del algún  servicio de Google  no sera posible  pues por defecto pues en la Fire necesitaremos un componente básico : Google Play y todos los servicios de Google  asociados que no están soportados oficialmente por Amazon, pero no se preocupe , pues incluso sin root  es posible instalar estos componentes como vamos a ver a continuación.

Pasos para instalar Play Store en las tabletas Fire

En efecto a veces necesitaremos instalar Google Play Store  para usar otras apps  como por ejemplo Google Street View   o cualquier otra que haga uso de los servicios de Google.

La sencillez es una de las claves de este nuevo proceso, pues no necesitamos  desproteger (rootear) o instalar herramientas adicionales, como por ejemplo el ADB de Android.

Estos son los pasos de forma resumida si contamos con una tableta  con sistema operativo Fire 5.0 o posterior:

Como vemos  este método   tiene una facilidad adicional , pues todo el proceso para instalar Play Store en los tablets Fire se ejecuta desde el mismo tablet, lo que aumenta su comodidad y, por lo tanto, no hay que conectarlo a ordenador alguno

Veamos de forma detallada el proceso.

1-Instalación  Google Account Manager

Google Account Mnager es una aplicación cuyo objetivo principal es el de a administrar todas las cuentas de google sincronizadas en su dispositivo android.

En algunos dispositivos esta aplicación es utilizada para remover y  reemplazar las cuentas de google olvidadas (FRP) permitiendo así el acceso al dispositivo android.

Para instalar  este componente desde el propio navegador de la Fire  desde apkmirror  podemos descargar directamente el apk ( desde es link Google Account Manager) y una  vez descargado ,procederemos a lanzar su instalación.

 

2-Instalación Google services Framework

El marco de servicios de Google Play se utiliza para actualizar las aplicaciones de Google y las aplicaciones de Google Play.

Este componente proporciona una funcionalidad central como la autenticación a sus servicios de Google, contactos sincronizados, acceso a las últimas configuraciones de privacidad del usuario y servicios basados en la ubicación de alta calidad y menor potencia.

El marco de servicios de Google Play también mejora la experiencia de su aplicación:acelera las búsquedas fuera de línea, proporciona mapas más inmersivos y mejora las experiencias de juego.

Para instalar  este componente desde el propio navegador de la Fire  desde apkmirror  podemos descargar directamente el apk ( desde este link Google Services Framework )y una  vez descargado ,procederemos a lanzar su instalación

 

3-Instalación de Google  Play Services

Las funciones principales son:
  • La autentificación de servicios de Google
  • La sincronización de contactos,
  • El acceso a la última configuración de privacidad del usuario
  • Los servicios basados en la ubicación de mayor calidad y menor potencia.
Además de todo esto, Google Play Services mejora la experiencia general de uso del terminal. Permite agilizar las búsquedas sin conexión, proporciona mapas más envolventes y mejora la experiencia de juego mediante la optimización de memoria RAM.

Otras opciones dentro del menú de Google Play Services nos permitirán gestionar las aplicaciones de nuestra cuenta (no necesariamente las que tengamos instaladas), o establecer diferentes ajustes de localización, o incluso de Google Fit

La aplicación Google Play Services siempre tiene un código numérico adjunto a su nombre, con el formato X.X.XX (XXXXXXX-ABC).  Ese código numérico junto al nombre es importante para determinar si esa aplicación Google Play Services es compatible o no con un dispositivo. Es importante fijarse en la versión de la aplicación y en los tres últimos números “ABC” dentro del paréntesis, (el resto de números 2645110 es irrelevante).

Estos tres números ABC indican con qué dispositivos es compatible esa aplicación:

“A” representa la versión de Android:
0: Android 4.4.4 o inferior
2: Android 5.0 y 5.1 (Google Play Services 8.X.XX o superior).
4: Android 5.0 y 5.1 (Google Play Services 7.X.XX o inferior) y para Android 6.0 o superior (Google Play Services 8.X.XX o superior).
7: Android 5.0
8: Android TV
“B” representa la arquitectura del CPU:
1: armeabi
3: armeabi-v7a
4: arm64-v8a
7: x86
“C” representa el DPI de la pantalla:
0: compatible con todos los dispositivos
2: 160 DPI
4: 240 DPI
6: 320 DPI
8: 480 DPI

En el caso de que se vaya a actualizar manualmente la aplicación Google Play Services existente en el dispositivo Android, lo recomendable es ver el código “ABC” de la aplicación (Ajustes > Aplicaciones > Google Play Services) y descargar una versión actualizada de Google Play Services con ese mismo código ABC.

En el caso de la Kindle Amazon Fire 5ºgeneracion   lleva instalada  Android  Lollipop_MR1 ,version LVY48F  Release  5.1.1, SDK 22  por  lo deberemos instalar la version  Google Play Services 11.5.09 (230-164803921) (230) que hemos probado desde este blog  y que puede descargar desde este link Google Play Services version 11.5.09.230

En caso de los modelo Fire HD 8 2017 de séptima generación, debe instalar Google Play Services  veesion 11-5-09-240 

 

4-Instalación Google Play

Como todos sabemos  Google Play Store (anteriormente Android Market) es la  plataforma de distribución digital de aplicaciones móviles para los dispositivos con sistema operativo Android , así como la tienda en línea desarrollada y operada por Google.

Las aplicaciones se encuentran disponibles de forma gratuita, así como también con costo,  por lo que también incluye  una plataforma de pagos (Google Pay)

Es posible también instalar esta aplicación directamente y sin necesidad de ordenador  pero antes debería haber instalado los tres componentes anteriores : Google Account Manager, Google Services Framework  y  Google Play Services 

Para instalar  este componente desde el propio navegador de la Fire  desde apkmirror  podemos descargar directamente el apk ( desde este link; Google Play Store) y una  vez descargado ,procederemos a lanzar su instalación.

 

5-Pasos  finales

Si ha descargado y ejecutado en el orden anterior  las cuatros   apk  citadas   habrá terminado . Si no  lo ha hecho ,una vez que  tenga todas las apk , debe proceder a la instalación de cada uno de los 4 apk  en el orden en los que los descargo :Google Account Manager, Google Services Framework  ,  Google Play Services y Google Play 

En cualquier caso una vez instaladas las 4 apk’s  ,no olvide reiniciar el tablet de forma habitual y todo debería funciona de forma correcta de modo que ya debería ver el acceso a Google Play  en el que tendrá que validarse con su cuenta de google para hacer uso

En nuestro caso ,  si antes había instalado  el apk de  Google Street View, ahora   ya no debería darle el error de que no tiene instalado Google Play , pero si pedirá que necesita actualizar los servicios de Google ( ojo  pues puede tardar bastante)    , momento en el cual nos pedirá  las credenciales de Google  y  ya debería arrancar  esta aplicación en la kindle fire.

Como acceder a un teléfono con el sensor táctil roto


Si tenemos la desgracia de que no podamos acceder al terminal  presentándose sin embargo  la imagen correctamente en la pantalla , al  menos  podremos acceder a este  para recuperar su datos , pero antes de explicar “el truco”,  entendamos primero las parte de la pantalla de un  smartphone.

La pantalla de un smartphone suele estar compuesta por varios elementos:

  • El exterior de cristal endurecido .
  • Una capa intermedia donde se aloja el sensor táctil que da información al sistema de dónde se ponen los dedos.Suelen ser de dos tipos
    • Resistivas: Son más baratas y no les afectan el polvo ni el agua salada y, además de ser más precisas, pueden ser usadas con un puntero o con el dedo. Sin embargo, tienen hasta un 15% menos de brillo y son más gruesas, por lo que están siendo sustituidas por otras en los dispositivos móviles que precisan un tamaño y un peso ajustados y mayor brillo en la pantalla por la posibilidad de estar expuestos a la luz directa del sol.
    • Capacitivas: consisten en una capa de aislamiento eléctrico, como el cristal, recubierto con un conductor transparente, como el ITO (tin-doped indium oxide). Como el cuerpo humano es también un conductor eléctrico, el contacto con la superficie de la pantalla genera una distorsión del campo electrostático de la pantalla, que se mide a través del cambio en la capacitancia  . En este tipo de pantallas ,que por cierto son las mas normales, la imagen tiene una mayor calidad, la respuesta es mejor, y la mayoria permiten el uso de varios dedos a la vez (multitouch). Sin embargo, son más caras y no se pueden usar con el puntero habitual, sino con uno especial para las pantallas capacitiva.
  • La pantalla TFT propiamente dicha,  o display que se encarga de mostrar la imagen.

Gracias a esta  descomposición, si adquirimos  el pack completo ,    veremos  dos cables de cinta   en la parte  trasera de cualquier pantalla : el pequeño proveniente del sensor táctil   y otro cable de de muchas mas conexiones para la  pantalla  TFT

img_20170301_194132

Todas estas  capas están firmemente adheridas, por lo que resultan muy difíciles de separar ,rompiéndose a veces los tres componentes  a  la vez  o  en la mayoría de ocasiones sólo uno (el digitalizador) por ser el mas expuesto . Normalmente sin embrago cualquier problema  con alguna de estas partes   generalmente  se soluciona ,como vamos  mas adelante, cambiando el pack  completo del cristal+digitalizador+display para nuestro modelo de  teléfono.

 

 

Rotura del sensor táctil

En el caso muy normal de que se nos haya SOLO estropeado el digitalizador  el smartphone deja de detectar las pulsaciones sobre la pantalla de modo que  no pasaremos  del desbloqueo de la pantalla   y  cualquier uso que deseemos hacer del móvil estará imposibilitado.

De esta guisa  , al no  poder  acceder al terminal a todos los efectos el  smartphone se podria  considerar  inutilizable, pero, por fortuna, Android incluye maneras de gestionar el sistema más allá de la mera navegación con los dedos ,  siendo la manera más sencilla gracias a un adaptador OTG (on the go)  que   suple el sensor táctil del terminal  por el puntero de  un ratón USB  , el cual por cierto también puede ser incluso mejorado con un dongle para  raton+ teclado inalámbrico pues el receptor siempre es USB  y normalmente también sera reconocido  por Android.

En el caso mas sencillo   ,simplemente  conectemos un  ratón  a la hembra USB del OTG  y el otro extremo del adaptador OTG   a nuestro terminal . En seguida  el smartphone lo detectará como un dispositivo de entrada mostrando un puntero en pantalla. permitiéndonos  movernos como si de un ordenador se tratase con la ventaja de que no tendremos que instalar ningún driver ni nada parecido: enchufar y listo.

Cable Adaptador Micro USB OTG compatible con Dispositivos USB OTG

En este punto  hay que hacer varias menciones una vez conectado el ratón :

  • El puntero del ratón se puede mover como lo haríamos con el dedo.
  • El botón derecho derecho simula el botón atrás ( normalmente el botón físico no funcionara).
  • Se puede arrastrar manteniendo pulsado el botón izquierdo y moviendo el ratón, de hecho por ejemplo lo necesitaremos  para desbloquear la pantalla.Incluso puede servir  para teclear el pin o trazar el código de desbloqueo.
  • El scroll sirve para  moverse por la pantalla.
  • El botón izquierdo con un click sirve para activar  opciones disponibles en esa porción de pantalla como barras de menús , check-box , etc

 

IMG_20181108_234637[1]

Por  cierto ,respecto al precio del adaptador OTG , no se asuste , apenas cuesta unos 2€ o menos en Amazon

 

 

 

Cambio de pantalla y sensor

Es cierto que con el adaptador OTG podemos solucionar el problema de acceder a  los datos que tuviese el telefono  o para darle una segunda vida ( cámara ip, despertador , estación meteorológica , etc ) pero es evidente que si buscamos mantener la usabilidad esto no sera suficiente.

Si con el OTG no es suficiente, si queremos seguir usando el terminal de forma normal,  deberemos  cambiar tanto la pantalla como el sensor capacitivo ,  aunque no pese .

También  si no ha recibido ningún golpe ,podría ser que se hay soltado el cable del digitalizador a la placa madre ,pero esto no es muy habitual aunque tampoco deberíamos descartarlo al menos si no presenta desperfectos en la pantalla

En este ejemplo vamos   a ver como hacerlo  en  un Doogee Y100 Plus    aunque el procedimiento general es bastante parecido a  u otros modelos )  pues la mecánica es bastante parecida  en todos los casos cuanto al procedimiento para el desmonte del terminal , reemplazo del sensor con el tft   y luego el posterior re-ensamblado de todos sus componentes.

img_20170301_1932431

En la imagen  esta  la evidencia: el terminal no solo presenta  desperfectos en la en sensor capacitivo del frontal  , el cual  incluso podría  reemplazarse de forma  separada , sino que además, también  presenta  zonas de la pantalla sin imagen ,lo cual es claramente un signo de que también  la pantalla TFT debe ser reemplazada pues presenta graves  problemas de deformaciones en el tft.

Afortunadamente , todo tiene solución en esta vida , y  aunque pueda parecer una gran  contrariedad que ambas partes se hayan estropeado, lo cierto es que lo ideal es reemplazar  ambas  partes simultáneamente( el TFT con el sensor capacitivo )   pues e suelen venir  pegadas de fabrica  de modo que suele ser muy difícil separarlas  para cambiar solo alguna de estas, como por ejemplo el sensor capacitivo ya  que al estar mas expuesto es el que mas sufre por las caidas y las rayaduras.

img_20170301_194105

Como es evidente que necesitamos sustituir ambas piezas ,lo primero es buscar  un reemplazo de ambas partes averiadas en alguno de los portales chinos , teniendo muy claro que debemos adquirir el modelo exacto para  nuestro terminal ,pues en incluso en versiones parecidas puede haber diferencias

Desmontando el terminal

Comenzaremos  por retirar la funda  así como las  carcasas  del teléfono  y retirar la placa posterior mediante una pequeña punción entre el conector micro usb  y parte de atrás  de plástico. Si tiene problemas, se recomienda una herramienta de levantamiento de plástico o en su defecto una púa de las usadas para tocar acordes.

Después de que la parte posterior plástica del teléfono se haya quitado, quite la batería, ambas tarjetas  sims  y la tarjeta micro SD (izquierda)

Nota:Insistimos  que no debemos olvidar extraer todas las tarjetas  SIM ‘s   y por supuesto la micro-sd ( si contamos con esta)  pues si las dejamos en la carcasa al intentar al extraer la tapa interior    corremos el grave riesgo de romperlas

Identificación

Bajo la batería se puede ver la etiqueta de identificación, que muestra el modelo de teléfono, las bandas del teléfono se puede conectar también y 2x IMEI.

Este teléfono en concreto tiene sims dual, lo que explica los dos números IMEI 2x.

Observe que tenemos una serie de tornillos philips  por toda la periferia del terminal

 

img_20170301_193818_li-2

Retire ahora  con cuidado  los 12 tornillos Phillips con un destornillador de cabeza Phillips de 1,8 x 40 mm  con mucho cuidado de no perder ninguno. Una vez desenroscado cada tornillo se puede usar un imán o un destornillador imantado  para extraer cada tornillo con objeto de no perder nada

Hay normalmente un tornillo verde o blanco que  tiene un adhesivo vacío que lo cubre. Si usted quita esta etiqueta usted anulará su garantía, pero ya sabe que una rotura de pantalla o sensor no esta cubierta por la garantía porque normalmente este tipo de problemas suelen ocurrir por caídas accidentales o fortuitas   hechos que nunca estarán cubiertas en las condiciones de la garantía .

img_20170301_193950

Utilize una herramienta de arrastre de plástico  para separar cuidadosamente la cubierta de plástico posterior (el primer marco medio) del segundo marco medio. Si no dispone de herramientas de desmonte también puede servir una púa de guitarra,el filo de una navaja  o incluso las uñas..

Se recomienda comenzar en la parte inferior y poco a poco trabajar  con su herramienta de extracción  a partir de ahí.

Cable de  antena y placa madre 

A continuación tendremos que quitar el cable de la antena para lo cual puede  utilizar un par de pinzas, levantando con cuidado el cable del conector. Puede haber cinta que lo sostenga allí que puede eliminar  también.

Hay personas que  quitan el otro extremo del cable de la antena pero en realidad no es fundamental.
img_20170301_194039_li-2
Ahora volvemos nuestra atención a la  placa  principal donde necesitamos desconectar 2 cables de cinta   : el del digitalizador y el de la pantalla TFT.
En primer lugar lo más probable es que haya cinta que cubra los conectores, la cual debería quitar o con un par de pinzas.
Ahora podemos ver el conector del TFT  a la derecha .Usando un par de pinzas levante el pequeño brazo que sostiene el cable en el conector. ! Tenga cuidado con sus pinzas pues  el brazo del conector es muy frágil !.Utilizando de nuevo las pinzas (herramienta muy útil) tire con cuidado del cable del conector.
img_20170301_195205_li

Ahora debemos repetir  este paso para el  conector del digitalizador  que esta en la parte superior a la izquierda.

Utilizando de nuevo las pinzas  tire con cuidado del cable del conector usando un par de pinzas para levantar el pequeño brazo que sostiene el cable en el conector. ! Tenga cuidado con sus pinzas pues  el brazo del conector es muy frágil !.
img_20170301_195258_li

Botonera de volumen y botón de encendido

 Ahora necesitaremos soltar  la plaquita de pulsadores de encendido  y el volumen del marco principal . Utilizando la lengüeta negra marcada en la imagen, tire de los contornos  con  cuidado e intente sacar  la placa soltando el recubrimiento negro usando para ello  las pinzas , intentando alejar  del marco de plástico medio. Tenga mucho cuidado porque el PCB es muy frágil.
img_20170301_201826_li

La placa  principal se sostiene sobre el chasis  por dos  tornillos de cabeza  ancha de  40mm. He marcado estos dos tornillos en  la foto.

img_20170301_200453_li-2

Extracción de la placa principal 

 No trate de quitar la placa principal todavía, porque todavía hay otro cable adjunto por debajo el cual debe  extremarse la precaución pues es muy frágil.
Levante lentamente la placa principal de la parte superior del teléfono y gírela hacia arriba. Ahora debe ver el conector. Este conector es el mismo que los otros dos en la parte superior de la placa principal. Desconecte el conector del mismo modo que lo hizo antes.
img_20170301_201957_li

Pasos intermedios en otros terminales diferentes al Doogee y100

  • Si no necesita reemplazar la cámara trasera o frontal, puede hacerlo ahora.
  • Para quitar la cámara frontal, desconecte la cámara de la tarjeta . El conector es el mismo que el otro conecta en la placa base.
  • Para quitar la cámara trasera, desconecte la cámara de la tarjeta . El conector es el mismo que el otro conecta en la placa base.
  • Encontrará el receptor auricular en el segundo marco medio. .

Eliminación de Pantalla averiada

Ahora ya estamos finalmente en la etapa final de quitar el bloque de la pantalla.Voltear el marco medio hacia atrás de modo que usted está mirando ahora en la parte delantera del teléfono de nuevo. Ahora necesitaremos usar un secador de pelo o una pistola de calor para calentar los bordes del teléfono para aflojar el pegamento que está sosteniendo en la pantalla y los botones delanteros, al marco medio .Una vez que el pegamento se ha calentado lo suficiente usted debe ser capaz de obtener una herramienta de plástico entre la pantalla de vidrio y el marco de plástico medio.

Lentamente y con cuidado, mueva su herramienta de arrastre alrededor del teléfono hasta que la pantalla se haya liberado desde el marco medio. Encontrara  que normalmente  el pegamento que sostiene la pantalla al marco medio no es fuerte,  lo cual  es bueno para poderlo soltar.

Hay muchas personas , que optan  si se va a desechar esta parte , con cuidado con  una navaja hacer presión  por el hueco interior  y luego intentar levantar el cristal por un lado  y desde ahi con sumo cuidado ir bordeando todo el perímetro hasta sacar por completo  todo el conjunto .

 

img_20170301_202544

Ahora debería estar a punto de reemplazar la pantalla con otra. El vidrio con la pantalla y el digitalizador son todos una pieza ,  lo cual  significa que las tres partes tendrán que ser reemplazadas si uno de ellos falla. Esto se está convirtiendo en la norma con la mayoría de los móviles de hoy.

Montaje

Nos toca ahora el proceso inverso ,por lo que primero  antes de continuar  primero deberíamos  comprobar que  el remplazo es el correcto al menos   a nivel de conectores y de dimensiones

img_20170301_194132

Antes de nada se deben  quitar las protecciones interiores pues al pegar por la parte posterior  puede ser un martirio sacarlas

img_20170301_203011

Nos toca echarle un poco de pegamento suave (yo he usado  pegamento para textiles  o calzado)  por los bordes  es introducir los dos cables por la canaladuras marcadas en la foto, la cuales están  practicadas sobre el propio armazón

img_20170301_202623_li

Esperaremos unos 15 minutos  para que seque un poco el pegamento , y luego fijaremos ambos componentes de modo que coincidan perfectamente

img_20170301_230154_li

Ahora toca conectar la placa madre  por lo deberemos empezar por el conector interior.

img_20170301_202052

Una vez ajustado el conector , llevaremos la placa a su posición correcta  horizontal  y una vez ajustada , atornillaremos con los dos tornillos correspondientes.

Acto seguido presentaremos los dos cables de cinta en sus conectores  y perfectamente alineados colocaremos la palanca de reten con un cuidado extremo (son muy frágiles)

img_20170301_231244

Tampoco debemos olvidar el cablecillo de antena que va por el lateral izquierdo .

Y ahora ya solo nos queda poner la tapa y atornillar todos los tornillos philips

 img_20170301_232734_li

Finalmente colocaremos la micro-sd,la sim ,la batería  y por supuesto la tapa: debería lucir nuestro terminal como nuevo pues en efecto eso es lo que hemos hecho

 

 

 

!Muchísima suerte  tanto si se apaña con el truco del OTG  o sei decide a reemplazar su pantalla rota de su terminal por otra nueva!

Cómo conectarse a una Raspberry Pi desde un smartphone


No siempre esta fácilmente accesible un ordenador para conectarnos cómodamente desde ssh o por vnc   o tal vez no tenga un segundo teclado o ratón disponibles, así que ¿porque no intentar acudir a  una  smartphone  o tableta para conectarnos desde allí ?

 

Screenshot_2018-11-04-23-01-45-352_com.realvnc.viewer.android[1]

 

Pues en  efecto es posible conectarse a una Raspberry Pi desde un smartphone o tableta , y de forma muy sencilla ,como vamos a  ver a  continuación, pero para ello, en primer lugar necesitamos ,  obtener la dirección IP de la Raspberry Pi

Para conocer la dirección IP del Raspberry Pi, tendrá que  conectar la Raspberry Pi  a la alimentación , deberá tener conexión a  Internet   .

Ahora  desde    un terminal   ejecutar el comando ifconfig. La  salida  desde una Raspberry Pi 3 sera similar a esta:

[email protected]:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.64 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::625:6aec:6f57:df7c prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:67:0c:6f txqueuelen 1000 (Ethernet)
RX packets 661 bytes 45810 (44.7 KiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 585 bytes 202270 (197.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 17 bytes 1004 (1004.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 17 bytes 1004 (1004.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether b8:27:eb:32:59:3a txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[email protected]:~ $

 

Observe que en negrita casi al principio de la salida del comando ,  el comado nos indica la dirección IP para podernos conectarnos  de forma remota, asi  que recomendamos que la anote aparte.

Una vez que tenemos la ip   si antes no  se ha conectado de forma remota asegúrese de que esta habilitado la conexión tanto por SSH como por VNC , para lo cual  nos iremos a Preferencias-->Configuración de la Raspberry Pi y seleccionaremos la pestaña Interfaces.

Es esta pantalla , debemos seleccionar SSH y VNC . Finalmente pulsaremos aceptar  pero  para que se apliquen los cambios tendremos que reiniciar la Raspberry  Pi

 

ssh.PNG

Por cierto, si no recuerda la clave que escribió en la primera configuración debería ir a  Preferencias–>Configuración de la Raspberry Pi y en la pestaña Sistema pulsar cambiar clave, pues sera esta la que tendrá que escribir casa vez que intente conectarse a la Raspberry Pi

 

clave.PNG

Conexión hacia la Raspberry Pi por ssh

Lo  primero  que quizás se nos ocurra es la la conexión de Pi con teléfono via  SSH cliente):SSH (Secure Socket Shell), el cual  es un protocolo de acceso  muy común a todo los equipos unix  y Linux que nos da acceso a la consola de comandos

Existe  una app llamada  Serverauditor  que se puede descargar desde la store de Android (Google Play ) gratuitamente. Asimismo también está disponible para dispositivos iOS.

Asegúrese de que el smartphone o tableta y la Raspberry  Pi están en la misma red para poder realizar la conexión

Los pasos para instalar Serverauditor en el teléfono:

Alias: cualquier nombre es aceptable como por ejemplo Raspberry Pi 

Username: pi

Nombre de host: la  dirección Ip  obtenida con el comando ifconfig

Contraseña: la pwd que haya puesto

Los demás campos se pueden dejar espacios en blanco, luego toque la marca de verificación en la derecha superior. Después de eso, haga clic en una Conectar cuando se le preguntó ” Si desea conectar el dispositivo

  • Nota:Nombre de usuario y contraseña son los de frambuesa Pi. Si uno ha cambiado del predeterminado, necesita entrar con el actual nombre de usuario y contraseña.
Screenshot_2018-11-04-22-30-22-624_com.server.auditor.ssh.client[1]

Ahora  ya tiene un modo muy sencillo de ejecutar consola de Raspberry Pi en la pantalla así que !disfrútelo!.

En el vídeo siguiente precisamente podemos ver el programa en funcionamiento

Conexión hacia la Raspberry Pi via vnc

Ya que se ha conectado exitósamente a la consola de comandos por ssh , seguro que le interesa también poderse conectar tambien  al interfaz gráfico por lo que ahora nos toca instalar y configurar el servidor de VNC sobre Raspberry Pi  en su tablet/smartphone.

Para instalar y configurar el VNC viewer en su tablet/smartphon en  android  siga los siguientes pasos:

  • Descargue la app Vnc Viewwer desde Google Play desde la url  oficial https://play.google.com/store/apps/details?id=com.realvnc.viewer.android
  • Al ejecutar la   app por primera vez le pedira una cuenta de  vnc, de modo qeu si no la tiene tendra que creala desde la propia aplicacion introduciendo una cuenta de correo, un nombre , apellido,pais   y un catcha,
  • En nuestro correo electrónico recibiremos un email que debemos validar para confirmar que  cuenta nos pertenece
  • Una vez que haya confirmado los datos puede intentar volver a entrar en la app VNV Viewer ingresando las credenciales que introdujo
  •  Ahora  siga el procedimiento similar al del ssh
    • Haga clic en el el Boton del signo másen la parte inferior izquierda de la pantalla y seleccione la opción Nuevo Host.
    • Entrar los siguientes datos:

    Alias: cualquier nombre es aceptable como por ejemplo Raspberry Pi 

    Username: pi

    Nombre de host: la  dirección Ip  obatnida con el comando ifconfig

    Contraseña: la pwd que haya puesto

    Los demás campos se pueden dejar espacios en blanco, luego toque la marca de verificación en la derecha superior. Después de eso, haga clic en una Conectar cuando se le preguntó ” Si desea conectar el dispositivo

  • Para  conectarse  a  su Raspberry Pi , dado que ya ha creado la conexión, pulse  sobre el icono nuevo que aparece en la pantalla de inicio
  • Enseguida deberían aparecer   las credenciales de acceso  y probablemente el pwd en blanco que deberemos completar  .
  • Finalmente progresar la conexión  pulsando en CONTINUE
  • Una vez dado el botón de conectar debería aparecer la pantalla principal de Raspbian que ahora podremos controlar desde nuestro smartphone  haciedo uso de las herramientas que nos aparecen en la parte superior de la pantalla

 

Screenshot_2018-11-04-23-01-45-352_com.realvnc.viewer.android[1]

  • Para faciliar el manejo VNC sin teclado  y ratón   clásicos  aparte de la barra de herramientas , este  programa  añade soporte de gestos con los dedos  para  facilitarnos la interaccion con Raspbian:

Screenshot_2018-11-04-23-00-59-320_com.realvnc.viewer.android[1]Screenshot_2018-11-04-23-00-52-332_com.realvnc.viewer.android[1]

 

NOTA: En caso de versiones MUY  antiguas de Raspbian que no traigan VNC instalado deberá instalar al version servidor de VNC  en la Raspberry Pi de forma manual desde consola por   línea de consola, para ello introduzca los siguientes comandos en orden.

  1.  Instalar el paqueete TightVNC paquete:  sudo apt-get install tightvncserver
  2. Ejecutar servidor TightVNC; tightvncserver
  3. Se le pedirá que introduzca una contraseña y una contraseña de sólo lectura opcional.
  4. Crear un archivo de secuencia de comandos para iniciar el servidor VNC. Use Oeditor de texto  escribiendo el siguiente comando:nano
  5. Poner el siguiente script en él: #!/bin/sh  vncserver :1 -geometry 1920×1080 -depth 24 -dpi 96
  6. “Ctrl+o” para guardar el archivo. La extensión debe ser “.sh” por ejemplo llamelo “vnc.sh”. A continuación, “Ctrl + X” para salir del editor de.
  7. Hacer el archivo ejecutable.sudo chmod +x vnc.shCon este archivo, puede iniciar servidor VNC desde tu tablet/smartphone enviando un comando a través de SSH: ./vnc.sh dsfs

 

 

 

:

 

Reloj gigante casero


En efecto hemos visto soluciones muy ingeniosas usando  tal vez medios humildes como por ejemplo cartón y leds para construir un reloj digital “gigante”, pero la idea de Leon van den Beukel ha sido  llegar aun mas lejos  pues   sustituye todos  los leds  convencionales  usados en proyectos convencionales por tiras de leds  RGB direccionables  del tipo  WS2812B .

Ademas por si fuese poso también  ha creado una  versión impresa en 3D para albergar  todo   usando como placa de control   una placa   Arduino  nano   al que se ha conectado un modulo bluetooth para sincronizarlo con un smartphone gracias a una aplicación personalizada que se conecta de forma inalámbrica al reloj a través de dicho  modulo  Bluetooth y de este modo puedo personalizar el reloj.

Para cortar algunas  piezas, el autor también   ha usado una máquina CNC casera.

Los componentes  usados en este diseño  son:

Esta es el esquema del reloj digital casero propuesto  donde ya se  aprecian la conexiones:

  • Del sensor de temperatura DHT11,  el cual se ha  conectado al pin D2  junto la típica resistencia de 10k entre la salida de datos  y  VCC
  • El modulo de bluetooh  conectado a los pines D5(tx) y D6(rx) sin omitir la alimentación  de vcc y gnd. El pin de RV también lleva una resistencia de 1k en serie  y otra de 2.2k entre este y masa para atenuar la  señal del modulo
  • La tira de leds conectado a D8 por medio de una resistencia en serie de 330 ohmios sin omitir la alimentación  de vcc y gnd
  • El modulo de tiempo real conectado a los pines analógicos A4 y A2 sin omitir la alimentación  de vcc y gnd
  • La  alimentación  de todo el conjunto de 5v DC

 

 

Schema.png

 

Por cierto si se esta preguntando por el orden de colocación de los leds , tenga en cuenta que ha usado 29 leds RGB  para los 4 dígitos y los dos puntos,  colocándoles de modo que compongan 4 cifras en código de 7 segmentos   conectando cada led  entre si  respetando la alimentación   y encadenando el pin de datos  pore medio de sus pines de entrada y salida

Esta es la configuración del orden de los  leds RGB empleada por el autor:

Respecto al  código fuente de Arduino nano  esta disponible  en https://github.com/leonvandenbeukel/3D-7-Segment-Digital-Clock/blob/master/3D-7-Segment-Digital-Clock.ino

Para el control del reloj  puede descargar la aplicación  Bluetooth Digital Clock App  para Android desde Play Story aquí: hhttps://play.google.com/store/apps/details?id=nl.leonvandenbeukel.BTDigitalClockApp

 

Por ultimo también en github   el autor ha dejado los ficheros stl para imprimir  el receptáculo  del reloj con una impresora 3d. La ruta de estos 11 piezas  para imprimir por separado  esta en https://github.com/leonvandenbeukel/3D-7-Segment-Digital-Clock/tree/master/STL

Para un mejor contraste, nos sugieren mejor imprimir las siguientes partes en negro:

  • BewteenSegments
  • DotRing
  • Dotbottom
  • Medio
  • OuterRingSegments

El resto de piezas se puede imprimir en blanco.

En el siguiente vídeo podemos ver este fantástico reloj en funcionamiento

 

 

 

Cómo instalar una app Android en Amazon Fire


De la famosa tableta de Amazon , es decir la  Tablet Amazon Fire se han vendido ( y se siguen vendiendo  ) de forma extraordinaria una cantidad ingente de unidades por todoel mundo  desde que fueran lanzadas , hace un par de  años,  sin duda  debido a su gran relación calidad/precio pues  no olvidemos que por  menos de 70€  podemos tenerla en casa con 8GB (o con 16GB por unos 10€ adicionales)

Esta  tableta con pantalla IPS de 7 pulgadas con mayor contraste y textos más definidos, un procesador Quad-Core de 1,3 GHz y hasta 8 horas de batería, ofrece un gran rendimiento para la reproducción de todo tipo de contenido multimedia  ,obviamente orientado a consumir  desde la nube de Amazon ,  pero desde luego , por al precio en el que están, la Fire 7 es casi imposible no adquirir una para toda la familia.

Uno de los pequeños hándicaps de estas tabletas, es que aun teniendo una versión fork de Android,  no podemos acceder a la Google Play Store, ya que viene con  la propia tienda de  aplicaciones de Amazon (Amazon Play Store ) donde  desgraciadamente no están disponibles todas las aplicaciones que si están en Google Play. 

Amazon Play  no está nada mal, pero insistimos ,  le faltan muchas aplicaciones  y todo ese gran contenido que ofrece la dedicada a Android por parte de Google : Google Play Store,  aunque no todo está perdido, ya que, si tiene una tablet Fire bien  , puede instalar Google Play Store o bien mucho mejor instalar manualmente la app que necesite  sin necesidad de instalar Google Play  y por cierto, no necesitará ni ser ROOT ni usar comandos ADB.

 

 

Los tablets Fire de Amazon están concebidos para resistir el uso diario. De acuerdo con los tests de caída, el Fire 7 es más resistente que el último iPad y soporta el doble de impactos que el iPad mini 4 (y cuesta mucho menos).

El Fire incluye una cámara trasera de 2 MP que permite hacer fotos de alta resolución y vídeos HD de 720p y con una cámara frontal VGA suficiente  para realizar videollamadas con Skype a familia y amigos.

Respecto a la interfaz  de la tableta , conocida como  Fire OS 5 es cómoda y fluida y cuenta a con un buen número de funciones pre-instaladas que pueden ser extendidas mediante la descarga de aplicaciones adicionales a través de Amazon Appstore como comentábamos al principio de este post.

El sistema operativo del Fire es Android, aunque bloqueado por Amazon de modo que aunque no cuenta con Google Play, si  cuenta con  la Appstore de Amazon, que es prácticamente igual, aunque con diferencias en cuanto a su contenido. No obstante, se puede descargar cualquier aplicación por la APK, directamente desde el navegador de la tablet, o bien transfiriéndola desde un pc, el móvil, etc , tal y como vamos  a ver a continuación .

 

 

Instalación APKDownloader

Gracias a la plataforma android  nuestros dispositivos tienen características de inteligencia adicional que es ofrecida gracias  a las millones de aplicaciones disponibles desde Internet ,y eso  a esta alturas todos los usuarios de Android lo sabemos  ( o lo deberíamos sospechar)  siendo  lo mas  rápido  y seguro optar por descargar estas desde el sitio oficial:  Google Play Store , sobre todo en los tiempos actuales donde cada día surgen nuevas apps con objetivos  poco éticos enmascaradas en inocentes funcionalidades (como por ejemplo una inocente app linterna).

Como hemos hablado,  el sistema operativo del Fire es básicamente Android, aunque customizado  por Amazon de modo que han bloqueado  Google Play sustituyendo  este  por  la Appstore de Amazon, que es prácticamente igual, aunque con diferencias en cuanto a su contenido. No obstante, como vamos   ver ,se puede descargar cualquier aplicación por la APK, directamente desde el navegador de la tablet, o bien transfiriéndola desde un pc, el móvil, etc

¿Por qué no podemos descargar apk de Google Play sSore?

Google tiene algunas políticas estrictas que impiden a los usuarios de android que descarguen los  archivos de apk directamente a sus dispositivos para impedir la piratería. Ademas , hay otros asuntos relacionadas como por ejemplo si una aplicación específica que usted quiere deba estar disponible en su país o si  oficialmente es soportada  por  un  cierto dispositivo o no , o a partir de una determinada version .

Ante esta  problemática , existen muchas alternativas de Tiendas de aplicaciones en Internet que  almacenan y  permiten descargar apk directamente , pero insistimos el riesgo puede ser alto , así que lo ideal seria bajar el fichero apk desde Google play store directamente , ( en este caso para luego instalarlo en la Fire)

Afortunadamente  se  pueden saltar restricciones de necesitar la app de Google Play para instalar cualquier app de Google Play en la Fire con la aplicación llamada “Apk Downloader extensión” que permite   gracias a una extensión de Chrome descargar el APK directamente desde Google Play Store .

Esta aplicación, como se puede intuir, realmente hace maravillas pues de alguna manera se las arregla para capturar las apk  desde lo propios servidores de la tienda oficial, lo cual nos da bastante seguridad.

Esta opción  ofrece muchas ventajas pues :

  • Le da libertad para descargar aplicaciones que no están disponibles en su país.
  • Soporta todos los dispositivos.
  • Puede instalar  Apk  bajados directamente desde Google Play Store, sin tener instalado Google Play  en su Fire , donde or cierto también seria posible,  pero a costa de consumir bastantes recursos del dispositivo,

 

Extension ApK dowloader

La extensión de Chrome llamada  Apk Downloader  funciona perfectamente con casi todas las aplicaciones disponibles en la Google Play que sean gratuitas , así que si quiere descargar aplicaciones y almacenar su archivo Apk, puede descargar esta aplicación desde la tienda en primer lugar en su pc   y luego llevarse el archivo al dispositivo donde lo quiera instalar.

Para usar esta extensión   en  su navegador siga estos pasos:

  1. Descargue  la extensión desde aqui 
  2. Añada la extensión  a Google Chrome.
  3. Acepte la instalación de esta extensión.
  4. Compruebe en la esquina superior derecha de la pantalla justo a la izquierda del icono de búsqueda que hay un icono naranja nuevo.

Ahora una vez instalada la extensión en Google Chrome ,sigue estos pasos para obtener el apk directamente desde Google Play Store.

  1. Ir a Play Store y seleccionar cualquier aplicación que desee descargar.Por ejemplo vamos a descargar la famosa app de Zowi que no esta disponible en Amazon Playzowi
  2. Copiar la URL de Google Play de la app que necesite ( Ctrl+C)
  3. Pulse el botón rojo de APK downlader en e la esquina superior derecha de la pantalla justo a la izquierda del icono de búsqueda.
  4. Seleccione ‘Apk Downloader extensión‘ de las opciones sobre acciones.
  5. Copiar la url de la aplicación  con Ctrl+V en la caja de dialogo
  6. Pulsar Generate Donwload Linkzowi2.PNG
  7. Esperar hasta iniciar la descarga.
  8. El Apk se descargarán automáticamente sin la intervención de los servicios de Google Play en una ruta de su pc.
  9. Puede renombrar el fichero apk por otro que sea intuitivo  pues normalmente el nombre del fichero no suele coincidir con el nombre de la aplicación)

 

 

Instalación del APK en el Fire

En  primer lugar  para que pueda instalar un apk  en su Fire debe  activar la casilla de “Orígenes desconocidos” que encontrará dentro de los ajustes de  Fire OS en  “Seguridad”.

Para instalar la apk  el archivo APK en su Fire  simplemente siga los pasos a continuación:

  1. Conectase  a la nube de Amazon ( Amazon drive)
  2. Coloque el archivo APK en la ruta de Amazon .amazondrive
  3. Vaya a su tableta e inicie Amazon Drive
  4. Busque el apk   y cópielo en una ruta local de su tableta (por ejemplo en download)
  5. Ejecuet el apk
  6. Haga clic en ‘instalar’
  7.  Espere a que se instale el APK.
  8. Una vez instalada  ya puede abrir la aplicación

 

Descarga del APK desde otro Navegador

Quizás  si no tiene instalado el navegador Chrome, o quiere hacerlo  desde la misma tableta   le interese  para descargar el  apks desde Google Play  usar algún servicio de descarga que nos pase el apk directamente de Google Play  como por ejemplo el servicio evozzi.com.

Estos son los pasos a seguir:

  1. Ir a Play Store y seleccionar cualquier aplicación que desee descargar.
  2. Copiar la URL ( Ctrl+C)
  3. Ir  a https://apps.evozi.com/apk-downloader/
  4. Pulsr Ctrl+V enla caja para pegar la url desde Google Play
  5. Pulsar Generate Download Link
  6. Solo tenemos que pulsar en el botón verde  y se iniciara la descarga del apk a local
  7. Conectase  a la nube de Amazon ( Amazon drive)
  8. Coloque el archivo APK en la ruta de Amazon .amazondrive
  9. Vaya a su tableta e inicie Amazon Drive
  10. Busque el apk   y cópielo en una ruta local de su tableta (por ejemplo en download)
  11. Ejecute el apk
  12. Haga clic en ‘instalar’
  13.  Espere a que se instale el APK.
  14. Una vez instalada   puede abrir la aplicación

 

Por cierto  ,no olvide que para poder instalar el  apk debe activar la casilla de “Orígenes desconocidos” que encontrará dentro de los ajustes de  Android y “Seguridad”.

 

 

Como conectar una memoria USB al Amazon Fire Stick


Amazon Fire TV es uno de los dispositivos más originales de Amazon  pues por un precio razonable ( dado que esta sufragado  en parte por Amazon  para  que consumos contenidos  suyos,) , este gadget   nos permite  llevar todo el material multimedia a un mismo punto  y ademas gobernándolo con un sencillo mando

Algunas de las plataformas accesibles desde este dispositivo son:

  • Con la suscripción a Amazon Prime, se tiene acceso a Prime Video, que ofrece miles de películas y episodios de series sin ningún cargo adicional.
  • Se puede acceder a fotos en Prime Photos sin ningún coste adicional y verlas en su televisor HD con el Fire TV Stick Basic Edition.
  • Permite usarlo como plataforma de juegos causal gracias a apps disponibles en  el portal de Amazon  como  Stranger Things: The Game, Galaxy Zero, Asphalt 8 o incluso algún Final Fantasy como el III, V o VI , estas ultimas de pago ( lo ideal  usar un mando bluetooth),
  • Se pueden instalar  miles  de aplicaciones  directamente desde el propio dispositivo  gracias  a la vinculación del Fire TV Stick , con su cuenta de Amazon
  • Se puede acceder a redes sociales como Facebook, Reddit ,eyc asi como a  millones de otros sitios web usando navegadores web como Silk o Firefox ya preinstalados en el propio stick .
  • Se puede disfrutar  de otros servicios ajenos a Amazon  tan populares como Netflix, Youtube, Spotify  etc
  • Se  puede disfrutar de  Movistar + sin descodificador  como vimos en este blog

 

 

La versión vendida en muchos paises fuera del ámbito anglosajón como por ejemplo en  España,es la denominada Basic Edition, la cual en realidad es la segunda generación del producto  contando  con un  Mediatek 8127D (cuatro núcleos Cortex-A7 a 1,3 Ghz) y gráfica ARM Mali-450 MP4   o capaz de decodificar contenido en H.265 por hardware, si bien la resolución en esta version es Full-HD (1920×1080). Asimismo cuenta con unas muy buenas capacidades de conectividad  siendo compatible con Wifi-AC (Dual Band) y Bluetooth en su versión 4.1.

Respecto a la interfaz  interfaz de Fire OS 5 es cómoda y fluida,cuenta a con un buen número de funciones preinstaladas que pueden ser extendidas mediante la descarga de aplicaciones adicionales a través de Amazon Appstore como cometabamos al principio de este post.

Al estar basado en la versión 5 de Android (Lollipop), es posible también instalar manualmente aplicaciones Android (mediante archivos APK), aunque su funcionalidad dependerá de como de bien se adapten al control desde el mando a distancia.
Dispone además de 1 Gb. de memoria RAM y 8 Gb. de almacenamiento eMMC no ampliables lo cual pude ser un problema  sino fuera por un truco que  vamos a  ver a continuación basados en la extensión de OTG que es soportada por este .

 

 

 Instalación de un  cable OTG

Los  componentes  que  se  incluyen con  el  Fire TV Stick    aparte del dongle   y el mando son las dos pilas para el mando  y dos cables:uno  para  alimentarlo a 5v desde un usb ( ojo si  la tv no tiene usb  habrá que conectarle  un adaptador usb)    y  un extensor de hdmi para el caso de  que no entre el conector directamente en el conector del tv)

componentes

La instalación  como vemos es minimalista  ,pues en el caso ideal el dongle se conecta directamente a un conector hdmi del tv    y solo requiere la alimentación que se hace  por medio de cualquier conector usb que tenga el TV ( aprovechando los 5v DC de la conexión usb) o bien desde un alimentador externo USB  , en caso sobre todo si pretende conectar un disco duro externo al Fire TV

instalacion.PNG

Aunque sus dimensiones son reducidas  , para evitar  problemas a la hora de conectar el conector de video   Amazon entrega  un extensor HDMI permitiendo así  que el dongle pueda ir  en otra posición .

Con todo listo y conectado , una vez encendida la TV y haya cargado el sistema operativo ,en primer lugar  tendremos que ir a la configuración de red  para conectarnos a nuestra red wifi ( el Fire TV Stick   cuenta  Wifi de doble banda y doble antena, compatible con 2×2 MIMO 802.11a/b/g/n/ac )   de modo que  una vez le hayamos configurado la red  y la contraseña ya  todo  ya estará listo.Respecto a las credenciales de Amazon nos las   podemos ahorrar el introducir nuestros datos de Amazon  ya  que al adquirirlo  incluye nuestra cuenta de Amazon ya configurada como ocurre con los Kindle .Como valor añadido  gracias a la conectividad integrada  nos ofrece la posibilidad de conectar dispositivos bluetooth como auriculares, altavoces o mandos de juegos,

Una vez comprobado su funcionamiento del stick  ,  es hora de conectar un cable OTG ( USB  micro USB) que incluya alimentación mediante micro-usb hembra pues de otro modo no podríamos alimentar al el Fire TV Stick

Este tipo de cables OTG  con alimentación suelen ser algo mas caros que los cables OTG’s normales,   pero dado la configuración del dispositivo , al no incluir batería interna comO ocurre en lo smartphone  y tabletas  , este debe  alimentarse exclusivamente por el conector micro-usb , por lo  que es fundamental poder proporcionar los 5v DC por este medio también , así que debemos adquirir este cable también( menos de 8€ en Amazon Premium)

Respecto  al conexionado de este adaptador no puede ser mas sencillo pues lo interconectaremos entre el cable de alimentacion al que  conectaremos la hembra usb del cable   y el otro extremo conectaremos al Fire TV Stick

IMG_20181007_223639[1]

 

Como se puede en la imagen, uno de los  dispositivo ideales para usar con el Fire y el adaptado, son las memorias externas USB , por ejemplo para poder visualizar nuestras fotos o vídeos  favoritas directamente en nuestra TV  desde el Fire TV usando el mando  incluido

Por cierto para visualizar las fotos y  vídeos,   o inspeccionar archivos incluidos en la memoria externa USB que conectemos al Fire via OTG , existe  una aplicación gratuita muy útil  instalable desde la propia interfaz del Fire Stick  en Utilidades  llamadas  File Explorer disponible gratuitamente y  que permite no solo ver el contenido del medio sino también visualizar  por ejemplo las fotos en pantalla completa  y avanzar con el propio mando.

 

IMG_20181007_223530[1]

Aunque conectar memorias externas o discos externos  al el Fire TV Stick es una de las utilidades mas notables  del adaptador OTG , podemos conectar otros dispositivos muy diferentes compatibles con Android 5.0  como pueden ser:

  • Gamepad  usb
  • Tarjetas de red usb
  • lectores de microsd
  • Capturadoras de video ,
  • etc