Kolom radio Internet paling sederhana "Kodi" atau penyelamatan batu bata "Raspberry".

Kolom radio Internet paling sederhana "Kodi" atau penyelamatan batu bata "Raspberry".

Prasyarat dasar:

  1. Ada papan Raspberry Pi generasi pertama yang tidak terpakai;
  2. Papan terletak di kabinet sebagai beban mati dan tidak digunakan - papan “Bata”;

Apa yang ingin saya terima:

  1. Pada titik waktu tertentu (misalnya, menurut suasana hati)
    papan tidak lagi menjadi "Bata", dan kartu memori ajaib dimasukkan ke dalamnya;
  2. Kabel Ethernet dan colokan dari speaker atau headphone rumah tangga biasa disambungkan ke papan;
  3. Setelah listrik diterapkan, bekas “Bata” - bernyanyi

Ide utama:

  1. Jumlah minimum gerakan untuk pengaturan apa pun, dalam kasus yang paling ideal, kami hanya menghubungkan kabel "Ethernet", daya dan speaker, dan tidak melakukan apa pun, dari kata "sama sekali";
  2. “Brick” yang pertama di luar kotak mendukung, misalnya, 20 stasiun radio Internet, yang dapat dialihkan dalam lingkaran dengan menekan roda mouse atau pada pin GPIO tertentu (menghubungkan dua kabel dan memendekkannya (impian saya sejak kecil) );
  3. Kontrol dilakukan melalui saluran radio, dan saluran radio ini dapat berupa mouse radio biasa;
  4. Ambil sistem yang sudah jadi dan kumpulkan distribusinya ke dalam "Proyek Yocto"
    itu. seperti biasa, kami tidak akan melakukan apa pun kepada Anda, karena semuanya sudah dilakukan.
    (cukup menempatkan pengamat luar di sisi lain "TELEVISI");

Описание

Kolom Radio Internet paling sederhana “KODI”
Perakitan ini dirancang untuk papan Raspberry Pi 1 yang lebih lama
(mengumpulkan debu di suatu tempat di lemari, tetapi siap melakukan lebih banyak pekerjaan)

Secara default, daftar m3u8 berisi 12 stasiun radio Internet digunakan.

Diasumsikan bahwa papan berfungsi tanpa output HDMI, dan untuk mematikannya Anda hanya perlu mencabut adaptor daya dari stopkontak. Dan sebagai panel kontrol nirkabel ultra-modern, Anda dapat menggunakan mouse radio super (atau menghubungkan mouse abu-abu biasa dengan ekor).

Saat dihidupkan, antarmuka jaringan default dikonfigurasi melalui protokol DHCP dan stasiun radio terakhir yang diingat dari daftar diputar, volume pemutaran dikontrol dengan mouse biasa:
(akhirnya tunjuk mouse Anda sebagai "kepala manajemen", dan ucapkan selamat, ia layak mendapatkannya)

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

Untuk menambahkan daftar stasiun radio Internet Anda sendiri
Anda selalu dapat menyambungkan kabel HDMI dari TV Anda
dan menggunakan antarmuka grafis standar Kodi 17.6
(matikan papan, sambungkan HDMI dan hidupkan adaptor daya)

Menu utama Kodi => “Add-on” => “Add-on saya”
          => “Klien PVR” => “Klien Sederhana PVR IPTV”

Implementasi awal

(mungkin)
Awalnya, ketika saya memutuskan untuk membuat “Kolom Radio Internet”, saya merencanakan hal berikut:

  • Distribusi konsol minimalis di Proyek Yocto;
  • Aliran audio diputar melalui GStreamer;
  • Antarmuka jaringan dikonfigurasi melalui DHCP;

Dan solusi ini memiliki sejumlah keunggulan:

  1. Cukup cepat (membutuhkan 30-40 detik untuk mencapai mode pengoperasian dari catu daya);
  2. Cukup dapat diandalkan (lebih sedikit program, lebih sedikit titik kegagalan);
  3. Distribusi konsol jauh lebih mudah untuk beralih ke mode read-only
    itu. program tidak menulis apa pun ke sistem file root
    (dan sistem file pada media SDHC, menurut pendapat saya, adalah kandidat pertama yang gagal);

Catatan:

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

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

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

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

Dan satu kelemahan utama:

“Itu harus dilakukan” yaitu. Saya perlu menghabiskan N malam
(biasanya sepulang kerja, dan ini waktu yang paling tidak efektif, saat ini otak sudah tidak berpikir lagi, biasanya tidur)

Namun, saya menulis artikel saya sebelumnya di Habré tentang pusat multimedia Kodi dan Yocto proyek
dan kesempatan untuk melanjutkan hal yang sama mengalahkan dorongan penelitian saya. Lebih lanjut tentang ini di bab berikutnya.

Mengubah Kodi menjadi pembicara radio Internet

Untuk menambahkan fungsionalitas yang saya perlukan, saya akan menambahkan metode lain ke resep untuk membangun distribusi yang dijelaskan pada metode sebelumnya Artikel lihat file mengamuk-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}
}

Cara-cara tersebut dimaksudkan untuk memodifikasi sistem file root sebelum membentuk image distribusi dalam bentuk satu file mentah, yang ditulis ke kartu memori dengan perintah dd

Ini dilakukan dengan cara ini:
ROOTFS_POSTPROCESS_COMMAND += "tambahkan_radio_guisettings; off_kodi_selamat datang;"

Singkatnya, di file konfigurasi utama Kodi 17.6, “tiga poin” berubah

  • Konfigurasi untuk meluncurkan saluran TV yang terakhir dipilih;
  • Konfigurasi output Audio, hanya output audio analog yang selalu terhubung;
  • Nonaktifkan pembaruan otomatis;
  • Catatan:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

urutan tindakan yang lebih rinci untuk setiap item:

1) Klik ikon roda gigi di sudut kiri atas layar
dan pilih “Pengaturan PVR dan TV” (gambar TV dengan dua tanduk)
lalu di sisi kiri menu, pilih “Pemutaran”, dan di bagian tengah “Umum”
pilih “Lanjutkan dari saluran terakhir saat startup” di daftar drop-down
memilih pengaturan "Latar Depan".

atau lebih jelasnya:

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

2) Klik ikon “roda gigi” di sudut kiri atas layar dan pilih item:

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

3) Klik ikon “roda gigi” di sudut kiri atas layar dan pilih item:

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

Betapa saya telah menonton TV dengan cara yang salah selama dua tahun.

Harus saya akui kepada Anda bahwa dalam dua tahun saya masih belum belajar cara menonton TV yang benar.

Saya biasanya menonton TV di dapur. Papan Raspberry Pi 2B tersambung ke TV, dan konektor Ethernet dan HDMI tersambung ke papan. Papan ini diberi daya melalui kabel USB biasa, yang dicolokkan ke port USB TV, mis. nyatanya, menyalakan TV menggunakan remote control standar menyuplai daya ke board Raspberry Pi, dan mematikan TV dari remote control juga langsung mereset daya dari board Raspberry Pi.

Ya, saya sangat menyadari bahwa hal ini tidak dapat dilakukan, karena sistem file root dari pusat media Kodi (ext3) berfungsi dalam mode baca/tulis normal. Tapi saya orang yang malas, dan pertama-tama saya memutuskan untuk memeriksa berapa lama saya bisa mematikan sistem seperti ini, sampai berhenti memuat sepenuhnya, tapi sayangnya, setelah dua tahun saya tidak pernah berhasil melakukan ini (mungkin saya hanya beruntung, Saya tidak tahu).

Dan menurut saya, jika mode ini cocok untuk TV saya, maka mode ini juga cocok untuk "speaker Radio Internet sederhana", dan karena saya secara paksa menonaktifkan pembaruan otomatis plugin Kodi, kemungkinan kegagalan sistem file akan menjadi lebih besar. lebih sedikit. Sejauh ini saya tidak melihat ada masalah dengan hal ini

Catatan:

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

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

Distribusi “speaker radio Internet” yang dijelaskan dalam artikel ini adalah distribusi rumah tangga, dan yang paling penting untuk distribusi rumah tangga adalah GUI yang indah. Menurut pendapat saya, sangat sulit atau hampir tidak mungkin untuk mengajari pengguna biasa memasukkan perintah sihir yang tidak dapat dipahami ke dalam konsol, dan dia bahkan tidak tahu kata itu. Tapi GUI-nya, tolong.

Dan ini mungkin argumen utama saya yang mendukung distribusi non-konsol. Antarmuka pengguna grafis lampu hangat Kodi, tidak terlalu diperlukan, tetapi ada.
(Saya juga benar-benar lupa menyebutkan bahwa Kodi dapat dikontrol dari jarak jauh, misalnya dari smartphone, dengan menginstal aplikasi Yatse, dan mungkin bagi sebagian orang hal ini akan menjadi nilai tambah)

Konfigurasi Kodi untuk kontrol mouse

dan sekarang Roket

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

Konfigurasi ini mengesampingkan peristiwa global untuk elemen berikut:

  • gulir roda mouse ke depan
  • gulir roda mouse ke belakang
  • mengklik tombol tengah mouse
  • memproses klik mouse yang panjang (3 detik atau lebih),
    0 ID tombol kanan, 1 ID tombol kiri

Informasi lebih rinci tentang pengaturan peristiwa mouse:

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

Apa yang harus dilakukan jika sistem kabel tidak sampai kepada Anda

“Tetapi saya tidak memiliki port Ethernet gratis di rumah (atau tidak pernah memilikinya),” beberapa pemilik papan lama Raspberry Pi 1 mungkin berseru (mungkin papan tersebut dibeli untuk penelitian dan tetap tergeletak di lemari)

Dan karena board ini tidak memiliki Wifi internal, maka board ini tidak akan berfungsi dengan baik tanpa koneksi Ethernet.

Tentu saja, papan Raspberry Pi 1 dapat digunakan tanpa Ethernet, tetapi ini memerlukan usaha dari Anda. Biasanya hal-hal seperti itu menarik untuk dilakukan hanya sebagai bagian dari mempelajari sesuatu yang baru, yaitu. Ini bukan pekerjaan khusus.

Jadi, mari pertimbangkan kasus penggunaan hipotetis untuk board tanpa Ethernet:

Anda dapat menghubungkan adaptor USB - Wifi eksternal, dipandu oleh pertimbangan
bahwa adaptor harus bekerja dengan baik di Linux

Catatan:

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

Jika Anda sudah memiliki adaptor USB Wifi, Anda dapat memeriksa apakah adaptor tersebut berfungsi dengan baik di Linux sebagai berikut:

  • Instal beberapa distribusi Linux yang banyak digunakan
    tujuan umum, misalnya "Ubuntu Desktop"
  • Boot sistem
  • Hubungkan adaptor usb Wifi Anda
  • Luncurkan manajer jaringan dan coba sambungkan ke titik akses WiFi Anda
  • Jika semuanya berfungsi dengan baik dan koneksi Internet Anda stabil, maka adaptor Anda didukung dengan baik dan Anda dapat melanjutkan pekerjaan Anda menghubungkan adaptor ini dalam distribusi khusus dan mungkin dengan versi kernel lainnya
    (jika tidak, maka tidak, sayangnya, lebih baik tidak mencoba)

Dukungan untuk adaptor Wifi eksternal di Raspberry PI

Agar adaptor WiFi berfungsi dengan benar di Linux, kita memerlukan dua hal:
1) Dukungan kernel Linux untuk adaptor Wifi tertentu
2) Kehadiran modul kernel di sistem untuk adaptor Wifi tertentu

Ambil contoh adaptor TP-Link TL-WN722N. Ia memiliki antena yang luar biasa.
Mari kita temukan chipset tempat board tersebut berfungsi - bagi saya ini adalah "AR9271", catatan:

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

Sekarang mari kita cari nama parameter pada konfigurasi kernel yang bertanggung jawab untuk driver chipset AR9271, sebaiknya cari kombinasi kata “AR9271 catee.net”
     di mana "cateee.net" adalah situs keren yang menjelaskan konfigurasi modul kernel Linux

Kami segera menemukan nama konfigurasi kernel - CONFIG_ATH9K_HTC
dan nama modul kernel yang kita butuhkan ath9k_htc

dan kemudian tentukan saja nama modul yang diinginkan di file fragmen konfigurasi
Kernel Linux => resep-kernel/linux/files/rbpi.cfg, tambahkan baris:
CONFIG_ATH9K_HTC=m

Jadi, di masa depan Anda dapat menghubungkan peralatan tambahan apa pun ke sistem Anda (tentu saja, jika sudah didukung di kernel Linux)

Apa yang harus dilakukan jika Anda seorang habra geek - desainer

Dan Anda menciptakan hal-hal paling keren, seperti di sini atau Anda seorang pelajar dan bermimpi menciptakan sesuatu yang serupa.

Begitu saja, Anda dapat mengambil semacam layar Layar Sentuh untuk RPI di aliexpress, memesan baterai yang sesuai di sana, menghubungkan semuanya ke papan Raspberry Pi 1,2 atau 3 (sebaiknya 3, karena memiliki Wifi bawaan), pilih antarmuka tema desain grafis di Kodi, dirancang untuk layar sentuh dan voila => Anda bisa mendapatkan pemutar audio sederhana. Tentu saja ukurannya akan sangat besar, tetapi itu akan menjadi milik Anda.

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

  Jika responsivitas GUI Kodi 17.6 karena inti prosesor tunggal di Zero tampak misterius bagi Anda, maka Anda dapat menipu telinga Anda dan membuat versi yang lebih lama, tetapi sangat cepat, misalnya Kodi 15.2, yang lebih “ramah” dalam hal ini (terkadang warisan menyelesaikan segalanya)

Sayangnya, saya tidak punya papannya, jadi saya tidak bisa memeriksanya, tapi menurut saya papan itu akan berfungsi.

Instruksi Perakitan Singkat

    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
    

instruksi perakitan yang lebih rinci
dan merekam pada kartu microSDHC, lihat di artikel sebelumnya

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

Tentu saja, ide tentang pembicara radio Internet adalah tipikal, semua orang mengetahuinya dan di Habré Anda akan menemukan banyak artikel tentang topik ini, misalnya di sini

Dan Anda mungkin juga berpikir bahwa saya hanya menyesuaikan persyaratan dengan solusi yang sudah jadi. Terhadap hal ini saya dapat membantahnya dan mengatakan bahwa tidak, sejujurnya.

cerita Tuan Ervey

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

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

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

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

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

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

Lebih banyak pertemuan yang baik dan berbeda untuk Anda, dan biarkan bahkan batu bata sebelumnya bernyanyi untuk Anda tahun ini.

Sumber: www.habr.com

Tambah komentar