sha2017 project: the biofeedback tent

This post is a placeholder for my project idea for the sha2017.org camp in two weeks.

We bring a Sahara 400 tent that will be equipped with LED-strips, speakers and a lot of sensors like EEG (openBCI, Muse, Mentalab), HRV+spO2 (cheap BLE wearable), breathing (radar: Walabot). It will read your biosignals and convert the surrounding space into a 3D immersive biofeedback systems. You sit or lie in the center of the tent and will interact with your visualized and sonified biosignals. If your state changes, the sound and lighting will change. And also will changes in the sourrounding change your state. Prepare yourself for a trippy experiency of deep meditation and lots of fun.

 

Posted in BCI, Gadgets, Reisen | Tagged , , | Leave a comment

die Gerätefront

Ein kleines Update zu den Gadgets…

Aurora: nix geliefert bis jetzt. Immer noch nicht. Blumige “manufacturing updates” als email Newsletter. Prädikat: extra peinlich. Also wenn man dran erinnert, dass für Juni 2014 die Lieferung geplant war. Das BER unter den Lucid Dreaming Gadgets 😀

Luciding: Es gab einen Kickstarter für den lucid catcher (dann inzwischen die dritte Hardwaregeneration). Sehr witzig, dass sie es immer weiter probieren. Ich habe die Hoffnung noch nicht ganz aufgegeben, da man mir versprach, als 2014er early preorder Backer auch die Kickstarter Edition bekommen werde, und die dann natürlich funktionieren soll. Das russische U-boot unter den Lucid Dreaming Gadgets.

LDreamM: Ein echtes Highlight und ich freue mich sehr darauf. Es wird bald geliefert und Tibor versorgt die ersten Kunden mit regelmäßigen inhaltlich sehr hochwertigen Updates. Besonders die Magnetstimulationsfunktion erwarte ich mit großer Spannung. Das Einhorn unter den Lucid Dreaming Gadgets.

Neuroon Open: ist das zweite Produkt von den Jungs aus Polen. Den ersten Kickstarter hatte ich nicht gebackt, den zweiten, der jetzt noch läuft, fand ich sehr interessant. Durch die “Neuroon Insiders” Gruppe habe ich frühzeitig den Launchtermin erfahren und ein super early bird gebackt. Dieses günstige Produkt könnte ein neuer Standard für Klartraumforschung daheim sein. Wenn sie liefern und das Ding wirklich so gut und so open ist, wie sie schreiben. Das tuning-und-schrauber-Auto unter den Lucid Dreaming Gadgets.

Traumschreiber: dieses vielversprechende Projekt scheint zu schlafen, seit Januar habe ich nichts neues mehr gehört. Vielleicht wacht es wieder auf. Oder träumt gerade klar und möchte nicht gestört werden? Der mysteriöse unerreichbare Agent unter den Lucid Dreaming Gadgets.

Posted in Gadgets | Leave a comment

zeo + Vibrationsarmband = Klarheit

quintic-bandplatine-ausgepacktNachdem ich mit dem FBT-40 BLE Armband nicht weiter gekommen bin und das Angel leider schnell kaputt war, habe ich nach einer längeren Pause einen Durchbruch mit einem anderen Device errungen. Das Viech nennt sich “W007C”, kostet noch weniger und basiert auf einem QN9021 Chip. Dafür gibt es viele tolle Entwicklertools und erfreulicherweise sind die ganzen PINs auf dem Board verfügbar. Doch eine eigene Firmware drauf zu hacken, war für mich gar nicht notwendig. Dank einem netten Menschen auf github gibt es in diesem Gist eine schöne Informationssammlung, um mit python das Armband fernzusteuern.

Der Job: Vibrationen während REM auslösen. Ich hatte mich darauf konditioniert, einen RC zu machen, wenn ich Vibrationen spüre. Dann habe ich ein kleines Programm basierend auf der Library gebastelt, das auf einem Socket hört und wenn jemand auf den Socket connected das Band kurz vibrieren läßt.

Auf der anderen Seite liest das pizeo mein EEG und löst bei REM Aktionen aus. Die erste Nacht ging schief, da war das Rasperry pi mit dem Zeo dran zu weit vom Bett weg und hat ständig die Verbindung zum Armband verloren.

Die zweite Nacht stellte ich es neben das Bett und hypnogramm-vibranachtda lief es wunderbar. Konfiguriert hatte ich, dass alle 5 Epochen (eine Epoche ist 30 Sekunden lang) ein Vibrationssignal gesendet wird. Das war zu viel des guten und riss mich immer wieder ganz aus dem Schlaf. Den Rest der Zeit war ich präluzide und nutzte die Aufwacher als Rhythm Napping.

 

Nächste Nacht neues Setup:

  • nur alle 10 Epochen wird ein Signal gegegen
  • erkennt das pizeo ein LRLR-Signal, hören die Signale auf, bis die REM-Phase zuende ist
Posted in allgemeines, pizeo, Schlafhacking, Zeo | Tagged , , | Leave a comment

Schaf im Wolfspelz: sleep shepherd blue reversed

Nun, wie es aussieht, bekomme ich keine Unterstützung vom Hersteller. Man habe andere Prioritäten als ein SDK zu öffnen. Verstehe ich. Warten möchte ich aber auch nicht. Also rücken wir dem Ding mit üblichen Reversing tools zuleibe: bluez/gattool und einem decompiler.

Schließlich muss die offizielle App ja irgendwie mit dem Ding reden. Dazu hole ich mir als erstes mal das APK von hier. Apks sind erst mal ja nur zips, die man umbenennen und dann einfach auspacken kann. Darin sind tolle Dinge wie Ressoucen (Bilder, sounds, …) und das Programm selbst. Im konkreten Fall als .dex Datei. Außerdem erkennt man sofort, dass diese App mit Phonegap/Cordova entwickelt ist, weil es den Ordner assets\www gibt und darin die ganzen typischen Sachen rumliegen. Schön, das kenne ich, damit kenne ich mich aus. Weiterhin angenehm ist, dass die ganze Applikationslogik als javascript-files quasi im Quellcode rumliegt und ich mir erst mal den tieferen Blick in die .dex Datei (z.B, mit dex2jar und java-decompiler) für später aufheben kann 🙂

Es wäre eigentlich denkbar und der einfachste Weg, diese tolle app einfach auszupacken und erweitert um ein paar LD Funktionen mit Phonegap neu zu builden. Aber das Ergebnis könnte man nicht verteilen, weil es vermutlich Stress mit “geistigem Eigentum” gibt. Also lieber schnell was von Null mit den wichtigsten Infos zusammenbasteln. Wobei… *hust* im 1.1.10 apk ist in der index.js der Vermerk (einfach dringelassen vom phonegap schätze ich), dass das File unter Apache license steht :p

So, man will also laut dem .js code ein Gerät mit folgenden Eigenschaften finden:

serviceUuid = “ffe0”,
charUuid = “ffe1”,
desiredName = “SSV1_00000”

bluetoothle.subscribe(subSuccess, subFail, {“address”:address,”serviceUuid”:serviceUuid,”characteristicUuid”:charUuid, “isNotification”:true });

schauen wir mal…

root@zeopi8-1:/# hcitool lescan
LE Scan …
20:91:48:AA:B8:FA (unknown)
20:91:48:AA:B8:FA SSV1_00000

root@zeopi8-1:/# gatttool -b 20:91:48:AA:B8:FA -I
[20:91:48:AA:B8:FA][LE]> connect
Attempting to connect to 20:91:48:AA:B8:FA
Connection successful
[20:91:48:AA:B8:FA][LE]> primary
attr handle: 0x0001, end grp handle: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x000c, end grp handle: 0x000f uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0010, end grp handle: 0xffff uuid: 0000ffe0-0000-1000-8000-00805f9b34fb

yep. Hab ich. Nice.

Jetzt die ganzen Funktionen. Ziemlich wüster Wust, das gehört eigentlich gekapselt und zentralisiert, aber ich bin dankbar über die vielen Kommentare und dass auch einige unbenutzte Sachen noch im Code auskommtentiert drin gelassen wurde. Einige Highlights:
function getVersionNumber(){
var hexArray = [“AA”,”AA”,”03″,”99″,”20″,”00″,””];
function sendCheckDataCommand()    var hexArray = [“AA”,”AA”,”03″,”94″,”20″,”00″,””];
function sendGetHeaderCommand()
var hexArray = [“AA”,”AA”,”03″,”93″,”20″,”00″,””];
function sendEraseDataCommand()
var hexArray = [“AA”,”AA”,”03″,”96″,”20″,”00″,””];
function getAccel()
var hexArray = [“AA”,”AA”,”03″,”58″,”20″,”00″,””];
function sendConfirmationCommand()
var hexArray = [“AA”,”AA”,”03″,”9A”,”10″,”01″,””];
function sendDataRecordingCmd()
var hexArray = [“AA”,”AA”,”03″,”95″,”20″,”00″,””];
function sendTurnOffRecordCmd()
var hexArray = [“AA”,”AA”,”03″,”95″,”10″,”00″,””];
function setVolCmd(value)
var hexArray = [“AA”,”AA”,”03″,”84″,”10″,hexValue,””];
function setWakeTime(value){
var hexArray = [“AA”,”AA”,”06″,”34″,”10″];
function changeState(newState)
var hexArray = [“AA”,”AA”,”03″,”24″,”10″,newState.toString(),””];
function sendStartCommand()
var hexArray = [“AA”,”AA”,”0C”,”82″,”10″];
hexArray = hexArray.concat(intToBytes(time,6), intToBytes(sampleRate*1000,4), [“”]);
function sendEndCommand()
var hexArray = [“AA”,”AA”,”08″,”83″,”10″];
hexArray = hexArray.concat(intToBytes(time,6), [“”]);

Weiter unten findet sich in der Bolognesesoße um den Javascript-Spaghettihaufen ab Zeile 2557 (index.js) Information darüber, wie das Protokoll aufgebaut ist, z.B.

// — Received accel data — //
if (returnedBytes[0] == 170 && returnedBytes[1] == 170 && returnedBytes[3] == 88 && returnedBytes[4] == 48){
//alert(“received signal strength of: “+returnedBytes[4]);
var xArray = [returnedBytes[5], returnedBytes[6]];
var yArray = [returnedBytes[7], returnedBytes[8]];
var zArray = [returnedBytes[9], returnedBytes[10]];

// — Received Sleep Data Header Packet — //
if (returnedBytes[0] == 170 && returnedBytes[1] == 170 && returnedBytes[3] == 129 && returnedBytes[4] == 48){

// — Received Sleep Data Stream Packet — //
if (returnedBytes[0] == 170 && returnedBytes[1] == 170 && returnedBytes[2] == 11 /* 16 */){

// — Received Sleep Data Footer Packet — //
if (returnedBytes[0] == 170 && returnedBytes[1] == 170 && returnedBytes[3] == 131 && returnedBytes[4] == 48){

Leider findet sich im Code der App kein Hinweis auf eine Möglichkeit, der Mütze Audio zum Abspielen zu schicken. Das heißt, auch die Firmware der Mütze selbst müsste mal gehackt werden. Dass man so einfach an den Code kommt wie an den der App, glaube ich weniger, als nächstes müsste man mal die Plastikbox vorsichtig öffnen, und den Inhalt begutachten, ein ROM-Dump versuchen usw.

Posted in Gadgets, Schlafhacking, Schlafmütze | Tagged , , | Leave a comment

kluge EEG-Schlafmütze: sleep shepherd blue

Vor gut einem Jahr hatte ich das erste Sleep Shepherd, damals noch ohne Bluetooth und App, gebackt und war schon sehr angetan davon. Dann kam das nächste Announcement zum neuen Projekt, mit Uplink und App. Natürlich folgte ich freudig der Einladung, ein super early bird zu werden.

Sleep Shepherd blue box

Sleep Shepherd blue ausgepackt

Ich wurde nicht enttäuscht. Die Firma lebt vor, wie Kickstarter sein sollte: man hat was eigentlich fertiges und läßt die “early adopter” nur noch den Feinschliff oder die Massenproduktionsvorbereitung finanzieren. Wieder haben sie ihre Timeline perfekt eingehalten und ein fertiges, schönes Produkt geliefert. Angenehm ist außerdem, dass sie sogar beim beigelegten USB-Kabel auf Qualität geachtet haben. Beim Versand gab’s keinen Zollstress, es wurde direkt nach Hause geliefert!

In der Packung ist das Sleep Shepherd blue, ein micro-USB Kabel zum Laden und ein (US-) USB-Netzteil. Das Gadget selbst kommt nun in Form eines bequemen breiten Kopfbandes statt wie früher einer Mütze, der quadratische Plastikkasten mit der Elektronik ist an der Stirn statt am “Bommel” befestigt, nur Stoff und Elektroden sind sie gleichen wie bei der ersten Version und die kleinen Lautsprecher sind weiterhin im Stoff verschiebbar, um sie zu positionieren. Ziel des Geräts in der Intention des Herstellers die Verbesserung von ein- und durchschlafen durch Biofeedback (EEG als Input, Audio als Output).

SchlafanalyseKopfpositionFür iOS und Android gibt es nun eine Schlaftracking-App, die neben dem üblichen Erfassen der Schlafphasen bzw. der Schlaftiefe noch ein weiteres erfreuliches Feature hat: es registriert, auf welcher Seite man schläft und wie lange. Vermutlich ist die neue Form des Stoffs diesem Features geschuldet.

Das zu tracken finde ich sehr nützlich. Interessant wäre hier noch, wie oft man sich umgedreht hat, das kann die App aber noch nicht. Die App liest die Daten einer Nacht in einem Rutsch, wenn man den “stop sleep” Knopf drückt, eine beständige Verbindung zum Smartphone in der Nacht ist nicht erforderlich.

An Developer-Infos ist noch nichts zu mir durchgedrungen, ich habe aber schon bei Michael Larson angefragt. Es hat in der Tat alles, was man als lucid dreaming Hilfe braucht:

  • eeg-basierte REM-detection
  • connected via BLE
  • cooles Headband, bequem
  • Lautsprecher (mit Biofeedback schon drin)

Als Ziel für das hacken dieses Gadgets formuliere ich: eine App, die

  1. REM-detection des Geräts nutzt
  2. während REM dann beliebige Töne abspielen kann, sei es eine Reminder-Datei (“hey, Du träumst gerade”), Binaural beats (zusätzlich zu den automatischen, die Schlaftiefe regulierende des Herstellers) und isochronous tones (“ein paar Faustschläge mit dem 40Hz Hammer”).
  3. live Schlafdaten für shared dreaming/Kommunikation im Traum ins Internet streamen kann
Posted in Gadgets, News, Schlafhacking | Leave a comment

(Fallen) Angel Sensor

Einen Tag und eine Nacht mit dem Ding am Handgelenk bin ich ein paar Erfahrungen reicher. Mit dem Teil zu reden ist einfach, aber die Datenqualität ist nicht so toll. Pulsfrequenz ist weit off, die offiziell App taugt nicht viel (historie z.B. funktioniert nicht), an Fitbit und Co wird das Ding über Jahre nicht rankommen und es fehlen Services. An meinem pi bietet es mir folgende Services:

[00:07:80:78:CA:97][LE]> primary
attr handle: 0x0001, end grp handle: 0x0003 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x0004, end grp handle: 0x0010 uuid: 0000180a-0000-1000-8000-00805f9b34fb
attr handle: 0x0011, end grp handle: 0x0015 uuid: 0000180d-0000-1000-8000-00805f9b34fb
attr handle: 0x0016, end grp handle: 0x001d uuid: 00001809-0000-1000-8000-00805f9b34fb
attr handle: 0x001e, end grp handle: 0x0028 uuid: 7cd50edd-8bab-44ff-a8e8-82e19393af10
attr handle: 0x0029, end grp handle: 0x0033 uuid: 552508f9-24ba-4578-82ba-f6d5987e8c41
attr handle: 0x0034, end grp handle: 0x0038 uuid: 0000180f-0000-1000-8000-00805f9b34fb
attr handle: 0x0039, end grp handle: 0x004f uuid: 481d178c-10dd-11e4-b514-b2227cce2b54
attr handle: 0x0050, end grp handle: 0x005a uuid: 902dcf38-ccc0-4902-b22c-70cab5ee5df2
attr handle: 0x005b, end grp handle: 0x006e uuid: 68b52738-4a04-40e1-8f83-337a29c3284d
attr handle: 0x006f, end grp handle: 0x007a uuid: 87ef07ff-4739-4527-b38f-b0e228de6ed3
attr handle: 0x007b, end grp handle: 0xffff uuid: 41e1bd6a-9e39-441c-9312-b6e862472480

Und irgendwie sind die hier schon ein ganzes Stück weiter, und der hier spielt auch schon fleißig damit.

Posted in allgemeines, Gadgets | Tagged , , | Leave a comment

Angel Sensor Armband als Vibra-Cue-Generator (REM reminder)

IMG_6578 Angel Sensor M1IMG_6581

 

 

 

Heute kam ein vor ein paar Tagen in einer spontanen Laune heraus mitten in der Nacht bestelltes “Angel Sensor” Armband an. Das Ding (99 US$, promo 10% off, sprich Versandkosten gespart) bietet als Sensoren Beschleuningung, Pulsfrequenz und spO2 über BLE und hat einen Vibrationsmotor. Als es auf Indiegogo war, hab ich es verpasst (zum Glück, die “classic” war laut Internetposts von usern wohl nicht so toll) und nicht gebackt, jetzt wird die “M1” Version gerade aggressiv vermarktet.

Angeblich ist alles über Programmierung steuerbar und der Hersteller hat ausdrücklich hacker und maker als Zielgruppe im Visir. Es sollte also schnell möglich sein, ein “vibrieren am Arm während REM” Gadget (REM-Erkennung extern via ZEO/mobile) daraus zu machen. Das hatte ich mit “China-billig” Armbändern wie dem miband und dem FBT-40 erfolglos probiert, weil die Doku mies ist und sich die Service nach Firmware-Updates ändern. Also auf ein neues mit einem offiziell hackbaren Gerät.

Auf den ersten Blick tut das Ding, was es verspricht, die offizielle iOS App verbindet mit dem Sensor und zeigt Daten an, ein gesetzter Vibra-Alarm läuft on time los, und das Raspberry pi findet und connected auch zum BLE Service.

Posted in Gadgets, pizeo, Schlafhacking | Tagged | Leave a comment

the Dash ist da

box-IMG_4464Es gibt auch Kickstarter-Projekte, die irgendwann fertig und dann sogar sehr gut werden. Heute kam ein developer Kit the Dash von Bragi bei mir an. Das Gerät habe ich als developer Backer deswegen mit großer Spannung erwartet, weil es mit seinem Featuresatz ein schönes Schlafhacking-Gadget ist:
– Pulssensor, spO2 Sensor (“Ist das angebliche Herzrasen beim WILD nun real oder nicht?”)
– BT Audio und Mediaplayer (“Du träumst, mach nen RC”, Binaural beats, isochronic tones)
– Bewegungssensor und Temperatur (REM-Detection für arme)

inhalt-IMG_4470SDK kommt “bald”… im Moment ist es erst mal ein Headset mit HR-Sensorfunktion, Bequemlichkeit und Soundqualität überzeugen schon und ein kurzer Test läßt mich hoffen, in Verbindung mit einem weichen Kopfkissen auch mit dem Ding im Ohr schlafen zu können. Da die Developer Edition nicht wasserdicht ist, muss ich sie zum Duschen wohl rausnehmen 😛

 

Update 29/1/2016: Es ist immer noch kein SDK released 🙁
Man kann mit den Dingern halbwegs gut schlafen. Nach ein paar Stunden drückt es dann schon. Aber um nach einem WBTB Suggestionen zu hören oder ein paar Stunden einen schnarchenden Mitschläfer durch Metal zu ersetzen, funktioniert das gut.

Posted in Gadgets, News, Schlafhacking | Leave a comment

FBT-40 Aktivitätstracker von newgen medicals (pearl): Request for hacks/infos/BLE characteristics

Hallo Welt, hat jemand irgendwas zu dem FBT-40? So ein Ding ging via pearl für knapp 15€ als Sonderposten her und ist als Schlafhack-Gerät (Vibra-RC-Reminder) ansich gut geeignet. Hardware scheint OK zu sein, die (iPhone-)App ist leider nicht so toll.

Vorhaben: on demand per BLE aus einer eigenen App heraus vibra anmachen und wieder ausmachen. Dafür bräuchte man Infos zum BLE Protokoll. Suche im Netz bringt keine Ergebnisse. Daher: wer was hat, bitte gern kommentieren. Ich hoffe, dieser Post wird bei ähnlichen Recherchen wie meiner heute gefunden und führt zu Info-Aggregierung.

english short summary: I’m looking for anything hackable (firmware dump, BLE characteristics, BLE protocol info, reverse engineering infos) on the FBT-40 sold by Pearl in Germany.

Posted in Gadgets | Tagged , , | 2 Comments

foc.us v2 developer mit LD-Feature

Bisher habe ich nur lesend auf mein Gehirn zugegriffen. Mit dem foc.us v2 developer Edition (neu mit offiziellem LD-Feature) möchte ich mich nun vorsichtig an “schreibenden” Zugriff heranwagen.

foc.us unboxingDas Paket besteht aus einem kleinen Minicomputer+Dockingstation, einem Elektrodensatz und einer Schlafmaske. Angenehmerweise war das Gerät eine Woche nach Bestellung wirklich da. Da andere (luciding, aurora) notorisch nicht liefern, ist das allein schon positiv.

Auf meinem Windows 8.1 PC habe ich foc.us+ connect installiert und auf dem iPhone 5 und dem Note 4 jeweils die App.

Während der Akku initial geladen wird, lese ich mich in die Tools, APIs und SDKs ein. Denn so wie ich das verstehe, hat das Gerät keine eingebaute REM-Erkennung und stützt sich da auf Erfahrungswerte und Timer.

Vom Layout der Elektroden her hat man auf der Stirn genug Platz für ZEO und foc.us v2, insofern kann das Gerät eine tolle Erweiterung für mein pizeo Setup sein.

Zeo-FocUs-spiegelselfie

ZEO zum “lesen” mit drei Elektroden in der Mitte foc.us v2 zum “schreiben” rechts (Referenz) und links (Stimulation)

Update nach dem ersten Versuch:
Die erste Nacht war leider nicht erfolgreich. Zum einen musste ich mich doch auf den Timer verlassen, weil die technische Doku so dünn ist, dass ich es nicht hinbekommen habe, schon für die erste Nacht eine zeopi-Integration mit Fernsteuerung des Stimulators zu implementieren. Die Gelpads halten nicht gescheit, weil die Elektroden recht schwer sind – auch nicht mit der (zwar bequemen) Schlafmaske, die foc.us mitliefert, bleiben sie nicht am Platz. Die nächste Nacht werde ich also ein Stirnband aus Stoff darüber tun. Zufälligerweise habe ich gerade dieses rumliegen.

Posted in allgemeines, Gadgets | Tagged , | 2 Comments