最も単純なインターネットラジオコラム「Kodi」または「Raspberry」レンガの救済

最も単純なインターネットラジオコラム「Kodi」または「Raspberry」レンガの救済

基本的な前提条件:

  1. 古い未使用の第一世代 Raspberry Pi ボードがあります。
  2. ボードは重りとしてキャビネット上に置かれ、使用されません - 「レンガ」ボード。

何を受け取りたいですか:

  1. 特定の時点で (たとえば、気分によって)
    ボードは「レンガ」ではなくなり、魔法のメモリーカードがボードに挿入されます。
  2. イーサネット ケーブルと、通常の家庭用スピーカーまたはヘッドフォンのプラグがボードに接続されます。
  3. 電力が供給された後、以前の「キルピッチ」 - 歌う

本旨:

  1. あらゆる設定におけるジェスチャの最小数。最も理想的なケースでは、「イーサネット」ケーブル、電源、スピーカーのみを接続し、他には何もしません。 「まったく」;
  2. たとえば、前者の「ブリック」をすぐに使用できる、20 のインターネット ラジオ局などをサポートしています。これらの円形の切り替えは、マウス ホイールを押すか、特定の GPIO ピン (XNUMX 本のワイヤを接続し、それらを閉じてください(子供の頃からの夢))。
  3. 制御は無線チャネルを介して実行され、この無線チャネルには通常の無線マウスを使用できます。
  4. 既製のシステムを利用して、「Yocto プロジェクト」で配布キットを組み立てます
    それらの。 いつものように、すべてがすでに完了しているため、私たちはあなたとは何もしません。
    (外部の観察者を反対側に配置するだけで十分です) "テレビ");

説明

一番シンプルなインターネットラジオコラム「KODI」
古い Raspberry Pi 1 ボード用に設計されたアセンブリ
(クローゼットのどこかに埃をかぶっているが、もっと働く準備ができている人はいる)

デフォルトでは、3 のインターネット ラジオ局の m8u12 リストが使用されます。

ボードは HDMI 出力なしで動作することを想定しており、HDMI 出力をオフにするには、電源アダプターをコンセントから抜くだけです。 また、超最新のワイヤレス リモコンとして、スーパー ラジオ マウスを使用することもできます (または、尾の付いた通常のグレーのマウスを接続することもできます)。

オンにすると、デフォルトで DHCP プロトコル経由でネットワーク インターフェイスが設定され、リストに最後に記憶されたラジオ局が再生され、再生音量は通常のマウスで制御されます。
(最後にあなたのマウスを「管理責任者」に任命し、彼女を祝福します。彼女はそれに値します)

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

独自のインターネット ラジオ局のリストを追加するには
HDMI ケーブルでいつでもテレビに接続できます
ストックのKodi 17.6 GUIを使用します
(ボードの電源を切り、HDMI を接続し、電源アダプターをオンにします)

Kodi メインメニュー => 「アドオン」 => 「マイアドオン」
          => 「PVR クライアント」 => 「PVR IPTV シンプルクライアント」

初期実装

(可能)
「インターネットラジオコラム」を作ろうと決めた当初、次のような計画を立てていました。

  • Yocto プロジェクトにおけるミニマリストのコンソール配布。
  • オーディオ ストリームは GStreamer を通じて再生されます。
  • ネットワーク インターフェイスは DHCP 経由で構成されます。

そして、このソリューションには多くの利点があります。

  1. 十分な速さ (電源供給から動作モードに戻るまで 30 ~ 40 秒)。
  2. 十分な信頼性 (プログラムが少なく、障害点が少ない)。
  3. コンソール配布を読み取り専用モードにするのがはるかに簡単です
    それらの。 プログラムはルート ファイルシステムに何も書き込みません
    (私の考えでは、SDHC メディア上のファイル システムが障害の最初の候補です)。

注意:

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

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

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

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

そして、大きな欠点が XNUMX つあります。

「それは行われなければならない」つまりN回の夜を過ごす必要がある
(通常は仕事の後ですが、これが最も効率の悪い時間です。この時間には脳はもう考えておらず、通常は眠っています)

それでも、私はマルチメディア センターについてハブレに関する前回の記事を書きました コディとヨクト プロジェクト
そして同じように続ける機会が私の探究衝動を克服しました。 これについては次の章で詳しく説明します。

Kodiをインターネットラジオスピーカーに変える

必要な機能を実装するために、前に説明したディストリビューション ビルド レシピにメソッドを XNUMX つ追加します。 статье ファイル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}
}

このメソッドは、コマンドによってメモリ カードに書き込まれる単一の RAW ファイルの形式で配布イメージを形成する前に、ルート ファイル システムを変更することを目的としています。 dd

これは次のようにして行われます。
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"

つまり、Kodi 17.6のメイン設定ファイルでは、「XNUMXつのポイント」が変更されます

  • 最後に選択した TV チャンネルの設定を起動します。
  • オーディオ出力構成。アナログオーディオ出力のみが常に接続されます。
  • 自動更新を無効にする。
  • 注意:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

各項目のアクションのより詳細なシーケンス:

1) 画面の左上隅にある「歯車」アイコンをクリックします
を選択し、「PVR と TV 設定」を選択します (XNUMX つのホーンが付いた TV のイメージ)
さらにメニューの左側で「再生」項目を選択し、中央セクションで「一般」を選択します。
ドロップダウンリストから「起動時に最後のチャンネルから続行」を選択します
「前景」設定を選択する

またはもっと明確に:

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

2) 画面の左上隅にある「歯車」アイコンをクリックし、項目を選択します。

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

3) 画面の左上隅にある「歯車」アイコンをクリックし、項目を選択します。

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

私はXNUMX年間、なんと間違ったテレビを見てきたことか。

正直に告白しなければなりませんが、私はこの XNUMX 年間、テレビの正しい見方を学んでいませんでした。

私はいつもキッチンでテレビを見ます。 Raspberry Pi 2B ボードが TV に接続され、イーサネット コネクタと HDMI コネクタがボードに接続されています。 ボードには、テレビの USB ポートに接続された通常の USB ケーブルを介して電力が供給されます。 実際、純正のリモコンを使用してテレビの電源を入れると、Raspberry Pi ボードにも電力が供給され、リモコンでテレビの電源を切ると、Raspberry Pi ボードの電源もすぐにリセットされます。

はい、Kodi マルチメディア センター (ext3) のルート ファイル システムは通常の読み取り/書き込みモードで機能するため、これが実行できないことは十分に承知しています。 しかし、私は怠け者なので、まず、システムの電源を切るのにどれくらい時間がかかるか、ロードがまったく停止するまでかかるかを確認することにしましたが、残念なことに、XNUMX年間これを行うことができませんでした(おそらく私は運が良かっただけです、わかりません)。

私の意見では、このモードがテレビに適しているのであれば、「シンプルなインターネット ラジオ スピーカー」にも適しています。Kodi プラグインの自動更新を強制的にオフにしたため、ファイル システム障害が発生する可能性が高くなります。少ないも。 今のところ問題はないと思います。

注意:

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

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

記事で解説している配信キット「インターネットラジオスピーカー」は家庭用のものですが、家庭用配信キットで最も重要なのは美しいGUIです。 私の意見では、一般のユーザーに、理解できない魔法のコマンドをコンソールに入力する方法を教えるのは非常に困難、またはほぼ不可能であり、ユーザーはそのような言葉さえ知りません。 これが GUI です。

そしてこれがおそらく、非コンソール版ディストリビューションを支持する私の主な主張です。 KodiのウォームランプGUI、実際には必要ありませんが、そこにあります。
(また、Kodi は、Yatse アプリケーションをインストールすることでスマートフォンなどからリモートで制御できることにも言及するのを完全に忘れていましたが、おそらく誰かにとって、これはプラスになるでしょう)

Kodi 設定、マウス制御用

そして今度はロケット

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

この構成は、次の要素のグローバル イベントをオーバーライドします。

  • マウスホイールを前方にスクロールする
  • マウスホイールでスクロールして戻る
  • マウスの中ボタンを押す
  • マウスのロングクリック(3秒以上)の処理、
    右ボタン ID 0、左ボタン ID 1

マウスイベントの設定に関する詳細情報:

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

ケーブル システムが届かなかった場合の対処方法

「でも、家には空きイーサネット ポートがない(または、まったく持っていなかった)」と古い Raspberry Pi 1 ボードを所有している幸せなオーナーの中には、こう叫ぶ人もいるかもしれません (おそらく、そのボードは研究用に購入され、クローゼットに眠ったままになっているでしょう)。

また、ボードには Wifi が内蔵されていないため、イーサネット接続がなければ、あまり機能しません。

もちろん、イーサネットなしで Raspberry Pi 1 ボードを使用する可能性もありますが、それにはある程度の努力が必要になります。 通常、そのようなことは、何か新しいことの研究の一部としてのみ行うのが興味深いものです。 これはカスタムジョブではありません。

そこで、イーサネットのないボードの仮想的な使用例を考えてみましょう。

考慮事項に基づいて、外部 USB - Wifi アダプターを接続できます。
アダプターが Linux 上で正常に動作するはずであること

注意:

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

すでに USB Wifi アダプターをお持ちの場合は、次のように Linux で正常に動作するかどうかを確認できます。

  • 一般的な Linux ディストリビューションをインストールする
    「Ubuntu デスクトップ」などの汎用
  • システムを起動します
  • Wifi USB アダプターを接続します
  • ネットワークマネージャーを起動し、WiFiホットスポットへの接続を試みます。
  • すべてが正常に動作し、インターネット接続が安定している場合、アダプターは十分にサポートされており、このアダプターを専用のディストリビューションで、場合によっては他のカーネル バージョンで接続する作業を続行できます。
    (そうでない場合は、残念ながら、試さない方が良いです)

「Raspberry PI」での外部Wifiアダプターのサポート

Linux で WiFi アダプターが正しく動作するには、次の XNUMX つのことが必要です。
1) 特定の Wifi アダプターに対する Linux カーネルのサポート
2) 特定の Wifi アダプター用のカーネル モジュールがシステム内に存在すること

TP-Link TL-WN722N アダプターを例に挙げてみましょう。 彼は素晴らしいアンテナを持っています。
ボードが動作するチップセットを見つけてみましょう - 私はそれを「AR9271」としています。 注記:

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

次に、AR9271 チップセット ドライバーを担当するカーネル構成内のパラメーターの名前を見つけてみましょう。「AR9271 cateee.net」という単語の組み合わせを探すのが最善です。
     ここで、「cateee.net」は、Linux カーネル モジュールの構成を説明するクールなサイトです。

カーネル構成の名前がす​​ぐにわかります。 CONFIG_ATH9K_HTC
必要なカーネルモジュールの名前 ath9k_htc

次に、構成フラグメント ファイルで目的のモジュールの名前を指定するだけです。
Linux kernel => Recipes-kernel/linux/files/rbpi.cfg に次の行を追加します。
CONFIG_ATH9K_HTC=m

したがって、将来的には、システムに追加の機器を接続できるようになります (もちろん、Linux カーネルですでにサポートされている場合)。

ハブラオタクの場合はどうすればよいか - コンストラクター

そして、あなたは次のような最高にクールなものを作成します ここで あるいは、あなたは学生で、同様のものを作成することを夢見ています。

次に、率直に、aliexpressでRPI用のタッチスクリーンスクリーンのようなものを入手し、そこで適切なバッテリーを注文し、それをすべてRaspberry Pi 1,2、3、または3ボード(Wifiが内蔵されているため、XNUMXの方が良い)に接続できます。 Kodi でタッチ スクリーン用に設計されたグラフィック デザイン テーマ インターフェイスを選択すると、出来上がり => シンプルなオーディオ プレーヤーが入手できます。 もちろんかなりかさばりますが、あなたのものになります。

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

  Zero の 17.6 つのプロセッサ コアによる Kodi 15.2 GUI の応答性が不思議に思われる場合は、耳でフェイントをして、古いけれども非常に高速なバージョン (たとえば Kodi XNUMX) を構築すると、より「フレンドリー」になります。この点に関しては(レガシーがすべてを決定する場合もあります)

残念ながら基板を持っていないので確認できませんが、感覚的には動くはずです。

簡単な組み立て手順

    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
    

より詳細な組み立て説明書
および microSDHC カードへの記録については、を参照してください。 前の記事で

追記

もちろん、インターネットラジオコラムのアイデアは典型的なものであり、誰もが知っており、Habréではこのテーマに関する多くの記事を見つけることができます。 ここで

また、既製のソリューションの要件を調整しただけだと思う​​かもしれません。 これに対しては、正直に正直に「ノー」と言い返すことができます。

アーヴェイ氏の物語

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

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

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

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

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

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

今年は、より良い、さまざまな集会を皆さんに提供し、かつてのレンガでも皆さんのために歌ってもらいましょう。

出所: habr.com

コメントを追加します