Emotiv EPOC EEG Headset Hacked
An Interview with Cody Brocious
Cody Brocious has created Cody’s Emokit project, an open source library for reading data directly from the Emotiv EPOC EEG headset. The Emotiv headset is a consumer EEG headset. In common slang, it’s a brain-computer interface. When you buy an Emotiv headset, you are told only to use Emotiv software with the device. Now, Emokit shakes up the status quo.
H+: So, why did you get into Emotiv hardware in the first place?
CODY BROCIOUS: A consumer-grade EEG headset is a game changer. In a lot of ways, the Emotiv EPOC is really novel. We have projects like OpenEEG where people can build these, but you have to invest $750 or more just to get something functional. At that point, there’s not much you can do unless you are into research. The average consumer isn’t going to be processing raw brain data. Since the Emotiv is at the right price point, what it does — and this is what’s big about it — makes it so that consumers can pick it up and start using cool apps that developers make up. That’s quite new in the brain-computer interface space. And in an open development environment, there are some really cool apps — some that we can’t imagine — and I think this is going to lead to something that we’ve never seen before. We’ve never had access to this equipment at the consumer price-point before, and now with Emokit and OpenViBE, there are a lot of possibilities for apps, from controlling your music with an Apple iPod in your pocket, or even robotics research. We’ve never really had this before. You can even imagine this starting to work with smartphones like the Apple iPhone or Android phones.
H+: How does Emokit work?
CB: Emokit — there’s not much to it. The library itself is dirt simple. Emokit proper — the actual library — talks to the EEG device using pywinusb and python-hid, depending on whether you are on Windows, OS X or Linux. Physically, the setup involves the Emotiv device, which transmits data over bluetooth, and the bluetooth dongle. Emokit gets a connection to the bluetooth-enabled device using a standard HID interface, and once it gets a connection, it gets 32 byte reports from the device that are encrypted. It decrypts them using standard AES, and once it decrypts them, it parses out the gyro data, a counter which seems to be for timing and it also parses out the actual sensor data. And then it just sends it to a queue that you can read from whatever you want, like a rendering interface. At the moment I am rendering with pygame, which beginning python programmers use to write video games.
H+: How would people use it?
CB: You instantiate the Emotiv object from Emokit, set the ID for the headset, then there’s a function that gives you a generator. You iterate over the generator to pop off data.
H+: That sounds simple.
H+: What has Emotiv’s response been so far?
CB: I posted the announcement copy on their forums. They took it down within 2 hours, give or take a few minutes. There’s been a lot of hits. On the forum thread at the Emotiv forum there were 30 views by the time it was taken down. And then it was deleted. I figured most likely these people are viewing other news sites and they are going to hear about it that way, so it’s not a big deal. Overall, their forum moderator’s response is fairly typical.
H+: How do you think Emotiv will respond?
CB: As for how Emotiv is going to respond to any of this, there are a few different possibilities. They will probably just ignore Emokit. There is the possibility that they decide that fighting it in any way (like by ignoring it, which is a passive method of fighting) is not the way to go. As a result, they might relax the reigns on their software, or they might even put themselves behind this in some way. One way they might do that is by linking to it, in some way, or they might get involved in development. I find that scenario doubtful. There’s also the possibility that they will try to litigate or strong-arm me into taking it down, which won’t happen. They may well try, but it won’t be going down. They can do whatever they feel like, of course.
It’s clear that Emotiv is a company in the consumer brain-computer interface market. Basically, here’s what I would tell Emotiv. From a technical standpoint, the combination of Emokit and the OpenViBE toolkit is pretty ideal. OpenViBE is well known. It’s well respected and it’s quite established. From a business standpoint, Emotiv is spending a lot of money on software and they are limiting themselves as to who is going to buy it right now with their price point. There’s no way that open source developers will spend $750 for a toolkit that they can’t talk about. The lower price point is far better from a business standpoint because a lot more people are going to buy it if people can hack it and play around with it. A lot of people have been telling me that Emokit is exactly what they wanted, and they are now going to go buy an Emotiv. They’ve been holding out on buying Emotiv units.
Overall, the entire Emotiv EPOC system is very basic. Another company can come along and replace Emotiv pretty easily. They are missing out on a huge opportunity here, and time and again we see companies locking stuff down instead of harnessing developers. People like us are pushing this out to people, saying, “Hey go buy this, it’s cool, look at what you can do with it.” And the companies are missing out entirely on all of the benefits of social media and collaboration. Their current business plan is poor, to put it nicely. I think they are totally missing out.
H+: Who should buy an Emotiv?
CB: That’s a good question. At this point, if the Emokit project goes the way I want it to in the next week or two — then anyone who is interested in trying something new, interested in experimenting with something new, should pick it up. This includes budding transhumanists. Once the OpenViBE stuff is in place, it’s going to be wide open for hacking, by anyone.
H+: Who would be interested in using Emokit?
CB: Emokit is really simple. The target programmer is just about the average programmer. Your average programmer can understand the internals of Emokit if they wanted to. I think that people are going to use the OpenViBE module to talk to the Emotiv, and once that module is in place, you can use the drag-and-drop GUI to do things like raising and dropping a TIE-fighter. So that’s cool. The whole point of using OpenViBE though is so that you can pipe the Emotiv into any other software trivially, like games. Basically it’s like adding in new keyboard shortcuts or hotkeys. Once you have the Emotiv module for OpenViBE, there’s a ton that you can do with drag-and-drop programming and tying it into other code using a simple protocol. I bet that most people are going to use it that way.
Thanks to Bryan Bishop for conducting this interview.