<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Raspberry Pi on Marco Antonio Blanco</title><link>https://marcoantonioblanco.es/tags/raspberry-pi/</link><description>Recent content in Raspberry Pi on Marco Antonio Blanco</description><generator>Hugo -- gohugo.io</generator><language>es-es</language><copyright>Marco Antonio Blanco</copyright><lastBuildDate>Mon, 19 Aug 2013 12:58:41 +0000</lastBuildDate><atom:link href="https://marcoantonioblanco.es/tags/raspberry-pi/index.xml" rel="self" type="application/rss+xml"/><item><title>Móntate tu propio servidor de música doméstico con Raspberry Pi, Icecast2 y MPD</title><link>https://marcoantonioblanco.es/2013/08/montate-tu-propio-servidor-de-musica-domestico-con-raspberry-pi-icecast2-y-mpd/</link><pubDate>Mon, 19 Aug 2013 12:58:41 +0000</pubDate><guid>https://marcoantonioblanco.es/2013/08/montate-tu-propio-servidor-de-musica-domestico-con-raspberry-pi-icecast2-y-mpd/</guid><description>&lt;p&gt;El propósito principal cuando adquirí mi Raspberry Pi era convertirlo en un completo centro multimedia, un anhelo de muchos años que gracias al Pi he podido satisfacer a bajo coste. Por eso elegí &lt;a class="link" href="http://www.xbian.org/" target="_blank" rel="noopener"&#10; &gt;Xbian&lt;/a&gt; como la distribución a instalar, ya que no sólo está especializada en ofrecer una gran experiencia con XBMC (sin duda el mejor &lt;em&gt;media center&lt;/em&gt; libre) sino que permite evolucionar la plataforma a nuestro gusto gracias a que está basada en Debian.&lt;/p&gt;&#10;&lt;p&gt;Así, he podido cumplir la semana pasada con otro de mis objetivos con mi Pi: montar mi propia radio doméstica y poder escuchar música en cualquier parte de mi casa, todo ello con software libre y sin tener que realizar una fuerte inversión (¿he oído Sonos?).&lt;/p&gt;&#10;&lt;p&gt;Para ello vamos a utilizar dos componentes software que como ya he dicho son de licencia libre y que son fácilmente instalables en Debian. Por un lado se encuentra &lt;a class="link" href="http://www.icecast.org" target="_blank" rel="noopener"&#10; &gt;Icecast2&lt;/a&gt;, un servidor de streaming de audio que soporta el protocolo SHOUTcast y que es capaz de recibir flujos de música desde diversos tipos de fuentes, incluyendo retransmisiones en vivo que nosotros mismos emitamos o servicios populares como Spotify. Por otro lado tenemos a &lt;a class="link" href="http://www.musicpd.org/" target="_blank" rel="noopener"&#10; &gt;MPD&lt;/a&gt;, un reproductor de música en modo servidor.&lt;/p&gt;&#10;&lt;p&gt;El objetivo por tanto es configurar MPD para que reproduzca los ficheros de audio de un directorio concreto, envíe dicha reproducción a Icecast2 y que éste se encargue de generar un &lt;em&gt;streaming&lt;/em&gt; de audio en nuestra red doméstica al que podremos acceder desde cualquier cliente compatible con el protocolo SHOUTcast, incluyendo &lt;em&gt;smartphones&lt;/em&gt; via WiFi..&lt;/p&gt;&#10;&lt;p&gt;La instalación del software en Xbian (y cualquier otra derivación de Debian) es muy sencilla:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# apt-get install mpd mpc icecast2&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Como se puede ver, aprovechamos la instalación de software para incluir MPC, un cliente de línea de comandos para controlar todos los aspectos de la ejecución de MPD, desde la gestión de listas de reproducción hasta la duración del fundido entre canciones. Para conocer todas las posibilidades de MPC, nada mejor que consultar su manual electrónico:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# man mpc&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Durante la instalación de Icecast2 se nos preguntará por un nombre de servidor y por una serie de contraseñas para ciertos usuarios y operaciones: &lt;code&gt;source&lt;/code&gt; (acceso de las fuentes de audio), &lt;code&gt;relay&lt;/code&gt; (acceso de la replicación de &lt;em&gt;streams&lt;/em&gt; desde otros servidores) y &lt;code&gt;admin&lt;/code&gt; (acceso de administración de Icecast2). La fortaleza de estas contraseñas queda a nuestra discreción, pero en este momento la que más nos interesa es la de &lt;code&gt;source&lt;/code&gt;, ya que es la que va a utilizar MPD para enviarle la reproducción de ficheros de audio a Icecast2.&lt;/p&gt;&#10;&lt;p&gt;Para nuestro propósito, con esto ya está listo Icecast2. Si queremos modificar más aspectos de su configuración o simplemente rehacerla (por ejemplo, cambiar una contraseña), basta con que editemos el fichero &lt;code&gt;/etc/icecast2/icecast.xml&lt;/code&gt; y procedamos a reiniciar el servidor:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# /etc/init.d/icecast2 restart&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Es el turno de configurar MPD, el cual seguramente habrá mostrado un aviso al finalizar la instalación y haberse iniciado:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;listen: bind to &amp;#39;[::1]:6600&amp;#39; failed: Failed to create socket: Address family not supported by protocol (continuing anyway, because binding to &amp;#39;127.0.0.1:6600&amp;#39; succeeded)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;No debemos preocuparnos ya que este mensaje significa que no tenemos activo IPv6 en nuestro Pi, lo cual no impide que MPD se haya iniciado y esté en pleno funcionamiento. De todas formas, si queremos activar el soporte IPv6 en nuestra Xbian, basta con incluir la cadena &lt;code&gt;ipv6&lt;/code&gt; en &lt;code&gt;/etc/modules&lt;/code&gt;. También podemos probar a cargar el módulo a mano desde la línea de comandos:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# modprobe ipv6&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La configuración de MPD es algo mas compleja, ya que tendremos que indicarle tanto la fuente de ficheros de audio como el destino de su reproducción (en nuestro caso, el servidor Icecast2). Para ello tendremos que editar el fichero &lt;code&gt;/etc/mpd.conf&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Por defecto, la fuente de ficheros (indicada por la variable &lt;code&gt;music_directory&lt;/code&gt;) apunta al directorio &lt;code&gt;/var/lib/mpd/music&lt;/code&gt;. Mi recomendación es dejarla tal como está y crear enlaces simbólicos dentro de dicho directorio que apunten a los directorios en los que tengamos nuestros ficheros de música, aunque se trate de dispositivos removibles (como discos USB).&lt;/p&gt;&#10;&lt;p&gt;Lo siguiente es configurar el destino de la reproducción, Para ello comentaremos todas las secciones &lt;code&gt;audio_output&lt;/code&gt; e incluiremos la siguiente:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;audio_output {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; type &amp;#34;shout&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; name &amp;#34;Mi radio domestica&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; description &amp;#34;Stream MPD desde mi Raspberry Pi&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; host &amp;#34;localhost&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; port &amp;#34;8000&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mount &amp;#34;/mpd&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; password &amp;#34;contraseña_source_de_icecast2&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bitrate &amp;#34;128&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; format &amp;#34;44100:16:2&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; encoding &amp;#34;mp3&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En este ejemplo, estamos indicándole a MPD que envíe la reproducción de ficheros al servidor Icecast2 que está escuchando en el puerto 8000 de la misma plataforma (nuestro Pi), utilizando &lt;code&gt;/mpd&lt;/code&gt; como punto de montaje (más sobre esto a continuación). Dicha reproducción se codificará al vuelo en formato mp3 a 44100Hz, 16 bits, 2 canales y un bitrate de 128k. Aquí el parámetro realmente importante es &lt;code&gt;password&lt;/code&gt;, en el que indicaremos entre comillas la contraseña que usamos para el usuario &lt;code&gt;source&lt;/code&gt; de Icecast2.&lt;/p&gt;&#10;&lt;p&gt;Además habilitaremos la siguiente sección &lt;code&gt;audio_output&lt;/code&gt;, con al finalidad de que MPD arranque de todas formas aunque el servidor Icecast2 no esté disponible:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;audio_output {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; type &amp;#34;null&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; name &amp;#34;My Null Output&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Terminamos la configuración de Icecast2 modificando la variable &lt;code&gt;bind_to_address&lt;/code&gt;, a la que asignaremos el valor &lt;code&gt;localhost&lt;/code&gt;. Tras guardar los cambios, sólo queda reiniciar ambos servidores:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# /etc/init.d/icecast2 restart&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Restarting icecast2: Starting icecast2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Detaching from the console&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;icecast2.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# /etc/init.d/mpd restart&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[ ok ] Stopping Music Player Daemon: mpd.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[ ok ] Starting Music Player Daemon: mpd.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ahora vamos a comprobar que MPD está en correcto funcionamiento:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# mpc outputs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Output 1 (Mi radio domestica) is enabled&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Output 2 (My Null Output) is enabled&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si alguna de las salidas apareciera deshabilitada, bastaría con ejecutar el siguiente comando:&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;# mpc enable&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;Vamos a alimentar nuestro servidor MPD con música. Lo más sencillo es utilizar MPC para esta tarea.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# mpc update --wait (escanea el directorio de ficheros de audio)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# mpc ls | mpc add (añade las canciones encontradas a la lista de reproducción por defecto)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# mpc playlist (muestra el contenido de la lista de reproducción que acabamos de crear)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# mpc play (comienza la reproducción)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Podemos seguir &amp;ldquo;jugando&amp;rdquo; con MPC a través de comandos como &lt;code&gt;status&lt;/code&gt;, &lt;code&gt;random&lt;/code&gt;, &lt;code&gt;repeat&lt;/code&gt;, &lt;code&gt;crossfade&lt;/code&gt;, &lt;code&gt;shuffle&lt;/code&gt;, etc., pudiendo utilizar MPC desde otro ordenador con sólo incluir el parámetro &lt;code&gt;-h&lt;/code&gt; junto con la IP del Pi. Las posibilidades son muchas para que la reproducción quede a nuestro gusto. Además, MPD va a recordar el estado en el que lo hayamos dejado, por lo que aunque reiniciemos el Pi, MPD continuará la reproducción por donde la dejamos.&lt;/p&gt;&#10;&lt;p&gt;Es el momento de conectarnos a Icecast2 con un cliente compatible. En &lt;a class="link" href="https://web.archive.org/web/20130819/http://www.icecast.org/3rdparty.php" target="_blank" rel="noopener"&#10; &gt;http://www.icecast.org/3rdparty.php&lt;/a&gt; tenemos una lista completa tanto de clientes de control (para sustituir a MPC) como de reproductores compatibles. Para escuchar nuestra recién instalada radio doméstica, tenemos que indicarle al reproductor que se conecte a la URL &lt;code&gt;http://ip_raspberry_pi:8000/mpd.m3u&lt;/code&gt;. Como vemos, el punto de montaje definido antes se utiliza en la URL para acceder a nuestra radio, que se está transmitiendo por nuestra red doméstica y a la que puede tener acceso cualquier dispositivo conectado a la misma, desde ordenadores hasta altavoces inalámbricos, pasando por &lt;em&gt;tablets&lt;/em&gt; y &lt;em&gt;smartphones&lt;/em&gt;.&lt;/p&gt;&#10;&lt;p&gt;A partir de aquí las posibilidades son infinitas. Por ejemplo, podemos conectar flujos de terceros (con software como &lt;a class="link" href="http://darkice.org/" target="_blank" rel="noopener"&#10; &gt;DarkIce&lt;/a&gt;), replicar esta instalación en nuestra empresa para implantar un hilo musical a bajo coste o utilizar un servidor virtual en Internet para tener nuestra radio disponible en cualquier sitio (imaginad conectar nuestra radio privada al equipo de audio de nuestro coche mediante el Bluetooth de nuestro &lt;em&gt;smartphone&lt;/em&gt;).&lt;/p&gt;&#10;&lt;p&gt;Espero que lo probéis y que compartáis vuestras experiencias y otras ideas que se os ocurran para mejorar esta receta.&lt;/p&gt;&#10;</description></item><item><title>Berryboot, múltiples distros para Raspberry Pi en una sola tarjeta SD</title><link>https://marcoantonioblanco.es/2013/03/berryboot-multiples-distros-para-raspberry-pi-en-una-sola-tarjeta-sd/</link><pubDate>Thu, 14 Mar 2013 11:42:32 +0000</pubDate><guid>https://marcoantonioblanco.es/2013/03/berryboot-multiples-distros-para-raspberry-pi-en-una-sola-tarjeta-sd/</guid><description>&lt;p&gt;Siguiendo con el tema del &lt;a class="link" href="https://marcoantonioblanco.es/2013/03/instalacion-de-distros-en-raspberry-pi/" &gt;artículo anterior&lt;/a&gt;, existe una herramienta muy interesante que permite instalar varias distribuciones para Raspberry Pi en la misma tarjeta SD, algo muy útil si estamos cortos de tarjetas. El proyecto se llama &lt;a class="link" href="http://www.berryterminal.com/doku.php/berryboot" target="_blank" rel="noopener"&#10; &gt;BerryBoot&lt;/a&gt; y su instalación y uso son muy sencillos como vamos a ver a continuación.&lt;/p&gt;&#10;&lt;p&gt;Lo primero es como siempre descargarnos el software de la página oficial. A continuación lo descomprimimos y procedemos a instalarlo en nuestra tarjeta SD tal y como describí en el artículo anterior. Una vez lista la tarjeta, la insertamos en el RPi y lo arrancamos. Una vez iniciado, BerryBoot arrancará un instalador que dará formato a la tarjeta SD y nos presentará en pantalla un menú desde el que podremos elegir las distros que queramos instalar desde Internet. Evidentemente, cuando el asistente nos pregunte, le indicaremos la tarjeta como medio de instalación.&lt;/p&gt;&#10;&lt;p&gt;Cuando hayamos terminado la instalación de las distros que nos interesan y arranquemos de nuevo el RPi, nos encontraremos un menú de inicio que nos permitirá elegir la distro que queramos iniciar en ese momento. Esto obviamente nos obliga a tener un teclado y un ratón conectados al RPi, pero es el precio a pagar para poder tener varias distros en una misma tarjeta y poder probarlas.&lt;/p&gt;&#10;&lt;p&gt;Es posible añadir otras distros que BerryBoot no conozca al menú de arranque y, aunque se trata de un proceso complejo, basta con seguir paso a paso el recetario que aparece en la página oficial para personalizar nuestra tarjeta SD.&lt;/p&gt;&#10;&lt;p&gt;Para terminar, quiero hacer hincapié en que debemos contar con una tarjeta SD con suficiente espacio para todas las distros que queramos instalar. Esto podrá parecer evidente, pero es muy fácil que no caigamos en la cuenta y si no lo planificamos previamente al final tendremos que repetir el proceso desde el principio. Lo suyo es contar con una tarjeta de 32GB, pero si no es posible 16GB se me antojan como el mínimo imprescindible.&lt;/p&gt;&#10;&lt;p&gt;Espero vuestro comentarios sobre vuestra experiencia con BerryBoot.&lt;/p&gt;&#10;</description></item><item><title>Instalación de distros en Raspberry Pi</title><link>https://marcoantonioblanco.es/2013/03/instalacion-de-distros-en-raspberry-pi/</link><pubDate>Tue, 05 Mar 2013 13:40:17 +0000</pubDate><guid>https://marcoantonioblanco.es/2013/03/instalacion-de-distros-en-raspberry-pi/</guid><description>&lt;p&gt;Desde que tengo mi &lt;a class="link" href="http://www.raspberrypi.org/" target="_blank" rel="noopener"&#10; &gt;Raspberry Pi&lt;/a&gt; no he dejado de probar distintas aplicaciones, con mayor o menor éxito dependiendo del grado de madurez del proyecto, demostrando lo útil que es el dispositivo gracias a su diseño y bajo coste. Hasta ahora, la distribución para RPi que más me ha gustado y que más utilizo es XBian, gracias a la cual mi RPi se ha convertido en un potente y completo centro multimedia. De hecho, me estoy planteando comprarme otro RPi para seguir probando cosas e inventando nuevos proyectos. Tras esta experiencia, quiero comentar en este artículo como instalar cualquier distribución para RPi sin problemas.&lt;/p&gt;&#10;&lt;p&gt;Lo primero que tenemos que hacer es descargarnos la imagen de la distro a instalar, la cual tendrá la extensión .img y estará comprimida para facilitar su descarga. A continuación descomprimimos la imagen y procedemos a volcarla a la tarjeta SD que introduciremos en el RPi. Para ello vamos a utilizar el comando &lt;code&gt;dd&lt;/code&gt;, que sirve para copiar información desde una fuente a un destino byte a byte. Dado que en Linux todo es un fichero, la potencia de &lt;code&gt;dd&lt;/code&gt; es tremenda, ya que nos va a permitir volcar el contenido de la imagen de una distro a un dispositivo extraíble como es la tarjeta SD.&lt;/p&gt;&#10;&lt;p&gt;Sin embargo, parafraseando el conocido anuncio, esta potencia sin control es muy peligrosa y podemos convertir a &lt;code&gt;dd&lt;/code&gt; en una herramienta destructiva si no elegimos bien el destino del comando. Así que antes de volcar vamos a ver cómo elegir adecuadamente el dispositivo que representa a nuestra tarjeta SD.&lt;/p&gt;&#10;&lt;p&gt;Antes de seguir, debo comentar que cada proyecto RPi tiene unos requerimientos mínimos de espacio, por lo que la tarjeta SD que elijamos debe cubrir dicha cantidad. No todos las distros tienen las mismas necesidades, e incluso nos las podemos encontrar que les basta con 1GB, pero lo habitual es irnos a 8GB o más. Asimismo, es importante elegir una clase elevada de tarjeta, preferiblemente clase 10, ya que eso nos asegura una transferencia de datos mínima y un rendimiento adecuado en el RPi. Hay &lt;a class="link" href="http://en.wikipedia.org/wiki/SDHC#Speed_Class_Rating" target="_blank" rel="noopener"&#10; &gt;más información&lt;/a&gt; a este respecto en la Wikipedia.&lt;/p&gt;&#10;&lt;p&gt;Con la tarjeta sin insertar, ejecutamos el siguiente comando:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# cat /proc/partitions&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;lo que nos dará un resultado similar a éste:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;major minor #blocks name&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8 0 156289847 sda&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8 1 1951744 sda1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8 2 97655808 sda2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8 3 56680448 sda3&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11 0 1048575 sr0&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Lo que hemos hecho es preguntarle directamente al núcleo de Linux por los dispositivos de almacenamiento y sus particiones que el sistema operativo haya detectado. Aunque existen otros métodos (por ejemplo, usando el comando &lt;code&gt;fdisk -l&lt;/code&gt;), éste es sin duda el más fiable. En el ejemplo, tenemos un disco duro (&lt;code&gt;sda&lt;/code&gt;) con tres particiones y una unidad óptica (&lt;code&gt;sr0&lt;/code&gt;).&lt;/p&gt;&#10;&lt;p&gt;Ahora insertamos la tarjeta SD en nuestro ordenador y consultamos de nuevo al núcleo por los dispositivos y sus particiones, con lo que obtendremos algo tal que así:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;major minor #blocks name&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8 0 156289847 sda&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8 1 1951744 sda1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8 2 97655808 sda2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8 3 56680448 sda3&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11 0 1048575 sr0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8 64 975360 sde&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8 65 975295 sde1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Como vemos, existe una diferencia clara: ahora existe un dispositivo nuevo (&lt;code&gt;sde&lt;/code&gt;) con una partición. Pues bien, ése es el que representa a nuestra tarjeta SD y el que debemos usar en el comando &lt;code&gt;dd&lt;/code&gt;. Por cierto, en vez de &lt;code&gt;sde&lt;/code&gt; el sistema podrá elegir &lt;code&gt;sdb&lt;/code&gt;, &lt;code&gt;sdc&lt;/code&gt;, etc, según la disponibilidad de identificadores de dispositivos. En mi caso, al usar un lector multitarjeta, es lógico que el sistema me haya asignado &lt;code&gt;sde&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;En el caso de que nuestro Linux haya montado automáticamente la tarjeta SD debemos proceder previamente a desmontarla desde el propio entorno gráfico. Una vez lista la tarjeta, ejecutamos el siguiente comando:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# dd if=distro.img of=/dev/sde&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A partir de este momento, el sistema se pondrá a volcar el contenido de la imagen de la distro para RPi en nuestra tarjeta SD. En el parámetro &lt;code&gt;if&lt;/code&gt; indicamos el fichero de la imagen y en el parámetro &lt;code&gt;of&lt;/code&gt; el dispositivo de la tarjeta SD. Aquí se puede apreciar el peligro de &lt;code&gt;dd&lt;/code&gt; si indicamos incorrectamente el dispositivo de salida. ¿Qué ocurriría si pongo &lt;code&gt;sda&lt;/code&gt; en vez de &lt;code&gt;sde&lt;/code&gt;? Pues que más que probablemente destruya mi sistema operativo. Por eso, hay que revisar concienzudamente el comando dd antes de ejecutarlo para estar seguros de que no cometemos un grave error.&lt;/p&gt;&#10;&lt;p&gt;Una vez terminado &lt;code&gt;dd&lt;/code&gt;, forzamos el vaciado de los buffers intermedios con este comando:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# sync&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;y ya podemos extraer la tarjeta SD de nuestro ordenador, insertarla en el RPi y probar la distro.&lt;/p&gt;&#10;&lt;p&gt;Con estas instrucciones sólo queda elegir la &lt;a class="link" href="http://elinux.org/RPi_Distributions" target="_blank" rel="noopener"&#10; &gt;distro que queremos probar&lt;/a&gt;, ya sea de propósito general como Raspbian o especializada como XBian (centro multimedia), PiMame (emulador arcade) o IPFire (cortafuegos). Espero vuestras experiencias con Raspberry Pi y algunos de estos proyectos.&lt;/p&gt;&#10;</description></item><item><title>Raspberry Pi: Linux embebido para todos</title><link>https://marcoantonioblanco.es/2012/02/raspberry-pi-linux-embebido-para-todos/</link><pubDate>Wed, 08 Feb 2012 16:11:13 +0000</pubDate><guid>https://marcoantonioblanco.es/2012/02/raspberry-pi-linux-embebido-para-todos/</guid><description>&lt;p&gt;Personalmente nunca he sido un fan del mundo embebido. Sin embargo el anuncio de &lt;a class="link" href="http://www.raspberrypi.org/" target="_blank" rel="noopener"&#10; &gt;Raspberry Pi&lt;/a&gt; despertó mi interés por esta concepción minimalista del software y hardware.&lt;/p&gt;&#10;&lt;p&gt;R-Pi es un proyecto patrocinado por la Fundación Raspberry Pi, que consiste en comercializar una computadora por sólo 25 dólares, con objetivo de fomentar la enseñanza de ciencias de la computación. Y cómo no, el sistema operativo que ejecutará será Linux.&lt;/p&gt;&#10;&lt;p&gt;Obviamente, 25 dólares es un precio que llama la atención. Sobre todo cuando estamos hablando de sistemas SoC (&lt;em&gt;System-on-a-chip&lt;/em&gt;) que suelen irse a más de cien. Lo que nos proporciona R-Pi es un procesador ARM, memoria RAM DDR, una GPU, puertos USB/UART y GPIO, Audio,  salida de video  HDMI y &lt;em&gt;Composite&lt;/em&gt;, slot para tarjeta SD. En resumen, en apenas el espacio de una tarjeta de crédito, un mini ordenador personal. El modelo A costará 25 dólares, y el modelo B costará 35, ya que trae el doble de memoria (256MiB) y un puerto e&lt;em&gt;thernet&lt;/em&gt;.&lt;/p&gt;&#10;&lt;p&gt;Pero más allá de su precio, el anuncio de su lanzamiento ha creado un verdadero revuelo en la comunidad Linux. Sin haber salido al mercado, R-Pi tiene ya una amplia comunidad. Hackers y programadores de todo el mundo planean ya los posibles usos o aplicaciones que crearán con esta maravilla. En la propia página Web ya nos muestran algunas de sus habilidades:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;a class="link" href="https://web.archive.org/web/20120208/http://www.raspberrypi.org/archives/571" target="_blank" rel="noopener"&#10; &gt;XBMC ejecutándose sobre R-Pi&lt;/a&gt;. XBMC es un conocido &lt;em&gt;media player.&lt;/em&gt; R-Pi demuestra ser capaz de reproducir vídeos de alta definición usando este software, gracias a su GPU. Por ello, una de las aplicaciones que más seguidores tiene es la de su configuración como centro multimedia (Por cierto que XMBC merece algún dia un artículo aparte en este blog). Dado que el modelo B posee un puerto &lt;em&gt;ethernet&lt;/em&gt;, podremos unirlo a nuestra red local. También le podemos poner un adaptador &lt;em&gt;wireless&lt;/em&gt; USB, o bien conectarle un disco duro USB, o incluso un adaptador TDT.. Al fin y al cabo, es un sistema Linux completo con lo que tendremos infinidad de &lt;em&gt;drivers&lt;/em&gt; a nuestra disposición..&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;a class="link" href="https://web.archive.org/web/20120208/http://www.raspberrypi.org/archives/564" target="_blank" rel="noopener"&#10; &gt;AirPlay and Raspberry Pi&lt;/a&gt;. Reproducción en vivo desde un &lt;em&gt;iPad&lt;/em&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;a class="link" href="https://web.archive.org/web/20120208/http://www.raspberrypi.org/archives/584" target="_blank" rel="noopener"&#10; &gt;Desarrollo de aplicaciones con QT&lt;/a&gt;. La GPU del R-Pi implementa OpenGL ES. Esto es una pequeña demo de &lt;em&gt;live coding&lt;/em&gt;, donde los cambios en el programa se ejecutan en vivo en una capa inferior de la pantalla.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Y, por si le faltara algo, Debian será una las distribuciones oficialmente soportadas. Así pues, R-Pi es barato, tiene &lt;em&gt;momentum&lt;/em&gt;, y sólo la imaginación pone límite a sus posibles aplicaciones. Vamos, que es todo un caramelo para linuxeros recalcitrantes como yo.&lt;/p&gt;&#10;</description></item></channel></rss>