最簡單的網絡廣播專欄“Kodi”或“樹莓派”磚頭的救贖

最簡單的網絡廣播專欄“Kodi”或“樹莓派”磚頭的救贖

基本前提條件:

  1. 有一塊舊的未使用的第一代 Raspberry Pi 板;
  2. 該板作為自重放置在櫃子上且未使用 - “磚”板;

我想收到什麼:

  1. 在某個時間點(例如,根據心情)
    板子不再是一塊“磚塊”,並且插入了一張神奇的記憶卡;
  2. 將乙太網路電纜和普通家用揚聲器或耳機的插頭連接到該板上;
  3. 通電後,原來的「磚頭」— 詩人

大意:

  1. 任何設定的手勢數量最少,在最理想的情況下,我們只連接「乙太網路」電纜、電源和揚聲器,不做其他任何事情,從這個詞 「完全」;
  2. 前一個「Brick」開箱即用,支援例如 20 個網路廣播電台,可以透過按滑鼠滾輪或在特定的 GPIO 引腳上循環切換(連接兩根線並短接它們(我從小的夢想) );
  3. 透過無線電通道進行控制,此無線電通道可以是普通的無線電滑鼠;
  4. 採取現成的系統並將發行版組裝到「Yocto Project」中
    那些。 像往常一樣,我們不會對你做任何事,因為一切都已經完成了。
    (只需在另一邊放置一個外部觀察者就足夠了 “電視”);

描述

最簡單的網路廣播欄位“KODI”
該組件專為較舊的 Raspberry Pi 1 板設計
(壁櫥某處積滿灰塵,但已準備好做更多工作)

預設情況下,使用 3 個網路廣播電台的 m8u12 清單。

假設該板在沒有 HDMI 輸出的情況下工作,要關閉它,您只需從插座上拔下電源適配器即可。 作為超現代的無線控制面板,您可以使用超級無線電滑鼠(或連接帶有尾巴的普通灰色滑鼠)。

打開後,透過 DHCP 協定配置預設網路接口,並播放清單中最後記憶的廣播電台,使用普通滑鼠控製播放音量:
(終於任命你的老鼠為「管理長」了,恭喜它,它值得)

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

新增您自己的網路廣播電台列表
您可以隨時連接電視上的 HDMI 電纜
並使用Kodi 17.6的標準圖形介面
(關閉開發板,連接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", но это уже совсем другая история ...
    

還有一個主要缺點:

“必須完成”,即我需要度過N個晚上
(通常是下班後,這是最沒有效率的時間,這時候大腦不再思考,它通常會睡覺)

然而,我之前寫過關於哈布雷關於多媒體中心的文章 科迪和約克托 項目
繼續以同樣的方式繼續下去的機會壓倒了我的研究衝動。 下一章將詳細介紹這一點。

將 Kodi 變成網路廣播揚聲器

為了添加我需要的功能,我將在配方中添加另一種方法來建立上一個中描述的發行版 文章 參見文件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}
}

這些方法旨在以一個原始檔案的形式形成分發映像之前修改根檔案系統,該檔案使用以下命令寫入記憶卡 dd

這是這樣完成的:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_歡迎;”

總之,Kodi 17.6的主設定檔中,「三點」改變

  • 用於啟動最後選擇的電視頻道的配置;
  • 音訊輸出配置,只有類比音訊輸出始終連接;
  • 禁用自動更新;
  • 注:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

每個項目的更詳細的操作順序:

1) 點選螢幕左上角的齒輪圖標
並選擇“PVR 和電視設定”(帶有兩個喇叭的電視圖像)
然後在選單左側選擇“播放”,然後在中間部分選擇“常規”
在下拉清單中選擇“啟動時從上一個頻道繼續”
選擇“前景”設置

或者更清楚地說:

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

2) 點選螢幕左上角的「齒輪」圖示並選擇項目:

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

3) 點選螢幕左上角的「齒輪」圖示並選擇項目:

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

兩年來我看電視的方式都是錯的。

我必須向你承認,兩年來我仍然沒有學會如何正確地看電視。

我通常在廚房看電視。 Raspberry Pi 2B 板連接到電視,乙太網路和 HDMI 連接器連接到板。 該板透過常規 USB 電纜供電,該電纜插入電視的 USB 端口,即事實上,使用標準遙控器開啟電視會為 Raspberry Pi 板供電,透過遙控器關閉電視也會立即重設 Raspberry Pi 板的電源。

是的,我很清楚這是不可能的,因為Kodi媒體中心(ext3)的根檔案系統以正常的讀取/寫入模式運作。 但我是個懶人,首先我決定檢查我可以像這樣關閉系統多久,直到它完全停止加載,但不幸的是,兩年後我從未成功做到這一點(也許我只是幸運,我不知道)。

而且在我看來,如果這種模式適合我的電視,那麼它也適合“簡單的網絡收音機音箱”,而且由於我強行禁用了Kodi插件的自動更新,文件系統故障的可能性就會變得更大較少的。 到目前為止我還沒有發現這有什麼問題

注:

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

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

文中介紹的「網路廣播音箱」發行版是一款家用發行版,而對於家用發行版來說最重要的是一款漂亮的GUI。 在我看來,教一個普通用戶在控制台中輸入任何難以理解的魔法命令是非常困難或幾乎不可能的,而且他甚至不知道這個詞。 但是請使用 GUI。

這也許是我支持非主機發行版的主要論點。 Kodi 的暖燈圖形使用者介面,並不是真正需要的,但它就在那裡。
(我也完全忘記提及 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秒或更長),
    0 右按鈕 ID,1 左按鈕 ID

有關設定滑鼠事件的更多詳細資訊:

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 Desktop”
  • 啟動系統
  • 連接您的 Wifi USB 轉接器
  • 啟動網路管理器並嘗試連接到您的 WiFi 接入點
  • 如果一切正常並且您的互聯網連接穩定,那麼您的適配器得到了很好的支持,您可以繼續在專門的發行版中連接此適配器,並且可能與其他版本的內核連接
    (如果沒有,那就不,唉,最好不要嘗試)

支援 Raspberry PI 中的外部 Wifi 適配器

為了讓 WiFi 適配器在 Linux 中正常運作,我們需要兩件事:
1) Linux 核心對特定 Wifi 適配器的支持
2) 系統中存在針對特定 Wifi 適配器的核心模組

以 TP-Link TL-WN722N 適配器為例。 它有一個非常宏偉的天線。
讓我們找到該板工作的晶片組 - 對我來說它是“AR9271”, 筆記:

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

現在讓我們在核心配置中找到負責AR9271晶片組驅動的參數名稱,最好尋找「AR9271 catee.net」單字的組合
     其中「cateee.net」是一個很酷的網站,描述了 Linux 核心模組的配置

我們立即找到內核配置的名稱—— 配置_ATH9K_HTC
以及我們需要的核心模組的名稱 ath9k_htc

然後只需在配置片段檔案中指定所需模組的名稱即可
Linux kernel => Recipes-kernel/linux/files/rbpi.cfg,新增以下行:
CONFIG_ATH9K_HTC=米

因此,將來您可以將任何附加裝置連接到您的系統(當然,如果 Linux 核心已經支援的話)

如果你是哈布拉極客該怎麼辦 - 設計師

你創造了最酷的東西,例如 這裡 或者您是一名學生並夢想創造類似的東西。

順便說一下,您可以在速賣通上購買某種用於RPI 的觸控屏,在那裡訂購合適的電池,將其全部連接到Raspberry Pi 1,2 或3 板(最好是3,因為它有內置Wifi),選擇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)}"

  如果零中單處理器核心導致的GUI Kodi 17.6 的響應速度對您來說似乎很神秘,那麼您可以欺騙您的耳朵並構建一個較舊但非常快的版本,例如Kodi 15.2,在這方面它更加「友善」 (有時遺產可以解決一切)

不幸的是,我沒有主機板,所以我無法檢查,但我覺得它應該可以工作。

簡要組裝說明

    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" случайны.
    

更多精彩、不一樣的集會等你來,今年甚至讓以前的磚頭為你唱歌。

來源: www.habr.com

添加評論