Esta pagina se ve mejor con JavaScript habilitado

Netflix, Amazon Prime, HBO, Disney, Movistar en FreeBSD

 ·  🎃 kr0m

Uno de los puntos flacos de FreeBSD como sistema de esritorio son sus limitaciones en cuanto a reproducción de contenido multimedia desde plataformas de streaming como Netflix o HBO entre otras, mediante linuxulator es posible instalar un navegador que simule Linux pero los pasos son complejos y enrevesados. En este artículo vamos a recurrir a un pequeño truco con el que podremos hacer streaming de nuestro móvil en el pc, la idea es habilitar el modo debug-USB y hacer streaming por este.

El artículo se compone de varias partes:


Habilitar el debug-USB:

Para poder habilitar el debug por USB primero debemos habilitar las opciones de desarrollador, para ello accedemos a los prámetros de configuración de Android, Settings -> Información del teléfono:

Buscamos el número de compilación y le damos 7 veces:

Aparecerá un cartelito advirtiéndonos de que hemos activado las opciones de desarrollo:

Accedemos a la sección Settings -> Sistema:

Sección Avanzado:

Opciones para desarrolladores:

Depuración -> Depuración por USB:

Al activarlo aparecerá la siguiente advertencia:

Conectamos el teléfono al pc y en el dmesg veremos:

ugen0.9: <Xiaomi SDM660-MTP SN:4420871C> at usbus0

En el teléfono nos pedirá confirmación de acceso:


Streaming de video:

Ahora instalamos el software de streaming de video:

pkg install scrcpy

Ejecutamos como root el servidor adb:

adb start-server

* daemon not running; starting now at tcp:5037  
* daemon started successfully

No hace falta ejecutar scrcpy como root así que lo lanzamos como usuario regular:

scrcpy

En estos momentos ya seremos capaces de controlar nuestro teléfono desde el pc:


Streaming de audio:

Instalamos VLC ya que es una dependencia de sndcpy:

pkg install vlc

El software de streaming de audio es un apk que instalaremos en el teléfono, se supone que trae un script que pushea e instala al apk mediante adb, pero en mi caso no ha hecho mas que darme problemas, así que lo instalaré a mano.

Nos bajamos el apk dede el repositorio del proyecto:

mkdir sndcpy
cd sndcpy
fetch https://github.com/rom1v/sndcpy/releases/download/v1.0/sndcpy-v1.0.zip
unzip sndcpy-v1.0.zip

Yo en mi caso voy a transferir el apk al teléfono por Telegram, pero para poder instalar aplicaciones inseguras desde una app en Android tendremos que configurar los ajustes de esta:

Y autorizar la descarga de esta fuente:

Ahora ya podemos instalarla:

No hace falta abrir la aplicación, así que le damos a listo:

Mediante adb forwardeamos el puerto 28200 del móvil a nuestro pc:

adb forward tcp:28200 localabstract:sndcpy

Arrancamos la aplicación recién instalada:

adb shell am start com.rom1v.sndcpy/.MainActivity

En el móvil veremos la ventana para iniciar la grabación del audio, le damos a Iniciar Ahora:

Ahora le indicamos a VLC que reproduzca el audio recibido en localhost:28200 a través del forward anteriormente configurado:

vlc -Idummy –demux rawaud –network-caching=50 –play-and-exit tcp://localhost:28200

Y ya lo tenemos, todas las aplicaciones del móvil en el pc, tanto video como audio funcionando, si ponemos a reproducir una película tan solo debemos maximizar la ventana y listo.

NOTA: Si sndcpy se nos resistiese siempre podríamos vincular unos auriculares/altavoz bluetooth al teléfono y reproducir el audio por estos.


Relanzamiento:

Si reiniciamos el teléfono debemos rehabilitar el debug USB(tan solo el último paso):

Si por el contrario reiniciamos el pc podemos utilizar el siguiente script:

vi .scripts/androidToFreeBSD.sh

#!/usr/local/bin/bash

sudo /usr/local/bin/adb kill-server
sudo /usr/local/bin/adb start-server
killall scrcpy 2>/dev/null
nohup scrcpy &
adb forward tcp:28200 localabstract:sndcpy
adb shell am start com.rom1v.sndcpy/.MainActivity
echo "-- Press ENTER when mobile audio recording is started"
read AA
killall vlc 2>/dev/null
nohup vlc -Idummy --demux rawaud --network-caching=50 --play-and-exit tcp://localhost:28200 &

Asignamos los permisos necesarios:

chmod 700 .scripts/androidToFreeBSD.sh

Configuramos sudo para que permita ejecutar los comandos que precisan permisos de root:

vi /usr/local/etc/sudoers.d/kr0m

# ADB  
kr0m ALL=(ALL) NOPASSWD: /usr/local/bin/adb kill-server  
kr0m ALL=(ALL) NOPASSWD: /usr/local/bin/adb start-server

Troubleshooting:

Podemos consultar los dispositivos detectados por adb:

adb devices

List of devices attached  
2d70b8a device

Podemos consultar los logs del teléfono mediante adb:

adb logcat

Además podemos habilitar el debug, tan solo debemos exportar el valor de la variable ADB_TRACE antes de ejecutar cualquier comando adb:

export ADB_TRACE=all

Si te ha gustado el artículo puedes invitarme a un RedBull aquí