Den enkleste internetradiosøjle "Kodi" eller frelsen af ​​"hindbær" mursten

Den enkleste internetradiosøjle "Kodi" eller frelsen af ​​"hindbær" mursten

Grundlæggende forudsætninger:

  1. Der er et gammelt ubrugt førstegenerations Raspberry Pi-kort;
  2. Brættet ligger på skabet som en dødvægt og bruges ikke - "Brick"-brættet;

Hvad jeg gerne vil modtage:

  1. På et bestemt tidspunkt (for eksempel alt efter humør)
    brættet ophører med at være en "Brick", og et magisk hukommelseskort indsættes i det;
  2. Et Ethernet-kabel og et stik fra en almindelig husstandshøjttaler eller hovedtelefoner er tilsluttet kortet;
  3. Efter strømforsyningen er den tidligere "Brick" - synger

Hoved ide:

  1. Det mindste antal bevægelser for enhver opsætning, i det mest ideelle tilfælde forbinder vi kun "Ethernet"-kablet, strøm og højttalere, og gør intet andet, fra ordet "overhovedet";
  2. Den tidligere "Brick" ud af kassen understøtter for eksempel 20 internetradiostationer, som kan skiftes i en cirkel ved at trykke på musehjulet eller på en specifik GPIO-pin (tilslut to ledninger og kortslut dem (min drøm siden barndommen) );
  3. Styringen udføres via en radiokanal, og denne radiokanal kan være en almindelig radiomus;
  4. Tag et færdiglavet system og saml distributionen til "Yocto Project"
    de der. som sædvanlig vil vi ikke gøre dig noget, da alt allerede er gjort.
    (det er nok bare at placere en ekstern observatør på den anden side "TV");

beskrivelse

Den enkleste internetradiosøjle "KODI"
Samlingen er designet til ældre Raspberry Pi 1 boards
(samler støv et sted på skabet, men som er klar til at udføre noget mere arbejde)

Som standard bruges m3u8-listen med 12 internetradiostationer.

Det antages, at kortet fungerer uden HDMI-udgang, og for at slukke det skal du blot trække strømadapteren ud af stikkontakten. Og som et ultramoderne trådløst kontrolpanel kan du bruge din super radiomus (eller tilslutte en almindelig grå med en hale).

Når den er tændt, konfigureres standardnetværksgrænsefladen via DHCP-protokollen, og den sidst gemte radiostation fra listen afspilles, afspilningslydstyrken styres med en almindelig mus:
(udnævn endelig din mus som "chef for ledelsen", og lykønsk den, den fortjener det)

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

For at tilføje din egen liste over internetradiostationer
du kan altid tilslutte et HDMI-kabel fra dit TV
og brug den grafiske standardgrænseflade i Kodi 17.6
(sluk kortet, tilslut HDMI og tænd for strømadapteren)

Kodi hovedmenu => “Add-ons” => “Mine tilføjelser”
          => “PVR Clients” => “PVR IPTV Simple Client”

Indledende implementering

(muligt)
Oprindeligt, da jeg besluttede at lave en "Internet Radio Column", planlagde jeg følgende:

  • Minimalistisk konsoldistribution i Yocto-projektet;
  • Lydstrømmen afspilles via GStreamer;
  • Netværksgrænsefladen konfigureres via DHCP;

Og denne løsning har en række fordele:

  1. Ret hurtigt (det tager 30-40 sekunder at nå driftstilstand fra strømforsyningen);
  2. Temmelig pålidelig (færre programmer, færre fejlpunkter);
  3. En konsoldistribution er meget nemmere at skifte til skrivebeskyttet tilstand
    de der. programmer skriver ikke noget til rodfilsystemet
    (og filsystemet på SDHC-medier er efter min mening den første kandidat til fiasko);

Note:

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

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

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

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

Og en væsentlig ulempe:

“Det skal gøres” dvs. Jeg skal bruge N antal aftener
(normalt efter arbejde, og dette er det mest ineffektive tidspunkt, på dette tidspunkt tænker hjernen ikke længere, den sover normalt)

Og alligevel skrev jeg min tidligere artikel på Habré om multimediecentret Kodi og Yocto projekt
og muligheden for at fortsætte i samme ånd overdøvede min forskningsimpuls. Mere om dette i næste kapitel.

Gør Kodi til en internetradiohøjttaler

For at tilføje den funktionalitet, jeg har brug for, vil jeg tilføje endnu en metode til opskriften på opbygningen af ​​distributionen beskrevet i den foregående artiklen se filen bersærk-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}
}

Metoderne er beregnet til at ændre rodfilsystemet, før der dannes et distributionsbillede i form af én rå fil, som skrives til hukommelseskortet med kommandoen dd

Dette gøres på denne måde:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"

Kort sagt, i hovedkonfigurationsfilen til Kodi 17.6 ændres "tre punkter".

  • Konfiguration til at starte den sidst valgte tv-kanal;
  • Lydudgangskonfiguration, kun analog lydudgang er altid tilsluttet;
  • Deaktiver automatiske opdateringer;
  • Note:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

en mere detaljeret rækkefølge af handlinger for hvert element:

1) Klik på tandhjulsikonet i øverste venstre hjørne af skærmen
og vælg "PVR og TV-indstillinger" (billede af et tv med to horn)
vælg derefter "Afspilning" i venstre side af menuen, og i det centrale afsnit "Generelt"
vælg "Fortsæt fra sidste kanal ved opstart" i rullelisten
ved at vælge indstillingen "Forgrund".

eller mere tydeligt:

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

2) Klik på "gear"-ikonet i øverste venstre hjørne af skærmen, og vælg emnet:

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

3) Klik på "gear"-ikonet i øverste venstre hjørne af skærmen, og vælg emnet:

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

Hvordan jeg har set tv på den forkerte måde i to år.

Jeg må indrømme over for dig, at jeg på to år stadig ikke har lært at se tv korrekt.

Jeg ser normalt fjernsyn i køkkenet. Et Raspberry Pi 2B-kort er tilsluttet tv'et, og Ethernet- og HDMI-stik er tilsluttet kortet. Boardet får strøm via et almindeligt USB-kabel, som sættes i USB-porten på TV'et, dvs. faktisk, at tænde for tv'et ved hjælp af standardfjernbetjeningen forsyner Raspberry Pi-kortet med strøm, og at slukke for tv'et fra fjernbetjeningen nulstiller også straks strømmen fra Raspberry Pi-kortet.

Ja, jeg er godt klar over, at dette ikke kan lade sig gøre, fordi rodfilsystemet i Kodi-mediecentret (ext3) fungerer i normal læse-/skrivetilstand. Men jeg er en doven person, og først besluttede jeg mig for at tjekke, hvor længe jeg kunne slukke for systemet sådan her, indtil det stoppede med at indlæse fuldstændigt, men desværre lykkedes det mig efter to år aldrig at gøre dette (måske var jeg bare heldig, jeg ved det ikke).

Og efter min mening, hvis denne tilstand var egnet til mit tv, så ville den også være egnet til en "simpel internetradiohøjttaler", og da jeg tvangsdeaktiverede automatisk opdatering af Kodi-plugins, vil sandsynligheden for en filsystemfejl blive jævn. mindre. Indtil videre kan jeg ikke se et problem med dette

Note:

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

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

"Internetradiohøjttalere"-distributionen beskrevet i artiklen er en husstandsfordeling, og det vigtigste for en husstandsdistribution er en smuk GUI. Efter min mening er det meget svært eller næsten umuligt at lære en almindelig bruger at indtaste uforståelige magiske kommandoer i konsollen, og han kender ikke engang ordet. Men GUI, tak.

Og dette er måske mit hovedargument til fordel for en ikke-konsol distribution. Den varme lampe grafiske brugergrænseflade af Kodi, den er ikke rigtig nødvendig, men den er der.
(Jeg glemte også helt at nævne, at Kodi kan fjernstyres, for eksempel fra en smartphone, ved at installere Yatse-applikationen, og måske vil dette for nogle være et plus)

Kodi-konfiguration til musestyring

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

Konfigurationen tilsidesætter globale hændelser for følgende elementer:

  • rul musehjulet frem
  • rul musehjulet tilbage
  • ved at klikke på den midterste museknap
  • behandling af lange museklik (3 sekunder eller mere),
    0 højre knap ID, 1 venstre knap ID

Mere detaljerede oplysninger om opsætning af musehændelser:

kodi.wiki/view/Alternative_keymaps_for_muse
kodi.wiki/view/Action_IDs
kodi.wiki/view/Window_IDs

Hvad skal man gøre, hvis kabelsystemet ikke når frem til dig

"Men jeg har ingen ledige Ethernet-porte derhjemme (eller har aldrig)," udbryder nogle af de glade ejere af gamle Raspberry Pi 1-kort (måske blev boardet købt til forskning og blev liggende på kabinettet)

Og da tavlen ikke har indbygget Wifi, er den ikke særlig funktionel uden en Ethernet-forbindelse.

Det er selvfølgelig muligt at bruge Raspberry Pi 1-kortet uden Ethernet, men det vil kræve en del indsats fra din side. Normalt er sådanne ting kun interessante at gøre som en del af at lære noget nyt, dvs. Dette er ikke specialarbejde.

Så lad os overveje en hypotetisk anvendelse af et kort uden Ethernet:

Du kan tilslutte en ekstern USB - Wifi-adapter, styret af hensynet
at adapteren skal fungere godt under Linux

Note:

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

Hvis du allerede har en USB Wifi-adapter, kan du kontrollere, om den fungerer godt under Linux som følger:

  • Installer en udbredt Linux-distribution
    generelle formål, for eksempel "Ubuntu Desktop"
  • Start systemet
  • Tilslut din Wifi usb-adapter
  • Start netværksadministrator, og prøv at oprette forbindelse til dit WiFi-adgangspunkt
  • Hvis alt fungerer godt, og din internetforbindelse er stabil, så er din adapter godt understøttet, og du kan fortsætte dit arbejde med at forbinde denne adapter i en specialiseret distribution og muligvis med andre versioner af kernen
    (hvis ikke, så nej, desværre, det er bedre ikke engang at prøve)

Understøttelse af ekstern Wifi-adapter i Raspberry PI

For at WiFi-adapteren skal fungere korrekt i Linux, har vi brug for to ting:
1) Linux-kerneunderstøttelse til specifik Wifi-adapter
2) Tilstedeværelsen af ​​et kernemodul i systemet til en specifik Wifi-adapter

Tag for eksempel TP-Link TL-WN722N-adapteren. Den har en ganske enkelt pragtfuld antenne.
Lad os finde det chipsæt, som kortet fungerer på - for mig er det "AR9271", Bemærk:

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

Lad os nu finde navnet på parameteren i kernekonfigurationen, der er ansvarlig for AR9271-chipsætdriveren, det er bedst at kigge efter kombinationen af ​​ord "AR9271 catee.net"
     hvor "cateee.net" er et fedt websted, der beskriver konfigurationer af Linux-kernemoduler

Vi finder straks navnet på kernekonfigurationen - CONFIG_ATH9K_HTC
og navnet på det kernemodul, vi skal bruge ath9k_htc

og derefter blot angive navnet på det nødvendige modul i konfigurationsfragmentfilen
Linux-kerne => recipes-kernel/linux/files/rbpi.cfg, tilføj linjen:
CONFIG_ATH9K_HTC=m

Således kan du i fremtiden tilslutte yderligere udstyr til dit system (vel, selvfølgelig, hvis det allerede er understøttet i Linux-kernen)

Hvad skal du gøre, hvis du er en habra-nørd - designer

Og man skaber de fedeste ting, som f.eks her eller du er studerende og drømmer om at skabe noget lignende.

Lige umiddelbart kan du tage en slags Touch Screen-skærm til RPI på aliexpress, bestille et passende batteri der, tilslutte det hele til et Raspberry Pi 1,2 eller 3 board (helst 3, da det har indbygget Wifi), vælg en grafisk design-tema-grænseflade i Kodi, designet til en berøringsskærm og voila => du kan få en simpel lydafspiller. Selvfølgelig vil det være ret omfangsrigt, men det bliver dit.

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

  Hvis reaktionsevnen af ​​GUI Kodi 17.6 på grund af den enkelte processorkerne i Zero virker mystisk for dig, så kan du snyde dine ører og bygge en ældre, men meget hurtig version, for eksempel Kodi 15.2, den er mere "venlig" i denne henseende (nogle gange løser arv alt)

Desværre har jeg ikke tavlen, så jeg kan ikke tjekke, men jeg føler, at det burde virke.

Kort monteringsvejledning

    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
    

mere detaljerede monteringsvejledninger
og optagelse på et microSDHC-kort, se i den forrige artikel

efterskrift

Selvfølgelig er ideen om en internetradiohøjttaler typisk, alle kender den, og på Habré finder du mange artikler om dette emne, f.eks. her

Og du tænker måske også, at jeg simpelthen skræddersyede kravene til en færdig løsning. Hertil kan jeg imødegå og sige, at nej, helt ærligt.

Mr. Erveys historie

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

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

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

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

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

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

Flere gode og anderledes forsamlinger til dig, og lad selv den tidligere mursten synge for dig i år.

Kilde: www.habr.com

Tilføj en kommentar