Déi einfachst Internet Radio Kolonn "Kodi" oder d'Erléisung vun der "Raspberry" Mauer

Déi einfachst Internet Radio Kolonn "Kodi" oder d'Erléisung vun der "Raspberry" Mauer

Basis Viraussetzunge:

  1. Et gëtt eng al onbenotzt éischt Generatioun Raspberry Pi Verwaltungsrot;
  2. De Brett läit op de Schrank als Doudeg Gewiicht a gëtt net benotzt - de "Brick" Brett;

Wat ech wéilt kréien:

  1. Zu engem gewëssen Zäitpunkt (zum Beispill no Stëmmung)
    de Board hält op e "Brick" ze sinn, an eng magesch Erënnerungskaart gëtt an et agebaut;
  2. En Ethernet Kabel an e Stecker vun engem normale Stot Lautsprecher oder Kopfhörer sinn op de Bord ugeschloss;
  3. Nodeems d'Kraaft ugewannt ass, de fréiere "Brick" - séngt

Haaptiddi:

  1. D'Mindestzuel vu Gesten fir all Setup, am idealste Fall, verbannen mir nëmmen den "Ethernet" Kabel, Stroum a Spriecher, a maachen näischt anescht, vum Wuert "iwwerhaapt";
  2. De fréiere "Brick" aus der Këscht ënnerstëtzt zum Beispill 20 Internet Radiostatiounen, déi an engem Krees gewiesselt kënne ginn andeems Dir d'Mausrad dréckt oder op engem spezifesche GPIO Pin (verbindt zwee Drot a kuerzt se (meng Dram zënter Kandheet) );
  3. D'Kontroll gëtt iwwer e Radiokanal duerchgefouert, an dëse Radiokanal kann eng regulär Radiomaus sinn;
  4. Huelt e fäerdege System a montéiert d'Verdeelung an de "Yocto Project"
    déi. wéi gewinnt wäerte mir Iech näischt maachen, well alles ass scho gemaach.
    (et ass genuch just en externen Beobachter op der anerer Säit ze setzen "TV");

Beschreiwung

Déi einfachst Internet Radio Kolonn "KODI"
D'Versammlung ass fir eeler Raspberry Pi 1 Boards entworf
(Sammelen Stëbs iergendwou um Kleederschaf, awer déi si prett fir méi Aarbecht ze maachen)

Par défaut gëtt d'm3u8 Lëscht vun 12 Internet Radiosender benotzt.

Et gëtt ugeholl datt de Bord ouni HDMI Output funktionnéiert, a fir se auszeschalten musst Dir just den Stroumadapter aus dem Outlet trennen. An als ultra-modern Wireless Kontrollpanel kënnt Dir Är Super Radio Maus benotzen (oder eng regulär gro mat engem Schwanz verbannen).

Wann ageschalt, gëtt d'Standard-Netzwierk-Interface iwwer den DHCP-Protokoll konfiguréiert an déi lescht gespäichert Radiosender aus der Lëscht gëtt gespillt, de Playbackvolumen gëtt mat enger regulärer Maus kontrolléiert:
(Schlussendlech ernennt Är Maus als "Chef de Management", a gratuléiert et, et verdéngt et)

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

Fir Är eege Lëscht vun Internet Radio Statiounen ze addéieren
Dir kënnt ëmmer en HDMI Kabel vun Ärem Fernseh verbannen
a benotzt de Standard grafeschen Interface vu Kodi 17.6
(schalt de Board aus, verbënnt HDMI a schalt den Stroumadapter un)

Kodi Haaptmenü => "Add-ons" => "Meng Add-ons"
          => "PVR Clients" => "PVR IPTV Simple Client"

Éischt Ëmsetzung

(méiglech)
Am Ufank, wéi ech decidéiert hunn eng "Internet Radio Column" ze maachen, hunn ech déi folgend geplangt:

  • Minimalistesch Konsolverdeelung am Yocto Project;
  • Den Audio Stream gëtt iwwer GStreamer gespillt;
  • D'Netzwierk Interface gëtt iwwer DHCP konfiguréiert;

An dës Léisung huet eng Rei vu Virdeeler:

  1. Zimlech séier (et dauert 30-40 Sekonnen fir de Betribsmodus vun der Energieversuergung z'erreechen);
  2. Zimlech zouverlässeg (manner Programmer, manner Punkte vun Echec);
  3. Eng Konsolverdeelung ass vill méi einfach op de Liesmodus ze wiesselen
    déi. Programmer schreiwen näischt un de Root Dateisystem
    (an de Fichier System op SDHC Medien ass, menger Meenung no, den éischte Kandidat fir Echec);

Opgepasst:

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

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

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

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

An een Haaptnodeel:

"Et muss gemaach ginn" d.h. Ech muss N Zuel vun Owender verbréngen
(normalerweis no der Aarbecht, an dëst ass déi effektivst Zäit, zu dëser Zäit denkt d'Gehir net méi, et schléift normalerweis)

An trotzdem hunn ech mäi fréieren Artikel iwwer Habré iwwer de Multimediazentrum geschriwwen Kodi an Yocto Projet
an d'Geleeënheet an der selwechter Aart weiderzemaachen, huet mäi Fuerschungsimpuls iwwerwältegt. Méi iwwer dëst am nächste Kapitel.

Kodi an en Internet Radio Speaker ëmsetzen

Fir d'Funktionalitéit ze addéieren, déi ech brauch, wäert ech eng méi Method fir d'Rezept fir d'Verdeelung ze bauen, déi an der viregter beschriwwe gëtt Artikel gesinn Fichier 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}
}

D'Methoden si geduecht fir de Root-Dateisystem z'änneren ier e Verdeelungsbild a Form vun enger rauer Datei formt, déi mam Kommando op d'Erënnerungskaart geschriwwe gëtt dd

Dëst gëtt op dës Manéier gemaach:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"

Kuerz gesot, an der Haaptkonfiguratiounsdatei vum Kodi 17.6, "dräi Punkten" änneren

  • Konfiguratioun fir de leschten ausgewielten Fernsehkanal ze starten;
  • Audioausgangskonfiguratioun, nëmmen analog Audioausgang ass ëmmer verbonnen;
  • Automatesch Updates auszeschalten;
  • Opgepasst:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

eng méi detailléiert Sequenz vun Aktiounen fir all Element:

1) Klickt op d'Gear Ikon an der ieweschter lénkser Ecke vum Écran
a wielt "PVR an TV Astellungen" (Bild vun engem Fernseh mat zwee Horn)
dann op der lénker Säit vum Menü, wielt "Playback", an am zentrale Sektioun "Allgemeng"
wielt "Weider vum leschte Kanal beim Startup" an der Dropdown-Lëscht
wielt de "Virgrond" Astellung

oder méi kloer:

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

2) Klickt op d'Ikon "Gear" an der ieweschter lénkser Ecke vum Écran a wielt den Artikel:

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

3) Klickt op d'Ikon "Gear" an der ieweschter lénkser Ecke vum Écran a wielt den Artikel:

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

Wéi ech zënter zwee Joer de falsche Wee Fernseh kucken.

Ech muss Iech zouginn, datt ech an zwee Joer nach ëmmer net geléiert hunn, wéi ech Fernseh korrekt kucken.

Ech kucken normalerweis Fernseh an der Kichen. E Raspberry Pi 2B Board ass mam Fernseh verbonnen, an Ethernet an HDMI Connectoren sinn op de Board verbonnen. De Board gëtt iwwer e normale USB Kabel ugedriwwen, deen an den USB Hafen vum Fernseh gesteckt ass, d.h. Tatsächlech, de Fernseh mat der Norm Fernbedienung unzeschalten liwwert Kraaft un de Raspberry Pi Board, an de Fernseh vun der Fernsteierung auszeschalten och direkt d'Kraaft vum Raspberry Pi Board zréck.

Jo, ech si bewosst datt dëst net gemaach ka ginn, well de Root Dateisystem vum Kodi Media Center (ext3) am normale Lies-/Schreifmodus funktionnéiert. Mee ech sinn eng faul Persoun, an als éischt hunn ech beschloss ze kontrolléieren wéi laang ech de System esou ausschalten kann, bis et komplett opgehalen huet ze lueden, awer leider, no zwee Joer hunn ech dat ni fäerdeg bruecht (vläicht hat ech just Gléck, Ech wees net ).

A menger Meenung no, wann dëse Modus fir meng Fernseh gëeegent wier, da wier et och gëeegent fir en "einfache Internet Radio Lautsprecher", a well ech d'automatesch Aktualiséierung vu Kodi Plugins gezwongen ausgeschalt hunn, gëtt d'Wahrscheinlechkeet vun engem Dateiesystem Echec souguer manner. Bis elo gesinn ech kee Problem domat

Opgepasst:

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

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

D'Verdeelung "Internet Radio Spriecher" beschriwwen am Artikel ass e Stot, a wat am wichtegsten ass fir eng Haushaltsverdeelung ass e schéine GUI. Menger Meenung no ass et ganz schwéier oder bal onméiglech fir en gewéinleche Benotzer ze léieren all onverständlech Magiebefehl an d'Konsole anzeginn, an hie weess net emol d'Wuert. Awer de GUI, wann ech glift.

An dëst ass vläicht mäin Haaptargument fir eng Net-Konsol Verdeelung. Déi waarm Lampe grafesch User-Interface vu Kodi, et ass net wierklech gebraucht, awer et ass do.
(Ech hunn och komplett vergiess ze ernimmen datt Kodi op afstand kontrolléiert ka ginn, zum Beispill vun engem Smartphone, andeems Dir d'Yatse Applikatioun installéiert, a vläicht fir e puer wäert dëst e Plus sinn)

Kodi Konfiguratioun fir Maus Kontroll

an elo Rocket

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

D'Konfiguratioun iwwerschreift global Eventer fir déi folgend Elementer:

  • scroll Mausrad no vir
  • scroll Mausrad zréck
  • klickt op d'Mëtt Maus Knäppchen
  • Veraarbechtung vu laange Mausklicken (3 Sekonnen oder méi),
    0 riets Knäppchen ID, 1 lénks Knäppchen ID

Méi detailléiert Informatiounen iwwer d'Opstelle vun Mausevenementer:

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

Wat maache wann de Kabelsystem net bei Iech kënnt

"Awer ech hu keng gratis Ethernet Ports doheem (oder ni hunn)," kënnen e puer vun de gléckleche Besëtzer vun alen Raspberry Pi 1 Boards ausruffen (vläicht gouf de Board fir Fuerschung kaaft a blouf um Schrank leien)

A well de Board keen agebaute Wifi huet, ass et net ganz funktionell ouni Ethernet Verbindung.

Natierlech ass et méiglech de Raspberry Pi 1 Board ouni Ethernet ze benotzen, awer et erfuerdert e bëssen Effort vun Ärer Säit. Normalerweis sinn esou Saachen interessant ze maachen nëmmen am Kader vun eppes Neies ze léieren, d.h. Dëst ass keng personaliséiert Aarbecht.

Also, loosst eis en hypotheteschen Benotzungsfall fir e Board ouni Ethernet betruechten:

Dir kënnt en externen USB - Wifi Adapter verbannen, guidéiert vun der Iwwerleeung
datt den Adapter gutt ënner Linux funktionnéiert

Opgepasst:

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

Wann Dir schonn en USB Wifi Adapter hutt, kënnt Dir kucken ob et gutt ënner Linux funktionnéiert wéi follegt:

  • Installéiert e puer wäit benotzt Linux Verdeelung
    allgemeng Zweck, zum Beispill "Ubuntu Desktop"
  • Boot de System
  • Connect Äre Wifi USB Adapter
  • Lancéiere Netzwierkmanager a probéiert mat Ärem WiFi Zougangspunkt ze verbannen
  • Wann alles gutt funktionnéiert an Är Internetverbindung stabil ass, da gëtt Ären Adapter gutt ënnerstëtzt an Dir kënnt Är Aarbecht weiderfuere fir dësen Adapter an enger spezialiséierter Verdeelung an eventuell mat anere Versioune vum Kernel ze verbannen.
    (wann net, dann nee, leider, et ass besser net emol ze probéieren)

Ënnerstëtzung fir externen Wifi Adapter am Raspberry PI

Fir datt de WiFi-Adapter korrekt am Linux funktionnéiert, brauche mir zwou Saachen:
1) Linux Kernel Ënnerstëtzung fir spezifesch Wifi Adapter
2) D'Präsenz vun engem Kernel Modul am System fir e spezifesche Wifi Adapter

Huelt zum Beispill den TP-Link TL-WN722N Adapter. Et huet eng einfach herrlech Antenne.
Loosst eis de Chipsatz fannen op deem de Board funktionnéiert - fir mech ass et "AR9271", Notiz:

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

Loosst eis elo den Numm vum Parameter an der Kernelkonfiguratioun fannen, verantwortlech fir den AR9271 Chipset Chauffer, et ass am beschten fir d'Kombinatioun vu Wierder "AR9271 catee.net" ze sichen.
     wou "cateee.net" e coole Site ass, deen Konfiguratioune vu Linux Kernel Moduler beschreift

Mir fannen direkt den Numm vun der Kernelkonfiguratioun - CONFIG_ATH9K_HTC
an den Numm vum Kernelmodul dee mir brauchen ath9k_htc

an dann gitt just den Numm vum gewënschten Modul an der Konfiguratiounsfragmentdatei
Linux Kernel => recipes-kernel/linux/files/rbpi.cfg, füügt d'Linn derbäi:
CONFIG_ATH9K_HTC=m

Also, an Zukunft kënnt Dir all zousätzlech Ausrüstung mat Ärem System verbannen (gutt, natierlech, wann et schonn am Linux Kernel ënnerstëtzt gëtt)

Wat maache wann Dir en Habra Geek sidd - Designer

An Dir kreéiert déi coolst Saachen, wéi z.B hei oder Dir sidd Student an dreemt eppes ähnlech ze kreéieren.

Just offhand, Dir kënnt eng Aart Touch Screen Écran fir RPI op Aliexpress huelen, eng gëeegent Batterie do bestellen, et alles mat engem Raspberry Pi 1,2 oder 3 Board verbannen (am léifsten 3, well et agebaute Wifi huet), wielt e Grafikdesign Thema Interface am Kodi, entworf fir en Touchscreen a voila => Dir kënnt en einfachen Audio Player kréien. Natierlech wäert et zimlech voluminös sinn, awer et wäert ären sinn.

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

  Wann d'Reaktiounsfäegkeet vum GUI Kodi 17.6 wéinst dem eenzegen Prozessorkär am Zero Iech mysteriéis schéngt, da kënnt Dir Är Oueren tricken an eng méi al, awer ganz séier Versioun bauen, zum Beispill Kodi 15.2, et ass méi "frëndlech" an dëser Hisiicht (heiansdo léist Legacy alles)

Leider hunn ech net de Verwaltungsrot, also kann ech net kontrolléieren, mee ech fille wéi et soll funktionnéieren.

Kuerz Assemblée Instruktioune

    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
    

méi detailléiert Versammlungsinstruktiounen
an opzehuelen op enger microSDHC Kaart, gesinn am Artikel virdrun

Postscript

Natierlech ass d'Iddi vun engem Internet Radio Speaker typesch, jidderee weess et an op Habré fannt Dir vill Artikelen iwwer dëst Thema, zum Beispill hei

An Dir mengt vläicht och, datt ech d'Ufuerderungen einfach op eng fäerdeg Léisung ugepasst hunn. Doriwwer kann ech dogéint a soen, nee, éierlech.

Dem Här Ervey seng Geschicht

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

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

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

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

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

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

Méi gutt an ënnerschiddlech Versammlungen fir Iech, a loosst och dëst Joer de fréiere Brick fir Iech sangen.

Source: will.com

Setzt e Commentaire