Nejjednodušší sloupek internetového rádia "Kodi" aneb spása cihly "Malina".

Nejjednodušší sloupek internetového rádia "Kodi" aneb spása cihly "Malina".

Základní předpoklady:

  1. Existuje stará nepoužitá deska Raspberry Pi první generace;
  2. Deska leží na skříni jako vlastní váha a nepoužívá se - deska „Brick“;

Co byste chtěli získat:

  1. V určitém okamžiku (například podle nálady)
    deska přestává být "Brick" a je do ní vložena magická paměťová karta;
  2. K desce je připojen ethernetový kabel a zástrčka z běžného domácího reproduktoru nebo sluchátek;
  3. Po nabití bývalé "Brick" - zpívá

Hlavní myšlenka:

  1. Minimální počet gest pro jakékoli nastavení, v nejideálnějším případě připojíme pouze „ethernetový“ kabel, napájení a reproduktory a nic jiného neděláme, od slova "vůbec";
  2. Například podporujeme dřívější „Brick“ z krabice, například 20 internetových rádií, jejichž přepínání v kruhu lze zavěsit stisknutím kolečka myši nebo na konkrétním pinu GPIO (připojit dva vodiče a zavři je (můj sen z dětství));
  3. Ovládání se provádí prostřednictvím rádiového kanálu a tímto rádiovým kanálem může být běžná rádiová myš;
  4. Vezměte hotový systém, sestavte distribuční sadu v "Yocto Project"
    těch. Jako obvykle s vámi nic neuděláme, protože vše již bylo hotovo.
    (stačí jen umístit vnějšího pozorovatele na druhou stranu "TELEVIZE");

popis

Nejjednodušší sloupec internetového rádia "KODI"
Sestava určená pro staré desky Raspberry Pi 1
(sbírá prach někde na skříni, ale kdo je připraven pracovat víc)

Ve výchozím nastavení se používá seznam 3 internetových rádií m8u12.

Předpokládá se, že deska funguje bez HDMI výstupu a pro její vypnutí stačí vytáhnout napájecí adaptér ze zásuvky. A jako ultra moderní bezdrátové dálkové ovládání můžete použít svou super rádiovou myš (no, nebo připojte běžnou šedou s ocasem).

Po zapnutí se síťové rozhraní standardně nakonfiguruje pomocí protokolu DHCP a přehraje se poslední stanice uložená v paměti ze seznamu, hlasitost přehrávání se ovládá běžnou myší:
(nakonec jmenujte svou myš jako "vedoucí vedení" a gratulujte jí, zaslouží si to)

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

Chcete-li přidat svůj vlastní seznam internetových rozhlasových stanic
vždy můžete připojit kabel HDMI k televizoru
a použijte grafické uživatelské rozhraní Kodi 17.6
(vypněte desku, připojte HDMI a zapněte napájecí adaptér)

Hlavní nabídka Kodi => "Doplňky" => "Moje doplňky"
          => "Klienti PVR" => "Jednoduchý klient PVR IPTV"

Prvotní implementace

(možný)
Zpočátku, když jsem se rozhodl udělat „Internet Radio Column“, plánoval jsem následující:

  • Minimalistická konzolová distribuce v projektu Yocto;
  • Zvukový proud se přehrává přes GStreamer;
  • Síťové rozhraní se konfiguruje pomocí DHCP;

A toto řešení má řadu výhod:

  1. Dostatečně rychlý (přechod do provozního režimu z napájení 30-40 sekund);
  2. Dostatečně spolehlivé (méně programů, méně bodů selhání);
  3. Distribuci konzole je mnohem snazší uvést do režimu pouze pro čtení
    těch. programy do kořenového systému souborů nic nezapisují
    (souborový systém na SDHC médiu je podle mého názoru prvním kandidátem na selhání);

Poznámka:

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

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

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

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

A jedna velká nevýhoda:

"Musí se to udělat" tj. Potřebuji strávit N počet večerů
(obvykle po práci, a to je nejvíce neefektivní čas, v tuto dobu už mozek nepřemýšlí, většinou spí)

A přesto jsem o multimediálním centru napsal svůj předchozí článek na Habré Kodi a Yocto projekt
a možnost pokračovat ve stejném duchu překonaly můj průzkumný impuls. Více o tom v další kapitole.

Proměňte Kodi v reproduktor internetového rádia

Abych implementoval funkcionalitu, kterou potřebuji, přidám do receptu sestavení distribuce popsaného v předchozím ještě jednu metodu článek viz soubor 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}
}

Metody jsou určeny pro úpravu kořenového souborového systému před vytvořením distribučního obrazu ve formě jednoho raw souboru, který je zapsán na paměťovou kartu příkazem dd

To se provádí takto:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"

Stručně řečeno, v hlavním konfiguračním souboru Kodi 17.6 se změní „tři body“.

  • Spusťte konfiguraci posledního vybraného TV kanálu;
  • Konfigurace audio výstupu, vždy je připojen pouze analogový audio výstup;
  • Zakázání automatických aktualizací;
  • Poznámka:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

podrobnější posloupnost akcí pro každou položku:

1) Klikněte na ikonu "ozubeného kola" v levém horním rohu obrazovky
a vyberte „Nastavení PVR a TV“ (obraz televizoru se dvěma rohy)
dále na levé straně nabídky vyberte položku „Přehrávání“ a v centrální části „Obecné“
v rozevíracím seznamu vyberte možnost „Pokračovat od posledního kanálu při spuštění“.
výběrem nastavení "Popředí".

nebo jasněji:

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

2) Klikněte na ikonu "ozubeného kola" v levém horním rohu obrazovky a vyberte položku:

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

3) Klikněte na ikonu "ozubeného kola" v levém horním rohu obrazovky a vyberte položku:

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

Jak se dva roky špatně dívám na televizi.

Musím se vám přiznat, že za dva roky jsem se nenaučil správně sledovat televizi.

Na televizi se většinou dívám v kuchyni. K televizi je připojena deska Raspberry Pi 2B a k desce jsou připojeny konektory Ethernet a HDMI. Deska je napájena pomocí běžného USB kabelu, který se zapojuje do USB portu televizoru. ve skutečnosti zapnutí televizoru pomocí standardního dálkového ovladače také napájí desku Raspberry Pi a vypnutí televizoru pomocí dálkového ovládání také okamžitě resetuje napájení desky Raspberry Pi.

Ano, jsem si dobře vědom, že to nelze provést, protože kořenový souborový systém multimediálního centra Kodi (ext3) funguje v mém normálním režimu čtení / zápisu. Jsem ale líný člověk a pro začátek jsem se rozhodl zkontrolovat, jak dlouho trvá vypnutí systému, dokud se vůbec nepřestane načítat, ale bohužel už dva roky se mi to nedaří (možná měl prostě štěstí, nevím).

A podle mého názoru, pokud je tento režim vhodný pro mou televizi, pak je vhodný i pro „jednoduchý reproduktor internetového rádia“, a protože jsem násilně vypnul automatickou aktualizaci pluginů Kodi, pravděpodobnost selhání souborového systému se stane ještě méně. Zatím v tom nevidím problém.

Poznámka:

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

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

Distribuční sada "Internetové rádiové reproduktory" popsaná v článku je domácí, a co je nejdůležitější pro domácí distribuční sadu, je krásné GUI. Podle mého názoru je velmi obtížné nebo téměř nemožné naučit běžného uživatele jezdit v konzoli jakýmikoli nesrozumitelnými magickými příkazy a ani takové slovo nezná. A tady je GUI, prosím.

A to je možná můj hlavní argument ve prospěch nekonzolové distribuce. GUI teplé lampy Kodi, není to opravdu potřeba, ale je to tam.
(Úplně jsem zapomněl zmínit, že Kodi lze ovládat na dálku např. ze smartphonu instalací aplikace Yatse a pro někoho to možná bude plus)

Konfigurace Kodi pro ovládání myší

a teď raketa

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

Konfigurace přepíše globální události pro následující prvky:

  • rolování kolečkem myši dopředu
  • rolování kolečkem myši zpět
  • stisknutím prostředního tlačítka myši
  • zpracování dlouhého kliknutí myší (3 sekundy nebo více),
    0 pravé tlačítko id, 1 levé tlačítko id

více informací o konfiguraci událostí myši:

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

Co dělat, když k vám kabelový systém nedorazil

"Ale já doma nemám volné ethernetové porty (nebo jsem nikdy neměl)," mohou zvolat někteří šťastní majitelé starých desek Raspberry Pi 1 (možná byla deska zakoupena pro výzkum a zůstala ležet na skříni)

A jelikož na desce není vestavěná Wifi, bez ethernetového připojení je málo funkční.

Možnost použití desky Raspberry Pi 1 bez Ethernetu samozřejmě existuje, ale bude to od vás vyžadovat určité úsilí. Většinou je takové věci zajímavé dělat jen v rámci studia něčeho nového, tzn. toto není zakázková práce.

Podívejme se tedy na hypotetický případ použití desky bez Ethernetu:

Můžete připojit externí USB - Wifi adaptér, řídit se úvazkou
že adaptér by měl dobře fungovat pod Linuxem

Poznámka:

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

Pokud již máte USB Wifi adaptér, můžete zkontrolovat, zda funguje dobře pod Linuxem takto:

  • Nainstalujte nějakou populární distribuci Linuxu
    obecný účel, jako je „Ubuntu Desktop“
  • Spusťte systém
  • Připojte svůj Wifi USB adaptér
  • Spusťte správce sítě a zkuste se připojit k vašemu WiFi hotspotu
  • Pokud vše funguje dobře a vaše internetové připojení je stabilní, pak je váš adaptér dobře podporován a můžete pokračovat v práci na připojení tohoto adaptéru ve specializované distribuci a případně s dalšími verzemi jádra
    (pokud ne, tak ne, bohužel - je lepší to ani nezkoušet)

Podpora pro externí Wifi adaptér v "Raspberry PI"

Aby WiFi adaptér správně fungoval v Linuxu: potřebujeme dvě věci:
1) Podpora linuxového jádra pro konkrétní adaptér Wifi
2) Přítomnost modulu jádra pro konkrétní adaptér Wifi v systému

Vezměme si jako příklad adaptér TP-Link TL-WN722N. Má skvělou anténu.
Najdeme čipset, na kterém deska funguje - mám to "AR9271", poznámka:

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

Nyní najdeme název parametru v konfiguraci jádra zodpovědného za ovladač čipové sady AR9271, nejlépe je hledat kombinaci slov "AR9271 cateee.net"
     kde "cateee.net" je skvělá stránka popisující konfiguraci modulů jádra Linuxu

Okamžitě najdeme název konfigurace jádra - CONFIG_ATH9K_HTC
a název modulu jádra, který potřebujeme ath9k_htc

a pak stačí zadat název požadovaného modulu v souboru konfiguračního fragmentu
Linuxové jádro => recepty-kernel/linux/files/rbpi.cfg, přidejte řádek:
CONFIG_ATH9K_HTC=m

V budoucnu tak můžete ke svému systému připojit jakékoli další zařízení (dobře, pokud je samozřejmě již podporováno v jádře Linuxu)

Co dělat, když jste habra geek - konstruktér

A vytváříte ty nejúžasnější věci jako zde nebo jste student a sníte o vytvoření něčeho podobného.

Pak si můžete vzít nějaký dotykový displej pro RPI na aliexpress, objednat si tam vhodnou baterii, připojit to všechno k desce Raspberry Pi 1,2 nebo 3 (lépe 3, protože má vestavěnou Wifi), vyberte grafické rozhraní motivu v Kodi, určené pro dotykovou obrazovku a voila => můžete získat jednoduchý audio přehrávač. Samozřejmě bude dost objemný, ale bude váš.

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

  Pokud se vám odezva GUI Kodi 17.6 vzhledem k jednomu procesorovému jádru v Zero zdá záhadná, pak můžete udělat fintu ušima a postavit starší, ale velmi rychlou verzi, třeba Kodi 15.2, je „přívětivější“ v tomto ohledu (někdy o všem rozhoduje dědictví)

Bohužel nemám desku, takže to nemůžu zkontrolovat, ale podle mých pocitů by to mělo fungovat.

Stručný montážní návod

    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
    

podrobnější montážní návod
a nahrávání na microSDHC kartu viz v předchozím článku

Постскриптум

Myšlenka rubriky Internetové rádio je samozřejmě typická, zná ji každý a na Habré najdete mnoho článků na toto téma, např. zde

A také si možná myslíte, že jsem jen upravil požadavky na hotové řešení. Na to mohu odpovědět a upřímně upřímně říci ne.

Příběh pana Erveyho

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

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

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

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

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

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

Více dobrých a různých montáží pro vás a ať vám letos zazpívá i bývalá cihla.

Zdroj: www.habr.com

Přidat komentář