Hack your Logitech
Squeezebox Radio
In diesem Beitrag zeige ich, wie man sich ein Batteriepack baut und an die Squezzebox anschließt, wie man sich Zugang zu der seriellen Schnittestelle verschafft, und ein Easter Egg.
Warnung: Ich denke, dass die Informationen auf dieser Seite richtig sind. Dennoch kann ich keine Verantwortung dafür übernehmen, Nachbauten auf eigenes Risiko.
Inhalt
Vor einigen Wochen habe ich mir ein Webradio vom Typ Squeezebox (von Logitech) für mein Bad gekauft (ich höre morgens gerne Radio, und der terrestrische Empfang ist bei mir bescheiden). Schon beim Auspacken ist mir eine Klappe aufgefallen, die sich auf der Unterseite der SB befindet. Darunter verbirgt sich im wesentlichen ein großer Hohlraum, und ein kleiner 10-poliger Steckverbinder. Laut Anleitung soll man dort einen Akku für 50€ anschließen können, der damals nicht im Handel erhältlich war. Da ich noch ein paar Akkus übrig hatte, habe ich beschlossen, mir selber ein Pack zu bauen. Dazu mußte ich aber erst einmal die Anschlußbelegung des Steckers herausfinden.

Der Steckverbinder in der Squeezebox ist eine 10 polige Stiftleiste mit 2mm Pinabstand, bei Farnell und digikey gibt es viele dazu passende Buchsenleisten. Ich habe die #1689483 von Farnell mit diesen (oder ähnlichen) Kontakten verwendet, aber diese hier #1668190 gehen genauso. Durch Ausprobieren habe ich Stück für Stück die Anschlußbelegung herausgefunden. Von der Rückseite betrachtet habe ich die Pins von "1" (oben links), "2" unten links zu "10" (unten rechts) durchnummeriert.

- Batterie +
- Unbekannt 1
- Batterie 2
- Unbekannt 2
- Anzapfung 1
- serieller Ausgang
- NTC
- serieller Eingang
- Masse
- +3.3V Ausgang
Zwischen den Pins 10 und 9 liegen 3.3V an, falls man eine eigene Schaltung betreiben möchte. Ich habe allerdings keine Ahnung, wie belastbar diese Spannung ist.
Die Erkennung eines angesteckten Akkupacks geschieht über einen NTC (10k), der von Pin 7 zu Masse geschaltet wird. Darüber wird auch gleich die Temperatur des Akkus gemessen.
Pins 6 und 8 sind die Pins einer seriellen Schnittstelle, und man kann hier einen Seriell (TTL) zu RS232 Konverter anschließen (siehe unten)
Der Pluspol eines NiMH Akkupacks (10 Zellen) wird mit Pin 1 verbunden, eine untere Anzapfung (etwa Zelle 3) mit Pin 5 und eine obere Anzapfung (Zelle 7) mit Pin 3. Der Minuspol wird mit Masse verbunden. Die Eingangswiderstände der Pins 5 und 7 sind etwa 9475 Ohm, und aus den Spannungwerten, die die SP liefert schließe ich, dass der interne DAC eine Auflösung von 10 bit hat, und mit einer Referenz von 2,048V und einem Vorteiler von 10:1 betrieben wird. Um genau zu sein ist die Quantisierung 19,9883mV. Ich weiß nicht, wofür die Anzapfungen der Batteriespannung verwendet werden. Wahrscheinlich nur, um den Akku zu überprüfen.
Die Bedeutung von zwei Pins ist unbekannt:
Pin 4 wird mit etwa 10k nach Masse gezogen, der Pegel scheint keinen Einfluß auf das Radio zu haben, und ist auch keine Handshakeleitung der seriellen Datenüberttragung.
Pin 2 ist sogar noch merkwürdiger: Eine Impedanzmessung zeigt, dass er einenen internen DC Filter besitzt. ich habe mal ein Ersatzschaltbild gezeichnet. Hat jemand eine Idee? (Ein User meinte, es könne sich um einen Reset Generator für externe Schaltungen handeln)

In der Squeezebox wird ein Akkupack verwendet, in dem 10 NiMH Zelle (Typ: Mignon/AA) in Serie geschaltet sind. Wenn man anstelle des Akkus ein Labornetzteil anschließt (~13V) und die SB mit dem Steckernetzteil verbindet, versucht das Radio das Labornetzteil zu laden, und zieht die Klemmspannung auf ~16,1V hoch. Nach exakt einer Sekunde stellt die SB dann fest, dass es nix zu laden gibt (bzw. die maximale Ladeschlußspannung erreicht ist), und die Klemmspannung fällt zurück auf die eingestellten 13V.
Klemmspannung Squeezebox Verhalten 16,1V Maximale Spannung während des Ladens
11,1V "Low Battery" 10,6V SB schaltetsich ab
Wenn man also annimmt, dass das Akkupck aus 10 Zellen besteht, dann liegt die maximale Ladeschlußspannung pro Zelle bei 1,6V (in Wirklichkeit wird diese nicht erreicht, da die SB eine delta U oder Temperatur basierte Abschaltung besitzt), und beim Entladen ist bei 1,1V Schluß. Ich habe mir ein Akkupack aus 2100mAh AA GP Recyco Zellen gebaut. Zur Temperaturmessung habe ich einen 10k NTC (Farnell #1672286) verwendet, und auch noch mein USB zu RS232 (TTL) Dongle angeschlossen.
Aber ich bin mir nicht sicher, wohin mit den Anzapfungen. Und ich weiß auch nicht, ob diese überhaupt in der SB verwendet werden. Vielleicht zur Batterieüberwachung oder um den Ladeschluß besser zu erkennen? Ich habe die Lötstelle zwischen Zelle 3-4 (von unten "GND" gezählt) und 7-8 angeschlossen, bislang ohne Probleme.

Das sieht nicht allzu schön aus, aber ich hatte halt gerade keinen Schrumfschlauch in der nötigen Größe zur Hand. Also habe ich Gewebeklebeband verwendet. Und es läuft: Wenn die SB mit Netzstrom versorgt wird, wird die Batterie geladen, und über das Menü kann man die Spannungen und die Temperatur ablesen. Perfekt!

Im Standby oder wenn sie leise Musik spielt verbraucht die SB etwa 2,1 - 2,5W, der exakte Wert hängt von der Hintergrundbeleuchtung ab. Mein Akkupack sollte also etwa 12V*2.1Ah/2.5W = 10 Stunden halten, deutlcih länger als von dem Originalen bhauptet wird (angeblich 6 Stunden). Alles zusammen paßt perfekt in das Batteriefach, auch das USB->TTL Dongle.
Hier wird es lustig: Schnapp dir einen dieser billigen USB zu TTL Seriell Adapter (zum beispiel basierend auf dem FTDI Chip FT232, etwa diesen hier), und verbinde GND, TX und RX mit den entsprechenden Pins der Stiftleiste (RX und TX gekreuzt, Nullmodem!). Hyperterminal (für Windows, die Linux Leute wissen eh was ich meine) starten, den Com Port des Adpters auf 115k8 8-N-1 einstellen, und öffnen, und mit der ausgeschalteten SB verbinden. Beim Einschalten sieht man dann das hier:
++NAND: RCSR=54200900
Searching for BBT table in the flash ...
.
Found version 1 Bbt0 at block 1023 (0x7fe0000)
Block 46 is bad
Block 284 is bad
Block 787 is bad
Block 869 is bad
Total bad blocks: 4
.FEC PHY: RTL8201EL
FEC: [ HALF_DUPLEX ] [ disconnected ] [ 10M bps ]:
Ethernet mxc_fec: MAC address 00:04:20:26:12:cc
No IP info for device!
Unrecognized chip: 0xf8!!!
hardware reset by POR
...
Lustig, oder? Ein voller Logmitschnitt liegt hier. Nachdem das Radio gebootet hat 'Return' drücken, und man hat Zugriff auf die Konsole und das Filesystem. Soweit ich weiß läuft auf der Squeezebox ein Busybox Linux, aber da ich keinen Ahnung von Linux habe, überlasse ich es anderen herauszufinden, was man da noch hacken kann. Falls ihr was habt, Diese E-Mail-Adresse ist gegen Spambots geschützt! Sie müssen JavaScript aktivieren, damit Sie sie sehen können. !
Alternativ kann man sich auch per SSH einloggen (siehe unten). Allerdings gibt es dann keine Bootinfos.
Im Menü des Radios: Preferences->Advanced->Factory test->Display und den Test durchführen. Am Ende sieht man ein Bild einer Frau. Offensichtlich geht der Bildschirm ;-)

Beim Einloggen über SSH (login: root, pwd 1234, vorher im Menü aktivieren) sieht man Folgendes:
This network device is for authorized use only. Unauthorized or improper use
of this system may result in you hearing very bad music. If you do not consent
to these terms, LOG OFF IMMEDIATELY.
Ha, only joking. Now you have logged in feel free to change your root password
using the 'passwd' command. You can safely modify any of the files on this
system. A factory reset (press and hold add on power on) will remove all your
modifications and revert to the installed firmware.
In der Bedienungsanleitung steht:
"We hope you have as much fun using it (the Squeezebox) as we did creating it for you."
Ich habe meinen Spaß damit, vielen Dank dafür!
Kommentare sind willkommen,
Achim
| Comments |
|
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||
3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."
| < Zurück | Weiter > |
|---|





