Ideen - Werkstatt - Projekte - Basteln - Hausbau

Bau eines MP3-Players mit Grafik-LCD

Aktuelles

Hier beschreibe ich den Fortschritt meines neuen Projektes, ein MP3-Player auf Basis des Mini-ITX Boards VIA EPIA ME6000. Die anderen Seiten dieser Homepage beschreiben meinen alten Player auf Basis eines AT Mainboards. Bitte nicht verwechseln :-)
Der besseren Lesbarkeit wegen stehen die neuesten Information ganz unten.

3.10.2003
Pläne für einen neuen Player auf der Basis eines VIA EPIA Mainboards sind neu erwacht...

19.10.2003
Habe ein VIA EPIA ME6000 bestellt. Trotz fehlender Informationen auf der Alternate Webseite soll dieses Board einen S/PDIF Ausgang haben. Auf ihm (und auf der Lüfter-losen CPU des EPIA Boards natürlich) ruhen all meine Pläne.
Davon habe ich inzwischen auch genug, z.B. die S/PDIF Schnittstelle auch für AC3-Streams zu nutzen, das LCD mittels USB an den Rechner anzuschliessen, ein modulares Software-Konzept auf die Beine zu stellen und noch einige andere Dinge, denen man evtl. das Prädikat "abgefahren" verleihen könnte. Doch darüber möchte ich mich jetzt noch nicht auslassen :-)

27.10.2003
c't 22/2003 gelesen, S. 232: Multimedia-Architektur NMM
Das modulare Software Konzept gibt es also schon: www.networkmultimedia.org! Interessant, aber vielleicht ein bisschen zu groß für einen einfachen Mp3-Player. Vor allem wenn es eine graphische Benutzeroberfläche vorraussetzt.
Außerdem: Das VIA ME-6000 Board ist da! Leider muss ich noch auf das Netzteil warten...

1.11.2003
Das Netzteil ist angekommen. Das Basteln kann beginnen! Meine jetzige Konfiguration:

VIA EPIA ME6000 mit 256MB RAM
Festplatte Western Digital WD400EB
300 Watt Netzteil mit geregeltem Lüfter
Betriebsystem: Suse Linux 8.1

Bild 1: Mein fliegender Aufbau (56kB)
Bild 2: Das VIA Board im Detail (Achtung: 1.1MB)

Am Anfang bin ich etwas ins Schwitzen geraten, da sich Linux nicht installieren lassen wollte. Im Netz fand ich dazu die Aussage, dass die VIA Prozessoren nicht 100% Intel kompatibel sind und man daher einen 486er Kernel braucht, den aber Suse bei den neueren Versionen nicht mehr mitliefert.
Dies trifft auf das ME6000 jedoch nicht zu! Das Problem war lediglich ein defekter Arbeitsspeicher. Um es noch einmal deutlich zu sagen: Suse 8.1 lässt sich problemlos auf dem ME6000 installieren (Suse 8.2 soll dagegen tatsächlich Probleme bereiten).

Mein erster Eindruck: Schön leise (klar, ohne CPU Lüfter!) aber auch recht langsam. Für die tägliche Arbeit würde ich doch einen schnelleren Rechner vorziehen, aber zum dekodieren von MP3s ist genügend Power da.
Mein zweiter Eindruck: Die Kühlkörper auf dem Mainboard werden heiss, auch wenn das System nicht ausgelastet ist. Außerdem: Die neue WD Festplatte ist (für einen MP3-Player) zu laut. Ich hatte sie bei Alternate ausgesucht, dabei schon auf den Geräuschpegel geachtet, aber keine großen Recherchen angestellt. Ich dachte inzwischen seien die Festplatten ohnehin alle leise genug. Was für ein Irrtum!

Nach 12 Stunden surfen und ausprobieren läuft inzwischen auch der SPDIF Ausgang. Ich benutze den VIAAUDIOCOMBO Treiber (Achtung, veraltet! Siehe weitere unten!). Was ich jedoch nur im Quellcode des Treibers gefunden habe: Um den SPDIF Ausgang zu aktivieren, benötigt der Treiber in modules.conf die Option spdif_out=1.

go to the top 2.11.2003
Habe wegen meinem Festplattenheuler etwas recherchiert:
  1. Die Lautstärkeangaben auf der Alternate Webseite scheinen zum Teil nur Hausnummern zu sein. Ich vermute, die Redakteure haben einige Einheiten durcheinander gewirbelt. Ab jetzt verlasse ich mich nur noch auf das Plattenkarussell der c't.
  2. In meinem alten Player habe ich eine Seagate ST340016A (40 GB, Barracude ATA IV). Diese ist laut c't tatsächlich deutlich leiser als die neue WD. Laut Plattenkarussell der c't 14/2003 ist die Samsung SV0802N (80GB) noch um einiges leiser als meine leise Seagate Platte. Ich werde die Samsung Platte bestellen und meinen Eindruck hier veröffentlichen.
Hat vielleicht jemand Interesse an einer WD400EB Platte? Neu, mit noch fast 2 Jahren Garantie, günstig abzugeben..?

6.11.2003
Frust! Der S/PDIF Ausgang des ME6000 hat einen entscheidenden Schönheitsfehler: Er klingt wesentlich schlechter als mein guter alter PUMP mit analogem Ausgang!
Die Ursache ist wohl folgende:
PCM Ströme, wie sie zum Beispiel beim Abspielen von MP3s enstehen, können von dem VT1616 Audiochip nur mit einer Frequenz von 48 kHz ausgegeben werden. Die allermeisten MP3s sind jedoch mit 44.1 kHz kodiert worden, so dass eine Konvertierung der Sampling-Rate von 44.1 kHz auf 48 kHz notwendig ist. Und das hört man. Vor allem das Piano bei Spencer Brewer's "Child's Play" ist eine echte Zumutung für meine Ohren.
Mein Rat: Kauft das ME6000 NICHT wegen seinem S/PDIF Ausgang!
Ich werde mich also nach einem anderen S/PDIF Ausgang umsehen müssen. Meine Soundblaster LivePlayer! klingt wesentlich besser. Allerdings möchte ich nicht das kleine VIA Board mit einer riesigen Soundkarte verbauen. Halte Ausschau nach einer S/PDIF Minimallösung, z.B. auf einer kleinen PCI Karte oder als USB->S/PDIF Konverter.

9.11.2003
Habe die Klangqualität weiter untersucht: Die Soundblaster LivePlayer! spielt auch nur mit 48 kHz. Anscheinend funktioniert die Konversion von 44.1 kHz auf 48 kHz hier aber besser.
Daraufhin habe ich den Via-Sound Treiber durch den Alsa-Treiber ersetzt (eine Anleitung dazu habe ich auf der sehr informativen Webseite von Hubert Högl gefunden). Und siehe, die Klangqualität ist tatsächlich besser geworden! Damit kann ich vorerst einmal leben.
Außerdem habe ich das Abspielen von Ac3 Dateien getestet (Das Ac3-Format wird auf den meisten DVDs benutzt. Es ist für mich interessant weil es 5.1 Dolby Surround Sound enthalten kann.) Dazu habe ich Ac3play verwendet. Fazit: Funktioniert einwandfrei.

Nachtrag zum Thema DMA: Der Linux Kernel von Suse 8.1 erkennt die Southbridge VT8235 des ME6000 nicht und verhindert den Betrieb der Festplatte im DMA Modus. Die Nutzung von DMA ist jedoch auch zum Dekodieren von MP3s unbedingt zu empfehlen, vor allem wenn noch andere Prozesse laufen.
Dazu musste ich zwei Kernel-Dateien patchen und den Kernel neu compilieren. Zum Thema Kernel Kompilieren gibt es jede Menge Howtos, z.B. dieses. Danach lässt sich der DMA Modus mit dem Tool hdparm einschalten.

17.11.2003
Auf der Suche nach einer Non-08/15 Benutzerschnittstelle habe ich mir einige Gedanken über (elektrische) Berührungssensoren gemacht.
Vorteile:
Klein, extrem niedrige Bauhöhe, keine beweglichen Teile
Nachteile:
Schlechte Haptik, Zuverlässigkeit noch unbekannt.
Inzwischen habe ich auch schon einen Prototyp gebaut. Weitere Informationen darüber habe ich auf diese Seite ausgelagert.

Dezember 2003
Die Idee mit den elektrischen Berührungssensoren habe ich gecancelt. Zuverlässige Berührungssensoren muss man kapazitiv aufbauen. Dazu gibt es im Prinzip ganz nette Chips der Baureihe qt110 von Quantum. Leider konnte ich als Privatperson bisher keines dieser Bauteile ergattern.

Außerdem kommen mir im Dezember ein paar andere Dinge "dazwischen" (ein Haus, ein Kind und eine Promotion), so dass das Projekt erstmal im hintersten Winkel eines Schranks verschwindet.

Januar 2005
Der Stress lässt nach, weiter geht's mit dem MP3-Player. Da mir aber aus bereits genannten Gründen :-) nun nicht mehr unbegrenzt Zeit zur Verfügung steht, muss ich wohl so langsam Nägel mit Köpfen machen:
  • Das ursprünglich angedachte innovative (aber komplizierte) Gehäuse wird ebenfalls gecancelt, statt dessen gibt es eine einfache Holz-Aluminium Konstruktion.
  • Nach kurzen überlegen baue ich das gleiche blaue 240x128 Graphik-LCD ein, das auch schon in meinem alten Player werkelt, gekauft bei LC-Design.
  • Für die Benutzereingabe kommen zunächst ganz normale Drucktaster in Frage, die die Alpha-Numerische Eingabe von Artist, Album etc. ermöglichen, siehe dazu auch die Beschreibung der Fernbedienung.
  • Ein Scrollrad ist optional vorgesehen, inzwischen nervt mich dessen Bedienung jedoch, da man bei sehr langen Listen doch eine Weile braucht, bis man den richtigen Eintrag unter dem Cursor hat. Ich möchte zunächst ausprobieren, ob die alpha-numerische Tastatur nicht ein vollwertiger Ersatz ist.


7. Februar 2005
Version -1.0 des Players läuft schonmal:

go to the top
Neues Gehäuse, Frontansicht    All der Krempel soll da noch hinein :-)
Das Gehäuse besteht aus 3 mm starken Aluminiumplatten, die an den Ecken durch vier Holzstäbe mit 2x2 cm2 Querschnitt zusammen gehalten werden. In diese Stäbe habe ich 3 mm breite Schlitze gefräst, in denen die Aluminiumplatten ruhen. Die Höhe des Gehäuses ist durch die Größe der Displayplatine vorgegeben (inzwischen habe ich jedoch das gleiche Display ohne überstehende Platine bei Reichelt gesehen, allerdings einige Euros teurer). Die Breite und Tiefe des Gehäuses werden hauptsächlich vom Mini-ITX Formfaktor bestimmt, zur Sicherheit ist das Gehäuse jedoch einige Zentimeter länger. Damit ergeben sich folgende Außenmaße für den Alu-Quader: BxHxT = 18cm x 12cm x 25cm.

Unter dem Display ist Platz für 16 Tasten vorgesehen (0-9 mit alpha-numerischer Doppelbelegung, Vor, Zurück, Select/Menu/Play, Cancel/Pause, Power). Diese Tastenkonfiguration hat sich aus den praktischen Erfahrungen mit meinem alten Player ergeben. Die 10 Tasten für die alpha-numerische Menüauswahl hatte ich zunächst in einer Reihe angeordnet. Es zeigte sich aber, dass dies einer flüssigen Bedienung entgegenwirkt, da das 'blinde' Auffinden einer Taste, also die Bedienung ohne Tastensuche, erschwert wird. Inzwischen habe ich daraus zwei Zeilen mit je 5 Tasten gemacht.

Rechts des Displays ist Raum für ein Scroll-Rad, welches aus Platzgründen um 90 Grad gedreht eingebaut wird, so dass die Drehachse von links nach rechts verläuft. Das Rad wird durch einen 6 mm breiten und 60 mm hohen Schlitz durch das Gehäuse herausragen. Ob sich das aus haptischen Gründen als praktisch erweist, wird sich zeigen...

Software
Auf dem Rechner läuft Suse 8.1 und eine neu entwickelte Player-Software die vielleicht auch für andere Selbstbauprojekte interessant sein könnte. Diese Software besteht zur Zeit aus drei Hauptkomponenten die per UDP Protokoll miteinander kommunizieren, so dass die einzelnen Module theoretisch auch auf verschiedenen Rechnern laufen könnten:
  • Einer Datenbank-Komponente. Um das ganze System so einfach wie möglich zu halten, wurde auf SQL etc. verzichtet und ein eigenes kleines Progrämmchen geschrieben, welches einen Verzeichnisbaum nach (neuen) MP3s durchkämmt und die aus den Tags extrahierten Informationen speichert.
  • Einem Player-Modul, welches MP3s dekodiert und über die Soundkarte (bei mir: S/PDIF Ausgang) abspielt.
  • Dem Herzstück, das User-Interface-Modul (UI). Es besorgt die Ansteuerung des Displays (oder einer anderen Ausgabemöglichkeit, zur Anpassung muss nur eine Funktion geändert werden), die Abfrage der Tasten sowie (noch nicht implementiert) des Scroll-Rades und der IR-Schnittstelle.
Die Auswahl eines Stückes über den Künstler (Artist) läuft z.B. so ab:
UI verlangt Liste der Artists von Datenbank (DB)
Benutzer wählt Artist aus
UI verlangt Liste der CDs dieses Artists von DB
Benutzer wählt CD aus (nur falls mehrere CDs vorhanden)
Optional: UI verlangt Liste der Tracks dieser CD und Benutzer wählt aus
UI sendet Play-Kommando an DB(!) die aus den Information (Artist, Album, Track) den Dateinamen bestimmt und an den Player weiterleitet.
Der Player beginnt den neuen Track zu spielen, und teilt dies der UI mit.

Diese Prozedur erscheint zunächst unnötig kompliziert, erwächst aber aus dem Wunsch eine zentrale Datenbank (Server im Keller) für mehrere Player zu nutzen. Die UI und der Player könnten evtl. zusammen gefügt werden. Dies ergäbe allerdings ein recht umfangreiches Programm, und die Nutzung mehrerer UIs (z.B. Web-Interface) wäre aufwändiger.

April 2005
Dank lirc lässt sich der Player nun auch per Fernbedienung bedienen. Außerdem sind die Tasten nun auch in das Gerä integriert. Bild folgt irgendwann.

Sommer 2005
Bastelpause...

Januar 2006
In den letzten Wochen sind einige neue Erkenntnisse durchgesickert:
  • Am Gehäuse würde ich entgegen meinen bisherigen Aussagen doch eine zusätzliche Play-Taste anbringen. Der dadurch erzielte Komfortgewinn wäre es mir wert. So kann z.B. entschieden werden ob eine Disc oder Playlist komplett abgespielt werden soll (Play-Taste) oder ob eine eine Titelauswahl erscheinen soll (Select-Taste).
  • Der Player und die Benutzerschnittstelle (UI) sind nun in einem Programm vereint. Das vereinfacht die Kommunikation doch erheblich.
  • Die Benutzerschnittstelle kann als Anzeige nun wahlweise oder gleichzeitig das LCD, eine Text-Konsole oder ein grafisches Fenster unter X verwenden. In letzterem können auch CD-Cover des aktuellen Titels angezeigt werden.
  • Ein neuer, selbskompilierter und entsprechend abgespeckter Kernel (2.6.14) und eine Inventur bei den Boot-Skripten lässt den Player nun wesentlich schneller booten. Schon allein das Entfernen der Init-Ramdisk, welche von SuSE standardmäßig eingerichtet wird, beschleunigt das booten (möglich wenn alle benötigten Treiber im Kernel enthalten sind).
go to the top