Die einfachste Internetradio-Kolumne „Kodi“ oder die Rettung des „Raspberry“-Steins

Die einfachste Internetradio-Kolumne „Kodi“ oder die Rettung des „Raspberry“-Steins

Grundvoraussetzungen:

  1. Es gibt ein altes unbenutztes Raspberry Pi-Board der ersten Generation;
  2. Das Brett liegt als Eigengewicht auf dem Schrank und wird nicht genutzt – das „Brick“-Brett;

Was ich erhalten möchte:

  1. Zu einem bestimmten Zeitpunkt (zum Beispiel je nach Stimmung)
    die Platine ist kein „Baustein“ mehr und eine magische Speicherkarte wird hineingesteckt;
  2. An die Platine werden ein Ethernet-Kabel und ein Stecker eines normalen Haushaltslautsprechers oder Kopfhörers angeschlossen;
  3. Nach dem Anlegen der Stromversorgung bleibt der ehemalige „Ziegelstein“ - singt

Die Hauptidee:

  1. Die minimale Anzahl von Gesten für jedes Setup. Im idealsten Fall schließen wir nur das „Ethernet“-Kabel, die Stromversorgung und die Lautsprecher an und tun nichts anderes, vom Wort an "überhaupt";
  2. Der ehemalige „Brick“ unterstützt ab Werk beispielsweise 20 Internetradiosender, die per Mausrad oder auf einem bestimmten GPIO-Pin im Kreis umgeschaltet werden können (zwei Drähte verbinden und kurzschließen (mein Traum seit der Kindheit)) );
  3. Die Steuerung erfolgt über einen Funkkanal, dieser Funkkanal kann eine normale Funkmaus sein;
  4. Nehmen Sie ein fertiges System und stellen Sie die Distribution zum „Yocto-Projekt“ zusammen.
    diese. Wie üblich werden wir Ihnen nichts tun, da bereits alles erledigt ist.
    (Es genügt, einen externen Beobachter auf die andere Seite zu stellen "FERNSEHER");

Beschreibung

Die einfachste Internetradio-Kolumne „KODI“
Die Baugruppe ist für ältere Raspberry Pi 1-Boards konzipiert
(sammelt Staub irgendwo auf dem Schrank, ist aber bereit, noch etwas zu tun)

Standardmäßig wird die m3u8-Liste mit 12 Internetradiosendern verwendet.

Es wird davon ausgegangen, dass das Board ohne HDMI-Ausgang funktioniert und zum Ausschalten lediglich das Netzteil aus der Steckdose gezogen werden muss. Und als hochmodernes kabelloses Bedienfeld können Sie Ihre Super-Funkmaus verwenden (oder eine normale graue Maus mit Schwanz anschließen).

Beim Einschalten wird die Standard-Netzwerkschnittstelle über das DHCP-Protokoll konfiguriert und der letzte gespeicherte Radiosender aus der Liste wird abgespielt, die Wiedergabelautstärke wird mit einer normalen Maus gesteuert:
(Ernennen Sie Ihre Maus endlich zum „Chef der Geschäftsführung“ und gratulieren Sie ihr, sie hat es verdient)

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

So fügen Sie Ihre eigene Liste von Internetradiosendern hinzu
Sie können jederzeit ein HDMI-Kabel von Ihrem Fernseher anschließen
und nutzen Sie die standardmäßige grafische Benutzeroberfläche von Kodi 17.6
(Schalten Sie die Platine aus, schließen Sie HDMI an und schalten Sie das Netzteil ein)

Kodi-Hauptmenü => „Add-ons“ => „Meine Add-ons“
          => „PVR-Clients“ => „PVR IPTV Simple Client“

Erste Implementierung

(möglich)
Als ich mich dazu entschloss, eine „Internetradio-Kolumne“ zu verfassen, hatte ich zunächst Folgendes geplant:

  • Minimalistische Konsolenverteilung im Yocto-Projekt;
  • Der Audiostream wird über GStreamer abgespielt;
  • Die Netzwerkschnittstelle wird über DHCP konfiguriert;

Und diese Lösung hat eine Reihe von Vorteilen:

  1. Ziemlich schnell (es dauert 30-40 Sekunden, um über die Stromversorgung in den Betriebsmodus zu gelangen);
  2. Ziemlich zuverlässig (weniger Programme, weniger Fehlerquellen);
  3. Bei einer Konsolenverteilung ist es viel einfacher, in den schreibgeschützten Modus zu wechseln
    diese. Programme schreiben nichts in das Root-Dateisystem
    (und das Dateisystem auf SDHC-Medien ist meiner Meinung nach der erste Kandidat für einen Misserfolg);

Hinweis:

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

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

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

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

Und ein Hauptnachteil:

„Es muss getan werden“, d.h. Ich muss N Abende verbringen
(normalerweise nach der Arbeit, und dies ist die ineffektivste Zeit, zu dieser Zeit denkt das Gehirn nicht mehr, es schläft normalerweise)

Und doch habe ich meinen vorherigen Artikel auf Habré über das Multimediazentrum geschrieben Kodi und Yocto Projekt
und die Gelegenheit, in der gleichen Richtung weiterzumachen, überwältigte meinen Forschungsdrang. Mehr dazu im nächsten Kapitel.

Kodi in einen Internetradio-Lautsprecher verwandeln

Um die von mir benötigte Funktionalität hinzuzufügen, werde ich dem im vorherigen Rezept beschriebenen Rezept zum Erstellen der Distribution eine weitere Methode hinzufügen Artikel siehe Datei 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 Methoden dienen dazu, das Root-Dateisystem zu ändern, bevor ein Distributions-Image in Form einer Rohdatei erstellt wird, die mit dem Befehl auf die Speicherkarte geschrieben wird dd

Das geht so:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"

Kurz gesagt, in der Hauptkonfigurationsdatei von Kodi 17.6 ändern sich „drei Punkte“.

  • Konfiguration zum Starten des zuletzt ausgewählten TV-Kanals;
  • Audioausgangskonfiguration, es ist immer nur der analoge Audioausgang angeschlossen;
  • Automatische Updates deaktivieren;
  • Hinweis:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

eine detailliertere Abfolge von Aktionen für jedes Element:

1) Klicken Sie auf das Zahnradsymbol in der oberen linken Ecke des Bildschirms
und wählen Sie „PVR- und TV-Einstellungen“ (Bild eines Fernsehers mit zwei Hupen)
Wählen Sie dann auf der linken Seite des Menüs „Wiedergabe“ und im mittleren Bereich „Allgemein“.
Wählen Sie in der Dropdown-Liste „Beim Start vom letzten Kanal fortfahren“ aus
Auswahl der Einstellung „Vordergrund“.

oder deutlicher:

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

2) Klicken Sie auf das „Zahnrad“-Symbol in der oberen linken Ecke des Bildschirms und wählen Sie das Element aus:

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

3) Klicken Sie auf das „Zahnrad“-Symbol in der oberen linken Ecke des Bildschirms und wählen Sie das Element aus:

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

Wie ich seit zwei Jahren falsch fernsehe.

Ich muss Ihnen gestehen, dass ich in zwei Jahren immer noch nicht gelernt habe, richtig fernzusehen.

Normalerweise schaue ich in der Küche fern. Eine Raspberry Pi 2B-Platine ist an den Fernseher angeschlossen, und Ethernet- und HDMI-Anschlüsse sind an die Platine angeschlossen. Die Stromversorgung des Boards erfolgt über ein normales USB-Kabel, das an den USB-Anschluss des Fernsehers angeschlossen wird, d. h. Tatsächlich versorgt das Einschalten des Fernsehers mit der Standardfernbedienung die Raspberry Pi-Platine mit Strom, und wenn Sie den Fernseher über die Fernbedienung ausschalten, wird auch die Stromversorgung der Raspberry Pi-Platine sofort zurückgesetzt.

Ja, mir ist durchaus bewusst, dass dies nicht möglich ist, da das Root-Dateisystem des Kodi Media Centers (ext3) im normalen Lese-/Schreibmodus funktioniert. Aber ich bin ein fauler Mensch und habe mich zunächst entschlossen zu prüfen, wie lange ich das System auf diese Weise ausschalten kann, bis es vollständig aufhört zu laden, aber leider ist mir das nach zwei Jahren nie gelungen (vielleicht hatte ich einfach nur Glück, Ich weiß es nicht).

Und meiner Meinung nach, wenn dieser Modus für meinen Fernseher geeignet wäre, dann wäre er auch für einen „einfachen Internetradio-Lautsprecher“ geeignet, und da ich die automatische Aktualisierung von Kodi-Plugins zwangsweise deaktiviert habe, wird die Wahrscheinlichkeit eines Dateisystemfehlers ausgeglichen weniger. Bisher sehe ich darin kein Problem

Hinweis:

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

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

Die im Artikel beschriebene „Internetradio-Lautsprecher“-Distribution ist eine Haushaltsdistribution, und das Wichtigste für eine Haushaltsdistribution ist eine schöne Benutzeroberfläche. Meiner Meinung nach ist es sehr schwierig oder fast unmöglich, einem normalen Benutzer beizubringen, unverständliche magische Befehle in die Konsole einzugeben, und er kennt das Wort nicht einmal. Aber bitte die GUI.

Und das ist vielleicht mein Hauptargument für eine Nicht-Konsolen-Distribution. Die warme grafische Benutzeroberfläche von Kodi wird nicht wirklich benötigt, ist aber vorhanden.
(Ich habe auch völlig vergessen zu erwähnen, dass Kodi durch die Installation der Yatse-Anwendung ferngesteuert werden kann, beispielsweise von einem Smartphone aus, und für einige ist dies vielleicht ein Pluspunkt.)

Kodi-Konfiguration für die Maussteuerung

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

Die Konfiguration überschreibt globale Ereignisse für die folgenden Elemente:

  • Scrollen Sie mit dem Mausrad nach vorne
  • Scrollen Sie mit dem Mausrad zurück
  • Klicken Sie mit der mittleren Maustaste
  • Verarbeitung langer Mausklicks (3 Sekunden oder mehr),
    0 rechte Tasten-ID, 1 linke Tasten-ID

Ausführlichere Informationen zum Einrichten von Mausereignissen:

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

Was tun, wenn das Kabelsystem nicht bei Ihnen ankommt?

„Aber ich habe zu Hause keine freien Ethernet-Ports (oder habe sie nie)“, mögen einige der glücklichen Besitzer alter Raspberry Pi 1-Boards ausrufen (vielleicht wurde das Board zu Forschungszwecken gekauft und blieb auf dem Schrank liegen).

Und da das Board nicht über integriertes WLAN verfügt, ist es ohne Ethernet-Verbindung nicht sehr funktionsfähig.

Natürlich ist es möglich, das Raspberry Pi 1-Board auch ohne Ethernet zu verwenden, allerdings ist hierfür ein gewisser Aufwand Ihrerseits erforderlich. Normalerweise sind solche Dinge nur dann interessant, wenn man etwas Neues lernt, d. h. Das ist keine Maßarbeit.

Betrachten wir also einen hypothetischen Anwendungsfall für ein Board ohne Ethernet:

Sie können einen externen USB-WLAN-Adapter anschließen, indem Sie sich an der Überlegung orientieren
dass der Adapter unter Linux gut funktionieren sollte

Hinweis:

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

Wenn Sie bereits über einen USB-WLAN-Adapter verfügen, können Sie wie folgt überprüfen, ob dieser unter Linux gut funktioniert:

  • Installieren Sie eine weit verbreitete Linux-Distribution
    allgemeiner Zweck, zum Beispiel „Ubuntu Desktop“
  • Booten Sie das System
  • Schließen Sie Ihren WLAN-USB-Adapter an
  • Starten Sie den Netzwerkmanager und versuchen Sie, eine Verbindung zu Ihrem WLAN-Zugangspunkt herzustellen
  • Wenn alles gut funktioniert und Ihre Internetverbindung stabil ist, wird Ihr Adapter gut unterstützt und Sie können Ihre Arbeit an der Verbindung dieses Adapters in einer speziellen Distribution und möglicherweise mit anderen Versionen des Kernels fortsetzen
    (Wenn nicht, dann nein, leider ist es besser, es gar nicht erst zu versuchen)

Unterstützung für externen WLAN-Adapter in Raspberry PI

Damit der WLAN-Adapter unter Linux ordnungsgemäß funktioniert, benötigen wir zwei Dinge:
1) Linux-Kernel-Unterstützung für bestimmte WLAN-Adapter
2) Das Vorhandensein eines Kernelmoduls im System für einen bestimmten WLAN-Adapter

Nehmen Sie zum Beispiel den TP-Link TL-WN722N-Adapter. Es hat eine einfach großartige Antenne.
Suchen wir mal nach dem Chipsatz, auf dem das Board läuft – bei mir ist es „AR9271“, hinweis:

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

Suchen wir nun den Namen des Parameters in der Kernel-Konfiguration, der für den AR9271-Chipsatztreiber verantwortlich ist, suchen Sie am besten nach der Wortkombination „AR9271 catee.net“
     Dabei ist „cateee.net“ eine coole Seite, die Konfigurationen von Linux-Kernelmodulen beschreibt

Wir finden sofort den Namen der Kernel-Konfiguration - CONFIG_ATH9K_HTC
und den Namen des Kernelmoduls, das wir benötigen ath9k_htc

und geben Sie dann einfach den Namen des gewünschten Moduls in der Konfigurationsfragmentdatei an
Linux-Kernel => Rezepte-Kernel/linux/files/rbpi.cfg, fügen Sie die Zeile hinzu:
CONFIG_ATH9K_HTC=m

Somit können Sie in Zukunft beliebige zusätzliche Geräte an Ihr System anschließen (natürlich nur, wenn diese bereits im Linux-Kernel unterstützt werden).

Was tun, wenn Sie ein Habra-Geek-Designer sind?

Und du erschaffst die coolsten Dinge, wie zum Beispiel hier oder Sie sind Student und träumen davon, etwas Ähnliches zu schaffen.

Sie können ganz nebenbei eine Art Touchscreen-Bildschirm für RPI bei Aliexpress nehmen, dort einen passenden Akku bestellen, alles an eine Raspberry Pi 1,2- oder 3-Karte anschließen (vorzugsweise 3, da es über integriertes WLAN verfügt) und auswählen eine Grafikdesign-Themenoberfläche in Kodi, die für einen Touchscreen entwickelt wurde, und voilà => Sie können einen einfachen Audioplayer erhalten. Natürlich wird es ziemlich sperrig sein, aber es wird Ihnen gehören.

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

  Wenn Ihnen die Reaktionsfähigkeit von GUI Kodi 17.6 aufgrund des einzelnen Prozessorkerns in Zero rätselhaft vorkommt, dann können Sie Ihre Ohren täuschen und eine ältere, aber sehr schnelle Version bauen, zum Beispiel Kodi 15.2, die in dieser Hinsicht „freundlicher“ ist (Manchmal löst das Erbe alles)

Leider habe ich das Board nicht und kann es daher nicht überprüfen, aber ich habe das Gefühl, dass es funktionieren sollte.

Kurze Aufbauanleitung

    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
    

ausführlichere Montageanleitung
und Aufnahme auf einer microSDHC-Karte, siehe im vorherigen Artikel

Postskriptum

Natürlich ist die Idee eines Internetradio-Sprechers typisch, jeder kennt sie und auf Habré findet man beispielsweise viele Artikel zu diesem Thema hier

Und Sie denken vielleicht auch, dass ich die Anforderungen einfach auf eine fertige Lösung zugeschnitten habe. Dem kann ich entgegnen und ganz ehrlich sagen: Nein.

Die Geschichte von Herrn Ervey

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

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

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

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

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

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

Weitere gute und unterschiedliche Baugruppen für Sie, und lassen Sie dieses Jahr sogar den ehemaligen Ziegelstein für Sie singen.

Source: habr.com

Kommentar hinzufügen