Die eenvoudigste internetradiokolom "Kodi" of die redding van die "framboos" baksteen

Die eenvoudigste internetradiokolom "Kodi" of die redding van die "framboos" baksteen

Basiese voorvereistes:

  1. Daar is 'n ou ongebruikte eerste generasie Raspberry Pi-bord;
  2. Die bord lê op die kas as 'n dooie gewig en word nie gebruik nie - die "Brick" bord;

Wat wil jy graag ontvang:

  1. Op 'n sekere tydstip (byvoorbeeld volgens bui)
    die bord hou op om 'n "Brick" te wees, en 'n magiese geheuekaart word daarin geplaas;
  2. 'n Ethernet-kabel en 'n prop van 'n gewone huishoudelike luidspreker of oorfone is aan die bord gekoppel;
  3. Nadat krag voorsien is, het die voormalige "Kirpich" - sing

Hoofgedagte:

  1. Die minimum aantal gebare vir enige instelling, in die mees ideale geval, verbind ons slegs die "Ethernet" kabel, krag en luidsprekers, en doen niks anders nie, van die woord "enigsins";
  2. Ons ondersteun byvoorbeeld die voormalige "Brick" uit die boks, byvoorbeeld 20 internetradiostasies, waarvan die skakeling in 'n sirkel opgehang kan word deur die muiswiel te druk of op 'n spesifieke GPIO-pen (koppel twee drade en maak hulle toe (my droom van kleins af));
  3. Beheer word via 'n radiokanaal uitgevoer, en hierdie radiokanaal kan 'n gewone radiomuis wees;
  4. Neem 'n klaargemaakte stelsel, monteer die verspreidingskit in die "Yocto Project"
    dié. Soos gewoonlik sal ons niks met jou doen nie, aangesien alles reeds gedoen is.
    (dit is genoeg om net 'n buite-waarnemer aan die ander kant te plaas "TV");

Beskrywing

Die eenvoudigste internetradiokolom "KODI"
Samestelling ontwerp vir ou Raspberry Pi 1-borde
(versamel stof iewers op die kas, maar wie is gereed om meer te werk)

Die m3u8-lys van 12 internetradiostasies word by verstek gebruik.

Daar word aanvaar dat die bord sonder 'n HDMI-uitset werk, en om dit af te skakel, trek net die kragadapter uit die uitlaat. En as 'n ultramoderne draadlose afstandbeheerder kan jy jou superradiomuis gebruik (wel, of 'n gewone grys een met 'n stert koppel).

Wanneer dit geaktiveer is, word die netwerkkoppelvlak by verstek gekonfigureer via die DHCP-protokol en die laaste gememoriseerde radiostasie uit die lys word gespeel, afspeelvolume word deur 'n gewone muis beheer:
(stel uiteindelik jou muis aan as "bestuurshoof", en wens haar geluk, sy verdien dit)

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

Om jou eie lys internetradiostasies by te voeg
jy kan altyd 'n HDMI-kabel vanaf jou TV koppel
en gebruik die voorraad Kodi 17.6 GUI
(skakel die bord af, koppel die HDMI en skakel die kragadapter aan)

Kodi hoofkieslys => "Byvoegings" => "My byvoegings"
          => "PVR Clients" => "PVR IPTV Simple Client"

Aanvanklike implementering

(moontlik)
Aanvanklik, toe ek besluit het om 'n "Internet Radio Column" te maak, het ek die volgende beplan:

  • Minimalistiese konsoleverspreiding in die Yocto-projek;
  • Die klankstroom word deur GStreamer gespeel;
  • Die netwerk koppelvlak is gekonfigureer via DHCP;

En hierdie oplossing het 'n aantal voordele:

  1. Vinnig genoeg (gaan na die bedryfsmodus vanaf kragtoevoer 30-40 sekondes);
  2. Betroubaar genoeg (minder programme, minder punte van mislukking);
  3. Die konsoleverspreiding is baie makliker om in leesalleen-modus te plaas
    dié. programme skryf niks na die wortellêerstelsel nie
    ('n Lêerstelsel op SDHC media is myns insiens die eerste kandidaat vir mislukkings);

Let wel:

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

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

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

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

En een groot nadeel:

"Dit moet gedoen word" m.a.w. Ek moet N aantal aande spandeer
(gewoonlik na werk, en dit is die mees ondoeltreffende tyd, op hierdie tydstip dink die brein nie meer nie, dit slaap gewoonlik)

En tog het ek my vorige artikel op Habré oor die multimediasentrum geskryf Kodi en Yocto projek
en die geleentheid om in dieselfde trant voort te gaan, het my ondersoekende impuls oorwin. Meer hieroor in die volgende hoofstuk.

Verander Kodi in 'n internetradioluidspreker

Om die funksionaliteit wat ek benodig te implementeer, sal ek nog een metode by die verspreidingsbouresep voeg wat in die vorige beskryf is Artikel sien lêer 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}
}

Die metodes is bedoel om die wortellêerstelsel te wysig voordat die verspreidingsbeeld in die vorm van 'n enkele rou lêer gevorm word, wat deur die opdrag na die geheuekaart geskryf word dd

Dit word op hierdie manier gedoen:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"

Kortom, in die hoofkonfigurasielêer van Kodi 17.6 verander “drie punte”.

  • Begin konfigurasie van die laaste gekose TV-kanaal;
  • Oudio-uitvoerkonfigurasie, slegs analoog oudio-uitvoer is altyd gekoppel;
  • Deaktiveer outomatiese opdaterings;
  • Let wel:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

'n meer gedetailleerde volgorde van aksies vir elke item:

1) Klik op die "rat"-ikoon in die boonste linkerhoek van die skerm
en kies "PVR en TV-instellings" (beeld van 'n TV met twee horings)
verder aan die linkerkant van die kieslys, kies die "Terugspeel" item, en in die sentrale afdeling "Algemeen"
kies "Gaan voort vanaf die laaste kanaal by opstart" in die aftreklys
kies die "Voorgrond" instelling

of duideliker:

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

2) Klik op die "rat"-ikoon in die boonste linkerhoek van die skerm en kies die item:

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

3) Klik op die "rat"-ikoon in die boonste linkerhoek van die skerm en kies die item:

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

Hoe ek al twee jaar verkeerd TV kyk.

Ek moet aan jou bieg dat ek in twee jaar nie geleer het hoe om behoorlik TV te kyk nie.

Ek kyk gewoonlik TV in die kombuis. 'n Raspberry Pi 2B-bord is aan die TV gekoppel, en Ethernet- en HDMI-verbindings is aan die bord gekoppel. Die bord word aangedryf deur 'n gewone USB-kabel, wat by die TV se USB-poort ingeprop is. in werklikheid, die aanskakel van die TV met behulp van die voorraad-afstandsbediening verskaf ook krag aan die Raspberry Pi-bord, en die afskakeling van die TV vanaf die afstandbeheer stel ook onmiddellik die krag van die Raspberry Pi-bord terug.

Ja, ek is deeglik bewus daarvan dat dit nie gedoen kan word nie, want die wortellêerstelsel van die Kodi-multimediasentrum (ext3) funksioneer in my normale lees-/skryfmodus. Maar ek is 'n lui mens, en om mee te begin, het ek besluit om te kyk hoe lank dit neem om die stelsel af te skakel, totdat dit enigsins ophou laai, maar ongelukkig vir twee jaar kon ek dit nie doen nie (miskien ek was net gelukkig, ek weet nie).

En na my mening, as hierdie modus geskik is vir my TV, dan is dit ook geskik vir 'n "eenvoudige internetradio-luidspreker", en aangesien ek die outomatiese opdatering van Kodi-inproppe met geweld afgeskakel het, sal die waarskynlikheid dat 'n lêerstelsel mislukking word selfs minder. Tot dusver sien ek nie 'n probleem daarmee nie.

Let wel:

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

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

Die verspreidingskit "Internetradioluidsprekers" wat in die artikel beskryf word, is 'n huishoudelike een, en wat die belangrikste vir 'n huishoudelike verspreidingskit is, is 'n pragtige GUI. Na my mening is dit baie moeilik of amper onmoontlik om 'n gewone gebruiker te leer om in enige onverstaanbare toweropdragte in die konsole te bestuur, en hy ken nie eens so 'n woord nie. En hier is die GUI, asseblief.

En dit is miskien my hoofargument ten gunste van 'n nie-konsole verspreiding. Kodi se warm lamp GUI, dit is nie regtig nodig nie, maar dit is daar.
(Ek het ook heeltemal vergeet om te noem dat Kodi op afstand beheer kan word, byvoorbeeld vanaf 'n slimfoon deur die Yatse-toepassing te installeer, en miskien vir iemand sal dit 'n pluspunt wees)

Kodi-konfigurasie, vir muisbeheer

en nou vuurpyl

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

Die opstelling ignoreer globale gebeurtenisse vir die volgende elemente:

  • muiswiel rol vorentoe
  • muiswiel blaai terug
  • deur die middelste muisknoppie te druk
  • verwerking van 'n lang muisklik (3 sekondes of meer),
    0 regterknoppie-ID, 1 linkerknoppie-ID

meer inligting oor die opstel van muisgebeurtenisse:

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

Wat om te doen as die kabelstelsel nie na jou toe gekom het nie

"Maar ek het nie gratis Ethernet-poorte by die huis nie (of het nog nooit gehad nie) nie," kan sommige van die gelukkige eienaars van ou Raspberry Pi 1-borde uitroep (miskien is die bord gekoop vir navorsing en het dit op die kas bly lê)

En aangesien daar geen ingeboude Wifi op die bord is nie, sonder 'n Ethernet-verbinding, is dit nie baie funksioneel nie.

Natuurlik bestaan ​​die moontlikheid om die Raspberry Pi 1-bord sonder Ethernet te gebruik, maar dit sal 'n bietjie moeite van jou verg. Gewoonlik is sulke dinge interessant om slegs te doen as deel van die studie van iets nuuts, m.a.w. dit is nie 'n pasgemaakte werk nie.

Dus, kom ons kyk na 'n hipotetiese gebruiksgeval vir 'n bord sonder Ethernet:

U kan 'n eksterne USB - Wifi-adapter koppel, gelei deur die oorweging
dat die adapter goed onder Linux moet werk

Let wel:

    К сожалению часть 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 
    

As jy reeds 'n usb Wifi-adapter het, kan jy so kyk of dit goed werk onder Linux:

  • Installeer 'n paar gewilde Linux-verspreiding
    algemene doel, soos "Ubuntu Desktop"
  • Begin die stelsel
  • Koppel jou Wifi usb-adapter
  • Begin netwerkbestuurder en probeer om aan jou WiFi-hotspot te koppel
  • As alles goed werk en jou internetverbinding is stabiel, dan word jou adapter goed ondersteun en jy kan voortgaan met jou werk om hierdie adapter in 'n gespesialiseerde verspreiding en moontlik met ander kernweergawes te koppel
    (indien nie, dan nee, helaas - dit is beter om nie eers te probeer nie)

Ondersteuning vir eksterne Wifi-adapter in "Raspberry PI"

Vir die WiFi-adapter om korrek in Linux te werk: ons het twee dinge nodig:
1) Linux-kernondersteuning vir spesifieke Wifi-adapter
2) Die teenwoordigheid in die stelsel van 'n kernmodule vir 'n spesifieke Wifi-adapter

Kom ons neem die TP-Link TL-WN722N-adapter as 'n voorbeeld. Hy het 'n wonderlike antenna.
Kom ons vind die skyfiestel waarop die bord werk - ek het dit "AR9271", let wel:

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

Kom ons vind nou die naam van die parameter in die kernkonfigurasie wat verantwoordelik is vir die AR9271-skyfiestelbestuurder, dit is die beste om te soek na 'n kombinasie van die woorde "AR9271 cateee.net"
     waar "cateee.net" 'n oulike webwerf is wat Linux-kernmodule-konfigurasies beskryf

Ons vind dadelik die naam van die kernkonfigurasie - CONFIG_ATH9K_HTC
en die naam van die kernmodule wat ons benodig ath9k_htc

en spesifiseer dan net die naam van die gewenste module in die konfigurasie fragment lêer
Linux kern => recipes-kernel/linux/files/rbpi.cfg, voeg die reël by:
CONFIG_ATH9K_HTC=m

U kan dus in die toekoms enige bykomende toerusting aan u stelsel koppel (wel, as dit natuurlik reeds in die Linux-kern ondersteun word)

Wat om te doen as jy 'n habra-geek - konstruktor is

En jy skep die coolste goed soos hier of jy is 'n student en droom daarvan om iets soortgelyks te skep.

Dan kan jy dadelik 'n soort aanraakskerm vir RPI op aliexpress neem, 'n geskikte battery daar bestel, dit alles koppel aan die Raspberry Pi 1,2 of 3-bord (beter tot 3, aangesien dit ingeboude Wifi het), kies 'n grafiese ontwerp-tema-koppelvlak in Kodi, ontwerp vir aanraakskerm en voila => jy kan 'n eenvoudige klankspeler kry. Natuurlik sal dit nogal lywig wees, maar dit sal joune wees.

  Примечание:
  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)}"

  As die responsiwiteit van die Kodi 17.6 GUI as gevolg van een verwerkerkern in Zero vir jou geheimsinnig lyk, dan kan jy met jou ore 'n fyntjie maak en 'n ouer, maar baie vinnige weergawe bou, byvoorbeeld Kodi 15.2, dit is meer "vriendelik" in hierdie verband (soms bepaal nalatenskap alles)

Ongelukkig het ek nie 'n bord nie, so ek kan dit nie nagaan nie, maar volgens my gevoelens behoort dit te werk.

Kort montage-instruksies

    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
    

meer gedetailleerde monteringsinstruksies
en opname na 'n microSDHC-kaart, sien in 'n vorige artikel

naskrif

Die idee van die internetradiokolom is natuurlik tipies, dit is aan almal bekend en op Habré sal jy baie artikels oor hierdie onderwerp vind, bv. hier

En jy kan ook dink dat ek net die vereistes vir 'n klaargemaakte oplossing aangepas het. Hierop kan ek antwoord en nee sê, eerlik eerlik.

Mnr Ervey se storie

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

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

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

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

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

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

Nog goeie en ander samekomste vir jou, en laat selfs die voormalige baksteen vir jou sing hierdie jaar.

Bron: will.com

Voeg 'n opmerking