ProHoster > Blog > administração > 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:
Há uma placa Raspberry Pi antiga e não utilizada de primeira geração;
A tábua fica no gabinete como peso morto e não é utilizada - a tábua “Tijolo”;
O que eu gostaria de receber:
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;
Um cabo Ethernet e um plugue de um alto-falante doméstico comum ou fones de ouvido estão conectados à placa;
Depois que a energia é aplicada, o antigo “Tijolo” - canta
A ideia principal:
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";
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) );
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;
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:
Bastante rápido (leva de 30 a 40 segundos para atingir o modo de operação da fonte de alimentação);
Bastante confiável (menos programas, menos pontos de falha);
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:
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)
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.