A coluna de rádio na Internet mais simples "Kodi" ou o resgate do tijolo "Raspberry"


As premissas principais:

  1. Existe uma antiga placa Raspberry Pi de primeira geração não utilizada;
  2. A placa fica com peso morto no gabinete e não é usada - a placa Brick;

O que eu gostaria de receber:

  1. Em um determinado momento (por exemplo, por humor)
    o quadro deixa de ser um "tijolo" e um cartão de memória mágico é inserido nele;
  2. Um cabo Ethernet e um plugue de um alto-falante doméstico ou fone de ouvido estão conectados à placa;
  3. Após a fonte de alimentação, o antigo “Brick” canta

A ideia principal:

  1. O número mínimo de gestos para qualquer configuração, no caso mais ideal, conectamos apenas o cabo "Ethernet", a alimentação e os alto-falantes, e nada mais, a partir da palavra "completamente";
  2. O antigo “Brick” pronto para uso suporta, por exemplo, 20 estações de rádio da Internet, cuja comutação em círculo pode ser desligada pressionando a roda do mouse ou em um pino GPIO específico (conecte dois fios e feche-os (meu sonho desde a infância));
  3. O gerenciamento é realizado em um canal de rádio, e esse canal de rádio pode se tornar um mouse de rádio comum;
  4. Pegue um sistema pronto, monte a distribuição no "Projeto Yocto"
    isto é como sempre, não faremos nada, pois tudo já foi feito.
    (apenas coloque um observador externo do outro lado da “TV” );

Descrição do produto

A coluna mais simples da Internet Radio "KODI"
A montagem é para placas Raspberry Pi 1 mais antigas
(acumulando poeira em algum lugar do armário, mas que ainda estão prontos para trabalhar)

Por padrão, é usada a lista m3u8 de 12 estações de rádio da Internet.

Supõe-se que a placa funcione sem uma saída HDMI e, para desligá-la, basta desconectar o adaptador de energia da tomada. E como um controle remoto sem fio ultramoderno, você pode usar o seu super rádio mouse (bem, ou conectar um cinza comum com uma cauda).

Quando você liga a interface de rede por padrão, ela é configurada através do protocolo DHCP e a última estação de rádio armazenada da lista é reproduzida, o volume de reprodução é controlado por um mouse convencional:
(finalmente nomeie o mouse como "chefe do departamento" e parabenize-a, ela mereceu)

  -      -      (3  )     -      (3  )     -    

Para adicionar sua própria lista de estações de rádio da Internet
Você sempre pode conectar um cabo HDMI a partir da TV
e use a GUI Kodi 17.6 padrão
(desligue a placa, conecte o HDMI e ligue o adaptador de energia)

Menu principal do Kodi => "Complementos" => "Meus Complementos"
=> “Clientes PVR” => “Cliente Simples PVR IPTV”

Implementação inicial
(possível)
Inicialmente, quando decidi criar uma "coluna de rádio na Internet", planejei o seguinte:

  • Distribuição de console minimalista no Projeto Yocto;
  • O fluxo de áudio é reproduzido através do GStreamer;
  • A interface de rede é configurada via DHCP;

E esta solução tem várias vantagens:

  1. Rápido o suficiente (saída para o modo operacional da fonte de alimentação 30-40 seg);
  2. Confiável o suficiente (menos programas, menos pontos de falha);
  3. Distribuição do console muito mais fácil de configurar como somente leitura
    isto é programas não gravam nada na raiz do sistema de arquivos
    (um sistema de arquivos na mídia SDHC é, na minha opinião, o primeiro candidato a falhas);

Nota:
   Yocto     (rootfs)        ,         Yocto   : 1)       / (     ,  Ubuntu) 2)        (   ,   )      ,                (  /var/log  ..)             .   Yocto Project      "read only",          ,          "read only"  "read/write",       ... 



E uma desvantagem principal:

"Isso deve ser feito", ou seja, Eu preciso gastar N número de noites
(geralmente depois do trabalho, e esse é o momento mais ineficiente, nesse momento o cérebro não pensa mais, geralmente dorme)

E, no entanto, escrevi meu artigo anterior sobre Habré sobre o projeto Kodi e Yocto do centro multimídia
e a capacidade de continuar na mesma linha dominou meu impulso de pesquisa. Sobre isso no próximo capítulo.

Transformando o Kodi em uma coluna de rádio na Internet

Para adicionar a funcionalidade necessária, adicionarei outro método à receita de criação de distribuição descrita no artigo anterior , consulte berserk-image.bb

 GUI_SETTINGS = "home/root/.kodi/userdata/guisettings.xml" #       (1- 2- ) F1_LINE = "<startlast default=\"true\"^_^gt&#0;lt^_^/startlast>" R1_LINE = "<startlast^_^gt lt^_^/startlast>" #   ,       F2_LINE = "<audiodevice default=\"true\">PI:HDMI</audiodevice>" R2_LINE = "<audiodevice>PI:Analogue</audiodevice>" #   HDMI        #       ,      F3_LINE = "<addonupdates default=\"true\"^_^gt&#0;lt^_^/addonupdates>" R3_LINE = "<addonupdates^_^gt lt^_^/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} } 

Os métodos destinam-se a modificar o sistema de arquivos raiz antes de formar a imagem de distribuição na forma de um único arquivo bruto, gravado no cartão de memória com o comando dd

Isso é feito desta maneira:
ROOTFS_POSTPROCESS_COMMAND + = "add_radio_guisettings; off_kodi_welcome; "

Em resumo, no arquivo de configuração principal Kodi 17.6, “três pontos” mudam

  • Iniciar a configuração do último canal de TV selecionado;
  • Configuração de saída de som, apenas a saída de áudio analógica está sempre conectada;
  • Desativando atualizações automáticas;
  • Nota:
            ,  ,          sqlite => TV29.db,        (        ),   xml   Kodi   . 



sequência mais detalhada de ações para cada item:

1) Clique no ícone de roda dentada no canto superior esquerdo da tela
e selecione “Configurações de PVR e TV” (imagem de uma TV com duas buzinas)
mais à esquerda do menu, selecione o item "Reprodução" e na seção central "Geral"
especifique na lista suspensa "Continuar do último canal na inicialização"
selecionando a configuração “Primeiro plano”

ou mais claramente:

  " PVR  " => "" => "     " => " " 

2) Clique no ícone de roda dentada no canto superior esquerdo da tela e selecione o item:

  " " => "" => "" => "   " 

3) Clique no ícone "engrenagem" no canto superior esquerdo da tela e selecione:

  " " => "" => "  " => "PI: Analogue" 

Eu assisto TV errado há dois anos.

Devo admitir que, durante dois anos, não aprendi a assistir à TV corretamente.

Normalmente assisto TV na cozinha. A placa Raspberry Pi 2B está conectada à TV e os conectores Ethernet e HDMI estão conectados à placa. A placa é alimentada por um cabo USB comum, conectado à porta USB da TV, ou seja, de fato, ligar a TV usando o controle remoto padrão também fornece energia à placa Raspberry Pi e desligar a TV a partir do controle remoto também redefine imediatamente a energia da placa Raspberry Pi.

Sim, estou ciente de que isso não pode ser feito, porque o sistema de arquivos raiz do centro multimídia Kodi (ext3) possui funções normais de leitura / gravação. Mas sou uma pessoa preguiçosa e, para começar, decidi verificar por quanto tempo o sistema pode ser desligado dessa maneira até que pare completamente de carregar, mas infelizmente por dois anos não consegui fazer isso (talvez tenha tido sorte, não sei )

E, na minha opinião, se esse modo fosse adequado para minha TV, também seria adequado para um "alto-falante simples de rádio na Internet" e, como desliguei forçosamente a atualização automática dos plug-ins Kodi, a probabilidade de uma falha no sistema de arquivos se tornaria ainda menor. Enquanto eu não vejo um problema com isso

Nota:
           yocto  IMAGE_FEATURES += "read-only-rootfs"         "read only" 


A distribuição "alto-falantes de rádio da Internet" descrita no artigo é doméstica, e o que é mais importante para uma distribuição doméstica é uma bela GUI. Na minha opinião, é muito difícil ou quase impossível ensinar um usuário comum a dirigir quaisquer comandos mágicos estranhos no console, e ele nem conhece essa palavra. E aqui está a GUI, isso é por favor.

E este é talvez o meu principal argumento a favor de uma distribuição que não seja do console. A interface gráfica de usuário do tubo quente da Kodi, sim, não é particularmente necessária, mas é.
(Também esqueci completamente de mencionar que o Kodi pode ser controlado remotamente, por exemplo, a partir de um smartphone, instalando o aplicativo Yatse e, talvez, para alguém seja uma vantagem)

Configuração Kodi para controle do mouse


e agora Rocket
 <keymap> <global> <mouse> <wheelup>VolumeUp</wheelup> <wheeldown>VolumeDown</wheeldown> <middleclick>ChannelDown</middleclick> <longclick id=^_^quot&#0;quot^_^>ChannelDown</longclick> <longclick id=^_^quot quot^_^>ChannelUp</longclick> <!--  rocket --> </mouse> </global> </keymap> 


A configuração substitui os eventos globais para os seguintes elementos:

  • roda do mouse para a frente
  • roda do mouse rolar para trás
  • clicando no botão do meio do mouse
  • processamento de cliques longos do mouse (3seg ou mais),
    0 identificador de botão direito, 1 identificador de botão esquerdo


mais informações sobre a configuração de eventos do mouse:

kodi.wiki/view/Alternative_keymaps_for_mice
kodi.wiki/view/Action_IDs
kodi.wiki/view/ID do Windows

O que fazer se o sistema de cabo não chegou até você

"Mas eu não tenho portas Ethernet gratuitas em casa (ou nunca tive)" - alguns dos sortudos proprietários das antigas placas Raspberry Pi 1 podem exclamar (talvez a placa tenha sido comprada para pesquisa e permaneceu no gabinete)

E como não há Wifi embutido na placa, então sem uma conexão Ethernet, isso não é muito funcional.

Obviamente, existe a possibilidade de usar a placa Raspberry Pi 1 sem Ethernet, mas isso exigirá algum esforço de sua parte. Geralmente, essas coisas são interessantes para executar apenas como parte do estudo de algo novo, ou seja, isso não é trabalho do usuário.

Portanto, considere uma opção hipotética para usar uma placa sem Ethernet:

Você pode conectar um adaptador USB - Wifi externo, guiado por essa consideração,
que o adaptador funcione bem no 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 

Se você já possui um adaptador Wifi USB, pode verificar se ele funciona bem no Linux da seguinte maneira:

  • Instale alguma distribuição Linux generalizada
    uso geral, por exemplo, "Ubuntu Desktop"
  • Sistema de inicialização
  • Conecte seu adaptador usb wifi
  • Inicie o gerenciador de rede e tente conectar-se ao seu ponto de acesso WiFi
  • Se tudo funcionar bem e sua conexão com a Internet estiver estável, seu adaptador será bem suportado e você poderá continuar trabalhando na conexão desse adaptador em um kit de distribuição especializado e, possivelmente, com outras versões do kernel
    (se não, então não, infelizmente - é melhor nem tentar)

Suporte para adaptador Wifi externo em "Raspberry PI"

Para que o adaptador WiFi funcione corretamente no Linux: precisamos de duas coisas:
1) Suporte ao kernel Linux para um adaptador Wifi específico
2) A presença no sistema de um módulo do kernel para um adaptador Wifi específico

Pegue o adaptador TP-Link TL-WN722N, por exemplo. Ele só tem uma ótima antena.
Vamos encontrar o chipset no qual a placa trabalha - eu tenho "AR9271",
nota:

    ,  ,            ,  Wifi  .     ,   TL-WN722N  2,     Realtek RTL8188,       Linux (  ),    , ..           ()  . 

Agora, encontraremos o nome do parâmetro na configuração do kernel responsável pelo driver do chipset AR9271; é melhor procurar a combinação de palavras "AR9271 cateee.net"
onde "cateee.net" é um site interessante que descreve as configurações dos módulos do kernel do Linux

Encontre imediatamente o nome da configuração do kernel - CONFIG_ATH9K_HTC
e o nome do módulo do kernel ath9k_htc que precisamos

e especifique o nome do módulo desejado no arquivo de fragmento de configuração
Kernel do Linux => recipes-kernel / linux / files / rbpi.cfg, adicione a linha:
CONFIG_ATH9K_HTC = m

Portanto, no futuro, você poderá conectar qualquer equipamento adicional ao seu sistema (bem, é claro, se ele já for suportado no kernel do Linux)

O que fazer se você é um designer nerd

E você cria as coisas mais legais, por exemplo, como aqui ou você é um estudante e sonha em criar algo semelhante.

Então, de imediato, você pode pegar algum tipo de tela sensível ao toque para RPI no aliexpress, pedir uma bateria adequada lá, conectar tudo à placa Raspberry Pi 1.2 ou 3 (melhor para 3, pois possui Wi-Fi embutido), escolher um tema de design gráfico interface no Kodi, projetada para tela sensível ao toque e voila => você pode obter um player de áudio simples. Claro que será volumoso o suficiente, mas será seu.

  : 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)}" 

   Se a capacidade de resposta da GUI Kodi 17.6 
   por causa de um núcleo de processador em Zero, você parecerá 
   misterioso, você pode fazer uma simulação com seus ouvidos e coletar um mais antigo, 
   mas uma versão muito rápida, por exemplo, o Kodi 15.2, é mais 
   "amigável" (às vezes o legado decide tudo)

Infelizmente, não tenho uma taxa, então não posso verificar, mas, de acordo com meus sentimentos, isso deve funcionar.

Instruções breves de montagem
  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 

instruções de montagem mais detalhadas
e gravação em um cartão microSDHC, consulte o artigo anterior


Postscript

Obviamente, a idéia de uma coluna de rádio na Internet é típica, é do conhecimento de todos e no hub você encontrará muitos artigos sobre esse assunto, por exemplo, aqui

E você também pode pensar que apenas atendi aos requisitos de uma solução pronta para uso. Eu posso combater isso e dizer não, honestamente honestamente.

Mais compilações para você são boas e diferentes.

Source: https://habr.com/ru/post/pt482714/


All Articles