Den enkleste Internett-radiospalten "Kodi" eller frelsen til "Bringebær"-mursteinen

Den enkleste Internett-radiospalten "Kodi" eller frelsen til "Bringebær"-mursteinen

Grunnleggende forutsetninger:

  1. Det er et gammelt ubrukt førstegenerasjons Raspberry Pi-brett;
  2. Brettet ligger på skapet som en egenvekt og brukes ikke - "Brick" brettet;

Hva jeg ønsker å motta:

  1. På et bestemt tidspunkt (for eksempel i henhold til humør)
    brettet slutter å være en "Brick", og et magisk minnekort settes inn i det;
  2. En Ethernet-kabel og en plugg fra en vanlig husholdningshøyttaler eller hodetelefoner er koblet til brettet;
  3. Etter at strømmen er tilført, vil den tidligere "Brick" - poet

Hovedide:

  1. Minimum antall bevegelser for ethvert oppsett, i det mest ideelle tilfellet kobler vi bare "Ethernet"-kabelen, strøm og høyttalere, og gjør ingenting annet, fra ordet "i det hele tatt";
  2. Den tidligere "Brick" ut av esken støtter for eksempel 20 Internett-radiostasjoner, som kan byttes i en sirkel ved å trykke på musehjulet eller på en spesifikk GPIO-pinne (koble to ledninger og kortslutt dem (min drøm siden barndommen) );
  3. Kontrollen utføres via en radiokanal, og denne radiokanalen kan være en vanlig radiomus;
  4. Ta et ferdig system og sett sammen distribusjonen til "Yocto Project"
    de. som vanlig vil vi ikke gjøre noe mot deg, siden alt allerede er gjort.
    (det er nok bare å plassere en utenforstående observatør på den andre siden "TV");

beskrivelse

Den enkleste Internettradio-kolonnen "KODI"
Monteringen er designet for eldre Raspberry Pi 1-brett
(samler støv et sted på skapet, men som er klare til å gjøre litt mer arbeid)

Som standard brukes m3u8-listen med 12 Internett-radiostasjoner.

Det antas at brettet fungerer uten HDMI-utgang, og for å slå det av trenger du bare å koble strømadapteren fra stikkontakten. Og som et ultramoderne trådløst kontrollpanel kan du bruke superradiomusen din (eller koble til en vanlig grå med hale).

Når den er slått på, konfigureres standard nettverksgrensesnitt via DHCP-protokollen og den siste lagrede radiostasjonen fra listen spilles av, avspillingsvolumet kontrolleres med en vanlig mus:
(til slutt utnevne musen din som "sjef for ledelsen", og gratuler den, den fortjener det)

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

For å legge til din egen liste over Internett-radiostasjoner
du kan alltid koble til en HDMI-kabel fra TV-en
og bruk det standard grafiske grensesnittet til Kodi 17.6
(slå av brettet, koble til HDMI og slå på strømadapteren)

Kodi hovedmeny => “Tillegg” => “Mine tillegg”
          => “PVR Clients” => “PVR IPTV Simple Client”

Innledende implementering

(mulig)
I utgangspunktet, da jeg bestemte meg for å lage en "Internet Radio Column", planla jeg følgende:

  • Minimalistisk konsolldistribusjon i Yocto-prosjektet;
  • Lydstrømmen spilles av via GStreamer;
  • Nettverksgrensesnittet konfigureres via DHCP;

Og denne løsningen har en rekke fordeler:

  1. Ganske raskt (det tar 30-40 sekunder å nå driftsmodus fra strømforsyningen);
  2. Ganske pålitelig (færre programmer, færre feilpunkter);
  3. En konsolldistribusjon er mye lettere å bytte til skrivebeskyttet modus
    de. programmer skriver ikke noe til rotfilsystemet
    (og filsystemet på SDHC-medier er, etter min mening, den første kandidaten for feil);

Merk:

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

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

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

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

Og en hovedulempe:

«Det må gjøres» dvs. Jeg må bruke N antall kvelder
(vanligvis etter jobb, og dette er den mest ineffektive tiden, på dette tidspunktet tenker ikke hjernen lenger, den sover vanligvis)

Og likevel skrev jeg min forrige artikkel på Habré om multimediasenteret Kodi og Yocto prosjekt
og muligheten til å fortsette i samme ånd overmannet forskningsimpulsen min. Mer om dette i neste kapittel.

Gjør Kodi om til en Internett-radiohøyttaler

For å legge til funksjonaliteten jeg trenger, vil jeg legge til en metode til i oppskriften for å bygge distribusjonen beskrevet i forrige artikkel se filen 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}
}

Metodene er ment for å modifisere rotfilsystemet før det dannes et distribusjonsbilde i form av én råfil, som skrives til minnekortet med kommandoen dd

Dette gjøres på denne måten:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"

Kort sagt, i hovedkonfigurasjonsfilen til Kodi 17.6, endres "tre punkter".

  • Konfigurasjon for å starte den sist valgte TV-kanalen;
  • Konfigurasjon av lydutgang, kun analog lydutgang er alltid tilkoblet;
  • Deaktiver automatiske oppdateringer;
  • Merk:
        Единственное с чем у меня возникли сложности, 
        это то, что пришлось еще подтащить файл базы данных 
        в формате sqlite => TV29.db, в котором указывается 
        текущий проигрываемый ТВ канал 
        (так как по умолчанию никакой из каналов не выбран), 
        а через xml конфигурацию в Kodi этого не сделать.
        

en mer detaljert sekvens av handlinger for hvert element:

1) Klikk på tannhjulikonet i øvre venstre hjørne av skjermen
og velg "PVR og TV-innstillinger" (bilde av en TV med to horn)
deretter på venstre side av menyen, velg "Avspilling", og i den sentrale delen "Generelt"
velg "Fortsett fra siste kanal ved oppstart" i rullegardinlisten
velge "Forgrunn"-innstillingen

eller mer tydelig:

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

2) Klikk på "tannhjul"-ikonet i øvre venstre hjørne av skjermen og velg elementet:

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

3) Klikk på "tannhjul"-ikonet i øvre venstre hjørne av skjermen og velg elementet:

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

Hvordan jeg har sett på TV på feil måte i to år.

Jeg må innrømme for deg at på to år har jeg fortsatt ikke lært å se på TV riktig.

Jeg pleier å se på TV på kjøkkenet. Et Raspberry Pi 2B-kort er koblet til TV-en, og Ethernet- og HDMI-kontakter er koblet til brettet. Brettet får strøm via en vanlig USB-kabel, som kobles til USB-porten på TV-en, d.v.s. faktisk, å slå på TV-en med standardfjernkontrollen gir strøm til Raspberry Pi-kortet, og å slå av TV-en fra fjernkontrollen tilbakestiller også umiddelbart strømmen fra Raspberry Pi-kortet.

Ja, jeg er godt klar over at dette ikke kan gjøres, fordi rotfilsystemet til Kodi-mediesenteret (ext3) fungerer i normal lese-/skrivemodus. Men jeg er en lat person, og først bestemte jeg meg for å sjekke hvor lenge jeg kunne slå av systemet slik, til det sluttet å laste helt, men dessverre, etter to år klarte jeg aldri å gjøre dette (kanskje jeg bare var heldig, jeg vet ikke).

Og etter min mening, hvis denne modusen var egnet for TV-en min, ville den også være egnet for en "enkel Internett-radiohøyttaler", og siden jeg tvangsdeaktiverte automatisk oppdatering av Kodi-plugins, vil sannsynligheten for en filsystemfeil bli jevn. mindre. Så langt ser jeg ikke noe problem med dette

Merk:

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

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

"Internettradiohøyttalere"-distribusjonen beskrevet i artikkelen er en husholdningsdistribusjon, og det som er viktigst for en husholdningsdistribusjon er en vakker GUI. Etter min mening er det veldig vanskelig eller nesten umulig å lære en vanlig bruker å legge inn uforståelige magiske kommandoer i konsollen, og han kan ikke engang ordet. Men GUI, takk.

Og dette er kanskje mitt hovedargument for en distribusjon uten konsoll. Det grafiske brukergrensesnittet for varme lampen til Kodi, det er egentlig ikke nødvendig, men det er der.
(Jeg glemte også helt å nevne at Kodi kan fjernstyres, for eksempel fra en smarttelefon, ved å installere Yatse-applikasjonen, og kanskje for noen vil dette være et pluss)

Kodi-konfigurasjon for musekontroll

og nå 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>

Konfigurasjonen overstyrer globale hendelser for følgende elementer:

  • rull musehjulet fremover
  • bla musehjulet tilbake
  • ved å klikke på den midterste museknappen
  • behandle lange museklikk (3 sekunder eller mer),
    0 høyre knapp ID, 1 venstre knapp ID

Mer detaljert informasjon om oppsett av musehendelser:

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

Hva gjør du hvis kabelsystemet ikke kommer til deg

"Men jeg har ingen gratis Ethernet-porter hjemme (eller har aldri)," kan noen av de glade eierne av gamle Raspberry Pi 1-kort utbryte (kanskje brettet ble kjøpt for forskning og ble liggende på skapet)

Og siden brettet ikke har innebygget Wifi, er det lite funksjonelt uten Ethernet-tilkobling.

Selvfølgelig er det mulig å bruke Raspberry Pi 1-kortet uten Ethernet, men det vil kreve litt innsats fra din side. Vanligvis er slike ting interessant å gjøre kun som en del av å lære noe nytt, dvs. Dette er ikke spesialarbeid.

Så la oss vurdere et hypotetisk bruksområde for et kort uten Ethernet:

Du kan koble til en ekstern USB - Wifi-adapter, veiledet av hensynet
at adapteren skal fungere bra under Linux

Merk:

    К сожалению часть 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 sjekke om den fungerer bra under Linux som følger:

  • Installer noen mye brukt Linux-distribusjon
    generelle formål, for eksempel "Ubuntu Desktop"
  • Start opp systemet
  • Koble til Wifi usb-adapteren
  • Start nettverksbehandling og prøv å koble til WiFi-tilgangspunktet
  • Hvis alt fungerer bra og Internett-tilkoblingen din er stabil, støttes adapteren din godt og du kan fortsette arbeidet med å koble til denne adapteren i en spesialisert distribusjon og muligens med andre versjoner av kjernen
    (hvis ikke, så nei, dessverre, det er bedre å ikke prøve)

Støtte for ekstern Wifi-adapter i Raspberry PI

For at WiFi-adapteren skal fungere riktig i Linux, trenger vi to ting:
1) Linux-kjernestøtte for spesifikk Wifi-adapter
2) Tilstedeværelsen av en kjernemodul i systemet for en spesifikk Wifi-adapter

Ta for eksempel TP-Link TL-WN722N-adapteren. Den har en rett og slett fantastisk antenne.
La oss finne brikkesettet som brettet fungerer på - for meg er det "AR9271", Merk:

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

La oss nå finne navnet på parameteren i kjernekonfigurasjonen som er ansvarlig for AR9271-brikkesettdriveren, det er best å se etter kombinasjonen av ordene "AR9271 catee.net"
     hvor "cateee.net" er et kult nettsted som beskriver konfigurasjoner av Linux-kjernemoduler

Vi finner umiddelbart navnet på kjernekonfigurasjonen - CONFIG_ATH9K_HTC
og navnet på kjernemodulen vi trenger ath9k_htc

og spesifiser deretter navnet på den ønskede modulen i konfigurasjonsfragmentfilen
Linux-kjerne => recipes-kernel/linux/files/rbpi.cfg, legg til linjen:
CONFIG_ATH9K_HTC=m

Dermed kan du i fremtiden koble tilleggsutstyr til systemet ditt (vel, selvfølgelig, hvis det allerede støttes i Linux-kjernen)

Hva du skal gjøre hvis du er en habra-nerd - designer

Og du lager de kuleste tingene, som f.eks her eller du er student og drømmer om å lage noe lignende.

Umiddelbart kan du ta en slags berøringsskjerm for RPI på aliexpress, bestille et passende batteri der, koble det hele til et Raspberry Pi 1,2 eller 3-kort (helst 3, siden det har innebygd Wifi), velg et grafisk design-tema-grensesnitt i Kodi, designet for en berøringsskjerm og voila => du kan få en enkel lydspiller. Selvfølgelig vil den være ganske klumpete, men den blir din.

  Примечание:
  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 responsen til GUI Kodi 17.6 på grunn av enkeltprosessorkjernen i Zero virker mystisk for deg, kan du lure ørene og bygge en eldre, men veldig rask versjon, for eksempel Kodi 15.2, den er mer "vennlig" i denne forbindelse (noen ganger løser arv alt)

Dessverre har jeg ikke styret, så jeg kan ikke sjekke, men jeg føler at det burde fungere.

Kort monteringsanvisning

    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
    

mer detaljerte monteringsanvisninger
og opptak på et microSDHC-kort, se i forrige artikkel

postscript

Selvfølgelig er ideen om en Internett-radiohøyttaler typisk, alle vet den og på Habré finner du mange artikler om dette emnet, for eksempel her

Og du tenker kanskje også at jeg rett og slett har skreddersydd kravene til en ferdig løsning. Til dette kan jeg imøtegå og si at nei, ærlig talt.

Mr Erveys historie

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

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

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

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

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

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

Flere gode og annerledes forsamlinger for deg, og la selv den tidligere mursteinen synge for deg i år.

Kilde: www.habr.com

Legg til en kommentar