
Alapvető követelmények:
- Van egy régi, kihasználatlan Raspberry Pi első generációs lapka;
- A lapka a szekrényben hever, mint holt teher – „Tégla” lapka;
Amit szeretnénk elérni:
- Egy adott pillanatban (például kedv alapján)
a lapka nem lesz többé „Tégla”, és egy varázslatos memóriakártyát helyezünk bele; - Ethernet kábel csatlakozik a lapkához, és egy hanglejátszó vagy fülhallgató csatlakozó dugója;
- A tápellátás bekapcsolása után a korábbi „Tégla” – zenél
A fő ötlet:
- Minimális mozdulat a bármilyen beállításhoz, a legideálisabb esetben csak az „Ethernet” kábelt, a tápellátást és a hangfalakat csatlakoztatjuk, és nem csinálunk mást, semmit, mint a szó „teljesen”;
- A volt „Tégla” a dobozból például 20 internetes rádióadót támogat, amelyeket körbe tudunk váltani az egér görgőjének megnyomásával vagy egy adott GPIO tűhöz (két vezetéket csatlakoztatni és összekapcsolni (ez az álmom gyermekként));
- Az irányítás rádiócsatornán keresztül történik, és ez a rádiócsatorna egy hagyományos rádióegér is lehet;
- Egy kész rendszert, disztribúciót egy „Yocto Project”-ben összeszerelni
azaz mint általában, semmit sem fogunk csinálni, hiszen minden készen áll.
(elég, ha egy külső megfigyelőt helyezünk a másik oldalra „Televízió”);
Leírás
Egyszerű Internet Rádió hangszóró „KODI”
Ez a felépítés régi Raspberry Pi 1 lapkáknak készült
(amelyek valahol a szekrényben porosodnak, de még mindig készen állnak a működésre)
Alapértelmezés szerint egy 12 internetes rádióállomás m3u8 listája van használatban.
Feltételezzük, hogy a lapka HDMI kimenet nélkül működik, és a kikapcsolásához elegendő kihúzni a tápegységet a konnektorból. A modern, vezeték nélküli távirányítóként használhatja szuper rádióegérét (vagy csatlakoztathat egy hagyományos szürke, vezetékkel rendelkező egér).
A hálózati interfész alapértelmezés szerint DHCP protokollon keresztül van beállítva, és a legutoljára eltárolt rádióállomás kezdődik eljátszani a listából, a hangerőszabályozás hagyományos egérrel történik:
(végre nevezze el a saját egérét „irányítás főnökének”, és gratuláljon neki, megérdemli)
előre léptetés - a hangerő növelése
hátra léptetés - a hangerő csökkentése
hosszan lenyomva (3 másodperc vagy több) a jobb egérgombot - a következő rádióállomás kiválasztása
hosszan lenyomva (3 másodperc vagy több) a bal egérgombot - az előző rádióállomás kiválasztása
Saját internetes rádióállomás lista hozzáadásához
mindig csatlakoztathat HDMI kábelt a tévétől
és használhatja a beépített grafikus felületet a Kodi 17.6-hoz
(kapcsolja ki a modulot, csatlakoztassa a HDMI-t, és kapcsolja be a tápegységet)Főmenü Kodi => «Kiegészítők» => «Saját kiegészítők»
=> «PVR kliensek» => «PVR IPTV Egyszerű kliens»
Kezdeti megvalósítás
(lehetséges)
Eredetileg, amikor eldöntöttem, hogy készítek egy «Internetes Rádióoszlopot», a következőt terveztem:
- Minimalista konzolos disztribúció a Yocto Project-ben;
- A hangfolyam a GStreamer-en keresztül játszódik le;
- A hálózati interfész DHCP-n keresztül van beállítva;
Ez a megoldás számos előnnyel jár:
- Elég gyors (30-40 másodperc alatt éri el a munkamódot a tápellátástól számítva);
- Elég megbízható (kevesebb program, kevesebb hiba lehetőség);
- A konzolos disztribúció sokkal egyszerűbben átkonfigurálható csak olvasási módra
azaz a programok nem írnak a gyökér fájlrendszerbe
(a fájlrendszer a SDHC tárolón számomra az első számú hiba forrás);
Megjegyzés:
A Yocto rendszerben a gyökér fájlrendszert (rootfs)
csak olvasható módba viszonylag egyszerűen lehet átállítani,
ha a build során megváltoztatunk egy beállítást.
Alapértelmezés szerint a Yocto két lehetőséget kínál:
1) A fájlrendszer működése normál olvasás/írás módban
(ahogy azt a közönséges disztribúciók, például az Ubuntu is teszi)
2) A fájlrendszer működése csak olvasható módban
(ahogy a specializált disztribúciók, például az útválasztók)
Csak olvasható módban minden olyan könyvtár, amelybe általában
adatok íródnak be az alkalmazások és szolgáltatások működése során,
az operatív memóriába van csatolva (például a /var/log könyvtár stb.)
Az adatok csak az aktuális munkamenetre érvényesek, és áramkimaradás során
az adatok elvesznek.
Ha a Yocto Project-ben a build során megadja a "read only"
használatát, akkor a build befejezése után az Ön disztribúciója
csak olvasásra lesz konfigurálva, de mindig hozzáadhatja a
dinamikus átkapcsolás lehetőségét a "read only" és "read/write" között, de ez már egy teljesen más történet ...
És van egy fő hátrány:
„Meg kell csinálni”, azaz szükséges, hogy N mennyiségű estét áldozzak rá
(általában munka után, és ez a legkevésbé hatékony időszak, ilyenkor az agy már nem gondolkodik, általában alszik)
Ezen kívül a korábbi cikkemet a Habr-on a multimédia központról írtam project
és a lehetőség, hogy ebben az irányban folytassam, felülkerekedett a kutatási vágyamon. Erről a következő fejezetben.
A Kodi átalakítása internetes rádióoszlopként
A szükséges funkcionalitás hozzáadásához egy új módszert fogok hozzáadni a disztribúció build receptjéhez, amelyről az előzőben írtam. lásd a berserk-image.bb fájlt
GUI_SETTINGS = "home/root/.kodi/userdata/guisettings.xml"
# az utoljára választott TV-csatorna indítási konfigurációja (1-háttér 2-előtér)
F1_LINE = "0"
R1_LINE = "1"
# a hang kimeneti konfigurációja, mindig csak az analóg audio kimenet csatlakoztatva
F2_LINE = "PI:HDMI"
R2_LINE = "PI:Analogue"
# mivel az HDMI alapértelmezés szerint nincs használatban, kikapcsolom az automatikus frissítést
# mert előfordulhat, hogy az áram elment, de az adatok nem lettek mentve
F3_LINE = "0"
R3_LINE = "2"
# a metódus felelős a konfiguráció hozzáadásáért:
# ami az "Okos TV-t" "egyszerű Internet Rádió hangsugárzóvá" alakítja
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"
# mivel az HDMI kimenet nem biztos, hogy használatban van,
# tiltsuk le a "kezdő üdvözletet"
off_kodi_welcome() {
sed -i "s|${FIND_STR}|#&|" ${IMAGE_ROOTFS}/${SCRIPT_FIRST_RUN}
}
A módszerek a gyökér fájlrendszer módosítására szolgálnak egy disztribúciós kép létrehozása előtt, amely egyetlen raw fájlként íródik a memóriakártyára a parancs segítségével. dd
Ez így történik:
ROOTFS_POSTPROCESS_COMMAND += "add_radio_guisettings; off_kodi_welcome;"
Röviden, a Kodi 17.6 alapértelmezett konfigurációs fájljában három pontot változtatunk meg.
- Az utoljára választott TV-csatorna indítása;
- A hang kimenetének konfigurálása, mindig csak az analóg audio kimenet csatlakoztatva;
- Az automatikus frissítés kikapcsolása;
- Megjegyzés:
Az egyetlen dolog, amivel nehézségem volt, az az, hogy még egy adatbázis fájlt is be kellett hozni sqlite formátumban => TV29.db, amely meghatározza az aktuálisan lejátszott TV csatornát (mivel alapértelmezés szerint egyik csatorna sem választott), és ezt xml konfiguráción keresztül a Kodi-ban nem lehet megtenni.
Részletesebb lépések minden ponthoz:
1) Kattintson a bal felső sarokban található "fogaskerék" ikonra.
és válassza az "PVR és TV beállítások" lehetőséget (TV ikonnal, két antennával).
Ezután a bal menüben válassza a "Lejátszás" pontot, a középső szekcióban pedig a "Általános"-t.
Állítsa be a legördülő listában a "Folytassa az utolsó csatornánál indításkor" lehetőséget.
válassza az "Előtér" beállítást.
vagy még szemléletesebben:
"PVR és TV beállítások"
=> "Lejátszás"
=> "Folytatás az utolsó csatornán indításkor" => "Előtér"
2) Kattintson a képernyő bal felső sarkában lévő "fogaskerék" ikonra, és válassza a következőt:
"Rendszerbeállítások"
=> "Kiegészítők" => "Frissítések" => "Soha ne ellenőrizze a frissítéseket"
3) Kattintson a képernyő bal felső sarkában lévő "fogaskerék" ikonra, és válassza a következőt:
"Rendszerbeállítások"
=> "Hang" => "Hangkimeneti eszköz" => "PI: Analóg"
Két éve tévét nézek rosszul.
Be kell vallanom, hogy két év alatt nem tanultam meg helyesen tévét nézni.
Általában a konyhában nézek tévét. A tévéhez egy Raspberry Pi 2B modul van csatlakoztatva, amelyhez Ethernet és HDMI portok is tartoznak. Az áramot a modul normál USB kábellel kapja, amely be van dugva a tévé USB portjába, tehát valójában a tévé távvezérlőjének bekapcsolásakor áramot kap a Raspberry Pi is, és ha a tévét a távvezérlőn kikapcsolom, akkor azonnal megszűnik az áramellátás a Raspberry Pi számára is.
Tudom, hogy ezt nem szabadna csinálni, mert a Kodi multimédia központ gyökér fájlrendszere (ext3) normál olvasási/írási módban működik. De én lusta ember vagyok, és először csak azt akartam ellenőrizni, mennyi ideig lehet így kikapcsolni a rendszert, amíg végül teljesen le nem áll, de sajnos két év alatt ezt sosem sikerült megtennem (talán csak szerencsém volt, nem tudom).
Úgy vélem, ha ez a mód megfelel a tévémnek, akkor egy "egyszerű internetes rádióoszlop" számára is megfelelő lesz, mivel kézzel letiltottam a Kodi bővítmények automatikus frissítését, ezért a fájlrendszer meghibásodásának valószínűsége még kisebbé válik. Egyelőre nem látok ezzel problémát.
Megjegyzés:
De ha szeretné, egyetlen yocto parancs segítségével
IMAGE_FEATURES += "read-only-rootfs"
és egy kis varázslattal átállíthatja a disztribúcióját "csak olvasható" módra.
A cikkben ismertetett "internet rádió oszlop" disztribúció egy otthoni rendszer, és ami a legfontosabb egy otthoni disztribúció esetében — ez egy szép GUI. Véleményem szerint nagyon nehéz vagy szinte lehetetlen megtanítani a szokásos felhasználót, hogy beírjon bármiféle érthetetlen varázslatos parancsot a konzolba, hiszen azt sem tudja, hogy mi az. De a GUI, az rendben van.
Ez valószínűleg a legfőbb érvem, ami a nem konzolos disztribúció mellett szól. A Kodi meleg, barátságos grafikus felhasználói felülete nem feltétlenül szükséges, de mégis rendelkezésre áll.
(Még azt is elfelejtettem megemlíteni, hogy a Kodit távolról, például okostelefonról is lehet irányítani a „Yatse” alkalmazás telepítésével, és ez talán néhányak számára előny lehet.)
A Kodi konfigurálása, egér használatával
Most pedig a Rakéta
VolumeUp
VolumeDown
ChannelDown
ChannelDown
ChannelUp
A konfiguráció felülbírálja a következő elemek általános (global) eseményeit:
- egérkerék előre gördítése
- egérkerék hátra gördítése
- középső egérgomb megnyomása
- hosszan nyomva tartott egérgomb kezelése (3 másodperc és több),
0 a jobb gomb azonosítója, 1 a bal gomb azonosítója
részletesebb információk az egér események beállításáról:
Mi a teendő, ha a kábelrendszer nem érkezett meg hozzád
„De otthon nincsenek szabad Ethernet portjaim (vagy sosem voltak)” – mondhatják a régi Raspberry Pi 1 tulajdonosok egy része (lehet, hogy az alaplapot kutatás céljából vásárolták, és azóta csak a polcon áll).
Mivel az alaplapon nincs integrált Wifi, Ethernet csatlakozás nélkül nem túl funkcionális.
Természetesen létezik lehetőség a Raspberry Pi 1 Ethernet nélküli használatára, de ez bizonyos erőfeszítéseket igényel tőled. Az ilyen dolgokat általában csak új dolgok megtanulása keretein belül érdekesen elvégezni, tehát ez nem felhasználói feladat.
Tehát nézzük meg a hipotetikus lehetőséget az alaplap Ethernet nélküli használatára:
Külső USB – Wifi adaptert lehet csatlakoztatni, figyelembe véve azt a megfontolást,
hogy az adapternek jól kell működnie Linux alatt.
Megjegyzés:
Sajnos a WiFi adapterek egy része nem fog működni, ez nem a jelen cikkben bemutatott disztribúció sajátossága, hanem inkább a Linux kernelben található konkrét WiFi adapterek illesztőprogramjának problémája. Megállapítható, hogy jelenleg nem tud egyszerűen bemenni a boltba és bármilyen WiFi adaptert megvenni. Inkább olyan WiFi adaptert kell választania, amely kevésbé problémás és jól működik Linux alatt.
Csak a következő modelleket ellenőriztem:
- WiFi adapter Atheros D-Link DWA-126 802.11n chippel (AR9271)
- WiFi adapter NetGear WNDA3200
- WiFi adapter NetGear WNA1100
- WiFi adapter TP-Link TL-WN722N (AR9271)
- WiFi adapter TL-WN322G v3
- WiFi adapter TL-WN422G
- Wifi adapter Asus USB-N53 chippel Ralink RT3572
Ha már van USB Wifi adaptere, akkor a következőképpen ellenőrizheti, hogy jól működik-e Linux alatt:
- Telepítsen egy elterjedt Linux disztribúciót
általános célokra, például az „Ubuntu Desktop”-ot - Indítsa el a rendszert
- Csatlakoztassa a Wifi USB adaptert
- Indítsa el a hálózati menedzsert, és próbáljon csatlakozni a WiFi hozzáférési ponthoz
- Ha minden jól működik, és az internetkapcsolata stabil, akkor az adapterét jól támogatják, és folytathatja a munkát az adapter speciális disztribúciójának csatlakoztatásával, esetleg más kernelverziókkal is.
(ha nem, akkor sajnos nem — a legjobb még csak meg se próbálni)
Külső Wifi adapter támogatása a „Raspberry PI”-n
A WiFi adapter megfelelő működéséhez Linux alatt: két dologra van szükségünk:
1) A Linux kernel támogatása egy adott Wifi adapterhez
2) Egy adott Wifi adapterhez szükséges kernel modul megléte a rendszerben
Vegyünk például egy TP-Link TL-WN722N adaptert. Csodálatos antennája van.
Keressük meg a chipsetet, amin az áramkör működik — nekem ez az „AR9271”, megjegyzés:
A legérdekesebb dolog az, hogy ugyanannak a modellnek a gyártójától a Wifi chipset eltérhet. Például találkoztam azzal, hogy a TL-WN722N 2. verziójában már egy másik Realtek RTL8188 chipset található, és az már rosszul működött Linux alatt (abban az időben), sajnos ez van, tehát néha érdemes figyelni a hátoldalon található kis számokra is.
Most keressük meg a kernel konfigurációban azt a paramétert, amely felelős az AR9271 chipset illesztőprogramjáért, legjobban az „AR9271 cateee.net” szavakat keresve.
ahol a «cateee.net» egy klassz webhely, amely bemutatja a Linux kernellek moduljainak konfigurációit
Azonnal megtaláljuk a kernel konfiguráció nevét — CONFIG_ATH9K_HTC
és a szükséges kernel modul nevét ath9k_htc
és ezután elegendő bemásolni a szükséges modul nevét a konfigurációs töredék fájlba
Linux kernel => recipes-kernel/linux/files/rbpi.cfg, adja hozzá a következő sort:
CONFIG_ATH9K_HTC=m
Így a jövőben bármilyen kiegészítő hardvert csatlakoztathat a rendszeréhez (ha persze a Linux kernel már támogatja azt)
Mi a teendő, ha ön Habr geek — konstruktor
És fantasztikus dolgokat hoz létre, például ilyesmiket vagy ha ön diák, és arról álmodik, hogy valami hasonlót alkot.
Akkor hirtelen ötlettől vezérelve vásárolhat egy Touch Screen képernyőt az RPI-hez az aliexpress-en, ott egy megfelelő akkumulátort is megrendelhet, csatlakoztathat mindent a Raspberry Pi 1, 2 vagy 3 alaplaphoz (jobb a 3, mivel van beépített Wifi), válassza ki a grafikus felület témáját a Kodi-ban, amely érzékeny a touchscreenre, és voilá => elkészíthet egy egyszerű audio lejátszót. Természetesen elég nagy lesz, de a tiéd lesz.
Megjegyzés:
A Kodi multimédia központ összegyűjtéséhez a legolcsóbb Raspberry Pi Zero Wifi alaplaphoz a yocto-ban elegendő két sort megváltoztatni:
konfigurációs fájl => build/conf/local.conf
MACHINE = 'raspberrypi0-wifi'
Kodi összegyűjtési recept => recipes-mediacentre/kodi/kodi_17.bbappend
EXTRA_OECONF_append = "${@bb.utils.contains('MACHINE',
'raspberrypi0-wifi', '${BS_RPI}', '', d)}"
Ha a Kodi 17.6 GUI válaszideje az egy processzormag miatt a Zero-ban rejtélyesnek tűnik, akkor egy kis trükközéssel összeállíthat egy régebbi, de nagyon gyors verziót, például a Kodi 15.2-t, amely ebből a szempontból "barátságosabb" (néha a legacy megold minden problémát)
Sajnos nincs alaplapom, így nem tudom kipróbálni, de érzéseim szerint működnie kell.
Rövid útmutató az összegyűjtéshez
1) Telepítse a Yocto Project függőségeit (például Ubuntu alatt):
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) Töltse le és telepítse a Repo-t:
mkdir ~/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
3) Töltse le a projektet a github-ról:
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) Építse meg a projektet:
./shell.sh
bitbake berserk-image
ugyanezt meg lehet csinálni a Raspberry Pi 3B Plus, 3B és 2B platformokhoz:
repo init -u https://github.com/berserktv/bs-manifest
-m raspberry/rocko/radio-0.2.8.xml
részletesebb útmutató az összeszereléshez
és a microSDHC kártyára való íráshoz lásd.
Utóirat
Persze, az internetes rádiószórok ötlete tipikus, mindenkinek ismerős, és a hvg-n sok cikket talál erről, például
És még gondolhatja, hogy csak a követelményeket igazítottam a kész megoldáshoz. Erre azt tudom mondani, hogy nem, tényleg nem.
Mr. Ervi története
Akár higgyék, akár nem, a dolog így történt:
Az irodánk határos egy különböző hangtechnikai eszközöket gyártó céggel, és egy nap a cég igazgatója, nevezzük Mr. "Ervin"-nek, megkereste a fiókunk helyettes igazgatóját, Mr. "Arszenyij"-t, és megkérdezte tőle, mennyire nehéz elindítani egy hangáramot Raspberry Pi lapkán, azaz a lapka csatlakozik a hálózathoz és a hangfalakhoz, és "hallható egy jellegzetes hang".
Ezt követően Mr. Arszenyij megkereste a főnököm helyettesét - Mr. "Borisz"-t, és átirányította neki a kérdést, én pedig, mint külső szemlélő, véletlenül megjegyeztem ezt az ötletet, és elneveztem "A három főnök feladata"-nak.
Végül is jót akartak tenni,
de az lett, idézem - "De Mr. Ervin, mint mindig, segített."
Néhány idő múlva megkérdeztem Mr. "Borisz"-t a véleményéről egy rövid cikk írásával kapcsolatban erről a témáról a "Habr"-on, amire "Borisz" válaszolt, hogy a Kodi-ban "három menüpont" módosítása nem hoz semmilyen új információt, és nem érdemel külön említést.
Természetesen teljesen egyetértek vele, és ezért nem mondom el neki,
hogy írtam erről.
A cikk kizárólag a Mr. "Borisz"-től kölcsönzött "Raspberry Pi 1" lapkára készült kísérlet céljából,
a többi "Raspberry Pi 1" lappal való egybeesés véletlenszerű.
Több jó és különböző összeállítást kívánok önnek, és legyen a régi téglától kezdve az idén akármi — énekeljen.
Forrás: habr.com
