La columna de radio por Internet más simple "Kodi" o la salvación del ladrillo "Raspberry"

La columna de radio por Internet más simple "Kodi" o la salvación del ladrillo "Raspberry"

Requisitos previos básicos:

  1. Hay una vieja placa Raspberry Pi de primera generación sin usar;
  2. El tablero se encuentra en el gabinete como un peso muerto y no se usa: el tablero "Brick";

Que te gustaria recibir:

  1. En un momento determinado (por ejemplo, por estado de ánimo)
    el tablero deja de ser un "Brick" y se le inserta una tarjeta de memoria mágica;
  2. Un cable Ethernet y un enchufe de un parlante o auriculares domésticos normales están conectados a la placa;
  3. Después de energizar el antiguo "Ladrillo" - poeta

La idea principal:

  1. El número mínimo de gestos para cualquier configuración, en el caso más ideal, conectamos solo el cable "Ethernet", la alimentación y los altavoces, y nada más, desde la palabra "en absoluto";
  2. Por ejemplo, admitimos el antiguo "Brick" listo para usar, por ejemplo, 20 estaciones de radio por Internet, cuyo cambio en un círculo se puede colgar presionando la rueda del mouse o en un pin GPIO específico (conecte dos cables y cerrarlos (mi sueño de la infancia));
  3. El control se lleva a cabo a través de un canal de radio, y este canal de radio puede ser un ratón de radio ordinario;
  4. Tome un sistema listo para usar, ensamble el kit de distribución en el "Proyecto Yocto"
    aquellos. Como de costumbre, no haremos nada contigo, ya que todo está hecho.
    (basta con colocar un observador externo al otro lado "TELEVISOR");

Descripción

La columna de radio por Internet más simple "KODI"
Ensamblaje diseñado para antiguas placas Raspberry Pi 1
(recogiendo polvo en algún lugar del armario, pero que están listos para trabajar más)

La lista m3u8 de 12 estaciones de radio por Internet se usa de forma predeterminada.

Se supone que la placa funciona sin salida HDMI, y para apagarla basta con desenchufar el adaptador de corriente de la toma de corriente. Y como un control remoto inalámbrico ultra moderno, puede usar su súper radio mouse (bueno, o conectar uno gris normal con cola).

Cuando está encendido, la interfaz de red está configurada de forma predeterminada a través del protocolo DHCP y se reproduce la última estación de radio memorizada de la lista, el volumen de reproducción se controla con un mouse normal:
(finalmente designe a su ratón como "jefe de administración" y felicítela, se lo merece)

  колесико вперед  - увеличение громкости звука
  колесико назад   - уменьшение громкости звука
  длительное нажатие (3сек и более) на правую кнопку мыши
                   - выбор следующий радиостанции
  длительное нажатие (3сек и более) на левую кнопку мыши
                   - выбор предыдущей радиостанции

Para agregar su propia lista de estaciones de radio por Internet
siempre puedes conectar un cable HDMI desde tu televisor
y use la interfaz gráfica de usuario de Kodi 17.6
(apaga la placa, conecta el HDMI y enciende el adaptador de corriente)

Menú principal de Kodi => "Complementos" => "Mis complementos"
          => "Clientes PVR" => "Cliente Simple PVR IPTV"

Implementación inicial

(posible)
Inicialmente, cuando decidí hacer una "Columna de Radio por Internet", planeé lo siguiente:

  • Distribución de consola minimalista en el Proyecto Yocto;
  • La transmisión de audio se reproduce a través de GStreamer;
  • La interfaz de red se configura a través de DHCP;

Y esta solución tiene una serie de ventajas:

  1. Lo suficientemente rápido (salir al modo operativo desde la fuente de alimentación 30-40 segundos);
  2. Suficientemente confiable (menos programas, menos puntos de falla);
  3. La distribución de la consola es mucho más fácil de poner en modo de solo lectura
    aquellos. los programas no escriben nada en el sistema de archivos raíz
    (un sistema de archivos en medios SDHC es, en mi opinión, el primer candidato para fallas);

Nota:

    В Yocto перевести корневую файловую систему (rootfs) 
    в режим только чтение можно сделать достаточно просто, 
    изменив один параметр во время сборки 

    Из коробки Yocto предлагает два варианта:
    1) Работа файловой системы в обычном режиме чтение/запись 
    (так работают все дистрибутивы общего назначения, например Ubuntu)
    2) Работа файловой системы в режиме только чтение
    (так работают специализированные дистрибутивы, например в маршрутизаторах)

    В режиме только чтение все каталоги, в которые обычно 
    записываются данные приложений и сервисов во время работы монтируются 
    в оперативную память (например каталог /var/log и т.п.)
    Данные актуальны только для текущего сеанса работы и после сброса питания
    данные теряются.

    Если в Yocto Project вы укажете при сборке использовать "read only", 
    то после сборки ваш дистрибутив будет настроен только на чтение, 
    но вы всегда можете добавить возможность динамического перевода 
    из "read only"  в "read/write", но это уже совсем другая история ...
    

Y un gran inconveniente:

"Debe hacerse", es decir, Necesito pasar N número de noches
(generalmente después del trabajo, y este es el momento más ineficiente, en este momento el cerebro ya no piensa, generalmente duerme)

Y sin embargo, escribí mi artículo anterior en Habré sobre el centro multimedia. Kodi y Yocto proyecto
y la oportunidad de continuar en la misma línea, superó mi impulso exploratorio. Más sobre esto en el próximo capítulo.

Convertir a Kodi en un altavoz de radio por Internet

Para implementar la funcionalidad que necesito, agregaré un método más a la receta de compilación de distribución descrita en el anterior статье ver archivo berserk-image.bb

GUI_SETTINGS = "home/root/.kodi/userdata/guisettings.xml"

# конфигурация запуска последнего выбранного ТВ канала (1-фон 2-передний план)
F1_LINE = "<startlast default="true">0</startlast>"
R1_LINE = "<startlast>1</startlast>"
# конфигурация вывода звука, всегда подключен только аналоговый аудио выход
F2_LINE = "<audiodevice default="true">PI:HDMI</audiodevice>"
R2_LINE = "<audiodevice>PI:Analogue</audiodevice>"
# так как HDMI по умолчанию не используется отключаю автоматическое обновление
# а то может получиться что питание уехало, а данные остались не записанными
F3_LINE = "<addonupdates default="true">0</addonupdates>"
R3_LINE = "<addonupdates>2</addonupdates>"


# метод отвечает за добавление конфигурации:
# которая превращает "Умный телевизор" в "простую Интернет Радио колонку"
add_radio_guisettings() {
    sed -i "s|${F1_LINE}|${R1_LINE}|" ${IMAGE_ROOTFS}/${GUI_SETTINGS}
    sed -i "s|${F2_LINE}|${R2_LINE}|" ${IMAGE_ROOTFS}/${GUI_SETTINGS}
    sed -i "s|${F3_LINE}|${R3_LINE}|" ${IMAGE_ROOTFS}/${GUI_SETTINGS}
}


FIND_STR = "touch ./tmp/.FIRST_RUN."
SCRIPT_FIRST_RUN = "etc/init.d/first-run.sh"
# так как HDMI выход может не использоваться, 
# то необходимо отключить "стартовое приветствие"
off_kodi_welcome() {
    sed -i "s|${FIND_STR}|#&|" ${IMAGE_ROOTFS}/${SCRIPT_FIRST_RUN}
}

Los métodos están destinados a modificar el sistema de archivos raíz antes de formar la imagen de distribución en forma de un solo archivo sin formato, que se escribe en la tarjeta de memoria mediante el comando dd

Esto se hace de esta manera:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; fuera_kodi_bienvenido;"

En definitiva, en el archivo de configuración principal de Kodi 17.6, cambio de “tres puntos”

  • Iniciar configuración del último canal de TV seleccionado;
  • Configuración de salida de audio, solo la salida de audio analógica siempre está conectada;
  • Deshabilitar las actualizaciones automáticas;
  • Nota:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

una secuencia más detallada de acciones para cada elemento:

1) Haga clic en el icono de "engranaje" en la esquina superior izquierda de la pantalla
y seleccione "Configuración de PVR y TV" (imagen de un televisor con dos bocinas)
más adelante en el lado izquierdo del menú, seleccione el elemento "Reproducción" y en la sección central "General"
seleccione "Continuar desde el último canal al iniciar" en la lista desplegable
seleccionando la configuración "Primer plano"

o más claramente:

      "Настройки PVR и ТВ" 
       => "Воспроизведение" 
       => "Продолжить с последнего канала при запуске" => "Передний план"

2) Haga clic en el icono de "engranaje" en la esquina superior izquierda de la pantalla y seleccione el elemento:

       "Системные настройки"  
       => "Дополнения" => "Обновления" => "Никогда не проверять обновления"

3) Haga clic en el icono de "engranaje" en la esquina superior izquierda de la pantalla y seleccione el elemento:

       "Системные настройки" 
       => "Аудио" => "Устройство вывода звука" => "PI: Analogue"

Cómo he estado viendo mal la televisión durante dos años.

Debo confesarte que en dos años no he aprendido a ver la televisión correctamente.

Suelo ver la tele en la cocina. Una placa Raspberry Pi 2B está conectada al televisor y los conectores Ethernet y HDMI están conectados a la placa. La placa se alimenta a través de un cable USB normal, que se conecta al puerto USB del televisor. de hecho, encender el televisor con el control remoto estándar también suministra energía a la placa Raspberry Pi, y apagar el televisor desde el control remoto también restablece inmediatamente la alimentación de la placa Raspberry Pi.

Sí, soy muy consciente de que esto no se puede hacer, porque el sistema de archivos raíz del centro multimedia Kodi (ext3) funciona en mi modo normal de lectura/escritura. Pero soy una persona perezosa, y para empezar, decidí verificar cuánto tiempo se tarda en apagar el sistema, hasta que deja de cargar, pero desafortunadamente durante dos años no he podido hacer esto (tal vez yo solo fue suerte, no lo sé).

Y en mi opinión, si este modo es adecuado para mi televisor, también es adecuado para un "altavoz de radio por Internet simple", y dado que apagué a la fuerza la actualización automática de los complementos de Kodi, la probabilidad de una falla del sistema de archivos será incluso menos. Hasta ahora no le veo problema.

Nota:

    Но вы всегда при желании можете с помощью одной yocto команды 
    IMAGE_FEATURES += "read-only-rootfs"

    и определенной магии перевести ваш дистрибутив в режим "read only"
    

El kit de distribución "altavoces de radio por Internet" descrito en el artículo es doméstico, y lo más importante para un kit de distribución doméstico es una hermosa GUI. En mi opinión, es muy difícil o casi imposible enseñarle a un usuario común a manejar comandos mágicos incomprensibles en la consola, y ni siquiera sabe una palabra como esa. Y aquí está la GUI, por favor.

Y este es quizás mi principal argumento a favor de una distribución que no sea de consola. La GUI de la lámpara cálida de Kodi, no es realmente necesaria, pero está ahí.
(También olvidé por completo mencionar que Kodi se puede controlar de forma remota, por ejemplo, desde un teléfono inteligente instalando la aplicación Yatse, y quizás para alguien, esto sea una ventaja)

Configuración de Kodi, para el control del ratón.

y ahora cohete

<keymap>
    <global>
        <mouse>
          <wheelup>VolumeUp</wheelup>
          <wheeldown>VolumeDown</wheeldown>
          <middleclick>ChannelDown</middleclick>
          <longclick id="0">ChannelDown</longclick>
          <longclick id="1">ChannelUp</longclick>
          <!-- конфигурационный rocket -->
        </mouse>
    </global>
</keymap>

La configuración anula los eventos globales para los siguientes elementos:

  • rueda del mouse desplazarse hacia adelante
  • Desplazarse hacia atrás con la rueda del ratón
  • presionando el botón central del mouse
  • procesamiento de un clic largo del mouse (3 segundos o más),
    0 ID de botón derecho, 1 ID de botón izquierdo

más información sobre la configuración de eventos del ratón:

kodi.wiki/view/Alternative_keymaps_for_mice
kodi.wiki/view/Action_IDs
kodi.wiki/view/Window_IDs

Qué hacer si el sistema de cable no te llega

“Pero no tengo puertos Ethernet libres en casa (o nunca los tuve)”, pueden exclamar algunos de los felices propietarios de las viejas placas Raspberry Pi 1 (tal vez la placa se compró para investigación y se quedó tirada en el armario)

Y como no hay Wifi integrado en la placa, sin conexión Ethernet, no es muy funcional.

Por supuesto, existe la posibilidad de usar la placa Raspberry Pi 1 sin Ethernet, pero requerirá un poco de esfuerzo de su parte. Por lo general, estas cosas son interesantes de hacer solo como parte del estudio de algo nuevo, es decir, esto no es un trabajo personalizado.

Entonces, consideremos un caso de uso hipotético para una placa sin Ethernet:

Puede conectar un adaptador USB - Wifi externo, guiado por la consideración
que el adaptador debería funcionar bien bajo Linux

Nota:

    К сожалению часть WiFi адаптеров работать не будет, 
    это не особенность представленного в данной статье дистрибутива, 
    а скорее проблема конкретных драйверов WiFi адаптеров в ядре Linux. 
    Можно констатировать тот факт, что в настоящий момент вы не можете просто 
    пойти в магазин и купить любой WiFi адаптер. Скорее вы должны подобрать WiFi 
    адаптер из списка менее проблематичных и хорошо работающих под Linux.

    я проверял только следующии модели:
    - WiFi адаптер на чипсете Atheros D-Link DWA-126 802.11n (AR9271)
    - WiFi адаптер NetGear WNDA3200
    - WiFi адаптер NetGear WNA1100
    - WiFi адаптер TP-Link TL-WN722N (AR9271)
    - WiFi адаптер TL-WN322G v3
    - WiFi адаптер TL-WN422G
    - Wifi адаптер Asus USB-N53 chipset Ralink RT3572 
    

Si ya tiene un adaptador wifi usb, puede verificar si funciona bien en Linux de esta manera:

  • Instale alguna distribución popular de Linux
    propósito general, como "Ubuntu Desktop"
  • Arrancar el sistema
  • Conecta tu adaptador wifi usb
  • Inicie el administrador de red e intente conectarse a su punto de acceso WiFi
  • Si todo funciona bien y su conexión a Internet es estable, entonces su adaptador es compatible y puede continuar su trabajo conectando este adaptador en una distribución especializada y posiblemente con otras versiones del kernel.
    (si no, entonces no, por desgracia, es mejor ni siquiera intentarlo)

Soporte para adaptador Wifi externo en "Raspberry PI"

Para que el adaptador WiFi funcione correctamente en Linux: necesitamos dos cosas:
1) Compatibilidad con el kernel de Linux para un adaptador Wifi específico
2) La presencia en el sistema de un módulo kernel para un adaptador Wifi específico

Tomemos como ejemplo el adaptador TP-Link TL-WN722N. Tiene una gran antena.
Busquemos el conjunto de chips en el que funciona la placa: lo tengo "AR9271", nota:

    что самое интересное, это то, что для одной и той же модели
    одного и того же производителя, чипсет Wifi может отличаться.
    Я например сталкивался с тем, что для TL-WN722N версии 2, 
    используется уже другой чипсет Realtek RTL8188, а он уже 
    плохо работал под Linux (на тот момент), увы такие вот дела, 
    т.е. иногда нужно еще приглядываться к маленьким цифрам 
    версии на обратной (темной) стороне адаптера.    
    

Ahora busquemos el nombre del parámetro en la configuración del kernel responsable del controlador del chipset AR9271, lo mejor es buscar una combinación de las palabras "AR9271 cateee.net"
     donde "cateee.net" es un sitio genial que describe las configuraciones del módulo del kernel de Linux

Inmediatamente encontramos el nombre de la configuración del kernel: CONFIG_ATH9K_HTC
y el nombre del módulo del kernel que necesitamos ath9k_htc

y luego simplemente especifique el nombre del módulo deseado en el archivo de fragmento de configuración
Kernel de Linux => recetas-kernel/linux/files/rbpi.cfg, agregue la línea:
CONFIG_ATH9K_HTC=m

Por lo tanto, en el futuro, puede conectar cualquier equipo adicional a su sistema (bueno, si, por supuesto, ya es compatible con el kernel de Linux)

Que hacer si eres un habra geek - constructor

Y creas las cosas más geniales como aquí o eres estudiante y sueñas con crear algo similar.

Luego, puede tomar algún tipo de pantalla táctil para RPI en aliexpress, pedir una batería adecuada allí, conectarlo todo a la placa Raspberry Pi 1,2 o 3 (mejor a 3, ya que tiene Wifi incorporado), seleccione una interfaz de tema de diseño gráfico en Kodi, diseñada para pantalla táctil y listo => puede obtener un reproductor de audio simple. Por supuesto, será bastante voluminoso, pero será tuyo.

  Примечание:
  A для того, чтобы собрать Мультимедиа центр Kodi для самой бюджетной платы 
  Raspberry Pi Zero Wifi в yocto вам достаточно изменить две строки:

  конфигурационный файл => build/conf/local.conf
      MACHINE = 'raspberrypi0-wifi'

  рецепт сборки Kodi  => recipes-mediacentre/kodi/kodi_17.bbappend
      EXTRA_OECONF_append = "${@bb.utils.contains('MACHINE', 
                            'raspberrypi0-wifi', '${BS_RPI}',  '', d)}"

  Si la capacidad de respuesta de la GUI de Kodi 17.6 debido a un núcleo de procesador en Zero le parece misteriosa, entonces puede hacer una finta con sus oídos y construir una versión más antigua pero muy rápida, por ejemplo, Kodi 15.2, es más "amigable". en este sentido (a veces el legado lo decide todo)

Desafortunadamente, no tengo un tablero, por lo que no puedo verificarlo, pero según mis sentimientos, debería funcionar.

Breves instrucciones de montaje

    1) Установите зависимости Yocto Project (например в Ubuntu): 
    sudo apt-get install -y --no-install-suggests --no-install-recommends 
        gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential 
        chrpath socat cpio python python3 python3-pip python3-pexpect 
        xz-utils debianutils iputils-ping python3-git python3-jinja2 
        libegl1-mesa libsdl1.2-dev xterm

    2) Скачайте и установите Repo:
        mkdir ~/bin
        curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
        chmod a+x ~/bin/repo

    3) Загрузите проект с github:
        PATH=${PATH}:~/bin
        mkdir radio
        cd radio
        repo init -u https://github.com/berserktv/bs-manifest 
                  -m raspberry/rocko/radio-rpi-0.2.8.xml
        repo sync

    4) Соберите проект:
        ./shell.sh
        bitbake berserk-image
        
    можно тоже самое собрать для плат Raspberry Pi 3B Plus, 3B и 2B:
    repo init -u https://github.com/berserktv/bs-manifest 
              -m raspberry/rocko/radio-0.2.8.xml
    

instrucciones de montaje más detalladas
y grabación en una tarjeta microSDHC, consulte en el artículo anterior

Posdata

Por supuesto, la idea de la columna de radio por Internet es típica, es conocida por todos y en Habré encontrará muchos artículos sobre este tema, por ejemplo. aquí

Y también podría pensar que acabo de ajustar los requisitos para una solución lista para usar. A esto puedo replicar y decir que no, honestamente honestamente.

La historia del señor Ervey

    Хотите верьте, хотите нет, а дело было так:

    Наш рабочий офис граничит с фирмой по производству разного звукового
    оборудования, и однажды директор этой фирмы, назовем его мистер "Эрви"
    подошел к нашему заместителю директора филиала мистеру "Арсению"
    и спросил у него, насколько сложно повесить на плату Raspberry Pi 
    проигрывание звукового потока т.е. плата подключается к сети 
    и колонкам, и "слышен характерный звук".

    После этого мистер Арсений подошел к заместителю моего 
    начальника - мистеру "Борису" и переадресовал вопрос ему, 
    ну а я, как сторонний наблюдатель случайно эту идею запомнил
    и назвал ее "Задача трех начальников".

    В общем хотели как лучше, 
    а получилось, цитата - "Но мистер Эрви, как всегда, помог."

    Через некоторое время я поинтересовался у мистера "Бориса" 
    его мнением по поводу написания небольшой заметки на эту тему 
    на "Хабре", на что "Борис" ответил, что изменение 
    "трех пунктов меню" в Kodi, особо не привносит никакой 
    новой информации и не заслуживает отдельного упоминания. 
    Конечно я с ним полностью согласен и поэтому, я не расскажу ему, 
    что что-то написал по этому поводу.

    Статья написана исключительно для платы "Raspberry Pi 1" 
    взятой у мистера "Бориса" на время эксперимента, 
    совпадения со всеми другими платами "Raspberry Pi 1" случайны.
    

Más asambleas buenas y diferentes para ti, y que hasta el antiguo ladrillo cante para ti este año.

Fuente: habr.com

Añadir un comentario