audiodiyers.hu http://audiodiyers.hu/ |
|
Optimalizált lejátszó Allwinner H3 alapokon http://audiodiyers.hu/viewtopic.php?f=49&t=3856 |
Oldal: 1 / 1 |
Szerző: | Konzol [ 2018.09.30. 14:03 ] |
Hozzászólás témája: | Optimalizált lejátszó Allwinner H3 alapokon |
A sok kísérletezés,próbálkozás után csináltam egy image fájlt Orane Pi One egykártyás gépre. A cél egy teljesen lecsupaszított, csak zenelejátszásra alkalmas rendszer létrehozása. Az image fájl letölthető innen: [url] https://drive.google.com/drive/folders/ ... EE77QDUKAf [/url] Az opi-mpd.img.bz2 fájl egy teljesen kész, komplett rendszer. Telepítés: A letöltött image kicsomagolás után minmum 4GB-s mikro sd kártyára írható: Kód: bunzip2 opi-mpd.img.bz2 dd if=opi-mpd.img of=/dev/mmcblk0 bs=1M ( a /dev/mmcblk0 helyett értelemszerűen a megfelelő eszköz írandó pl /dev/sdc ) Az SD kártyát egy Orange Pi One-be helyezve bekapcsolva a gépet a rendszer elindul, bootolás után egy kész lejátszó fut. A rendszer indulása csak soros portra csatlakoztatott 3.3V-os soros-usb eszközön követhető - pl FTD1232 -, a HDMI kimenet nem él! A rákötött monitor nem mutat képet! 115200 8N1 formátumban. sceen, minicom használható, vagy pl. az arduino terminálja Kód: screen /dev/ttyUSB0 115200 A rendszer használatba vehető soros terminállal vagy SSH-n keresztül az alábbi IP címeken: 10.64.4.4 192.168.2.6 felhasználó név: root jelszó: X ### NAGY BETŰ |
Szerző: | Konzol [ 2018.09.30. 14:20 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
A rendszeren RT kernel fut, alapértelmezetten mpd-0.20.18_rtopt verzió felelős a lejátszásért. Telepítve van az mpd-0.19.12_rtopt verzió illetve a disztribúcióval szállított mpd is. CSAK I2S dac-okat kezel a rendszer, az USB portok nem élnek. Beállítás: IP cím Szerkeszteni kell az /etc/network/interfaces fajlt/ Kód: mcedit /etc/netwok/interfaces Csatolmány: Az eth0:0 bejegyzés alatti sorok tartalmazzák az IP beűllításokat. ( az eth0 beűllítás egy második IP címet ad a rendszerhez, ezt a két SBC-s rendszer használja ) Módosítás után a fájlt mentnei kell, majd myreboot parancs után kb. 15-20 másodperc után a rendszer a megadott új címen elérhető. |
Szerző: | Konzol [ 2018.09.30. 14:36 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
mpd beállítása Mivel a rendszer nem kezeli az USB portokat, ezért a lejátszás csak hálózati tárolóról -NAS-, vagy az SD kártyáról lehetséges. Az mpd adatbázisa lehet helyi, vagy "proxy" amikor is NAS-on is fut egy mpd folyamat és az szolgáltatja az adatbázist Kód: #music_directory "smb://192.168.2.2/Music" music_directory "nfs://192.168.2.254/media/" #playlist_directory "/var/lib/mpd/playlists" #db_file "/var/lib/mpd/tag_cache" #log_file "/var/log/mpd/mpd.log" log_file "/dev/null" pid_file "/run/mpd.pid" #state_file "/var/lib/mpd/state" state_file "/tmp/mpd_state" .... database { plugin "proxy" host "192.168.2.254" port "6600" } A fenti beállítások nem mountolják a NAS megosztásokat. Mountolt meghajtó esetén a beállításokat értelemszerűen kell módosítani! |
Szerző: | Konzol [ 2018.09.30. 17:55 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Az opi-mpd.img Orange Pi One-on, illetve arra készült. Elvileg futnia kell a H2 alapú Orange Pi Zero-n is, bár azon a forrasztgatás elkerülhetetlen. A Banana Pi M2+ illetve az Orange Pi PC is H3 alapú. A Banana előnye, hogy van SPDIF kimenete, gigabites az ethernete, illetve valamivel magasabb frekvencián jár a RAM-ja. Ennek megfelelően valamivel drágább is mint a Narancs. Amikor lehet Banana Pi M2+ EDU verziót használok. Az opi-mpd.img erre nem jó. Önálló image fájlt Banana-ra nem töltöttem föl, helyette bemutatom hogyan lehet egy ilyen végletekig lecsupaszított rendszert csinálni. Úgy gondolom, hogy ez hasznosabb, mert más SOC-t tartalmazó rendszereken is alkalmazhatóak a leírtak. Másrészt kicsit talán oszlatja az egyébként rendkívül hatékony és kényelmes linux parancssor "misztikusságát". A dolog nem túl bonyolult, bár tény, hogy végig "informatika" még akkor is, ha a végül egy "futómű" lesz belőle, de figyelmet és némi kitartást igényel. Hogy hasznos-e végigcsinálni? Szerintem igen. Még akkor is, ha valaki nem Banana-t, hanem Orange Pi-t szeretne/fog használni - a két rendszer létrehozása két-három helyen tér el egymástól. Akiknek nincs kedvük végig csinálni, használhatják az opi-mpd.img-t. Végül is annak összeállítását fogom ismertetni - föltéve, hogy nem jut eszembe még valami, vagy nem kapok,hallok,olvasok valamit. A végeredmény pedig... nos, a saját véleményem ebben az ügyben kevéssé lényeges, utólagos engedelmükkel - nickjük nélkül - ismertetném néhány fórumtárs véleményét, akik ismerik, hallották a végeredményt. - mióta megvan az Orange a PC-t be sem kapcsoltam - Igy a gyakorlatilag gyári armbian imageval összevetve (az mpd-n a logolás, buffer, ilyen alap dolgok nekem is be vannak állítva) a kiherélt RT gépet, eléggé szembeötlö a különbség. Nem a hangkarakter más, hanem a zene, már ahogy megszólal az is. Nem részletesebb, tehát az arányok nem változnak, viszont a részletek könnyedén hallható, nem kell figyelni, egyszerüen ott vannak. -A tere sokkal természetesebb, az akusztika környezet mikro-visszhangjai ott vannak. A nem moddolt kernelnék itt jelentös hiányérzet van. -A hangszer hangok kerekebbek, a hegedü ezen nagyon jó. A zongora csengése is természetesebb, a húrpadnak meg a mechanikának olyan finom zörejei is ott vannak, amik a másikon nem tünik fel. -Azért gyanítom, hogy a zajhatár ment lentebb, mert az arányok nem változtak, tehát nem az van mint az AK4495-nél, hogy a képedbe tolja a részletet, ha kéred - ha nem. - Olyan mintha kevesebb magas lenne elsöre, de inkább finomabb, analógosabb, tisztább. A sima kernel kicsivel torzabbnak hat magasban. A mélyekkel ugyanez van, nagyon jó mélybasszusa van, igen mélyre megy, a felsö mély búgása, harapás ebben nincs. - Azt lehetne mondani sokkal folyékonyabb a zene. Szerintem ez nagyon egyben van így. Igaz a többit nem hallottam, csak így valaminek az eleje és vége közt eléggé jelentös a különbség. Szerintem ezzel jóval túl lett lépve a miniITX-es csodaPC szintje (amit a triodáson hallottunk). - Egy Beethoven zongoraverseny erejéig .... is belehallgatott, a hegedük nagyon jók, a fúvósok is realisztikusak. A tér nagyon jó. - én ugyan nem tudom ilyen jól összefoglalni, de egyet értek mindennel (írta valaki aki ismerte a korábbi véleményeket ) |
Szerző: | Konzol [ 2018.10.03. 19:43 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Az alaprendszer telepítéséhez le kell tölteni az SBC-nek megfelelő tömörített image fájlt innen: https://drive.google.com/drive/folders/ ... EE77QDUKAf ( Armbian_5.61_Bananapim2plus_Ubuntu_xenial_default_3.4.113.img.bz2 illetve Armbian_5.61_Orangepione_Ubuntu_xenial_default_3.4.113.img.bz2 ) A kicsomagolt image fájlt linux alatt a Kód: dd if=Armbian_........img of=/dev/mmcblk0 bs=1M paranccsal, Windows alatt valamilyen imagelő programmal ( Etcher, Win32DiskImager ) írható ki egy minimum 4GB-os micro SD kártyára. A telepítéshez az SBC-t kössük hálózatba, tegyük bele az SD kártyát, és vagy monitort és billentyűzetet kapcsolva hozzá, vagy soros vonalon keresztül elvégezhető a telepítés. ( én a soros vonalas megoldást szoktam használni, mert nem kell a monitort, billentyűt átdugdosni, elég az USB-RS232 konvertert a laptopra csatlakoztatni ) Csatolmány: IMG_20181003_194159.jpg [ 90.92 KiB | Megtekintve 33918 alkalommal. ] |
Szerző: | Konzol [ 2018.10.03. 19:51 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Az első induláskor az alapértelmezetten root felhasználóként 1234 jelszóval lehet bejelentkezni. A jelszót rögtön meg kell változtatni. Először meg kell adni a régi jelszót, majd kétszer egymás után az újat. Kicsit háklis az uj jelszóra, Minimum hat karakteres legyen. Később bármire lecserélhető természetesen. Csatolmány: Egy felhasználót is létre akar hozni, amiről CTRL+C-vel le lehet beszélni. Csatolmány: Ezután egy reboot paranccsal indítsuk újra a rendszert, hogy használatba tudja venni az egész SD kártyát! |
Szerző: | Konzol [ 2018.10.03. 20:02 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Ujrindulás után bejelentkezve Kód: ifconfig eth0 paranccsal lekérdezhető az aktuális IP cím, és a továbbiakban nem kell soros terminált,vagy monitort és billentyűzetet használni,hanem nyugodtan lehet SSH-n keresztül ( Windows-on pl a Putty-t használva ) lehet folytatni a telepítést. Először frissítsük a rendszert/ Kód: apt update && apt upgrade -y Mivel a telepítő image-et néhány napja csináltam,csak kevés csomag fog frissülni. A frissítés után telepíteni kell a szükséges programokat, könyvtárakat: Kód: apt install -y mpc mpd sox ffmpeg mc g++ \ libmad0-dev libmpg123-dev libid3tag0-dev \ libflac-dev libvorbis-dev libopus-dev \ libadplug-dev libaudiofile-dev libsndfile1-dev libfaad-dev \ libfluidsynth-dev libgme-dev libmikmod2-dev libmodplug-dev \ libmpcdec-dev libwavpack-dev libwildmidi-dev \ libsidplay2-dev libsidutils-dev libresid-builder-dev \ libavcodec-dev libavformat-dev \ libmp3lame-dev libtwolame-dev libshine-dev \ libsamplerate0-dev libsoxr-dev \ libbz2-dev libcdio-paranoia-dev libiso9660-dev libmms-dev \ libzzip-dev \ libcurl4-gnutls-dev libyajl-dev libexpat-dev \ libasound2-dev libao-dev libjack-jackd2-dev libopenal-dev \ libpulse-dev libroar-dev libshout3-dev \ libsndio-dev \ libmpdclient-dev \ libnfs-dev libsmbclient-dev \ libupnp-dev \ libavahi-client-dev \ libsqlite3-dev \ libwrap0-dev \ libcppunit-dev xmlto \ libboost-dev \ libicu-dev Ezzel elszöszöl egy ideig, de gond nélkül le kell futnia. |
Szerző: | Konzol [ 2018.10.04. 18:37 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Folytatva a rendszer telepítését következzen a systemd lecserélése a klasszikus systemV stílusú rendszerindító scriptekre. Pontosabban upstart-ra... Kód: apt install -y upstart-sysv sysvinit-utils reboot Újraindulás után NEM LESZ soros terminálunk, tehát vagy SSH, vagy billentyű és monitor használható. Intsünk kevéssé fájdalmas búcsút a systemd-nek! Kód: apt-get remove --purge --auto-remove systemd systemd:armhf -y Tiltsuk a systemd újratelepítését, illetve a kapcsolódó csomagokat/ Kód: echo -e 'Package: systemd\nPin: release *\nPin-Priority: -1' > /etc/apt/preferences.d/systemd echo -e '\n\nPackage: *systemd*\nPin: release *\nPin-Priority: -1' >> /etc/apt/preferences.d/systemd echo -e '\nPackage: systemd:amd64\nPin: release *\nPin-Priority: -1' >> /etc/apt/preferences.d/systemd echo -e '\nPackage: systemd:i386\nPin: release *\nPin-Priority: -1' >> /etc/apt/preferences.d/systemd Kapcsoljuk ki a fölösleges terminálokat - ezek mindegyike egy futó folyamatot jelent, bár az optimalizált kernel nem kezeli az usb portokat és a billentyűzetet sem. Kód: cd /etc/init mv ./tty2.conf ./tty2.conf.orig mv ./tty3.conf ./tty3.conf.orig mv ./tty4.conf ./tty4.conf.orig mv ./tty5.conf ./tty5.conf.orig mv ./tty6.conf ./tty6.conf.orig Ezzel kikapcsolunk a Linuxoson szokásos hat terminálból ötöt. Egyet egyelőre meghagyunk, ha valami rosszul sülne el, így még mindig elérhető marad a gép. Hozzuk létre a soros vonali terminál inditó fájlját! Kód: cp ./tty1.conf ./serial-tty.conf mcedit ./serial-tty.conf Hozzuk ilyen alakra! Kód: root@orangepione:/etc/init# cat ./serial-tty.conf # ttyS0 - getty # # This service maintains a getty on tty1 from the point the system is # started until it is shut down again. start on stopped rc RUNLEVEL=[2345] and ( not-container or container CONTAINER=lxc or container CONTAINER=lxc-libvirt) stop on runlevel [!2345] respawn exec /sbin/getty -L 115200 ttyS0 vt102 root@orangepione:/etc/init# reboot Újraindulás után ellenőrizzük, hogy be tudunk-e jelentkezni soros terminálon, illetve SH-n keresztül! Amennyiben igen, letiltható a tty1 is. Kód: mv /etc/init/tty1.conf /etc/init/tty1.conf.orig Kis takarítás: Kód: apt clean
|
Szerző: | Konzol [ 2018.10.04. 19:04 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Töltsük le a korábbi linkről az mpd forráskódját! ( mpd-0.19.12_rtopt.tar.bz2 illetve mpd-0.20.18_rtopt.tar.bz2 ) scp-vel ( winscp Windows alatt ) másoljuk a forrást az SBC /usr/local/src könyvtárába/ Az asztali gépen/laptopon Kód: cd ¬/Letöltések scp ./mpd-0.20.18_rtopt.tar.bz2 root@192.168.2.6:/usr/local/src/ Az SBC-n tömörítsük ki az mpd forráskódját! Kód: cd /usr/local/src/ tar xjvf ./mpd-0.20.18_rtopt.tar.bz2 cd mpd-0.20.18 Itt található egy mpdconfig_min.sh script, amely elvégzi az mpd konfigurálását. Ez a script egy minimális képességekkel rendelkező mpd-t konfigurál. Kikapcsol sok-sok modult, gyakorlatilag majdnem minden olyat, ami nem szükséges az wav,flac,mp3,aiff wv formátumú fájlok lejátszásához. Kód: ./mpdconfig_min.sh ... .... ########### MPD CONFIGURATION ############ Archive support: (-bzip2) (-ISO9660) (-ZIP) Client support: (-IPv6) (+TCP) (-UNIX Domain Sockets) Storage support: (+NFS) (+SMB) File format support: (-AAC) (-AdPlug) (-DSD) (-C64 SID) (-FFMPEG) (+FLAC) (-FluidSynth) (-GME) (+libsndfile) (-MikMod) (-MODPLUG) (-MAD) (+MPG123) (-Musepack) (-Opus) (-OggTremor) (-OggVorbis) (-WAVE) (+WavPack) (-WildMidi) Other features: (-libsamplerate) (-libsoxr) (+libmpdclient) (-inotify) (-SQLite) (+rtopt) Metadata support: (+ID3) Playback support: (+ALSA) (-FIFO) (-SNDIO) (-File Recorder) (-Haiku) (-HTTP Daemon) (-JACK) (-libao) (-OSS) (-OpenAL) (-OS X) (-Pipeline) (-PulseAudio) (-ROAR) (-SHOUTcast) (-Solaris) (-WinMM) Streaming support: (-CDIO_PARANOIA) (-CURL) (+SMBCLIENT) (-Soundcloud) (-MMS) Event loop: epoll ########################################## ..... A konfig végén kiír egy rövid összefoglalót a konfigurált mpd képességeiről ( - jelzi, ha valamit kikapcsoltunk, + a funkció elérhetőségét ) Fordítsuk le az mpd-t! Kód: make -j2 A fordítás eltart egy darabig. A -j2 opció azt jelenti, hogy két CPU mag fog fordítani a négyből megelőzve a memória gondokat. A fordításnak hiba nélkül le kell futnia.A futtatható mpd az src könyvtár alatt készül el. Az eredmény ellenőrizhető, illetve a futtatható binárisból eltávolíthatóak a debugger működéséhez benne lévő szimbólumok. Kód: root@orangepione:/usr/local/src/mpd-0.20.18# ls -la src/mpd -rwxr-xr-x 1 root root 4740312 Oct 4 15:59 src/mpd root@orangepione:/usr/local/src/mpd-0.20.18# strip --strip-all src/mpd root@orangepione:/usr/local/src/mpd-0.20.18# ls -la src/mpd -rwxr-xr-x 1 root root 372288 Oct 4 16:07 src/mpd A 4.7Mbyte-os binárisból végül 370K-s lett. Az új binárist másoljuk a végleges helyére, egyúttal mentsük el a korábban telepített mpd példányt! Kód: root@orangepione:/usr/local/src/mpd-0.20.18# service mpd stop root@orangepione:/usr/local/src/mpd-0.20.18# cp src/mpd /usr/bin/mpd_0.20.18_rtopt root@orangepione:/usr/local/src/mpd-0.20.18# mv /usr/bin/mpd /usr/bin/mpd_0.19.12 root@orangepione:/usr/local/src/mpd-0.20.18# ln -s /usr/bin/mpd_0.20.18_rtopt /usr/bin/mpd A fentiek közül az utolsó parancs egy szimbólikus linket hoz létre az mpd_0.20.12_rtopt-ra, így az mpd parancs kiadása a 0.20.18-as verziót fogja elindítani. Természetesen az mpd-0.19.12_rtopt verziót is választahatjuk. Konfigurálása telepítése megegyezik az itt leírtakkal a könyvtár illetve fájl nevek kivételével. A munka sikeressége ellenőrizhető: Kód: mpd -V | grep Daemon
|
Szerző: | Konzol [ 2018.10.04. 19:23 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Bár zenélni még nem tud a masina, de már komoly előrelépést értünk el a "gyári" állapotokhoz képest. Kikapcsoltunk hat fölösleges folyamatot, rt képességekkel felruházott mpd van a rendszeren... Folytassuk a beállításokat! Az Kód: /etc/security/limits.conf fájl végére szúrjuk be az alábbi sorokat:Kód: @audio - rtprio 99 @audio - memlock unlimited @audio - nice -19 Távolítsuk el a haveged csomagot! Kód: apt remove --purge --autoremove -y haveged A cpufrequtils csomagra sincs szükség, jobb, ha teljes sebeséggel futnak a magok. Kód: root@orangepione:~# apt remove --purge --autoremove -y cpufrequtils Kapcsoljuk ki a fölösleges hardver elemeket! ( USB, illetve grafikus kártya ) Kód: root@orangepione:~# h3consumption -h Usage: h3consumption [-h/-H] [-p] [-g on|off] [-m max_cpufreq] [-c 1|2|3|4] [-d dram_freq] [-D dram_freq] [-u on|off] [-e on|off|fast] ############################################################################ This tool allows to adjust a few consumption relevant settings of your H3 device. Use the following switches -h|-H displays help or verbose help text -p print currently active settings -g on|off disables GPU/HDMI for headless use -m max_cpufreq adjusts maximum allowed cpu clockspeed (mhz) -c 1|2|3|4 activate only this count of CPU cores -d dram_freq adjusts dram clockspeed (408 - 624 mhz) -D dram_freq like -d but as low as 132 mhz possible (experimental!) -u on|off enables/disabled all USB ports -e on|off|fast enables/disables Ethernet, the fast switch forces 100 mbits/sec negotiation on gigabit devices -w on|off enables/disables Wi-Fi powermanagement when interface supports this and is controlled by network-manager ############################################################################ root@orangepione:~# h3consumption -g off -u off Settings changed. Please reboot for changes to take effect and verify settings after the reboot using "h3consumption -p" reboot Az ujraindítás után: Kód: root@ThinkPad:~# ssh root@192.168.2.6
root@192.168.2.6's password: ___ ____ _ ___ / _ \ _ __ __ _ _ __ __ _ ___ | _ \(_) / _ \ _ __ ___ | | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | | | | | '_ \ / _ \ | |_| | | | (_| | | | | (_| | __/ | __/| | | |_| | | | | __/ \___/|_| \__,_|_| |_|\__, |\___| |_| |_| \___/|_| |_|\___| |___/ Welcome to ARMBIAN 5.61 user-built Ubuntu 16.04.5 LTS 3.4.113-sun8i System load: 0.53 0.12 0.04 Up time: 0 min Memory usage: 6 % of 495MB IP: 192.168.2.6 CPU temp: 45°C Usage of /: 36% of 3.5G Last login: Thu Oct 4 17:17:24 2018 from 192.168.2.222 root@orangepione:~# h3consumption -p Active settings: cpu 1200 mhz allowed, 1200 mhz possible, 4 cores active dram 624 mhz hdmi/gpu off usb ports off eth0 100Mb/s/Full, Link: yes |
Szerző: | Konzol [ 2018.10.05. 09:02 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Következő lépés az I2S illetve Banana Pi-n az SPDIF bekapcsolása, és az SOC belső hangeszközének kikapcsolása. A hardvert az úgynevezett fex fájlon keresztül lehet konfigurálni Kód: cd /boot bin2fex ./script.bin > ./pi_i2s.fex Szerkesszük az így létrejött pi_i2s.fex fájlt! Keressük meg benne az alébbi szakaszokat és módosítsuk az alábbiaknak megfelelően! Kód: [twi1] twi_used = 0 // 1->0 hogy az I2S-t lehessen használni! twi_scl = port:PA18<3><default><default><default> twi_sda = port:PA19<3><default><default><default> ... [pcm0] daudio_used = 1 //0->1 I2S be daudio_master = 4 daudio_select = 1 audio_format = 1 // I2S, audio_format = 2 -> RJ, ... [audio0] audio_used = 0 // 1->0 Belső hangeszkök ki lineout_vol = 31 ... [spdif0] spdif_used = 0 //Banana Pi-n 0->1 ha kell SPDIF spdif_dout = port:PA17<2><1><default><default> A fex fájlból létre kell hozni a megfelelő bin-t Kód: fex2bin ./pi_i2s.fex > ./script.bin reboot Új real-time kernel telepítéséhez le kell tölteni két fájlt és felmásolni azokat a Pi-re. Asztali gépen: Kód: cd Letöltések scp ./linux-image-sun8i_5.61_armhf.deb ./ linux-u-boot-orangepione_5.61_armhf.deb root@192.168.2.6:/ Figyelni kell, hogy Banana-hoz a linux-u-boot-bananapim2plus_5.61_armhf.deb fájlt kell használni!! Az új kernel telepítése: Kód: root@orangepione:~# cd / root@orangepione:/# ls bin dev home linux-image-sun8i_5.61_armhf.deb lost+found mnt proc run selinux sys usr boot etc lib linux-u-boot-orangepione_5.61_armhf.deb media opt root sbin srv tmp var root@orangepione:/# dpkg -i /linux-image-sun8i_5.61_armhf.deb /linux-u-boot-orangepione_5.61_armhf.deb (Reading database ... 46746 files and directories currently installed.) Preparing to unpack .../linux-image-sun8i_5.61_armhf.deb ... update-initramfs: Deleting /boot/initrd.img-3.4.113-sun8i Removing obsolete file uInitrd-3.4.113-sun8i Unpacking linux-image-sun8i (5.61) over (5.61) ... Preparing to unpack .../linux-u-boot-orangepione_5.61_armhf.deb ... Unpacking linux-u-boot-orangepione-default (5.61) over (5.61) ... Setting up linux-image-sun8i (5.61) ... update-initramfs: Generating /boot/initrd.img-3.4.113-rt143-sun8i update-initramfs: Converting to u-boot format Setting up linux-u-boot-orangepione-default (5.61) ... Updating u-boot on /dev/mmcblk0 root@orangepione:/# reboot Újraindulás után: Kód: root@ThinkPad:~# ssh root@192.168.2.6 root@192.168.2.6's password: ___ ____ _ ___ / _ \ _ __ __ _ _ __ __ _ ___ | _ \(_) / _ \ _ __ ___ | | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | | | | | '_ \ / _ \ | |_| | | | (_| | | | | (_| | __/ | __/| | | |_| | | | | __/ \___/|_| \__,_|_| |_|\__, |\___| |_| |_| \___/|_| |_|\___| |___/ Welcome to ARMBIAN 5.61 user-built Ubuntu 16.04.5 LTS 3.4.113-rt143-sun8i System load: 0.53 0.13 0.04 Up time: 0 min Memory usage: 4 % of 502MB IP: 192.168.2.6 Usage of /: 34% of 3.5G Last login: Fri Oct 5 06:38:55 2018 from 192.168.2.222 root@orangepione:~# uname -a Linux orangepione 3.4.113-rt143-sun8i #41 SMP PREEMPT RT Sat Sep 29 15:43:30 CEST 2018 armv7l armv7l armv7l GNU/Linux root@orangepione:~# root@orangepione:~# aplay -l **** List of PLAYBACK Hardware Devices **** card 0: snddaudio [snddaudio], device 0: SUNXI-TDM0 snddaudio-0 [] Subdevices: 1/1 Subdevice #0: subdevice #0 Látható, hogy az új kernel fut,az I2S hangeszköz működik! |
Szerző: | Konzol [ 2018.10.05. 09:27 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Foglalkozzunk kicsit a kernel induláskori beállításaival! Szerkesszük a /boot/armbianEnv.txt fájlt Kód: cd /boot mcedit armbianEnv.txt ... console=serial ... illetve a /boot/boot.cmd -t Kód: ... setenv docker_optimizations "off" ... if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=memory swapaccount=1"; fi ##SZURJUK BE EZT A SORT setenv bootargs "${bootargs} sunxi_no_mali_mem_reserve nosoftlockup audit=0 selinux=0 monitor=none ipv6.disable=1 apparmor=0 rcu_nocb_poll skew_tick=1 nousb clocksource=OSTS" load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}zImage ... ... Fordítsuk le a cmd fájlt! Kód: cp /boot/boot.scr /boot/boot.scr.save
root@orangepione:/boot# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr Image Name: Created: Fri Oct 5 07:24:18 2018 Image Type: ARM Linux Script (uncompressed) Data Size: 3821 Bytes = 3.73 kB = 0.00 MB Load Address: 00000000 Entry Point: 00000000 Contents: Image 0: 3813 Bytes = 3.72 kB = 0.00 MB reboot |
Szerző: | Konzol [ 2018.10.05. 10:24 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Egy lehetséges mpd.conf fájl: Kód: root@orangepione:~# cat /etc/mpd.conf #Windows stilusu megosztas, mountolas nelkul guest-nek tudnia kell olvasnia a megosztast #music_directory "smb://192.168.2.2/Music" #nfs megosztas hasznalata mountolas nelkul #music_directory "nfs://192.168.2.254/media/" #helyi fajlrendszer hasznalata music_directory "/media" #playlist_directory "/var/lib/mpd/playlists" ### # VAGY az itt megadott fajl lesz az adatbazis, vagy proxy mpd-rol kapja #db_file "/var/lib/mpd/tag_cache" database { plugin "proxy" host "192.168.2.254" port "6600" } #log_file "/var/log/mpd/mpd.log" log_file "/dev/null" pid_file "/run/mpd.pid" #state_file "/var/lib/mpd/state" state_file "/tmp/mpd_state" state_file_interval "120" #sticker_file "/var/lib/mpd/sticker.sql" #user "mpd" user "root" group "audio" bind_to_address "any" #bind_to_address "/run/mpd/socket" port "6600" connection_timeout "600" log_level "default" #log_level "none" gapless_mp3_playback "yes" #restore_paused "no" #save_absolute_paths_in_playlists "no" #metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc" #auto_update "yes" #auto_update_depth "3" follow_outside_symlinks "yes" follow_inside_symlinks "yes" zeroconf_enabled "no" zeroconf_name "opi-player" ##real-time beallitasok realtime_option { memlock "yes" # stack_reserve "1024" stack_reserve "2048" heap_reserve "10240" main_priority "OTHER:0" player_priority "FIFO:50" decoder_priority "FIFO:49" update_priority "OTHER:0" io_priority "OTHER:0" } #database { # plugin "upnp" #} ##input { # plugin "curl" # proxy "proxy.isp.com:8080" # proxy_user "user" # proxy_password "password" #} # # Lejatszasi puffer merete # #audio_buffer_size "196608" audio_buffer_size "262144" #audio_buffer_size "4192" buffer_before_play "10%" audio_output { type "alsa" name "I2S" device "hw:0,0" # optional format "*:24:2" # AD1865->*:24:2 TDA1541A->*:16:2 auto_format "no" auto_resample "no" auto_channels "no" mixer_type "none" # mixer_type "software" # optional # mixer_type "hardware" # buffer_time "200000" # period_time "256000000" # period_time "50000" # mixer_device "default" # optional # mixer_control "PCM" # optional # mixer_index "0" # optional # always_on "yes" replay_gain_handler "none" priority "FIFO:99" timerslack "100" # mpd-0.20.18 nem ismeri, mpd-0.19.12 igen } #audio_output { # type "alsa" # name "SPDIF" # device "hw:1,0" # optional # mixer_type "none" # optional # format "*:*:2" # buffer_time "200000" # period_time "256000000" # dsd_usb "yes" # auto_format "no" # auto_channels "no" # auto_resample "no" # sample_rate_converter "0" # mixer_device "default" # optional # mixer_control "PCM" # optional # mixer_index "0" # optional # priority "FIFO:99" # timerslack "100" #} #samplerate_converter "Fastest Sinc Interpolator" replaygain "off" #replaygain_preamp "0" #replaygain_missing_preamp "0" #replaygain_limit "yes" #volume_normalization "no" filesystem_charset "UTF-8" id3v1_encoding "UTF-8" #decoder { # plugin "ffmpeg" # enabled "no" #} max_output_buffer_size "8192" Mentsük el /etc/mpd.conf_rt néven, mald csináljunk rá egy linket! Kód: ln -s /etc/mpd.conf_rt /etc/mpd.conf Sajnos a systemd-nek vannak hozadékai... Kód: rm /etc/systemd/system/sockets.target.wants/mpd.socket reboot Újraindítva az új beállításokat fogja használni. Kód: service mpd restart Ekkor már kipróbálható a rendszer! Az I2S port elérhető: Csatolmány: Orange_Pi_One__Lite_I2S_out.png [ 176.55 KiB | Megtekintve 33799 alkalommal. ] ( a képet innen ollóztam: http://www.dimdim.gr/2016/12/orange-pi- ... rs-part-2/ ) |
Szerző: | Konzol [ 2018.10.05. 20:07 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Már majdnem készen van a lejátszó... Közben kijött egy újabb kernel verzió, lefordítottam minimális változtatással. Nos ez a minimális módosítás szerintem nagyon is hallható változást hozott hangban. Feltöltöttem az új kernelt linux-image-sun8i_5.62_armhf.deb a fájl neve. Azt gondolom nagyon megéri frissíteni erre a verzióra! ( Az u-boot-ot nem kell frissíteni ) |
Szerző: | Konzol [ 2018.10.06. 08:33 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Amit még érdemes megcsinálni: szerkesszük az /etc/sysctl.conf fájlt! Ebben lehet hangolni a kernel viselkedését futási időben. Adjuk hozzá, illetve szükség szerint módosítsuk az alábbi sorokat! Kód: ...
## vm.swappiness=0 kernel.sched_rt_runtime_us=-1 vm.stat_interval = 36000 #kernel.nmi_watchdog = 0 #kernel.sched_rt_period_us = 1000000 kernel.sched_rt_period_us = 2000000 #kernel.sched_rt_runtime_us = 0 #kernel.sysrq = 0 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 ### IP STACK HANGOLASA net.ipv4.tcp_low_latency=1 net.ipv4.tcp_window_scaling=1 net.ipv4.tcp_workaround_signed_windows=1 #net.ipv4.tcp_keepalive_probes=9 #net.ipv4.tcp_keepalive_intvl=60 #net.ipv4.tcp_keepalive_time=600 net.ipv4.tcp_reordering = 3 net.ipv4.tcp_sack = 1 net.ipv4.tcp_fack = 1 net.ipv4.ip_no_pmtu_disc=0 net.ipv4.tcp_mtu_probing=1 net.ipv4.tcp_frto=0 #net.ipv4.tcp_frto_response=2 net.ipv4.tcp_congestion_control=reno net.ipv4.tcp_timestamps = 0 net.core.netdev_max_backlog=250000 net.core.rmem_max=4194304 net.core.wmem_max=4194304 net.core.rmem_default=4194304 net.core.wmem_default=4194304 net.core.optmem_max=4194304 #net.ipv4.tcp_rmem="4096 87380 4194304" #net.ipv4.tcp_wmem="4096 65536 4194304" net.ipv4.tcp_adv_win_scale=1 [code] A [code]sysctl -p[/code] parancs azonnal módosítja a kernel beállításokat, egyébként pedig a rendszer indulásakor jutnak érvényre. Nem túl elegáns megoldás, de számomra kényelmes és egy ilyen egy feladatos rendszeren szerintem teljesen elfogadható megoldás a végleges szoftveres környezet módosítása az [code]/etc/rc.local[/code] fájlon keresztül. Ez a script a rendszer indítás végén fut le... Nálam valami ilyesmi lehet a tartalma [code] #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Az 5.62 -es kernel nem támogatja a "printk" rendszerhívást. #Korábbi verziójú kerneleknél NE legyen megjegyzésben # /bin/dmesg -n 1 /bin/mount -n -o remount,size=50M /tmp /bin/chmod 01777 /tmp /bin/mount -n -o remount,size=50M /dev ##Ha van a lejátszónak internet kapcsolata illetve a helyi hálózaton van time szerver # megpróbálja beállítani a pontos időt # szüksége van az ntpdate csomagra - apt install -y ntpdate # célszerű engedélyezni, forrásból fordítunk valamit /usr/sbin/ntpdate 0.hu.pool.ntp.org 2>&1 >>/dev/null & ## softirq kezelés prioritásainak módosítáasa prs=$(ps -A | grep ksoftirqd | awk '{print $1}') for ppid in $prs do chrt -f -p 99 $ppid done ## Pontosabb belső időzítés if [ -f /sys/class/rtc/rtc0/max_user_freq ] then echo 3072 > /sys/class/rtc/rtc0/max_user_freq /bin/chgrp audio /dev/rtc0 /bin/chmod 660 /dev/rtc0 fi ## A kernel virtuális gep statisztikaja nem fontos zenehallgatas kozben # Ezek lehetnenek akar a systl.conf-ban is, de itt ragadtak # if [ -f /proc/sys/vm/dirty_writeback_centisecs ] then echo 36000 > /proc/sys/vm/dirty_writeback_centisecs fi if [ -f /proc/sys/kernel/hung_task_check_count ] then echo 1 > /proc/sys/kernel/hung_task_check_count fi if [ -f /proc/sys/vm/dirty_background_ratio ] then echo 5 > /proc/sys/vm/dirty_background_ratio fi ## Az lldma.c forrasat kozzetettem, letoltheto, lefordithato # A binarist celszeru az /usr/local/sbin konyvtarba tenni, es nagyon alacsony prioritassal futtatni if [ -x /usr/local/sbin/lldma ] then /usr/bin/nice -20 /usr/local/sbin/lldma fi # Leallitgatja a nem hasznalt szolgaltatasokat # # if [ -x /etc/init.d/upmpdcli ]; then /usr/sbin/service upmpdcli stop fi #/usr/sbin/service networkaudiod stop if [ -x /etc/init.d/ntp ]; then /usr/sbin/service ntp stop fi if [ -x /etc/init.d/haveged ]; then /usr/sbin/service haveged stop fi if [ -x /etc/init.d/udev ]; then /usr/sbin/service udev stop fi if [ -x /etc/init.d/dbus ]; then /usr/sbin/service dbus stop fi if [ -x /etc/init.d/cron ]; then /usr/sbin/service cron stop fi if [ -x /etc/init.d/rsyslog ]; then /usr/sbin/service rsyslog stop fi # ssh alacsony prioritasra /usr/bin/renice -n 20 $(pidof sshd) #init szinten /usr/bin/renice -n 20 1 killall /sbin/getty ## vegul az mpd inditasa # az rtopt mpd-kben megadható az egyes programszálak prioritása # ezért egyszerűen csak futtatni kell a binárist cp /etc/default/mpd_state /tmp/mpd_state /usr/bin/mpd /etc/mpd.conf exit 0 |
Szerző: | Konzol [ 2018.10.06. 08:53 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Magyarázatra szorul az rc.local fájl utolsó néhány sora. Az mpd state fájlról már írtam korábban. A futó mpd állapotát tartalmazza. Lejátszási listát, hangerőt, kimenetek állapotát stb. Az mpd rendszeresen frissíti ezt a fájlt. A rendszeres írás nem igazán tesz jót az SD kártyáknak. A state fájl használata kikapcsolható ugyan, de én hasznosnak találtam ezt a szolgáltatást - nem kell folyton visszakapcsolnom pl. a consume módot, ki-be kapcsolnom az SPIF kimenetet stb. Csináltam egy "mpd_state" fájlt az /etc/default könyvtárban Kód: root@AD1865:~# cat /etc/default/mpd_state sw_volume: 100 audio_device_state:1:I2S state: play current: 0 time: 55.797000 random: 0 repeat: 0 single: 0 consume: 1 crossfade: 0 mixrampdb: 0.000000 mixrampdelay: -1.000000 playlist_begin playlist_end Ezt a fájlt másolja be az rc.local script a /tmp könyvárba, ami a rendszer RAM-jában van, tehát nyuodtan írható, és az mpd conf fájl is ezt a beállítást tartalmazza. Így aztán induláskor egy nekem megfelelő alap beállítás töltődik be, normál üzemben pedig nem kell aggódni azSD kártya fáradása miatt. |
Szerző: | Konzol [ 2018.10.06. 09:17 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Ezzel gyakorlatilag el is készült az optimalizált lejátszó. Remekül szól, tábla gépről,telefonról PC-ről egyszerűen vezérelhető. Persze sok változtatást lehet rajta csinálni. Pl. az mpd-ben engedélyezni a curl plugint, vagy az ffmpeg-et - újból le kell fordítani - és telepíteni az upmpdcli-t, ha mondjuk straem-et szeretne hallgatni az ember. Abban az esetben, ha valamkinek mountolni szeretné a windows megosztást, annak szüksége lesz a cifs-utils csomagra Kód: apt install -y cifs-utils Lehetőség van az egyes mpd verziókat összevetni. Lefordítva pl. a 0.19.12_rtopt verziót Kód: killall mpd /usr/bin/mpd_0.19.12_rtopt /etc/mpd.conf_ö.19.12_rtopt mpd verzió váltás ha mondjuk a 0.19.12 jobban tetszik Kód: rm /usr/bin/mpd
ln -s /usr/bin/mpd_0.19.12_rtopt /usr/bin/mpd rm /etc/mpd.conf ln -s /etc/mpd.conf_0.19_12_rtopt /etc/mpd.conf |
Szerző: | Konzol [ 2018.10.12. 19:20 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Új kernel 5.64-es számmal letölthető. |
Szerző: | Konzol [ 2018.10.18. 19:59 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Az mpd-0.21 végleges verziójához nincs még rtopt folt. A legutolsó elérhető verzió használata: Szükség lesz a megfelelő patch fájlra. Föl kell másolni az SOC-ra, az /usr/local/src könyvtárba A patch letölthető innen: https://onedrive.live.com/?cid=CE384832 ... 8DA832!105 Kód: cd /usr/local/src git clone -n https://github.com/MusicPlayerDaemon/MPD cd MPD git checkout 9c617607136fa88f11b1d030471ecaaa6a052c4c git rebase -i HEAD~1 patch -p1 < ../mpd-0.21git-9c617607136fa88f11b1d030471ecaaa6a052c4c-rtopt20180418.patch cp ../mpd-0.20.18/mpdconfig_min.sh ./ ./autogen.sh ./mpdconfig_min.sh make -j2 strip --strip-all src/mpd cp src/mpd /usr/bin/mpd_0.21_git Használható az mpd-0.20 konfig fàjlja, ügyelve rá, hogy az audio buffer mérete legfeljebb 65536 lehet. |
Szerző: | Konzol [ 2018.10.20. 08:44 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Az audio buffer felső korlátja 65536 a git-ről letöltött verzióban. Ez módosítható az mpd forrásában. Kód: cd /usr/local/src/MPD mcedit src/Main.cxx A kód 315 sorát kell módosítani ( eredetileg 1<<15 ) Azt tudni kell, hogy az mpd.conf fájlban megadott buffer értéknek összhangban kell lennia a hardver lehetőségeivel, hogy az mpd le tudja foglalni a szükséges memóriát. Kód: ... if (buffered_chunks >= 1 << 18) FormatFatalError("buffer size \"%lu\" is too big", (unsigned long)buffer_size); ... A buffer_before_play változó felső korlátja 80% Magyarázat erre a korlátra található a forráskódban. Én még nem tapasztaltam gondot nagyobb értékénél. A korlát a fenti fájl 331. sorában talàlható: Kód: if (perc > 80) { /* this upper limit should avoid deadlocks which can occur because the DecoderThread cannot ever fill the music buffer to exactly 100%; a few chunks always need to be available to generate silence in Player::SendSilence() */ FormatError(config_domain, "buffer_before_play is too large (%f%%), capping at 80%%; please fix your configuration", perc); perc = 80; } Módosítva a 80-as értéket a korlát föloldható. A változtatások után az mpd-t újra kell fordítani. |
Szerző: | Konzol [ 2018.10.21. 08:08 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Az ALSA-nak van egy érdekes segédprogramja ami latency néven fut [url] http://www.alsa-project.org/main/index. ... _latency.c [/url] Forrásból érhető el Armbian alatt. Kód: cd /usr/share/doc/libasound2-dev/examples mkdir ../include cp /usr/include/alsa/asoundlib.h ../include/ gunzip latency.c.gz gcc latency.c -o latency -lasound -lm strip latency ./latency -m 128 -M 128 -p -S 99 Más Linux alapú lejátszókon is lehet próbálgatni. :) |
Szerző: | cyberpalko [ 2018.12.10. 01:16 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Mit kell tenni usb háttértárolóról való zenéléshez? |
Szerző: | Konzol [ 2018.12.10. 06:14 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Engedélyezni az USB támogatást a kernelben - az optimalizált kernel nem tartalmazza - , ha nem azt a kernelt használod, akkor a boot paraméterek közül ki kell venni az usb tiltását -nousb. Ekkor mar latja majd az usb eszközt a kernel. |
Szerző: | Konzol [ 2019.06.11. 20:12 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Érdekes holmi az mpd. Fordítottam egy 0.21.10 sorozatú mpd-t, erőteljesen minimalista stílusban. Hogy önmagában mennyire jó, vagy sem az most lényegtelen. Az viszont meglehetősen aggasztó, hogy FLAC fájlokat lejátszva másképp szól, ha ffmpeg engedélyezve, vagy tiltva van. Sajnos a dekóderek prioritása bele van drótozva az mpd-be. Korábban létezett egy patch, amivel ezeket lehetett módosítani - pl FLAC-t a flac plugin dekódolja és ne az ffmpeg - , most nincs ilyen. Sajnos így a forráskód átnézése nélkül nehézkes megmondani mivel dekódolódik modjuk egy FLAC file. Gyanús, hogy ffmpeg-gel, ha engedélyezett, merthogy az ffmeg tiltása volt a megoldás a néha lefagyó adatbázis frissítéseknek tisztán csak flac fájlokat tartalmazó könyvtárakon. Bele kell nézni a forrásba, sajnos két havonta átszervezik az egész forrásfát:( :( |
Szerző: | Konzol [ 2019.07.17. 09:04 ] |
Hozzászólás témája: | Re: Optimalizált lejátszó Allwinner H3 alapokon |
Linux alapú NAS-okon hasznos lehet az alábbi script. Ez megkeresi a nagy felbontású zenéket az adott könyvtárban, illetve az alkönyvtárakban és kiiírja a mintavételi frekvenciát minden egyes fájlhoz. A soxi nevű programnak telepítve kell lennie. Kód: root@nas:/media/Zene# cat ./findhires.sh
#!/bin/bash IFS=$'\n' find . -type f -name '*.flac' | while read file; do # echo "$file" RATE=$( soxi -r "$file" ) if [ $RATE -eq 88200 ] then echo ${RATE}" --- ${file}" fi if [ $RATE -eq 176400 ] then echo ${RATE}" --- ${file}" fi if [ $RATE -eq 96000 ] then echo ${RATE}" --- ${file}" fi if [ $RATE -eq 192000 ] then echo ${RATE}" --- "${file} fi done |
Oldal: 1 / 1 | Időzóna: UTC + 1 óra [ nyi ] |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |