A mais simples coluna de rádio da Internet "Kodi" ou a salvação do tijolo "Raspberry"

A mais simples coluna de rádio da Internet "Kodi" ou a salvação do tijolo "Raspberry"

Pré-requisitos básicos:

  1. Há uma placa Raspberry Pi antiga e não utilizada de primeira geração;
  2. A tábua fica no gabinete como peso morto e não é utilizada - a tábua “Tijolo”;

O que eu gostaria de receber:

  1. Em um determinado momento (por exemplo, de acordo com o humor)
    o tabuleiro deixa de ser um “Tijolo” e nele é inserido um cartão de memória mágico;
  2. Um cabo Ethernet e um plugue de um alto-falante doméstico comum ou fones de ouvido estão conectados à placa;
  3. Depois que a energia é aplicada, o antigo “Tijolo” - 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”, alimentação e alto-falantes, e não fazemos mais nada, desde a palavra "de forma alguma";
  2. O antigo “Brick” pronto para uso suporta, por exemplo, 20 estações de rádio da Internet, que podem ser alternadas em círculo pressionando a roda do mouse ou em um pino GPIO específico (conecte dois fios e coloque-os em curto (meu sonho desde a infância) );
  3. O controle é realizado por meio de um canal de rádio, e esse canal de rádio pode ser um mouse de rádio normal;
  4. Pegue um sistema pronto e monte a distribuição no “Projeto Yocto”
    aqueles. como sempre, não faremos nada com você, pois tudo já foi feito.
    (basta colocar um observador externo do outro lado "TELEVISÃO");

descrição

A coluna de rádio da Internet mais simples “KODI”
A montagem foi projetada para placas Raspberry Pi 1 mais antigas
(coletando poeira em algum lugar do armário, mas que estão prontos para trabalhar mais)

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

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

Quando ligado, a interface de rede padrão é configurada através do protocolo DHCP e a última estação de rádio memorizada da lista é reproduzida, o volume de reprodução é controlado com um mouse normal:
(finalmente nomeie seu mouse como “chefe de gestão” e parabenize-o, ele merece)

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

Para adicionar sua própria lista de estações de rádio da Internet
você sempre pode conectar um cabo HDMI da sua TV
e use a interface gráfica padrão do Kodi 17.6
(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 fazer uma “Coluna de Rádio na Internet”, planejei o seguinte:

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

E esta solução tem uma série de vantagens:

  1. Bastante rápido (leva de 30 a 40 segundos para atingir o modo de operação da fonte de alimentação);
  2. Bastante confiável (menos programas, menos pontos de falha);
  3. Uma distribuição de console é muito mais fácil de mudar para o modo somente leitura
    aqueles. os programas não gravam nada no sistema de arquivos raiz
    (e o sistema de arquivos na mídia SDHC é, na minha opinião, o primeiro candidato ao fracasso);

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 passar N número de noites
(geralmente depois do trabalho, e esse é o horário mais ineficaz, nesse horário o cérebro não pensa mais, geralmente dorme)

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

Transformando Kodi em um alto-falante de rádio na Internet

Para adicionar a funcionalidade que preciso, adicionarei mais um método à receita de construção da distribuição descrita na anterior статье veja o arquivo 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}
}

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

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

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

  • Configuração para lançamento do último canal de TV selecionado;
  • Configuração de saída de áudio, apenas a saída de áudio analógica está sempre conectada;
  • Desative as atualizações automáticas;
  • Nota:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

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

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

ou mais claramente:

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

2) Clique no ícone de “engrenagem” no canto superior esquerdo da tela e selecione o item:

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

3) Clique no ícone de “engrenagem” no canto superior esquerdo da tela e selecione o item:

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

Como venho assistindo TV da maneira errada há dois anos.

Devo confessar que em dois anos ainda não aprendi a assistir TV corretamente.

Geralmente assisto TV na cozinha. Uma placa Raspberry Pi 2B está conectada à TV e conectores Ethernet e HDMI estão conectados à placa. A placa é alimentada por um cabo USB normal, que é conectado à porta USB da TV, ou seja, na verdade, ligar a TV usando o controle remoto padrão fornece energia para a placa Raspberry Pi, e desligar a TV pelo controle remoto também reinicia 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 de mídia Kodi (ext3) funciona no modo normal de leitura/gravação. Mas sou uma pessoa preguiçosa, e primeiro resolvi verificar por quanto tempo conseguiria desligar o sistema assim, até que ele parasse de carregar completamente, mas infelizmente, depois de dois anos não consegui fazer isso (talvez tenha tido sorte, não sei).

E na minha opinião, se este modo fosse adequado para minha TV, então também seria adequado para um “simples alto-falante de rádio da Internet”, e como desativei à força a atualização automática dos plug-ins Kodi, a probabilidade de uma falha no sistema de arquivos se tornará ainda menos. Até agora não vejo problema nisso

Nota:

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

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

A distribuição de “alto-falantes de rádio na 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 inserir comandos mágicos incompreensíveis no console, e ele nem conhece a palavra. Mas a GUI, por favor.

E este é talvez o meu principal argumento a favor de uma distribuição sem console. A interface gráfica do usuário da lâmpada quente do Kodi não é realmente necessária, mas está lá.
(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 alguns isso seja uma vantagem)

Configuração Kodi para controle do mouse

e agora foguete

<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>

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

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

Informações mais detalhadas sobre como configurar eventos de mouse:

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

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

“Mas não tenho portas Ethernet livres em casa (ou nunca tive)”, podem exclamar alguns dos felizes proprietários de antigas placas Raspberry Pi 1 (talvez a placa tenha sido comprada para pesquisa e tenha permanecido no gabinete)

E como a placa não possui Wifi embutido, ela não funciona muito sem uma conexão Ethernet.

Claro, é possível usar a placa Raspberry Pi 1 sem Ethernet, mas isso exigirá algum esforço de sua parte. Normalmente, essas coisas são interessantes de fazer apenas como parte do aprendizado de algo novo, ou seja, Este não é um trabalho personalizado.

Então, vamos considerar um caso de uso hipotético para uma placa sem Ethernet:

Você pode conectar um adaptador USB - Wifi externo, guiado pela consideração
que o adaptador deve funcionar 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 USB Wifi, pode verificar se ele funciona bem no Linux da seguinte maneira:

  • Instale alguma distribuição Linux amplamente usada
    propósito geral, por exemplo "Ubuntu Desktop"
  • Inicialize o sistema
  • 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, então seu adaptador está bem suportado e você pode continuar seu trabalho conectando este adaptador em uma distribuição especializada e possivelmente com outras versões do kernel
    (se não, então não, infelizmente, é melhor nem tentar)

Suporte para adaptador Wifi externo no Raspberry PI

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

Tomemos por exemplo o adaptador TP-Link TL-WN722N. Tem uma antena simplesmente magnífica.
Vamos encontrar o chipset no qual a placa funciona - para mim é "AR9271", observação:

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

Agora vamos encontrar o nome do parâmetro na configuração do kernel responsável pelo driver do chipset AR9271, o melhor é procurar a combinação das palavras “AR9271 catee.net”
     onde "cateee.net" é um site legal que descreve configurações de módulos do kernel Linux

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

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

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

O que fazer se você é um habra geek - designer

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

De imediato, você pode pegar algum tipo de tela sensível ao toque para RPI no aliexpress, solicitar uma bateria adequada lá, conectar tudo a uma placa Raspberry Pi 1,2 ou 3 (de preferência 3, pois possui Wifi integrado), selecionar uma interface de tema de design gráfico no Kodi, projetada para uma tela sensível ao toque e voila => você pode obter um reprodutor de áudio simples. Claro que será bastante volumoso, 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 devido ao núcleo de processador único no Zero parece misteriosa para você, então você pode enganar seus ouvidos e construir uma versão mais antiga, mas muito rápida, por exemplo Kodi 15.2, é mais “amigável” nesse aspecto (às vezes o legado resolve tudo)

Infelizmente não tenho a placa, então não posso verificar, mas sinto que deve funcionar.

Breves Instruções 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 no artigo anterior

Pós-escrito

Claro que a ideia de um locutor de rádio na Internet é típica, todo mundo sabe disso e no Habré você encontrará muitos artigos sobre esse assunto, por exemplo aqui

E você também pode pensar que simplesmente adaptei os requisitos a uma solução pronta. A isso posso contrariar e dizer que não, honestamente.

A história do Sr. Ervey

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

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

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

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

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

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

Mais montagens boas e diferentes para você, e deixe até o antigo tijolo cantar para você este ano.

Fonte: habr.com

Adicionar um comentário