{"id":142,"date":"2015-08-30T13:42:11","date_gmt":"2015-08-30T11:42:11","guid":{"rendered":"https:\/\/www.schlafhacking.de\/blog\/?p=142"},"modified":"2015-08-30T13:42:11","modified_gmt":"2015-08-30T11:42:11","slug":"zeo-mobile-teardown","status":"publish","type":"post","link":"https:\/\/www.schlafhacking.de\/blog\/?p=142","title":{"rendered":"Zeo Mobile Teardown"},"content":{"rendered":"<p><strong>Oder: Warum wir keine Rohdaten vom Zeo Mobile haben k\u00f6nnen.<\/strong><\/p>\n<p><i>Ein Gastbeitrag von steeph vom Podcast <a href=\"http:\/\/www.blucid.de\/\" target=\"_blank\">BLucid<\/a><\/i><\/p>\n<p>Die Zeo-Produkte sind eine konzeptionelle Seltenheit. Ein Schlafphasen-Wecker mit Stirnband-EEG f\u00fcr ca. 100 $. Wer h\u00e4tte gedacht, dass eine Firma mit so einem Produkt pleite gehen kann? 2013 war das offenbar noch m\u00f6glich. Heute scheinen diese Ger\u00e4te beliebter denn je zu sein. Vorallem die Bedside-Version, mit einer neuen Firmware versehen, die die Rohdaten des EEG \u00fcber eine serielle Schnittstelle ausgibt. Diese relativ\u00a0kleine Ver\u00e4nderung l\u00e4sst Anwender\u00a0ein Zeo Bedside in ein Mini-Schlaflabor f\u00fcr zuhause verwandeln und hat schon viel Hobby-Forschung erm\u00f6glicht. Die neuere Version des Zeo, das Zeo Mobile, hat diese\u00a0M\u00f6glichkeit zum Abgreifen der Rohdaten nicht. Das Kopfband\u00a0sendet \u00fcber Bluetooth ausschlie\u00dflich die Daten, die die Android- und iOS-Apps\u00a0zur Schlafanalyse benutzt haben (also haupts\u00e4chlich die aktuelle Schlafphase). Die Frage von Besitzern des Zeo Mobile nach der M\u00f6glichkeit, Rohdaten aus diesem\u00a0zu bekommen wird immer schnell damit beantwortet, dass das nicht m\u00f6glich sei. Doch theoretisch muss es ja m\u00f6glich sein. Schlie\u00dflich sind die Daten ja definitiv da und werden zum Errechnen der Schlafphasen verarbeitet. Die Frage ist also eigentlich eher, mit wie viel Aufwand ein solcher Hack verbunden w\u00e4re.<\/p>\n<p>Dank Raipat habe ich gerade ein solches Zeo Mobile, um mir anzuschauen, warum wir keine Rohdaten von ihm bekommen bzw. wie es vielleicht doch ginge. Denn obwohl sich immer gleich alle ganz sicher sind, dass es nicht m\u00f6glich ist, an die Rohdaten zu kommen, habe ich die Antwort auf das Warum nie irgendwo dokumentiert gesehen.<\/p>\n<h3>Die Kopfeinheit<\/h3>\n<p><img decoding=\"async\" loading=\"lazy\" class=\" size-medium wp-image-143 aligncenter\" src=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6087-300x211.jpg\" alt=\"IMG_6087\" width=\"300\" height=\"211\" srcset=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6087-300x211.jpg 300w, https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6087-1024x719.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Die Kopfeinheit ist nicht zum \u00d6ffnen gedacht. Die vordere und hintere Schale werden durch zwei unzug\u00e4ngliche Schnappverschl\u00fcsse zusammengehalten. Mit einem Messer oder flachen Schraubendreher und ein bisschen sanfter Gewalt bekommt man die beiden Schalen voneinander getrennt. Seit dem benutze ich einfach zwei Klebestreifen, um das Geh\u00e4use zusammen zu halten. Unter der Abdeckung befindet sich ein kleiner Akku, eine Platine mit der ganzen Elektronik und eine flexible Platine mit den Anschl\u00fcssen f\u00fcr die Elektroden.<\/p>\n<p><a href=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6090.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\" size-medium wp-image-144 aligncenter\" src=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6090-300x200.jpg\" alt=\"IMG_6090\" width=\"300\" height=\"200\" srcset=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6090-300x200.jpg 300w, https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6090-1024x682.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6096.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\" size-medium wp-image-162 aligncenter\" src=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6096-300x200.jpg\" alt=\"IMG_6096\" width=\"300\" height=\"200\" srcset=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6096-300x200.jpg 300w, https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6096-1024x683.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Die wichtige\u00a0Platine wird von zwei kleinen Schrauben gehalten.\u00a0Die interessanten Teile, die nicht offensichtlich sind, habe ich hier mal markiert.<\/p>\n<p style=\"text-align: center\"><a href=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6094_n.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-145\" src=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6094_n-300x198.jpg\" alt=\"IMG_6094_n\" width=\"300\" height=\"198\" srcset=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6094_n-300x198.jpg 300w, https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6094_n-1024x675.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>\u00a0\u00a0<a href=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6095_n.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-155\" src=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6095_n-300x248.jpg\" alt=\"IMG_6095_n\" width=\"300\" height=\"248\" srcset=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6095_n-300x248.jpg 300w, https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6095_n-1024x845.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Die R\u00fcckseite ist schnell abgehandelt. Das einzige potentiell interessante Bauteil ist hier der mit 1\u00a0markierte\u00a0<a href=\"http:\/\/downloads.openmoko.org\/developer\/foresight\/Publications\/BlueCore6-ROM%2520Technical%2520Overview%2520Issue1.pdf\">Bluetooth-Baseband-Chip BlueCore6-ROM<\/a>. Aber da wir schon wissen, dass der die Rohdaten gar nicht erst erh\u00e4lt, soll er f\u00fcrs erste keine weitere Aufmerksamkeit bekommen.<\/p>\n<p>Der mit 2\u00a0markierte\u00a0<a href=\"http:\/\/www.analog.com\/media\/en\/technical-documentation\/data-sheets\/ADXL345.pdf\">Beschleunigungssensor (ADXL345)<\/a>\u00a0war f\u00fcr mich eine kleine \u00dcberraschung. Ich wusste nicht, dass das Zeo auch Bewegungsdaten in seinen Algorithmus einbaut. Das vermute ich jedenfalls, denn es macht Sinn, um Wach von REM zu unterscheiden.<\/p>\n<p>Die 3 ist ein\u00a0<a href=\"http:\/\/ww1.microchip.com\/downloads\/en\/DeviceDoc\/11177f.pdf\">MCP609<\/a>, der letzte Teil des Verst\u00e4rkers. Dort k\u00f6nnte man das analoge Signal abgreifen, wenn man das tun wollte.<\/p>\n<p>Leider passiert der ganze Rest der Datenverarbeiten in einem\u00a0Chip\u00a0(die 4). Der\u00a0<a href=\"https:\/\/www.silabs.com\/Support%20Documents\/TechnicalDocs\/EFM32G210.pdf\">EFM32G210F128<\/a> ist ein Gecko-Mikrocontroller\u00a0mit ARM Cortex-M3 CPU. Der \u00fcbernimmt sowohl die Digitalisierung der EEG-Daten als auch die Berechnung der Schlafphasen.<\/p>\n<h3>Die Dockingstation<\/h3>\n<p><a href=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6100.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\" size-medium wp-image-164 aligncenter\" src=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6100-300x187.jpg\" alt=\"IMG_6100\" width=\"300\" height=\"187\" srcset=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6100-300x187.jpg 300w, https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6100-1024x637.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Die Dockingstation des Zeo Mobile ist vergleichsweise klein. Sie wird ja auch nur zum Laden\u00a0des Akkus in der Kopfeinheit benutzt. Ihr Gewicht bekommt die Dockingstation \u00fcbrigens von einem, naja, Gewicht eben, damit das Teil auch stehen bleibt.\u00a0Es wird ihr nachgesagt, dass sie auch nur ein Ladeger\u00e4t sei. Das stimmt aber nicht ganz. Ein paar Schrauben am Boden und an den Plastikhalterungen im Inneren abgeschraubt fallen einem zwei Platinen entgegen. Darauf befindet sich auch ein Seriell-zu-USB-Controller, der Daten von der Kopfeinheit \u00fcber eine USB-1.1-Schnittstelle an einen Rechner weiterleiten kann.<\/p>\n<p style=\"text-align: center\">\u00a0<a href=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6097.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-159\" src=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6097-300x95.jpg\" alt=\"IMG_6097\" width=\"300\" height=\"95\" srcset=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6097-300x95.jpg 300w, https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6097-1024x323.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\u00a0<img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-158\" src=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6098-300x146.jpg\" alt=\"IMG_6098\" width=\"300\" height=\"146\" srcset=\"https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6098-300x146.jpg 300w, https:\/\/www.schlafhacking.de\/blog\/wp-content\/uploads\/2015\/08\/IMG_6098-1024x497.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Leider kommen\u00a0dort so gar keine Daten heraus. Die Schnittstelle ist wohl f\u00fcr Firmware-Updates vorgesehen. Ob es auch eine Anwendersoftware f\u00fcr den PC gab, wei\u00df ich nicht. Leider habe ich auch kein Handbuch des Zeo Mobile gefunden, weshalb diese Frage f\u00fcr mich bisher unbeantwortet bleibt.<\/p>\n<h3>Rohdaten?<\/h3>\n<p>Meine\u00a0gr\u00f6\u00dfte Hoffnung war, dass das verst\u00e4rkte Signal durch einen Analog-zu-Digital-Converter geht, bevor es zur Berechnung der Schlafphasen in den Mikrocontroller kommt. Dann h\u00e4tte man einen Punkt gehabt, an dem man die Rohdaten in einem brauchbaren Format h\u00e4tte abgreifen k\u00f6nnen. Leider wird aber der ADC des Mikrocontrollers daf\u00fcr benutzt, wodurch diese Variante nicht mehr in Frage kommt. Nat\u00fcrlich k\u00f6nnte man auch das verst\u00e4rkte analoge Signal abgreifen und selbst digitalisieren. Aber so\u00a0viel zus\u00e4tzliche Elektronik m\u00f6chte ich eigentlich nicht anbringen.<\/p>\n<p>Dann dachte ich mir, vielleicht gibt der Gecko ja an einem Pin die Rohdaten aus. \u00c4u\u00dferst unwahrscheinlich. Aber einen Versuch war es wert. Dort kommt jedoch nichts raus.<\/p>\n<p>Das hei\u00dft auch an der seriellen Schnittstelle f\u00fcr die Dockingstation gibt es nichts. M\u00f6glicherweise k\u00f6nnen dort Daten abgefragt werden, indem man zuerst einen Befehl an die Kopfeinheit sendet. Vielleicht w\u00e4re hier eine Brute-Force-Suche einen Versuch wert.<\/p>\n<p>Doch wie es aussieht ist die letzte M\u00f6glichkeit, an die Rohdaten des Zeo Mobile zu kommen, eine neue Firmware aufzuspielen, die die Rohdaten ausgibt. Die Hardware f\u00fcr eine Schnittstelle ist vorhanden. Die Zeit um die Firmware zu reversen jedoch nicht. Doch das hei\u00dft nicht, dass ich den Wunsch nach Rohdaten aus dem Zeo Mobile damit niederlege. Wahrscheinlich wird es hier irgendwann einen Folgebeitrag zu dem Thema geben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oder: Warum wir keine Rohdaten vom Zeo Mobile haben k\u00f6nnen. Ein Gastbeitrag von steeph vom Podcast BLucid Die Zeo-Produkte sind eine konzeptionelle Seltenheit. Ein Schlafphasen-Wecker mit Stirnband-EEG f\u00fcr ca. 100 $. Wer h\u00e4tte gedacht, dass eine Firma mit so einem &hellip; <a href=\"https:\/\/www.schlafhacking.de\/blog\/?p=142\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":882,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6,16],"tags":[],"_links":{"self":[{"href":"https:\/\/www.schlafhacking.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/142"}],"collection":[{"href":"https:\/\/www.schlafhacking.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.schlafhacking.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.schlafhacking.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/882"}],"replies":[{"embeddable":true,"href":"https:\/\/www.schlafhacking.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=142"}],"version-history":[{"count":15,"href":"https:\/\/www.schlafhacking.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/142\/revisions"}],"predecessor-version":[{"id":169,"href":"https:\/\/www.schlafhacking.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/142\/revisions\/169"}],"wp:attachment":[{"href":"https:\/\/www.schlafhacking.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schlafhacking.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schlafhacking.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}