Let op: Tweakers stopt per 2023 met Tweakblogs. In
dit artikel
leggen we uit waarom we hiervoor hebben gekozen.
Hacken met 8 jaar oude mediaspeler
Inleiding
Ik heb een hekel aan abonnementsdiensten als het om streaming gaat. Zeker voor muziek vind ik het belangrijk dat ik de media bezit. Ik moet er niet aan denken dat ik allerlei muziek ineens niet meer kan luisteren als om één of andere reden het abonnement op een streamingdienst niet meer werkt.Dus heb ik al jaren mijn muziekverzameling op mijn Synology DiskStation NAS staan. Veel geripte CD's, maar ook recenter spul, wat ik via de iTunes store, of soms een andere online store, heb aangeschaft. Ik gebruik de muziekspeler die bij de DiskStation hoort. De webspeler heet Audio Station, de mobiele app heet DS Audio. Deze speler kan je op twee manieren gebruiken:
- Je kunt muziek 'lokaal' afspelen. Dus in je browser of op het device waar je de mobiele app draait.
- Je kunt muziek 'pushen' naar een DLNA of Airplay apparaat.
Het probleem
In mijn woonkamer staat een Apple TV 4K, die is aangesloten op mijn Denon versterker, die tevens dienst doet als HDMI switch. De versterker is weer verbonden met de TV. Mijn TV is gemonteerd op een TV-lift in mijn TV-meubel. Als ik geen TV kijk, is de lift naar beneden en is de TV dus verborgen. Daarom is het belangrijk dat ik muziek "headless" kan afspelen: ik wil niet mijn TV omhoog doen alleen om de muziek te selecteren. Tot nu toe werkte dat prima: met de DS Audio app kon ik een stream starten, waarbij de muziek vervolgens rechtstreeks van mijn NAS naar de Apple TV gestreamd wordt. (Ik kan mijn telefoon bij wijze van spreken het raam uit gooien en dan speelt de muziek gewoon door.)Helaas is de Airplay ondersteuning van Synology niet heel erg goed. Apple zit al heel lang op Airplay 2, maar om een of andere reden is Synology blijven steken op Airplay 1. Dat werkt niet helemaal lekker samen dus. Toen ik overstapte van een ouder model Apple TV naar de Apple TV 4K, liep ik daar al eens tegenaan. Met hulp van Synology support heb ik toen een work around ingesteld: om één of andere reden werkt het wel als je een Airplay wachtwoord instelt.
Maar helaas, nadat dit meer dan een jaar goed gewerkt heeft, gooide een software update van de Apple TV roet in het eten. Sinds een paar maanden vertoont het afspelen van muziek kuren. Het begint goed, maar na een tijdje spelen stopt de muziek ineens. Op te lossen door even te pauzeren en weer te starten. Maar het begon steeds vaker op te treden. Op een gegeven moment elke twee minuten. Dan is er geen lol meer aan om muziek te luisteren. Uiteraard weer contact gehad met Synology support. Ze hebben het probleem doorgespeeld naar hun ontwikkelafdeling. Misschien dat het ooit wel wordt opgelost, maar dat gaat me te lang duren.
Als het goed is, wordt vanaf DSM 7.0 ook Airplay 2 ondersteund door Synology. Mogelijk dat dat dit probleem ook oplost. Maar ook die release zal nog wel even op zich laten wachten.
Een voor de hand liggende gedachte is dat het mogelijk een netwerk-issue is. Dat heb ik uitgesloten omdat de NAS en de Apple TV beiden bedraad zijn aangesloten op een Gigabit Ethernet Switch, en video streaming zonder problemen en vloeiend gaat.
De oplossing
Ik ben dus op zoek gegaan naar een andere, tijdelijke (?), oplossing. Omdat het hopelijk tijdelijk is, wilde ik er zo min mogelijk geld aan uitgeven. Op Vraag & Aanbod vond ik een tweedehands media speler met UPnP/DLNA ondersteuning, een AC Ryan Playon!HD Mini. Ik kon hem voor €5 + verzendkosten in huis halen, dus daar kon ik me geen buil aan vallen. Er was wel een uitdaging bij: de bijbehorende afstandsbediening zat er niet meer bij. Aangezien ik een oude universele afstandsbediening had liggen, leek me dat niet zo'n probleem.Afstandsbediening
Na een paar dagen had ik hem in huis. Aangesloten en hoppa, beeld! De universele afstandsbediening heeft een modus waarbij hij achter elkaar alle bekende codes probeert. Op het moment dat je apparaat dan reageert, stop je de procedure en staat de AB dus ingesteld op de juiste set van codes. Dat werd een tegenvaller: de AB was alle codes langs geweest, en de speler had niet gereageerd. Blijkbaar gebruikt de speler dus een set codes die niet in de database van de AB voorkomt.Plan B dan: een USB toetsenbord aansluiten. Dat werkte. Met behulp van de pijltjestoetsen kon ik door de menu's van de speler navigeren. Om één of andere reden was het bladeren door de tabs in het instellingen menu gekoppeld aan de skip forward (>>|) en skip backward (|<<) knoppen. Hij reageerde niet op de mediatoetsen van mijn Apple toetsenbord. Ik kon een Logitech toetsenbord met mediatoetsen lenen van een buurman en daar reageerde hij wel op.
UPnP / DLNA streaming
Nu was ik in staat instellingen te maken en het lukte ook om muziek af te spelen vanaf mijn NAS. Helaas alleen als ik dat initieerde vanaf de Playon!HD. "Pushen" vanaf de NAS wilde niet lukken. Heel even verscheen er een Realtek apparaat in de lijst van DLNA apparaten op de NAS, maar na één mislukte poging daar muziek heen te pushen, verdween hij weer. Dat hij als Realtek apparaat herkend werd, klopt trouwens wel: de Playon!HD Mini is gebaseerd op een Realtek RTD128x chip.En toen begon het grote googlen. Zou er een manier zijn om de Playon!HD toch als goed werkende UPnP renderer te gebruiken? Het werd een interessante zoektocht.
Intermezzo: DLNA en UPnP - hoe zit dat?
Ik leerde een hoop bij over DLNA en UPnP, ik deel hier een samenvatting. UPnP is een set van standaarden gericht op het makkelijk aansluiten van verschillende apparaten in huis. UPnP apparaten kunnen bijvoorbeeld automagisch port forwarding instellen op een router die ook UPnP ondersteunt. En UPnP definieert dus ook standaarden om media te streamen tussen apparaten. DLNA is een organisatie die op basis van de UPnP standaarden een meer samenhangende standaard heeft gedefinieerd. Deze slides van het UPnP forum leggen uit hoe UPnP de basis is voor DLNA.Belangrijke begrippen hierbij zijn:
- Media Server: apparaat waarop media zijn opgeslagen, dat een set van services biedt waarmee deze toegankelijk gemaakt worden.
- Media Renderer: apparaat dat media kan weergeven (renderen). Biedt services aan om media te streamen en vervolgens af te spelen.
- Control Point of Controller:
- apparaat dat gebruikt wordt voor bediening van zowel een Server als een Renderer.
In mijn situatie is de NAS dus de Media Server, de Playon!HD Mini is de Media Renderer en de DS Audio app op mijn telefoon is het Control Point. Deze info gaf mij weer wat zoektermen om mijn zoektocht naar een oplossing wat gerichter te doen. Via de List of UPnP AV media servers and clients op Wikipedia kwam ik erachter dat er verschillende open source implementaties van media renderers zijn.
Inloggen via telnet
Zo kwam ik op het idee om te kijken of ik één van die renderers kon installeren op mijn Playon!HD Mini. Na wat zoeken op internet leerde ik dat je gewoon kunt telnetten naar het apparaatje. Je kunt inloggen als root zonder wachtwoord. (Alleen op een intern netwerk gebruiken dus!) Op de Playon!HD Mini draait een vrij oude Linux kernel met daarop een -eveneens oude versie van- BusyBox. (BusyBox is een single executable, die in z'n eentje de veelgebruikte *nix command line tools implementeert.)Eerst eens kijken of ik een firmware update kon vinden. Helaas is de Europese tak van A.C. Ryan in 2012 failliet gegaan. Op de website van A.C. Ryan is geen spoor meer te vinden van de Playon! serie. In de cache van zoekmachines vind je af en toe nog een link naar informatie op de oude site, maar dat leidt altijd naar een 404 op de huidige A.C. Ryan website.
Toen heb ik nog geprobeerd om 'losse' binaries te vinden die geschikt zijn voor Linux op de Realtek RTD128x. Het is een MIPS processortje, daar zijn Linux distros voor. Maar zo'n distro installeren op dit apparaatje lijkt geen haalbare kaart, omdat zaken als een BIOS en normale I/O ontbreken. Ik heb nog geprobeerd wat losse binaries erheen te kopiëren (met TFTP), maar het lukte me niet ze uit te voeren.
moServices
Al speurend op internet, stuitte ik op moServices. Een custom firmware voor apparaten die gemaakt zijn op basis van de Realtek RTD128x of vergelijkbare SOC's. Het blijkt dat diverse fabrikanten apparaatjes hebben uitgebracht die heel erg lijken op het referentieontwerp van Realtek. Daardoor is gebleken dat de firmwares van al die apparaatjes uitwisselbaar zijn. De (Russische) enthousiastelingen van moServices hebben uiteindelijk een custom firmware samengesteld op basis van de beste en meest recente onderdelen uit verschillende van die firmwares en daar zelf de nodige (open source) software aan toegevoegd. (Merk op dat "meest recent" in dit geval nog steeds relatief oud is, het is een apparaat uit 2012 en ook fabrikanten die niet failliet gingen, zijn uiteindelijk natuurlijk gestopt met ondersteuning en doorontwikkeling.)De instructies op het forum zijn niet heel erg duidelijk, waarschijnlijk ook omdat ze door russen geschreven zijn. Diverse apparaten op basis van de RTD128x worden bij naam genoemd, maar de A.C.Ryan apparaatjes kom je op het forum niet of nauwelijks tegen. Er was dus een kans dat het niet zou werken en dat ik mijn Playon!HD mini zou bricken. Maar ik had weinig te verliezen, dus besloot het erop te wagen.
Firmware flashen
De website van moServices bestaat alleen maar uit een forum. Het grootste deel daarvan is in het Russisch, maar er zijn een aantal Engelstalige pagina's. (En Google translate helpt met de rest.)De firmware heb ik gedownload van deze pagina. Er staan twee varianten, ik heb de eerste genomen, dus zonder de toevoeging "with ordinary install". Ik denk dat die "ordinary install" gaat over een soort installatie-wizard die je helpt een skin te kiezen. Aangezien ik uit een andere beschrijving ergens op dat forum had opgemaakt dat dat met de afstandsbediening werkt, leek me dat in mijn geval geen handig keuze.
In de Engelstalige FAQ staat duidelijk vermeld dat je voor het flashen een FAT32 geformatteerde USB drive moet gebruiken, waar je het bestand
install.img
.img
.img
code:
1
| unzip amp_r13_nogui_install.zip |
Daarna gewoon de
install.img
Dan het flashen zelf. Op het moServices forum worden drie methodes beschreven. Ik heb gekozen voor de makkelijkste, via de update optie in het menu. Werkte prima.
Nadat de nieuwe firmware geïnstalleerd is, draait er een webserver op poort 80 van het apparaatje. Je kunt dus gewoon browsen naar het IP-adres van het ding. In die interface kan je hem beheren. Je kunt skins downloaden en installeren, modules aan- en uitzetten en nog wat dingen. Niet de meest gelikte interface, maar ook niet heel slecht ofzo. Werkt prima in ieder geval. Omdat ik dus de "kale" installatie had gekozen, moest ik via deze weg een "skin" installeren, zodat er ook een GUI op mijn TV verscheen. Ik koos voor de VRT Gui, omdat die wordt aanbevolen als de meest stabiele.
Afstandsbediening, revisited
Eén van de leuke dingen van deze firmware, is dat er een module bij zit om IR-codes te remappen. Deze module heet IRFake. En omdat ik toch wel graag wilde dat de player zou werken met mijn oude universele afstandsbediening, ben ik daar wat verder in gedoken. De pagina van het IRFake programmaatje zelf op Google Code bestaat helaas niet meer. Maar op het moServices forum vond ik deze thread waar e.e.a. wordt uitgelegd over IRFake. De beschrijving daar is wel wat achterhaald, want je hoeft de module niet via een telnet sessie te installeren, dat kan gewoon via de webinterface.Wat wel kan via telnet, is IRFake starten in 'capture mode'. Dan kan je dus een toets indrukken op de AB en geeft hij de key code weer op de console. Op die manier heb ik de codes van een aantal relevante toetsen op mijn universele afstandsbediening achterhaald. IRFake starten in capture mode gaat zo:
[code=shell]
irfake4 -c
[code]
IRFake heeft ook een keurige "usage" melding als je hem opstart met
-h
Met de gevonden codes kon ik de
irfake.conf
UPnP rendering
De laatste horde die ik moest nemen, was het pushen van muziek vanaf mijn NAS aan de praat krijgen. Het eerste wat opviel, wat dat de "Realtek UPnP Renderer" nu consequent zichtbaar was op de NAS en in de DS Audio app. Maar het streamen wilde niet meteen lukken.Het starten van een stream via de UI van de Playon!HD mini lukte altijd, maar pushen met de DS Audio app lukte alleen bij bepaalde playlists. Het bleek dat playlists met MP3-bestanden zonder problemen afspeelden, terwijl andere formaten problemen gaven. Dat vond ik raar, omdat alle formaten ondersteund zouden moeten worden door de Realtek chip. Dat bleek ook, omdat het afspelen wel lukte als ik het initieerde vanaf de Playon!HD mini. Ik ben wat gaan snuffelen in de instellingen van de UPnP-server van de NAS. Daar staat een optie om bepaalde audioformaten te transcoden voor "verhoogede compatibiliteit met DLNA apparaten". Maar blijkbaar doet dat meer kwaad dan goed, want door die optie helemaal uit te schakelen, werkte het wel.
Conclusie
Eind goed al goed. Ik heb een oud apparaatje kunnen redden van de storthoop en kan weer met plezier audio streamen in mijn woonkamer. Ondertussen weer wat geleerd over DLNA, UPnP en BusyBox. En wederom aangetoond dat je zonder abonnement bij een van de grote streamingdiensten toch overal je favoriete muziek kunt streamen.Reacties
Mooi verhaal. En het houd je van de straat. Lekker beetje pielen met oude zooi is prima tijdverdrijf.
Je had natuurlijk ook gewoon een ChromeCast achter in je receiver kunnen douwen en dan je audio daarheen casten. Maar ja, dit is natuurlijk leuker.
Je had natuurlijk ook gewoon een ChromeCast achter in je receiver kunnen douwen en dan je audio daarheen casten. Maar ja, dit is natuurlijk leuker.
Leuker, goedkoper. En ChromeCast mijd ik als de pest, vanwege de Google-connectie.sys64738 schreef op zaterdag 16 mei 2020 @ 14:00:
Mooi verhaal. En het houd je van de straat. Lekker beetje pielen met oude zooi is prima tijdverdrijf.
Je had natuurlijk ook gewoon een ChromeCast achter in je receiver kunnen douwen en dan je audio daarheen casten. Maar ja, dit is natuurlijk leuker.
na bovenstaande verhaal had ik eerder verwacht dat je zou zeggen: airplay mijd ik als de pest, vanwege de vendor-lockin-connectie.
Hm, goed punt. Als er een privacy-vriendelijke open oplossing zou zijn, die ook gebruikersvriendelijk is, zou dat nog beter zijn natuurlijk. Helaas is dat niet zo. En als ik moet kiezen tussen het opgeven van mijn privacy of het accepteren van een (beperkte) vendor lock-in, kies ik voor nu toch het laatste.Mar2zz schreef op maandag 18 mei 2020 @ 15:33:
na bovenstaande verhaal had ik eerder verwacht dat je zou zeggen: airplay mijd ik als de pest, vanwege de vendor-lockin-connectie.
Ha! Heb er hier ook nog eentje staan, op zolder zodat ik daar mijn films (op de HDD) nog kan afspelen. Blij dat ik de AB nog wél heb.
Als je een "lerende" AB (Logitech Harmony?) hebt, kan je die twee wel koppelen en "leert" de Harmony de knoppen van de AC Ryan AB. Zijn er best veel namelijk.
Maar dit alles uitzoeken geeft een beter gevoel
Als je een "lerende" AB (Logitech Harmony?) hebt, kan je die twee wel koppelen en "leert" de Harmony de knoppen van de AC Ryan AB. Zijn er best veel namelijk.
Maar dit alles uitzoeken geeft een beter gevoel
Klopt, maar dat werkt natuurlijk alleen als je de originele AB nog hebt... Ik heb trouwens geen Harmony ofzo, maar een heel oude Philips. Die heeft inderdaad ook zo'n leerfunctie.dutch_Solo schreef op woensdag 20 mei 2020 @ 00:05:
Als je een "lerende" AB (Logitech Harmony?) hebt, kan je die twee wel koppelen en "leert" de Harmony de knoppen van de AC Ryan AB. Zijn er best veel namelijk.
Welke Denon versterker heb je? En werkt die niet met Heos samen? Ik heb hier een aantal Heos boxen staan. En kan die direct vanuit a) ds audio selecteren. of b) van uit de heos app de nas opzoeken (ook een dlna bib van aangemaakt).
[Reactie gewijzigd op woensdag 20 mei 2020 15:27]
Ik heb een Denon AVR-1311. Een wat ouder model, dus geen internet/netwerk-aansluiting.SonOfSam schreef op woensdag 20 mei 2020 @ 15:27:
Welke Denon versterker heb je? En werkt die niet met Heos samen? Ik heb hier een aantal Heos boxen staan. En kan die direct vanuit a) ds audio selecteren. of b) van uit de heos app de nas opzoeken (ook een dlna bib van aangemaakt).
Hoi Trab_81. Heb jij enig idee wat er fout kan zijn als ik het volgende probleem heb:
Bij beide downloads van de firmware van moServices krijg ik bij de methode [update via USB] de melding dat er geen update is gevonden op de USB-drive.
Drive geformatteerd zoals aangegeven op FAT32 en de install.img is het enige bestand daarop.
Ook de "standaard" manier van flashen werkt niet
USb insteken, knop ingedrukt houden en dam de Ryan van stroom voorzien.
In dat geval zie ik dat de USB-stick even actief wordt, maar verder gebeurt er niets, hoelang ik de aan/uit knop ook ingedrukt houd.
Het ligt niet aan de USB-drive, want als ik deze methode met de "standaard"-image gebruik, werkt het prima.
Bij beide downloads van de firmware van moServices krijg ik bij de methode [update via USB] de melding dat er geen update is gevonden op de USB-drive.
Drive geformatteerd zoals aangegeven op FAT32 en de install.img is het enige bestand daarop.
Ook de "standaard" manier van flashen werkt niet
USb insteken, knop ingedrukt houden en dam de Ryan van stroom voorzien.
In dat geval zie ik dat de USB-stick even actief wordt, maar verder gebeurt er niets, hoelang ik de aan/uit knop ook ingedrukt houd.
Het ligt niet aan de USB-drive, want als ik deze methode met de "standaard"-image gebruik, werkt het prima.
Het zou kunnen dat de image niet goed is? Je kan hem proberen opnieuw te downloaden. Eventueel een checksum-check doen om te kijken of de download goed gegaan is.gjvang schreef op dinsdag 9 februari 2021 @ 11:15:
Hoi Trab_81. Heb jij enig idee wat er fout kan zijn als ik het volgende probleem heb:
Bij beide downloads van de firmware van moServices krijg ik bij de methode [update via USB] de melding dat er geen update is gevonden op de USB-drive.
Drive geformatteerd zoals aangegeven op FAT32 en de install.img is het enige bestand daarop.
Ook de "standaard" manier van flashen werkt niet
USb insteken, knop ingedrukt houden en dam de Ryan van stroom voorzien.
In dat geval zie ik dat de USB-stick even actief wordt, maar verder gebeurt er niets, hoelang ik de aan/uit knop ook ingedrukt houd.
Het ligt niet aan de USB-drive, want als ik deze methode met de "standaard"-image gebruik, werkt het prima.
Hoi TRab_81
Hier het zelfde probleem. Image word niet gezien als ik zoek naar Update., en wat is een hecksum-check ?
En hoe kom ik met telnet op de mediaplayer ?
Is er een manier om hem directe te koppelen aan mijn PC zodat ik er bij kan?
Ik wil deze heel graag een nieuwe leven inblazen
gr
Schaikies
Hier het zelfde probleem. Image word niet gezien als ik zoek naar Update., en wat is een hecksum-check ?
En hoe kom ik met telnet op de mediaplayer ?
Is er een manier om hem directe te koppelen aan mijn PC zodat ik er bij kan?
Ik wil deze heel graag een nieuwe leven inblazen
gr
Schaikies
Om te kunnen reageren moet je ingelogd zijn. Via deze link kun je inloggen als je al geregistreerd bent. Indien je nog geen account hebt kun je er hier één aanmaken.