Zenelejátszás, autóban, Raspberry Piről

Kollegám vetette fel, hogy az öreg Dension médiatárját felváltaná egy RPi-vel a kocsiban. Touch screen, Kodi, external disk, etc... De ő a hangot az RPi hangkimenetén vinné át.
Ugyanolyan autórádiónk van - nagyjából - és tudom, ha az enyémre USB-n rádugom az iPhone-t, akkor a rádió kijelzőjén választhatom ki, hogy melyik albumot, lejátszási listát vagy számot akarom lejátszani. Ezért én nem az AUX bemenetét használnám a rádiónak, hanem USB-n szeretném rákötni az RPi-t, hogy az pont olyan távirányítható legyen mint az iPod/iPhone. Nincs valakinek ötlete, hogy milyen irányban érdemes e kérdésben elindulni?

Hozzászólások

Biztos az RPI a legjobb megoldás? Nem lenne jobb egy "célhardver"?

Félreértettél. USB képes autórádió van, beépítve a kocsiba. Az RPi a zene forrása lenne, mint egy iPod. És nem filesystem megosztással, mert - bár ezt alátámasztani nem tudom - van egy olyan érzésem, hogy az iPod az USB kapcsolaton nem filerendszert oszt meg, hanem streameli a zenét.

Ave, Saabi.

Értettem én, hogy kb. azt akarod, hogy az rpi adja a zenét, és a hangkimenetét összekötöd a rádió bemenetével (vagy valami ilyesmi módon).

Inkább te értettél félre - bár tény, nem írtam le teljesen: mint ahogy lentebb is írták, nem egyszerűbb egy pendrive-ot bedugni az autórádió usb-portjába?
De látom közben, lentebb már ecseteled részletesebben :)

(anno dolgoztam a Densionnál, pont ilyeneken)

Úgy emlékszem, az iPodok egy ideig támogatták USB-n a mass storage protokollt, tehát ha rádugtad PC-re, akkor látszódott a fájlrendszer, igaz, a fájlnevek zagyvák voltak, viszont le tudtad játszani őket. Ha egy ilyet rádugsz egy sima USB-s rádióra, az is látni fogja a fájlokat és le tudja játszani.

Utána ezt kivették, és már csak valamilyen más (Apple-specifikus? MTP?) protokollt támogattak az iPodok és gondolom az iPhone-ok is, de erről nem sokat tudok. Feltételezem, ha ma rádugsz egy iPhone-t USB-n valamire, akkor nem USB mass storage eszközként fog látszódni, tehát a zenék lejátszása nem teljesen triviális. Van azonban egy protokoll, amivel el lehet érni az iPhone/iPod tartalmát, és lényegében a Dension gateway-ek is ezt implementálták. Ha olyan rádiód van, ami ismeri ezt a protokollt (pl. egyes Kenwood modellek, de biztos van egy rakat másik is), akkor szépen le tudod játszani a zenéket.

Nem tudom, az RPi-n van-e USB device, ha igen, akkor bármilyen USB eszközt tudsz vele alkotni szoftveresen. Pl. USB mass storage-et. Ha ezt választod, akkor rákötve az USB-s rádiódra az RPi-t, ő azt egy USB mass storage eszköznek (pl. pendrive) fogja látni.

A Kodi távirányítása nem ilyen egyszerű. Amit tudok a Kodiról, az az, hogy lehet HTML kérésekkel távirányítani, vagy UDP üzenetekkel (iOS/Android). Ez egészen biztos, implementáltam, a mai napig használjuk fejlesztési célokra az Official XBMC Remote App-ot, hogy a saját IPTV set-top-boxunkat piszkáljuk vele ;)

Ha nekem kellene ezt megoldani, én így csinálnám (hasonló sémával oldottuk meg, hogy élő netrádiót lehessen hallgatni USB mass storage deviceról):
- írnék egy saját USB mass storage linux gadget drivert;
- a driver pl. hat mp3-at mutatna, nevük le.mp3, fel.mp3, balra.mp3, jobbra.mp3, enter.mp3, esc.mp3, méretük egy frame, tartalmuk csend;
- ha a rádióval vmelyiket megnyitod, akkor ezt látja az USB gadget driver és elküldi a megfelelő gombot a Kodinak;

Így tudod távirányítani az USB-s rádiódról a Kodit. Vannak bajai a dolognak, ha pl. a rádió egymás után végigjátsza a könyvtár tartalmát, akkor az összes gombot beviszi... ha a távirányítási események nem fájlok, hanem könyvtárak, és a triggert az jelentené, hogy belépsz az adott könyvtárba, az már jobb, viszont a követkető esemény előtt mindig ki is kellene lépned, ami nagyon zavaró.

Ezt nem fogja senki otthon, heti másfél óra fejlesztési időben, gányolt bash scriptekkel megoldani. Ez már egy komolyabb fejlesztés, ami igényel szakmai felkészültséget is...

Köszönöm! Eddig te vagy az egyetlen, aki megértette a problémát. Nyilván nem akarok RPi-vel USB-s mass storage-t megvalósítani, annak tényleg nem volna semmi értelme, hisz erre elég egy pendrive. Illetve akkor talán, ha a pendrive-oknál nagyobb tárolót szeretnék használni, de gondolom ha direktben nem megy, akkor RPi-n keresztül se fog.
Örülök, hogy megerősítetted a sejtésem, miszerint az iPodok _nem_ a filerendszerüket osztják meg a fejegységgel. Ennek már csak azért sem látnám értelmét, mert ha az iPodot egy Macen formáztam, akkor a filerendszere HFS, azt meg nem fogják az autósrádiók támogatni, ez elég valószínű. Ráadásul eléggé szembe menne azzal, amit az Apple-től megszoktunk.
Tehát valószínűleg az iPod streameli a zenét a fejegységnek, az meg valamilyen protokollon távvezérli az iPodot. Én ennek a módjára lettem volna kíváncsi, hátha valaki tudja rá a választ. Ha nem, nyilván keresek tovább, de egy kört megért.
Maga a probléma számomra inkább érdekes, mint mindenképp végrehajtandó feladat, lévén az iPhone sokkal alkalmasabb pl. streamelt zene továbbadására a fejegység felé - pl. Spotify - mint egy mikroszámítógéppel megvalósított DIY eszköz. Egyszerűen kíváncsi vagyok e feladat megoldására.

Ave, Saabi.

namost elvesztem abban amit írtál.
Emlékeim szerint van olyan opensource lejátszó, ami linux alatt is tud "itunes"-ként viselkedni, azaz írja olvassa a zenéket a telefonon. (talán a borítokat is kezeli) Itt kereshetsz ez irányban.

Viszont az USB-ből ugye van "Master" (mint a fejegység, rPI, számítógép) és "Slave" mint a pendrive, telefon. Ezek nem keverendők.
Az rPI-t eléggé meg kéne barkácsolni szerintem, hogy USB Slave deviceként látszódjon a fejegység felé.

ezügyben nem tudok nyilatkozni. Létezik olyan kábel amivel két gépet lehet USB-n összekötni.
Azt nem tudom, h ebben van-e valami okosság (értsd emulál mondjuk egy pendriveot) vagy nincs.

elméletileg létezik olyan (e)SATA megoldás is (talán Marvel-nél olvastam), hogy két gépet össze lehet kötni (e)SATA porton.

Őszintén szólva erre azt mondanám, hogy érdekes a kérdés, de én nem szállnék fel erre a szopórollerre.
Van egy megvalósítandó feladat, ami elérhető áron megoldható kész eszközökkel.
Amiket itt felhoztál, azok nemhogy software szinten nem hozzák neked kapásból az igényeidet (értsd a fejegységről való távirányítás) de hardware oldalon sem (két USB-master összekötése).

A fenti threadből kiindulva ez több tíz órás buherálkodás után SEM vezetne eredményre, de még csak meg sem közelítené azt. Természetesen ha tonnaszámra áll az eltölteni való idő, akkor fogjál bele, de inkább el tudom képzelni azt, hogy akár a szabadidődben sokkal kevesebb eltöltött idővel több pénzt tudsz keresni mint 2 céleszköz ára.

ps: ha olyan projektet keresel ahol korlátlan mennyiségben lehet szívni, akkor szólj :-)

Sejtheted, hogy nem fogok több száz órát beleölni ebbe a feladatba. Pont ezért kérdeztem itt, meg kutakodtam a zinterneten, hogy nagyjából fel tudjam mérni, mekkora feladat mindez.
Már csak azért sem, mert az adott problémára egészen jó megoldást ad az iPhone-om, de abban azért nincs nagy kihívás, hogy egy eszközt arra használjak, amire való. :-D Ráadásul azért akadnak bosszantó apróságok, melyek ugyan nem feltétlen az iPhone-nak tulajdoníthatóak, de attól még vannak és bosszantanak.

Ave, Saabi.

Az elméleti lehetőség megvan :)


(For Model B) The presence of this hub IC prevents the USB ports from being 
used in slave mode. However, as the Model A does not have this IC present 
and instead just has a single USB port connected directly to the SoC's OTG port
it should be possible to configure it to act in slave
mode through software.

Csak akkor hova kötöd a winyót (egyszerre nem lehet slave és master).

Az USB úgy működik, hogy van host, meg van device. A host kérdez, a device válaszol. Minden pillanatban pontosan egy darab host lehet, a többinek device-nak kell lennie. A két csatlakozó amúgy eltérő formájú, szóval véletlenül sem lehet máshogy összedugni - ebből adódik, hogy ez dinamikusan nem is változtatható.

Aztán létezik az a fajta USB interfész, ami akármelyik tud lenni a kettő közül, attól függően, hogy milyen kábelt dugsz rá (alapból device, de a megfelelő kábellel hosttá változik), ezt hívják OTG-nek, tableteken és telefonokon szokott ilyen lenni. Ha valamin fix USB host aljzat van (az a fajta, mint ami a PC seggén szokott lakni), akkor az biztosan nem tud device lenni.

Csillióféle SBC-t lehet kapni, amin van több direkt USB is, host/OTG vegyesen. Pl. az összes Allwinner A10/A20-alapú szaron van három USB (ennyi van a CPU-n direktben), ebből egy OTG, a másik kettő vagy ki van vezetve host portnak közvetlenül, vagy az egyiken/másikon van valami beépített periféria (pl. wifi interfész), vagy egy 2/4-portos hub.

Mivel vannak ipod foglalatos hangszórók is, így simán lehet hogy az audio kimenet is ott van a csatlakozón. A vezérlésnek is lehet valami protokolja, mint a fülesek vezérlőgombjainak. Mondjuk az újabb fajta apple cuccoknál nem tudom változott-e ilyen téren valami, mert ugye cserélték a csatlakozókat.

A harminc tűs csatlakozón egészen biztosan vannak analóg audió kivezetések (sőt, videó is, mivel pár éve az iPodok videót is le tudnak játszani) ugyanakkor a rádió USB bemenetén nem valószínű, hogy audió bemenet akadna. Arra a négy pinre sokminden azért nem fér fel. :-)

Ave, Saabi.

tselmeci részben leírta: ha USB-n kötöd az eszközt az autórádióra, az 90% valószínűséggel az eszköz tárterületéről - mint mass storage device - maga játssza le a tartalmakat, nem a kapcsolt eszközzel játszatja le, így gyakorlatilag tök felesleges egy RPi erre a célra.
Amit te szeretnél, arra a tökéletes megoldás a kettőtök kombinációja:
- A tartalmat az RPi, Kodi játsza le, a hangot analóg módon viszed be a fejegységbe
- A vezérlést pedig a CD-tár csatlakozóján oldod meg (ezt csinálják a Dension eszközök is). Na, ez az, amit viszont le kell programozni az RPi-re, egyrészt HW csatolást a fejegység felé (manapság már általában CAN/VAN busz, régebbi rádióknál viszont mindenféle egzotikus saját protokol), másrészt a Kodi felé mint távirányító (bár, mondjuk Lirc modul-ként lehet, hogy találsz ilyen kódokat a neten)

-------------------------------^v-----------------------------------
"Probléma esetén nyomják meg a piros gombot és nyugodjanak békében!"

Az még nem derült ki, hogy milyen autóról van szó.
Az én Honda Accordom beépített fejegysége (igen 2003-as széria) még nem tudott MP3-at lejátszani CDről sem. Kb 100USD áron rendeltem ebay-ről bele CDtár emulátort, ami SD kártyáról olvas. A "lemezeket" CD01-CD12 könyvtárba kellett másolni (mp3 formában), és teljesen úgy kezelte, mint a gyári CDtárat (kormányról is vezérelhető).

Ez az egység rendelhető sok gyártóhoz (XCarLink) hasonló de olaszokhoz (Loudlink) ez utóbbi "helyben" készül.
Bedugod a CDtár csatlakozóra, és működik is, no barkács.

Az RPi képes kezelni egy rádugott külső USB-s merevlemezt, míg a rádió nem. Mondjuk minden mást jobban csinál az iPhone, beleértve a Spotify-n streamelt zene átküldését, de ha sikerül megoldani az RPi vezérlését az autórádióról, talán más okosság is az eszembe jut. Meg egyszerűen érdekel, hogy milyen módon kommunikál a rádió az USB portok keresztül, milyen protokollon irányítja az iPodot. (azt tudom, hogy Bluetoothon van erre egy szabványos megoldás, de azt még nem találtam meg, hogy miként történik ez USB-n)

Ave, Saabi.

nem biztos, hogy autóban forgó lemezt szeretnék használni (hacsak nem muszáj).
(miért nem jó egy 32-64G USB drive?)

Azon is csodálkoznék, ha rövid időn belül meg tudnád fejteni a fejegység és lejátszó közti kommunikációt.
Akkor már inkább tegyél fel egy (érintőképernyős/gombos) kijelzőt az rPI-hez :-)

Én is használnék rpi-t autóban, igaz, nekem inkább médialejátszóként funkcionálna.
Koncepció:
Adott 8 hangszóró a kocsiban és egy JVC KD-R432 lejátszó. Alapvető zenehallgatásra tökéletes. Az aux bemenetére kötném az RPI hang kimenetét. Kínai testvéreinktől rendelnék 2 (nem touch) kijelzőt a két fejtámlába, így a két gyerek nézhetné a mesét. Elől lenne egy touch screen, amin lehetne vezérelni az xbmc-t. Egyelőre az első kijelző helyét nem sikerült még kifundálnom, '96-os évjárat révén ilyesmit még nem igazán terveztek bele.
A fejtámlákon a huzatot le lehetne hajtani és tépőzárral rögzíteni, az első kijelzőt pedig elnyeletni a műszerfallal, amikor nincs használva. Első körben RCA-val osztanám szét a képet a 3 kijelzőre, mert olcsóbb és egyszerűbb(nek tűnik), mint a HDMI.
Szerintetek mennyire működőképes a koncepció?

-----------
"Pontban 0:00-kor nem nagyon szoktak véletlen dolgok történni"

+1000, Jok az ilyen otletelesek.Ha vegig olvassa az egyszeri ember, olyan informaciokat is megtudhat, amire magatol lehet soha ra nem keresne.

Már ezért érdemes volt feltenni a kérdést, még ha végül mégsem csinálom meg, amit eredetileg gondoltam. Mint kiderült, jobb úgyse lesz a jelenlegi, telefonos megoldásnál, de legalább lehetne vele szívni napokat, heteket. Mondjuk ezért is érdemes volt feltenni a kérdést, minek szívjon az ember, ha nincs értelme?

Ave, Saabi.