…illetve dehogyis, hát nem olvastad a címet, kis butus? 🙂 A süti majd jön valamikor a közeljövőben, most inkább hackeljünk! Az ötlet elég régóta motoszkál a fejemben: olyan konykakész megoldást akarok, amiből kilóg egy audio out és egy tápcsatlakozó és az eszköz AirPlay serverként funkcionál, azaz küldhetek drótok nélkül az ő audio portjára zenét. Az ilyen dobozkát be lehet építeni az autóba, vagy akár egy aktív hangfal dobozába és kész a wireless audio stream bárhol. Nézzük, mire jutottam. Kétféle megoldást fogok megmutatni – mindkettő járt már a fejemben elég régóta. Az érdekes az, hogy mindkét ötletet implementálták már korábban, vannak is róluk többé-kevésbé használható leírások, én mégis összeszedem ide a saját tapasztalataimat, mert szerintem több szempontból is megéri.
“No time Tolouse” hack: Airport Express vérének kiontása teliholdkor
Az első ötletet a lifehacker dokumentálta precízen. Ennek a lényege, hogy egy gyári Apple Airport Expresst kinyitunk, a nagyfeszültségű tápot kiszedjük és a helyére egy 5V-3.3V átalakítóval egy USB aljzatot kötünk, amit megtáplálunk egy mezei szivargyújtós USB tápkábellel. Az Airport Expresst az asztalon felkonfiguráljuk, aztán mehet a kocsiba, vagy akár a nappaliba bárhova (ez utóbbi esetben nyilván nincs sok értelme annak, hogy szétbarmoljuk a pöpec kis Apple hardvert).Hozzávalók és költségek
- Airport Express: ~32000 HUF
- USB drót: ~500 HUF
- 5V-3.3V átalakító: ~1000 HUF
- szivargyújtós USB töltő: ~1500 HUF
Időszükséglet
- Airport Express konfigurál: ~10 perc
- Airport Express szétszed, táp kibányász, stepdown konverter beforraszt, USB drót beforraszt: ~45 perc
“Szeretünk rollerezni” hack: Raspberry Pi-vel minimalizáljuk a költségeket
A Raspberry Pi alapú játék igazi do it yourself feladat lesz. Nincs konyhakész disztró erre (vagy legalábbis én nem találtam), nekünk kell shellben nindzsáznunk. Azért ez sem rocket science, nyugi.Hozzávalók és költségek
- RPi “A” variáns (egy USB port, no ethernet), 8GB-os SD kárytával: ~9600 HUF
- Micro USB táp (számoljuk csak a kocsiba valót): ~1000 HUF
- USB billentyűzet és HUB – legyen az, hogy van otthon vagy kölcsönbe: 0 HUF
- RPi dobozka: ~1000 HUF
Időszükséglet
Több forrást is találtam, akik a stock Raspbian OS-ből indulva építenek ilyen configot maguknak. Az egyik egy Instructables leírás volt, míg a másik Stanislav Khromov kicsit up-to-date-ebb tutorialja. Kisebb-nagyobb gubancok mindkettővel akadtak, ezért gondoltam, írok egy harmadikat, hogy lássuk, mivel telik az idő, miután kiperkáltuk a 12000 HUF-ot a vasért. 0. Preface Feltételezem, hogy a default “pi” userrel lépsz be és annak home folderében csinálsz mindent, amit írok. 1. OS Ha a RPink mellé rendeltünk gyári SD kártyát, akkor azon nagy eséllyel NOOBS lesz installálva, ami az első bootkor rákérdez, hogy melyik disztrót kérjük és helyettünk süt-főz-mosogat kicsit, majd reboot után előáll a disztónk. Ha magunk csináljuk, akkor vettünk egy 8+ gigás SD kártyát és felpakoltuk rá a Raspbiant. Ezt nem részletezném, tökéletes leírás van minden platformra a Raspberry Pi wikijében. A Raspbian egyébként egy Debian Linux disztró fork. 2. OS config Mindenekelőtt csomag adatbázist frissítünk, beállítjuk a locale-t, billentyűzetet, hostname-et:sudo apt-get update && apt-get upgrade sudo raspi-config
firmware-ralink
modult, így ezzel semmi dolgunk, csak magát a network interface-t kell bekonfigurálnunk. Módosítsuk meg a /etc/network/interfaces
file-t:
sudo vim /etc/network/interfaces
auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 iface wlan0 inet dhcp wpa-ssid "a_wifi_routered_ssidje" wpa-psk "a_wifi_routered_passwordje"
wlan0
network interface:
ifconfig -a
shairport
névre hallgató AirPlay servercsomagunk forrásának fordításához kell majd pár csomag, így felpakoljuk azokat:
sudo apt-get install vim build-essential libssl-dev libcrypt-openssl-rsa-perl libao-dev libio-socket-inet6-perl libwww-perl avahi-utils pkg-config git chkconfig libssl-dev libavahi-client-dev libasound2-dev pcregrep pgrep
git clone git://github.com/Hexxeh/rpi-update.git sudo rpi-update/rpi-update
sudo reboot
parancs kiadásával (fehér ember nem veszi el a tápot proper shutdown nélkül ugye…)
6. ALSA config módosítás
Azért, hogy a shairport indulásakor ne Unknown PCM cards.pcm.front
hibát kapjunk, bele kell picit túrnunk a hangkártyát meghajtó software configfile-jába:
sudo vim /usr/share/alsa/alsa.conf
pcm.front cards.pcm.front
részt és cseréljük ki pcm.front cards.pcm.default
értékre.
7. avahi daemon hack
Ez a discovery service – nem a TV csatorna, egy másik. Ha érdekel a mélye, itt a link felül. A lényeg, hogy a default configgal az avahi daemon szeret nekünk avahi-daemon disabled because there is a .local domain
hibával visszatérni, ami azért nem nagyon jó. Hogy ezt ne tehesse, a DISABLE_TAG paraméterét egy invalid filenévre változtatjuk:
sudo vim /etc/init.d/avahi-daemon
DISABLE_TAG="/var/run/avahi-daemon/disabled-for-unicast-local-DISABLED"
sudo service avahi-daemon restart sudo chkconfig avahi-daemon on
amixer
binárissal default kimenetnek az analóg out-ot, nehogy azért ne szóljon a cucc, mert a HDMIbe tolja a hangjegyeket a mini jack helyett:
amixer cset numid=3 1
aplay
binárissal lejátszatjuk próbának:
wget http://snippets.khromov.se/wp-content/uploads/2013/04/piano2.wav aplay piano2.wav
alsamixer
binárist és tekerjük fel a volumét úgy 85%-ig, hátha csak azért nem szól az egész, mert nullán volt a hang.
9. Shairport install
Ehhez klónozzuk a git repóból a forrást, aztán konfiguráljuk, fordítunk, majd installérázunk:
git clone -b 1.0-dev git://github.com/abrasive/shairport.git cd shairport sudo ./configure sudo make sudo make install
Vizesnyolcas
nevű AirPlay audio target:
./shairport -a 'Vizesnyolcas'
sudo cp shairport/scripts/debian/default/shairport /etc/default/ sudo cp shairport/scripts/debian/logrotate.d/shairport /etc/logrotate.d/
git clone https://gist.github.com/khromov/6398615 sudo cp 6398615/gistfile1.txt /etc/init.d/shairport
sudo chkconfig shairport off sudo chkconfig shairport on
sudo vim /root/shairport-watchdog.sh
pgrep shairport if [ $? -ne 0 ] then service shairport start echo "shairport started or restarted." fi
/etc/crontab
file-t:
sudo /etc/crontab
* * * * * root /bin/sh /root/shairport-watchdog.sh > /dev/null
sudo chown -R pi:pi /home/pi/
sudo reboot
után kisvártatva meg kell, hogy jelenjen a shairport
AirPlay serverünk az AirPlay audio targetek között az AirPlay klienseken. A serverünknek a RPi hostnevét örökli – ha cifrábbat szeretnénk, akkor a /etc/default/shairport
file-ban az AP_NAME=SzabadsagElvtasrak
sor definiálásával módosíthatunk rajta.
Megvagyunk. Summa summarum, nekem ez keresgéléssel, tokkal-vonóval nagyjából 2 órámba telt – ha nekivágsz, neked valószínűleg kevesebb ideig tart, mivel most up-to-date a fent leírt doksi és így menni fog azonnal. Azt mindenki döntse el maga, hogy végig akarja-e tolni a Linuxos vonalat, vagy inkább karosszékből konfigurálná csak az Airport Expresst, mert úgy érzi, öreg már az efféle hackelősdihez. Az én pálcám a “jó pap holtig” irányba tört most.
]]>
Már lassan egy éve gondolkodom rajta, hogy össze kéne rakni. Ez most megadta az utolsó lökést. Köszönöm! 🙂
Pingback: 3D nyomtatás: modellezzünk Fusion 360-nal | eFi.blog
Hm, a posztod elgondolkodtatott: ki kéne próbálni, hogy egy Raspberry+Bluetooth alapú megoldással eltüntetni a vezetékes házimozim hátsó hangfalvezetékeit… Költséghatékonynak nem lesz költséghatékony, de hobbi projektnek esetleg jó lesz.
Gábor, azért azt ne felejtsd el, hogy az Airplay olyan, mint a népdalban a hollókői kiscsizma (=lagos), ami egy mozinál baromi idegesítő lehet!
Pingback: Mac workflow: hátha SONOSt hoz a Jézuska | eFi.blog