Welcome to my little space on the internet where I talk about technology, trips and random stuff.
Friday, 29 August 2014
Home multimedia center con raspberry
Hola! Hoy vuelvo a escribirles para presentar un proyecto que armé utilizando una Raspberry Pi y un par de componentes más. Como ya les habia comentado un poco en el post de Media Center Casero, tuve la idea de utilizar una Raspberry para eso. El resultado de hacer esto es el siguiente:
El listado de componentes que estoy usando es el siguiente:
La idea es meterle boblight y un par de leds para hacer un ambilight. El unico problema es que no consigo tiras de leds o pixel led inteligentes en Argentina :(
El resultado seria algo asi:
Que lindo es el software y hardware libre!
Nota importante: El televisor no soporta el protocolo Anynet+ o CEC por lo que no puedo manejar XBMC desde el control remoto del tele; tengo que utilizar el celular o una computadora :(
Hola! En este post vuelo a mis orígenes, compartiendo algunas cosas del mundo linuxero. En vez de poner el nombre de un comando y que es lo que hace, voy a poner preguntas cotidianas y con que comando pude encontrar la respuesta. Espero que les sirva!
Mi distro:
Antes que nada, veamos que distro tengo. Si ejecuto lsb_release -a van a ver lo siguiente: $ lsb_release -a No LSB modules are available. Distributor ID: LinuxMint Description: Linux Mint 16 Petra Release: 16 Codename: petra
Comandos útiles:
¿Como saber que esta haciendo el sistema? ¿Que le pasa a mi maquina?Algunas veces nos pasa que "sentimos" lento el sistema, o tenemos problemas para conectarnos a Wifi, algo no nos funciona, etc, y queremos saber que es lo que pasa por abajo. En linux podemos ver los mensajes del kernel mediante el comando dmesg que nos muestra algo parecido a esto:
Salida de dmesg
En ese log vamos a poder ver que esta haciendo el sistema (siempre y cuando las aplicaciones escriban en el log)
¿Como leer logs en tiempo real?
Tambien nos puede pasar que necesitemos ver el log de una aplicacion que no esta relacionada con el kernel, por lo que leemos su log. (La mayoria de los logs deben estar en /var/log) A la hora de debuggear una aplicacion, vamos a necesitar ver que hace en tiempo real, por lo que podemos recurrir al comando tail -f que nos permitirá hacerlo. De esta manera, visualizaremos el contenido del archivo a medida que es escrito.
leyendo un log
¿Que aplicacion esta consumiendo mi ancho de banda?
Eso mismo. Tengo tantas cosas corriendo en mi maquina que quiero saber cual se esta comiendo mi conexion. El comando iftop nos muestra el uso de ancho de banda por procesos.
iftop
¿Que aplicacion esta tonteando usando con mi disco duro?
Idem anterior pero para ver quien esta utilizando el disco duro. Para esto tenemos el comando iotop
iotop
Explorador del sistema de archivo desde command line
Si trabajaste con computadoras en la epoca del Windows 95 y 3.1, seguramente la imagen de mc te es familiar. La interfaz es muy parecida al Norton Comander, pero en Linux es Midnight Commander. Conserva los mismos atajos de teclado que el Norton: F5 para copiar archivos, F6 para moverlos, F8 para borrarlos y F9 para acceder al menu. Ahi podemos conectarnos a un servidor por SSH o FTP. Altamente recomendado.
mc
Editor de texto en consola
Fácil: nano. Mas fácil que usar vi o vim. También esta mcedit que viene con el Midnight Commander
nano
mcedit
¿Como puedo ver el "administrador de tareas" en consola?
Si bien con ps aux podemos ver todos los procesos que esta corriendo el sistema, top permite verlos en tiempo real. Lo mismo con htop pero éste ultimo es mas bonito y muestra los micros.
top
HTOP
¿Quiero conocer en que red estoy?
Para analizar nuestra red tenemos varios comandos. Los que mas utilizo son: ifconfig para saber que ip tengo asignada route para conocer mi puerta de enlace cat /etc/resolv.conf para conocer los dns que tengo configurados nmap para ver que puertos tiene abiertos el gateway
Conociendo la red
¿Como buscar un archivo? ¿Como buscar un archivo que contenga un texto determinado?
Para ambos casos usamos find Si queremos buscar un archivo por nombre, la sintaxis es find . -name <nombre> En el caso de que queremos buscar un archivo que contiene x texto, la sintaxis es: find . -type f | xargs grep -i <texto_a_buscar>
Find
¿Cuantas particiones tengo? ¿Como montarlas?
Como root, ejecutamos el comando fdisk -l. Ahi vamos a ver todas las particiones de nuestro disco.
fdisk
Tools gráficas:
¿Que esta pasando en mi red local?
Etherape permite ver de manera gráfica, que esta pasando en nuestra red.
etherape
¿Que dispositivos tengo en mi red local con UPNP y que puedo hacer con ellos?
Esta un poco mas explicado en el post del hacking al smart tv . Upnp-inspector es una tool escrita en python que permite ver que tenemos en nuestra red y como podemos interactuar con esos dispositivos.
upnp inspector
Pregunta para ustedes... ¿que comando utilizan y en que situaciones?
Como ya comenté en el post de media center casero , utilizo XBMC para la gestión de mis archivos multimedia. En cuanto a la parte de subtitulos, XBMC tiene un plugin llamado subtitles, que permite descargarlos desde diferentes fuentes (subdivx, opensubtitles, argenteam, etc) y en diferentes idiomas. De todas maneras, tenia dos inconvenientes particulares con XBMC:
Los subtitulos que XBMC descarga terminan con el formato .<idioma>.srt, lo que hacia que mi TV no pueda visualizarlo. Los TV Samsung necesitan que los subtitulos tengan el mismo nombre que el archivo de video. Lo único que cambia es la extensión.
No podía descargar los subtitulos de todos los archivos. Mi colección actual es de mas de 1000 películas y con XBMC hacia falta descargar los subtitulos película por película.
Gracias a un poquito de research, encontré una solución para esto.
Periscope es un modulo de python que permite descargar subtitulos de internet. También soporta diferentes fuentes e idiomas y el formato en el cual escribe el subtitulo es compatible con la mayoría de dispositivos (solamente cambia la extensión del archivo).
La sintaxis del comando es muy fácil:
periscope <path>-l idioma
El <path> puede ser un archivo de video o un directorio. La búsqueda es recursiva.
El idioma es el id del idioma: "es" español "en" ingles "es-ar" español argentina
Ejemplo:
Arrancando el comando
Salida del comando. Se puede ver como va bajando subtitulos y de donde
Soy fanático de la música y el cine, de colgarme viendo varias películas en un dia. Usuario fiel de uTorrent y Transmission En mi casa tengo un disco duro externo de 2TB conectado a un SmartTV; en el guardo películas, música y otros archivos multimedia. Uno de los inconvenientes que tenia era que no podía acceder a mis archivos multimedia desde otro de mis dispositivos: Si bajaba alguna película nueva, tenia que desconectar el disco del televisor, copiar la película, bajar los subtítulos, conectar el disco al televisor y de ahí comenzar la reproducción. Si quería hacer lo mismo desde una computadora o notebook, tenia que repetir todos esos pasos. Un embole.
Por otra parte, acceder a archivos en el disco desde el celular era imposible, hasta que armé mi red 100% compatible con UPNP.
UPNP es un protocolo que permite compartir datos en una red de manera transparente (entre otras cosas)
La arquitectura de red que armé es así:
En primer lugar, tengo un router Linksys E900 300 MBPS con un firmware personalizado, basado en DDWRT. Este firmware me permite habilitar características avanzadas para mi red (vpn, firewall, etc) No obstante, no es necesario que ustedes lo hagan, ya que la mayoría de los routers soportan el protocolo uPnP.
Como clientes tengo un SmartTV, celulares Android, la play 3 y la notebook. El software que utilizo varia segun el dispositivo:
El Smart TV Samsung y la PS3 utilizan el software de fabrica
Para los dispositivos android utilizo BubbleUPNP
Para las computadoras utilizo XBMC que es multiplataforma.
Nota: Tanto Bubble como XBMC permiten compartir la libreria local con otros dispositivos.
Veamos algunos ejemplos:
1- Smart TV mostrando los dispositivos que tenemos conectados por UPNP
2- Desde la PS3
3- Desde el celular
Lo bueno de tooodo esto es que ahora puedo poner una pelicula que descargue en el hdd externo al televisor utilizando el celular. Tambien puedo pausar, avanzar o retroceder el video, como asi tambien aumentar o bajar el volumen.
Ademas, habilité el servidor web de Transmission y uTorrent, lo que me permite agregar descargas sin estar al frente de la pc.
Un día como hoy, y calculo que fué a la misma hora, recibía el desafío de instalar Linux por primera vez. No tenia ni idea de como comenzar, pero gracias a la oportunidad, disponía de un kit bastante completo. Estábamos arrancando el año 2000 por esa fecha. Mi primera distribución? Conectiva Linux.
Con ningún dato mío por perder ) me puse a probar la instalación. Los manuales eran muy buenos y los terminaba leyendo como si fueran cuentos. No existía GRUB ni el automount, en su lugar se usaba LiLo y el mount era a manopla. También comenzaba el boom de los cibers (por lo menos en Salta) y era común la proliferación de computadoras PCChips que a mas de uno le quemó la cabeza (la calidad de los componentes era muy mala) Recuerdo haber tenido que compilar el kernel para poder hacer andar una placa de red SIS900. Una de las cosas que me gustaba de Conectiva fue que permitia elegir entre varios entornos de escritorio: icewm, fluxbox, kde y otros. Después de Conectiva siguieron pasando otras distribuciones: Debian Woody, Suse 7, Mandrake, Ututo y algún que otro Live Cd que me acercaba Gustavo Jimenes[1] en sus visitas por Salta. Ahí me metí con el popular Knoppix y fue lo que elegí como distribución principal. ¿Por qué elegí como distribución Knoppix y no las otras? Porque no tenia computadora (recién en 2011 me compré una) Knoppix me permitia bootear mi entorno en cualquier maquina y me acostumbré a tener mis archivos en Cloud: Gmail File Extension, se acuerdan? En fin, el post era para celebrar (?) y recordar el haber arrancando este camino de ida con GNU Linux hace mas de 14 años. PD: Ahora tengo Linux Mint 16 como distro oficial.
Ya sé, Tux no es GNU
1 Gustavo es el hermano de José que mencione en este otro post. Estudiaba en Tucumán y cada tanto iba a visitar y compartíamos info
Aquí les dejo un video con algunas cositas que se pueden hacer con un módem de arnet, el Pirelli Wifi DRG A125G. Como podran ver, el router tiene una distro de Linux embebida, por lo cual soporta un par de comandos. Por lo menos disponemos de iptables y otros para jugar un rato. Espero que les sirva.
P/D: En la parte que mostré el código fuente, ustedes pueden encontrar la contraseña y el usuario con el cual se conectan a Internet, lo mismo cuando hice el dump de la configuración: dumpcfg
Actualizado 19/Feb/2011 Dejo aquí la documentación y ejemplos de algunos comandos útiles. Saludos
> brctl commands: addbr <bridge> add bridge delbr <bridge> delete bridge addif <bridge> <device> add interface to bridge delif <bridge> <device> delete interface from bridge setageing <bridge> <time> set ageing time setbridgeprio <bridge> <prio> set bridge priority setfd <bridge> <time> set bridge forward delay sethello <bridge> <time> set hello time setmaxage <bridge> <time> set max message age setpathcost <bridge> <port> <cost> set path cost setportprio <bridge> <port> <prio> set port priority setportsnooping <bridge> <port> <addr> set port snooping clearportsnooping <bridge> <port> <addr> clear port snooping showportsnooping <bridge> show port snooping enableportsnooping <enable> enable port snooping show show a list of bridges showmacs <bridge> show a list of mac addrs showstp <bridge> show bridge stp info stp <bridge> <state> turn stp on/off > brctl show bridge name bridge id STP enabled interfaces br0 8000.021018010002 no usb0 eth0 wl0 nas_0_0_33
Usage: remoteaccess <enable|disable> [--service <servicename>] remoteaccess show [--service <servicename>] remoteaccess --help > remoteaccess show remote access for FTP is disabled remote access for HTTP is disabled remote access for ICMP is enabled remote access for SNMP is disabled remote access for SSH is disabled remote access for TELNET is disabled remote access for TFTP is disabled
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 200.3.60.21 * 255.255.255.255 UH 0 0 0 ppp_0_0_33_1 10.0.0.0 * 255.255.255.0 U 0 0 0 br0 default 200.3.60.21 0.0.0.0 UG 0 0 0 ppp_0_0_33_1
save
swversion > swversion
Usage: swversion show swversion --help > swversion show 1550_090908-3.10L.02.A2pB022e3.d20h DCWF_TA_4_0_1
logtrace > logtrace command NOT executed command executed
testled > testled nothing done ...
changemac
> changemac current num of mac: 13 current base mac address: 00:22:33:33:be:82 Enter number of mac address (def:11) .... Enter base mac address (def:02:10:18:01:00:02) .... NEW num of mac: 11 NEW base mac address: 02:10:18:01:00:02
Done! ........... reboot
wan > wan
Usage: wan config <port.vpi.vci> [<connection id>] [--protocol <bridge|pppoe|pppoa|mer|ipoa>] [--encap <llc|vcmux>] [--vlan <vlan id>] [--state <enable|disable>] [--service <servicename>] [--firewall <enable|disable>] [--nat <enable|disable>] [--igmp <enable|disable>] [--qos <enable|disable>] [--username <username> --password <password>] [--pppidletimeout <timeout>] [--pppipextension <disable|enable>] [--ipaddr <wanipaddress> <wansubnetmask] [--dhcpclient <enable|disable>] wan delete <port.vpi.vci> [<connection id>] wan show [<port.vpi.vci>] wan --help <bridge|pppoe|pppoa|mer|ipoa> > wan show VCC Con. Catego. Service Interface Proto. IGMP QoS State Status IP ID Name Name address 0.0.33 1 UBR Telecom Argentina ppp_0_0_33_1 PPPoE Disable Enable Enable PPP Down
ping ps pwd
siproxd siproxd <enable|disable|show> siproxd --help > siproxd show siproxd: SIP proxy is enabled.
sntp sntp -s server [ -s server2 ] -t "timezone" disable date zones sntp --help>
sysinfo > sysinfo Number of processes: 23 12:05am up 5 min, load average: 1 min:0.00, 5 min:0.05, 15 min:0.02 total used free shared buffers Mem: 14144 8900 5244 0 476 Swap: 0 0 0 Total: 14144 8900 5244
Update firmware image and configuration data from OR backup configuration data to a tftp server.
Options: -g Get file. (Update image/configuration data) -p Put file. (backup configuration data) -f remote file name. -t i for image and c for configuration data.