Эң жөнөкөй интернет-радио колонкасы "Kodi" же "Малинанын" кыштан куткарылышы

Эң жөнөкөй интернет-радио колонкасы "Kodi" же "Малинанын" кыштан куткарылышы

Негизги шарттар:

  1. Эски пайдаланылбаган биринчи муун Raspberry Pi тактасы бар;
  2. Такта өлүк салмак катары шкафта жатат жана колдонулбайт - "Кирпич" тактасы;

Сиз эмнени алгыңыз келет:

  1. Белгилүү бир убакта (мисалы, маанай боюнча)
    такта "Кыш" болбой калат жана ага сыйкырдуу эстутум картасы киргизилет;
  2. Тактага Ethernet кабели жана кадимки тиричилик колонкасынын же наушниктин сайгычы туташтырылган;
  3. Мурдагы "Кирпичти" кубаттагандан кийин - ырдайт

Негизги идея:

  1. Ар кандай жөндөө үчүн жаңсоолордун минималдуу саны, эң идеалдуу учурда, биз бир гана "Ethernet" кабелин, кубаттуулукту жана динамиктерди туташтырабыз жана сөздөн башка эч нерсе кылбайбыз. "таптакыр";
  2. Мисалы, биз мурунку "Кирпичти" кутудан чыгарабыз, мисалы, 20 Интернет радиостанциясын колдойбуз, аларды которуштурууну чычкандын дөңгөлөгүн басып же белгилүү бир GPIO пинине илип коюуга болот (эки зымды туташтырыңыз жана аларды жабуу (менин бала кезимдеги кыялым));
  3. Башкаруу радиоканал аркылуу ишке ашырылат жана бул радиоканал кадимки радио чычкан болушу мүмкүн;
  4. Даяр системаны алыңыз, бөлүштүрүү комплектин "Yocto долбооруна" чогултуңуз
    ошол. Адаттагыдай эле, биз сиз менен эч нерсе кылбайбыз, анткени баары жасалган.
    (башкы тарапка сырттан байкоочу коюу жетиштүү "ТВ");

баяндоо

Эң жөнөкөй Интернет радио тилкеси "KODI"
Эски Raspberry Pi 1 такталары үчүн иштелип чыккан
(шкафтын бир жерине чаң чогултуу, бирок ким көбүрөөк иштөөгө даяр)

3 Интернет радиостанцияларынын m8u12 тизмеси демейки боюнча колдонулат.

Бул такта HDMI чыгышы жок иштейт деп болжолдонууда жана аны өчүрүү үчүн жөн гана розеткадан кубат адаптерин сууруп коюңуз. Ал эми ультра заманбап зымсыз алыстан башкаруучу катары сиз супер радио чычканыңызды колдоно аласыз (жакшы же кадимки боз чычканды куйругу менен туташтырыңыз).

Иштетилгенде, тармак интерфейси демейки боюнча DHCP протоколу аркылуу конфигурацияланат жана тизмедеги акыркы жаттаган радиостанция ойнотулат, ойнотуу көлөмү кадимки чычкан аркылуу башкарылат:
(акыры чычканыңызды "менеджменттин башчысы" кылып дайындаңыз жана аны куттуктаңыз, ал татыктуу)

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

Интернет радиостанцияларыңыздын тизмесин кошуу үчүн
сиз дайыма сыналгыдан HDMI кабелин туташтыра аласыз
жана Kodi 17.6 GUI акциясын колдонуңуз
(тактаны өчүрүп, HDMI туташтырыңыз жана кубат адаптерин күйгүзүңүз)

Kodi негизги меню => "Кошумчалар" => "Менин кошумчаларым"
          => "PVR Clients" => "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 саны кечке өткөрүшүм керек
(көбүнчө жумуштан кийин, жана бул эң натыйжасыз убакыт, бул учурда мээ ойлонбой калат, көбүнчө уктайт)

Бирок, мен Мультимедиа борбору жөнүндө Habré боюнча мурунку макаламды жазган Коди жана Йокто долбоору
жана ошол эле багытта улантуу мүмкүнчүлүгү, менин чалгындоо импульсумду жеңди. Бул тууралуу кийинки бөлүмдө.

Коди интернет-радио спикерине айландыруу

Мага керектүү функцияны ишке ашыруу үчүн, мен мурунку сүрөттөлгөн бөлүштүрүү куруу рецептине дагы бир ыкманы кошом макала 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_welcome;"

Кыскача айтканда, Kodi 17.6 негизги конфигурация файлында "үч пункт" өзгөрөт

  • Акыркы тандалган телеканалдын конфигурациясын ишке киргизүү;
  • Аудио чыгаруу конфигурациясы, бир гана аналогдук аудио чыгаруу дайыма туташып турат;
  • Автоматтык жаңыртууларды өчүрүү;
  • Эскертүү:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

ар бир пункт үчүн аракеттердин деталдуу ырааттуулугу:

1) Экрандын жогорку сол бурчундагы "тиштүү" сөлөкөтүн чыкылдатыңыз
жана "PVR жана сыналгы жөндөөлөрүн" тандаңыз (эки мүйүздүү телевизордун сүрөтү)
андан ары менюнун сол жагында, "Ойнотуу" пунктун тандап, борбордук бөлүмдө "Жалпы"
ачылуучу тизмеден "Ишке киргенде акыркы каналдан улантууну" тандаңыз
"Алдынкы план" жөндөөсүн тандоо

же айкыныраак:

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

2) Экрандын жогорку сол бурчундагы "тиштүү" сөлөкөтүн чыкылдатып, нерсени тандаңыз:

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

3) Экрандын жогорку сол бурчундагы "тиштүү" сөлөкөтүн чыкылдатып, нерсени тандаңыз:

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

Эки жылдан бери телевизорду кантип туура эмес көрүп калдым.

Мен эки жылдын ичинде телевизорду туура көргөндү үйрөнө электигимди моюнга алышым керек.

Мен көбүнчө ашканада телевизор көрөм. Raspberry Pi 2B тактасы сыналгыга, ал эми Ethernet жана HDMI туташтыргычтары тактага туташтырылган. Такта телевизордун USB портуна туташтырылган кадимки USB кабели аркылуу иштейт. чындыгында, телевизорду алыстан башкаруу пультун колдонуу менен күйгүзүү, ошондой эле Raspberry Pi тактасын кубаттайт, ал эми сыналгыны пульттан өчүрүү да Raspberry Pi тактасынын кубаттуулугун дароо баштапкы абалга келтирет.

Ооба, мен муну жасоо мүмкүн эмес экенин жакшы билем, анткени Kodi мультимедиа борборунун тамыр файл системасы (ext3) менин кадимки окуу/жазуу режиминде иштейт. Бирок мен жалкоо адаммын жана башталгычтар үчүн системаны өчүрүү үчүн канча убакыт талап кылынарын текшерүүнү чечтим, ал такыр жүктөлбөй калганга чейин, бирок, тилекке каршы, эки жылдан бери мен муну кыла алган жокмун (балким мен жөн гана бактылуу болду, мен билбейм).

Менин оюмча, бул режим менин сыналгыма ылайыктуу болсо, анда ал "жөнөкөй Интернет-радио динамиги" үчүн да ылайыктуу жана мен Kodi плагиндерин автоматтык түрдө жаңыртууну мажбурлап өчүрүп койгондуктан, файл тутумунун бузулуу ыктымалдыгы болуп калат. дагы азыраак. Азырынча мен андан көйгөй көргөн жокмун.

Эскертүү:

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

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

Макалада сүрөттөлгөн "Интернет радио динамиктер" бөлүштүрүү комплекти үй тиричилигине таандык, ал эми тиричилик бөлүштүрүү комплекти үчүн эң маанилүүсү - бул кооз GUI. Менин оюмча, жөнөкөй колдонуучуну консолдо кандайдыр бир түшүнүксүз сыйкырдуу буйруктарда айдоону үйрөтүү абдан кыйын же дээрлик мүмкүн эмес, ал тургай, мындай сөздү билбейт. Жана бул жерде GUI, сураныч.

Бул, балким, консолдук эмес бөлүштүрүүнүн пайдасына менин негизги аргументим. Кодинин жылуу лампасынын GUI, бул чындыгында кереги жок, бирок ал бар.
(Ошондой эле, мен Коди алыстан башкарса болоорун унутуп калдым, мисалы, 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

Кабель системасы сизге келбесе, эмне кылуу керек

"Бирок менде үйдө бекер Ethernet порттору жок (же эч качан болгон эмес)," деп айтышы мүмкүн эски Raspberry Pi 1 такталарынын кээ бир бактылуу ээлери (балким, такта изилдөө үчүн сатылып алынган жана шкафта жаткандыр)

Жана тактада эч кандай камтылган Wifi жок болгондуктан, Ethernet туташуусу жок, ал анча функционалдык эмес.

Албетте, Raspberry Pi 1 тактасын Ethernetсиз колдонуу мүмкүнчүлүгү бар, бирок ал сизден бир аз күч-аракетти талап кылат. Адатта, мындай нерселерди жаңы нерсени изилдөөнүн бир бөлүгү катары гана жасоо кызыктуу, б.а. бул салттуу жумуш эмес.

Ошентип, Ethernet жок такта үчүн гипотетикалык колдонууну карап көрөлү:

Сиз тышкы 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 Wi-Fi адаптери бар болсо, анын Linux астында жакшы иштешин текшере аласыз:

  • Кээ бир популярдуу Linux бөлүштүрүүнү орнотуңуз
    "Ubuntu Desktop" сыяктуу жалпы максат
  • Системаны жүктөө
  • Wifi USB адаптериңизди туташтырыңыз
  • Тармак менеджерин иштетип, WiFi хотспотуңузга туташууга аракет кылыңыз
  • Эгер баары жакшы иштесе жана Интернет байланышыңыз туруктуу болсо, анда сиздин адаптериңиз жакшы колдоого алынган жана сиз бул адаптерди адистештирилген дистрибьютерде жана балким, ядронун башка версиялары менен туташтыруу боюнча ишиңизди уланта аласыз.
    (эгер андай болбосо, анда жок, тилекке каршы - аракет кылбаганыңыз жакшы)

"Raspberry PI" тышкы Wifi адаптерин колдоо

WiFi адаптери Linuxда туура иштеши үчүн: бизге эки нерсе керек:
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/linux/files/rbpi.cfg, линияны кошуңуз:
CONFIG_ATH9K_HTC=м

Ошентип, келечекте сиз тутумуңузга кандайдыр бир кошумча жабдууларды туташтыра аласыз (эгер, албетте, ал Linux ядросунда колдоого алынган болсо)

Эгер сиз Habra Geek - конструктор болсоңуз, эмне кылуу керек

Жана сиз эң сонун нерселерди жасайсыз бул жерде же сиз студентсиз жана окшош нерсени жаратууну кыялданасыз.

Андан кийин, сиз aliexpress'те RPI үчүн сенсордук экрандын кандайдыр бир түрүн алып, ал жерден ылайыктуу батарейканы заказ кылсаңыз, анын баарын Raspberry Pi 1,2 же 3 тактасына туташтырсаңыз болот (үчкө чейин жакшы, анткени анда орнотулган Wifi бар), сенсордук экран жана voila үчүн иштелип чыккан 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)}"

  Эгерде Kodi 17.6 GUI'нин нөлдөгү бир процессордун өзөктүүлүгү сизге табышмактуу болуп көрүнсө, анда сиз кулагыңыз менен финт жасап, эски, бирок абдан тез версиясын кура аласыз, мисалы 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 картасына жаздыруу, караңыз Мурунку макалада

жазыптыр

Албетте, интернет-радио колоннасынын идеясы типтүү, ал баарына белгилүү жана Хабреде сиз бул тема боюнча көптөгөн макалаларды таба аласыз, мисалы бул жерде

Жана мен даяр чечимге талаптарды жөндөп койдум деп ойлошуңар мүмкүн. Буга мен жооп кайтарып, чынымды айтсам, жок деп айта алам.

Эрвей мырзанын окуясы

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

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

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

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

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

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

Сен үчүн дагы жакшы жана ар түрдүү жыйындар, ал тургай, бул жылы силер үчүн мурдагы кирпич ырдай берсин.

Source: www.habr.com

Комментарий кошуу