<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
 
 <title>OpenYou.org</title>
 
 <link href="http://www.openyou.org/" />
 <updated>2011-08-07T22:11:31-07:00</updated>
 <id>http://www.openyou.org/</id>
 <author>
   <name>Kyle Machulis</name>
   <email>kyle at nonpolynomial dot com</email>
 </author>

 
 <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/openyou" /><feedburner:info uri="openyou" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><entry>
   <title>libfitbit Hangups</title>
   <link href="http://www.openyou.org/2011/08/07/libfitbit-hangups/" />
   <updated>2011-08-07T20:34:29-07:00</updated>
   <id>http://www.openyou.org/2011/08/07/libfitbit-hangups</id>
   <content type="html">&lt;p&gt;First off, hello to everyone who found us through the MIT Tech Review article or Ubuntu Community talk! Been a bit slow around here lately, but hoping to get things booted back up.&lt;/p&gt;

&lt;p&gt;It seems the most requested thing at the moment is a finalized version of &lt;a href='http://www.github.com/qdot/libfitbit'&gt;libfitbit&lt;/a&gt;. Currently, we&amp;#8217;re at v0.0.1, which was released in February and hardly worked. There&amp;#8217;s been a lot of progress since then, and we are now able to replicate full communications with the tracker. There&amp;#8217;s really just one problem left with the library, and that&amp;#8217;s the subject of today&amp;#8217;s post.&lt;/p&gt;

&lt;p&gt;So, unless you&amp;#8217;re into specifics of the implementation of the ANT protocol, you can probably skip the rest of the post. However, if you&amp;#8217;re interested in helping me kill the last bug before I can start making distributable, read on.&lt;/p&gt;

&lt;p&gt;I recommend having the &lt;a href='http://www.thisisant.com/images/Resources/PDF/1204662412_ant%20message%20protocol%20and%20usage.pdf'&gt;ANT Protocol Specification&lt;/a&gt; open while following along, as I&amp;#8217;ll be talking about packet types quite a bit. Also, if you have any comments, please leave them on the &lt;a href='https://github.com/qdot/libfitbit/issues/8'&gt;github issue about this problem&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; And, 2 hours after I post this, &lt;a href='https://github.com/qdot/libfitbit/issues/8'&gt;I fix it myself&lt;/a&gt;. I wasn&amp;#8217;t resetting the USB device correctly, which meant we were getting weird configuration conflicts from the last session run. Fixing the device reset clears this, and libfitbit will now retreive information multiple times without having to completely un/replug the key. I&amp;#8217;ll write up a &amp;#8220;rest of the things I need to do&amp;#8221; post tomorrow to let everyone know what&amp;#8217;s next.&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;Whenever libfitbit connects to the tracker, the first transfer after plugging in the USB goes fine. We start communications with an ANT reset message, and we always get back a 0x6F package (Startup Message) with a payload of 0x00 (POWER_ON_RESET), which is what we expect since we just powered on the ANT stick. We then continue on through establishing a communications channel, running a beacon signal to find the tracker, and other steps as laid out in the &lt;a href='https://github.com/qdot/libfitbit/blob/master/doc/fitbit_protocol.asciidoc'&gt;fitbit protocol document&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The problem comes in on the second run of a libfitbit based utility. We try and reset the device, but instead of getting back a 0x6F packet, we usually receive something that looks like a bulk data receive packet, like we would expect back from a bank transfer. Further executions the utility will result in the same, until the point where the receive command from the reset completely times out, and continues to do so. The only way to fix things at this point is to unplug/replug the ANT stick, at which point things work fine again, for one round of communication.&lt;/p&gt;

&lt;p&gt;The actual fitbit client doesn&amp;#8217;t have to deal with this due to the fact that it grabs the device right when it starts up, and doesn&amp;#8217;t let go until shutdown. I suppose I could try stopping and restarting the service with the base plugged in while watching an analyzer, and that may be my next step.&lt;/p&gt;

&lt;p&gt;This bug is the major thing holding up library development right now. Until this is fixed, I can&amp;#8217;t reliably run multiple sessions with the fitbit, and having to replug the USB stick isn&amp;#8217;t a viable solution. I&amp;#8217;m pretty sure I&amp;#8217;m missing something about how connections should end or restart, but progress on this one is slow so far.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Withing Scale Network Hijacking</title>
   <link href="http://www.openyou.org/2011/06/06/withings-network-hijacking/" />
   <updated>2011-06-06T23:01:19-07:00</updated>
   <id>http://www.openyou.org/2011/06/06/withings-network-hijacking</id>
   <content type="html">&lt;p&gt;The &lt;a href='http://www.withings.com'&gt;Withings Scale&lt;/a&gt; is a pretty simple piece of hardware. Set it up on your wifi network, weigh yourself, and it instantly sends your weight to the Withings website.&lt;/p&gt;
&lt;CENTER&gt;&lt;IMG SRC='http://images.nonpolynomial.com/openyou.org/blog/withings.jpg' /&gt;&lt;/CENTER&gt;
&lt;p&gt;Now, as Withings isn&amp;#8217;t really taking and analyzing a ton of data, it&amp;#8217;s (apparently) fairly trivial to pull all the needed data from their website. However, there are those who aren&amp;#8217;t completely happy with that solution, and who also don&amp;#8217;t want to deal with the slow flash interface.&lt;/p&gt;

&lt;p&gt;The people at &lt;a href='http://www.prolixium.com/mynews?id=915'&gt;Proxilium decided to reverse engineer the network protocol&lt;/a&gt;, doing a full trace on the communications between the scale and the home website, and extracted all of the data the scale sends to the website. Not only that, he shows how to set up alternate DNS rules to route off calls to the website to a local webserver, so you can have your own data store. Neat!&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>libfitbit Development Update</title>
   <link href="http://www.openyou.org/2011/05/26/libfitbit-development-update/" />
   <updated>2011-05-26T23:20:12-07:00</updated>
   <id>http://www.openyou.org/2011/05/26/libfitbit-development-update</id>
   <content type="html">&lt;p&gt;There&amp;#8217;s been a lot of interest in &lt;a href='http://www.github.com/qdot/libfitbit'&gt;libfitbit&lt;/a&gt; lately, so here&amp;#8217;s a quick update on where I am with development.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web client is now completely working. Was stuck on ANT burst sends not working, which are used to update the device time and stats like height and weight. Putting in a sleep between burst sends seems to have fixed it. Because, much like &lt;a href='http://www.youtube.com/watch?v=0XM3vWJmpfo'&gt;putting a bird on it&lt;/a&gt;, putting a sleep in it fixes everything.&lt;/li&gt;

&lt;li&gt;Tested the fitbit with the &lt;a href='http://www.amazon.com/gp/product/B000UO9KSY/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;tag=openyouorg-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399353&amp;amp;creativeASIN=B000UO9KSY'&gt;Garmin ANT Stick&lt;/a&gt;, works fine. Hoping to test with &lt;a href='http://www.amazon.com/gp/product/B004YJSD20/ref=as_li_tf_tl?ie=UTF8&amp;amp;tag=openyouorg-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=B004YJSD20'&gt;Suunto stick&lt;/a&gt; within the next week, the goal being to have multiple ant antennas on multiple machines, all which can communicate with any ANT hardware.&lt;/li&gt;

&lt;li&gt;Can get per-minute Step Count and Active Point Score from the fitbit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is close to getting us to a v0.1 release, which I&amp;#8217;m hoping will happen next week after the &lt;a href='http://www.quantifiedself.com/conference/'&gt;Quantified Self Conference&lt;/a&gt;. I&amp;#8217;m also working on documentation and making a couple of useful utilities, such as a linux daemon for web service uploads (yes, I realize I&amp;#8217;m doing fitbit&amp;#8217;s work for them, and no, I&amp;#8217;m not real thrilled about it either), and dumping data to json/xml.&lt;/p&gt;

&lt;p&gt;In terms of what I&amp;#8217;d like to see for versions after that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finish the data format protocol. There&amp;#8217;s still a couple of packets I&amp;#8217;m not sure about, and I haven&amp;#8217;t figured out how events (sleep, etc&amp;#8230;) work yet.&lt;/li&gt;

&lt;li&gt;Dividing out the ANT protocol class and ANT antenna classes into their own library, so they can be shared between multiple device libraries. I&amp;#8217;m moving toward this with the current design, but don&amp;#8217;t want it holding up the v0.1 release&lt;/li&gt;

&lt;li&gt;May a C version? I&amp;#8217;m not exactly motivated about this since python works fine for me right now, but if the need arises, it could be nice to have around. The ANT people have actually &lt;a href='http://www.thisisant.com/component/option,com_fireboard/Itemid,146/func,view/catid,25/id,1464/#1468'&gt;said they have little linux experience on staff&lt;/a&gt;, so I wouldn&amp;#8217;t be expecting their support on the library side soon anyways. Definitely an ownable area for anyone looking to start up an open source project, and there&amp;#8217;s a ton of code already out there&amp;#8230;&lt;/li&gt;

&lt;li&gt;Whatever else people are looking for. Let me know in the &lt;a href='https://github.com/qdot/libfitbit/issues'&gt;github issues&lt;/a&gt; if you have requests.&lt;/li&gt;
&lt;/ul&gt;</content>
 </entry>
 
 <entry>
   <title>libomron Verified Working with BP791IT</title>
   <link href="http://www.openyou.org/2011/05/25/libomron-works-with-bp791it/" />
   <updated>2011-05-25T17:31:12-07:00</updated>
   <id>http://www.openyou.org/2011/05/25/libomron-works-with-bp791it</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve received from email from an OpenYou reader who purchased the &lt;a href='http://www.amazon.com/gp/product/B004H44GB4/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;amp;tag=openyouorg-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=B004H44GB4'&gt;BP791IT&lt;/a&gt;, which is the updated version of the HEM790IT Blood Pressure Monitor from Omron.&lt;/p&gt;
&lt;CENTER&gt;&lt;A href='http://www.amazon.com/gp/product/B004H44GB4/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;tag=openyouorg-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=B004H44GB4'&gt;&lt;IMG SRC='http://images.nonpolynomial.com/openyou.org/blog/bp791it.jpg' /&gt;&lt;/A&gt;&lt;/CENTER&gt;
&lt;p&gt;They&amp;#8217;ve verified that this blood pressure monitor does work with &lt;a href='https://github.com/qdot/libomron/'&gt;OpenYou&amp;#8217;s libomron library&lt;/a&gt;. So, go forth and purchase, knowing you can still pull your data off of the device on any platform &lt;a href='https://github.com/qdot/libomron/'&gt;libomron&lt;/a&gt; supports (which is anything &lt;a href='http://www.libusb.org'&gt;libusb&lt;/a&gt; supports).&lt;/p&gt;

&lt;p&gt;Please note that I&amp;#8217;ve been getting a few issue reports with getting libomron working on OS X, having to do with the kexts not causing the device to detach from the HID Manager correctly on 10.6.7+. These reports have been rather intermittent, but if you experience any issues, please get in touch with me via email or &lt;a href='https://github.com/qdot/libomron/issues'&gt;file a bug report on the github site&lt;/a&gt;.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Upcoming Speaking Engagements</title>
   <link href="http://www.openyou.org/2011/05/13/upcoming-speaking-engagements/" />
   <updated>2011-05-13T21:12:12-07:00</updated>
   <id>http://www.openyou.org/2011/05/13/upcoming-speaking-engagements</id>
   <content type="html">&lt;p&gt;This summer is shaping up to be a busy one&amp;#8230;&lt;/p&gt;
&lt;CENTER&gt;&lt;A HREF='http://makerfaire.com'&gt;&lt;IMG SRC='http://images.nonpolynomial.com/openyou.org/blog/makerfaire.gif' /&gt;&lt;/A&gt;&lt;/CENTER&gt;
&lt;p&gt;I&amp;#8217;m speaking at &lt;a href='http://www.makerfaire.com'&gt;Maker Faire&lt;/a&gt;. Twice, even!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2011-05-21 3:30pm - &lt;a href='http://www.openyou.org'&gt;OpenYou.org&lt;/a&gt; Presentation, Health 2.0 Stage&lt;/li&gt;

&lt;li&gt;2011-05-21 6:00pm - &lt;a href='http://www.openkinect.org'&gt;OpenKinect&lt;/a&gt; Presentation, Main Stage&lt;/li&gt;
&lt;/ul&gt;
&lt;CENTER&gt;&lt;A HREF='http://quantifiedself.com/conference/'&gt;&lt;IMG SRC='http://images.nonpolynomial.com/openyou.org/blog/qs_conf.png' /&gt;&lt;/A&gt;&lt;/CENTER&gt;
&lt;p&gt;Then there&amp;#8217;s the &lt;a href='http://quantifiedself.com/conference'&gt;Quantified Self Conference&lt;/a&gt; on May 28-29th, 2011, at the Computer History Museum in Mountain View, CA. There&amp;#8217;s no central presentation, but honestly, I probably won&amp;#8217;t stop talking at any point during the 2 days, as I have a table at the expo, plus will be helping out with the health hardware session and the hackathon.&lt;/p&gt;
&lt;CENTER&gt;&lt;A HREF='http://en.www.netexplorateur.org/'&gt;&lt;IMG SRC='http://images.nonpolynomial.com/nonpolynomial.com/blog/netexplore_zoom.jpg' /&gt;&lt;/A&gt;&lt;/CENTER&gt;
&lt;p&gt;On June 23rd, I&amp;#8217;ll be doing a presentation on the &lt;a href='http://www.openkinect.org'&gt;OpenKinect&lt;/a&gt; project at &lt;a href='http://en.www.netexplorateur.org/'&gt;NetExplorateur Zoom 2011&lt;/a&gt; in Paris.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>The Quantified Coder and OpenYou Subprojects</title>
   <link href="http://www.openyou.org/2011/05/13/the-quantified-coder/" />
   <updated>2011-05-13T19:47:12-07:00</updated>
   <id>http://www.openyou.org/2011/05/13/the-quantified-coder</id>
   <content type="html">&lt;p&gt;Earlier this week, I spoke at Google I/O on OpenYou and The Quantified Coder Project, one of the first &amp;#8220;things I can do with all of the hardware I&amp;#8217;m working on for OpenYou&amp;#8221; projects. &lt;a href='http://www.youtube.com/watch?v=52Ml_zax4A0#t=12m47s'&gt;The talk is now available on YouTube&lt;/a&gt;.&lt;/p&gt;
&lt;CENTER&gt;&lt;object height='349' width='560'&gt;&lt;param name='movie' value='http://www.youtube.com/v/52Ml_zax4A0?fs=1&amp;start=767&amp;amp;hl=en_US' /&gt;&lt;param name='allowFullScreen' value='true' /&gt;&lt;param name='allowscriptaccess' value='always' /&gt;&lt;embed src='http://www.youtube.com/v/52Ml_zax4A0?fs=1&amp;start=767&amp;amp;hl=en_US' allowfullscreen='true' type='application/x-shockwave-flash' allowscriptaccess='always' height='349' width='560' /&gt;&lt;/object&gt;&lt;/CENTER&gt;
&lt;p&gt;(if it doesn&amp;#8217;t happen automatically, wind above to 12:47 for the start of my talk, though the whole thing is a great watch if you&amp;#8217;ve got the time, as there are lots of QSy topics in it)&lt;/p&gt;

&lt;p&gt;For those interested in the talk content, &lt;a href='http://www.openyou.org/qc/KyleMachulis-ThisIsYourBrainOnBugs.zip'&gt;the slides and notes are available as a zip file&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As I&amp;#8217;ve been working on sensors for OpenYou, I&amp;#8217;ve been coming up with different ideas about what to do with all of this data once I&amp;#8217;ve got it. Having an end goal for these projects keeps me motivated while I&amp;#8217;m in the bit mines. What&amp;#8217;s I&amp;#8217;ve come up with so far:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href='http://www.goldengatewall.com'&gt;Golden Gate Wall&lt;/a&gt; - Rock climbing is a big new hobby for me (only been at it about a year), and seems like a neat place to think about engineering. There&amp;#8217;s already some &lt;a href='http://onlinelibrary.wiley.com/doi/10.1002/jst.71/pdf'&gt;neat research papers&lt;/a&gt;, for instance. I figured I&amp;#8217;d 3D scan a rock climbing wall in Berkeley, CA, and start mapping information about it. Looking to do things like automated route planning based on past traversal by climbers who are wearing sensors, maybe doing some infoviz on the biometrics, etc&amp;#8230;&lt;/li&gt;

&lt;li&gt;&lt;a href='http://www.openyou.org/qc'&gt;Quantified Coder&lt;/a&gt; - In looking at accessing all of this hardware, I have to think about where I&amp;#8217;m gonna be most of the time, and what I can do with the data from that time. Mostly, it&amp;#8217;s gonna be spent in front of the computer. So, why not try and make it add value to what I&amp;#8217;m doing, like programming? That&amp;#8217;s what quantified coder is about. For now, check out the talk above for a more in-depth explanation of where I see it going.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Right now, my main goal with OpenYou is to get the community moving, adding a wiki for protocol information, and getting a few of the driver projects to version 1. I&amp;#8217;ve done information gathering/centralization projects like this before (for instance, with the Compaq IA-1 Internet Appliance, many years ago), but they tend to lose focus if there&amp;#8217;s not a goal outside of that. The projects above give this procedure some shape, which will hopefully means I can keep on-going interest and attention as everything progresses.&lt;/p&gt;

&lt;p&gt;So, in conclusion, yes, OpenYou is a my very own meta-quantified-self project. Nice that things work out like that sometimes.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Fitbit and Security, or Lack Thereof</title>
   <link href="http://www.openyou.org/2011/04/18/fitbit-and-security-or-lack-thereof/" />
   <updated>2011-04-18T22:11:09-07:00</updated>
   <id>http://www.openyou.org/2011/04/18/fitbit-and-security-or-lack-thereof</id>
   <content type="html">&lt;p&gt;One of the libraries that I work on as part of OpenYou is &lt;a href='http://www.github.com/qdot/libfitbit'&gt;libfitbit&lt;/a&gt;, an access library for the &lt;a href='http://www.fitbit.com'&gt;FitBit&lt;/a&gt; pedometer device.&lt;/p&gt;
&lt;CENTER&gt;&lt;IMG SRC='http://images.nonpolynomial.com/openyou.org/blog/fitbit2.jpg' /&gt;&lt;/CENTER&gt;
&lt;p&gt;It&amp;#8217;s basically a tiny accelerometer that clips to clothing to work as a pedometer. It can also communicate wirelessly with its base station, so that whenever a user walks by their computer and assuming they have the Fitbit server software running, it&amp;#8217;ll automatically sync. The data is stored on fitbit&amp;#8217;s website (shown above, lower right), where they give you a nicely designed interface to see it, compare to friends, and for a fee, have it analyzed by on staff trainers.&lt;/p&gt;

&lt;p&gt;The hardware itself is very well designed. In 3 months of having the device, I have yet to lose it (which is a small miracle), and it stays clipped to clothing. The battery seems to last pretty much forever, and the display is nice and crisp. The wireless has quite a range too, picking up the device while I&amp;#8217;m in other rooms.&lt;/p&gt;

&lt;p&gt;The problems began when it didn&amp;#8217;t have drivers for syncing via linux. Doing what it is I do, I figured I&amp;#8217;d whip some up real quick. This is where things when horribly, horribly wrong.&lt;/p&gt;

&lt;p&gt;(For those that want to skip the story telling version of this and just read the hard technical details, the &lt;a href='https://github.com/qdot/libfitbit/blob/master/doc/fitbit_protocol.asciidoc'&gt;reverse engineering document is available on the repo&lt;/a&gt;, which has all of the gritty technical details.)&lt;/p&gt;

&lt;p&gt;The first thing I normally do when looking at new hardware is to check out what I can about the software that ships with the device. There&amp;#8217;s usually some logs around to help out. In fitbit&amp;#8217;s case&amp;#8230; Well, the logs are beyond helpful. They&amp;#8217;re scary. Here&amp;#8217;s a chunk from the beginning of one of them.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;01/28 23:31:55 Sending 4357 bytes of HTML to UI&amp;#8230;&lt;BR /&gt; 01/28 23:31:55 Processing request&amp;#8230;&lt;BR /&gt; 01/28 23:31:55 Waiting for minimum display time to elapse [1000ms]&amp;#8230;&lt;BR /&gt; 01/28 23:31:56 Waiting for form input&amp;#8230;&lt;BR /&gt; 01/28 23:31:57 [POWER EVENT] POWER STATUS CHANGE&lt;BR /&gt; 01/28 23:32:04 [POWER EVENT] POWER STATUS CHANGE 01/28 23:32:14 UI [\.\pipe\Fitbit|kyle]: F&lt;BR /&gt; 01/28 23:32:14 Processing action &amp;#8216;form&amp;#8217;&amp;#8230;&lt;BR /&gt; 01/28 23:32:14 Received form input: email=[USER UNENCRYPTED EMAIL HERE]&amp;amp;password=[USER UNENCRYPTED PASSWORD HERE]&amp;amp;[other stuff]&lt;BR /&gt; 01/28 23:32:14 Connecting [2]: POST to http://client.fitbit.com:80/device/tracker/pairing/signupHandler with data: email=[USER UNENCRYPTED EMAIL HERE]&amp;amp;password=[USER UNENCRYPTED PASSWORD HERE]&amp;amp;[other stuff]&lt;BR /&gt; 01/28 23:32:14 Processing action &amp;#8216;http&amp;#8217;&amp;#8230;&lt;BR /&gt; 01/28 23:32:14 Received HTTP response:&lt;BR /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Yes, that&amp;#8217;s a user&amp;#8217;s email and password, unchanged and in clear text, being flung over to their website via a pure http connection. This step is also logged to the user&amp;#8217;s hard drive in a clear text file, that is world readable.&lt;/p&gt;

&lt;p&gt;This is &lt;em&gt;bad&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The log goes on to verbosely record everything the fitbit says to the website and vice versa. Fitbit sends all commands from their website to the device, meaning they never have to upgrade their client software, though firmware does have to be updated on the device every so often. This policy is actually an interesting move. It made it way easier for me to replicate how their client works for libfitbit, but also keeps them from having to update their client when they make new firmware.&lt;/p&gt;

&lt;p&gt;To continue the fun, we move onto the promiscuous base stations. As a convenience measure, any Fitbit tracker device (the thing you wear, lower left in the picture above) will sync with any base station (the part that connects to the computer, upper portion of picture above). This means that if you&amp;#8217;re at a friend&amp;#8217;s place who has a fitbit, the device will sync, without you having to do anything.&lt;/p&gt;

&lt;p&gt;However, in order for the information to go from the user&amp;#8217;s fitbit that&amp;#8217;s attached to them, to their account on the website, there has to be some identifier on the device to let the website know who&amp;#8217;s who. The tracker serial number does this. The first thing the website asks for is the tracker number, and it then returns the user ID associated with the tracker number. The user ID is what&amp;#8217;s used to access a profile page, i.e.&lt;/p&gt;

&lt;p&gt;http://www.fitbit.com/user/[user_id]&lt;/p&gt;

&lt;p&gt;After knowing the combination of user id and tracker serial, anyone can be basically authenticated and can send data to the site under the account the tracker is bonded to.&lt;/p&gt;

&lt;p&gt;This is an incredibly easy system to spoof. I could walk around with a netbook and a fitbit base station in my backpack, gather serial numbers at a public meetup, then have all the account information I wanted.&lt;/p&gt;

&lt;p&gt;Which brings us to the crux of the problem, and the reason I believe the software is the way it is currently: &lt;em&gt;Why would I do that?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s just steps, after all. Who cares?&lt;/p&gt;

&lt;p&gt;This is one of the things I&amp;#8217;m seeing more and more when reverse engineering medical hardware. It&amp;#8217;s not financial information, it&amp;#8217;s not important health information, so why should it be locked down?&lt;/p&gt;

&lt;p&gt;While this may seem like a rather light issue (other than the password in the clear thing, which is 100% inexcusable), with common thought being &amp;#8216;woo, someone stole my steps!&amp;#8217;, the implications can get pretty staggering depending on how far out we want to cast the timeline, especially in relation to device popularity.&lt;/p&gt;

&lt;p&gt;First off, one of the major marketing points of QS hardware right now seems to be synergy between information stores. Fitbit can now instantly upload a user&amp;#8217;s data to DailyBurn, Google Health, and other sites that the user links to it. This is considered a value-add for health hardware, since users may have been keeping information elsewhere before whatever device they&amp;#8217;re using existed. This also means that if I have write access to one account via the methods described above, I have write access to many accounts via account bonding across sites, assume the user has created those bonds.&lt;/p&gt;

&lt;p&gt;To crank the paranoia level another notch, the amount of device companies I&amp;#8217;ve talked to that are also looking at linking to health insurance companies really makes this a horror story. If someone maliciously gets into a user&amp;#8217;s health device account that then links into health insurance/health care, who knows what havoc could be wreaked.&lt;/p&gt;

&lt;p&gt;Finally, there&amp;#8217;s lots of metadata that can be lifted from these devices as more and more of them go wireless. If you&amp;#8217;re wearing something that uniquely identifies you, that means all someone needs is a base station to tell who the user was, where they were, and when. In the days of geolocative apps and constant check-ins, there comes the question of whether people might want that implicitly, but this seems like it should be opt-in versus opt-out (or in this case, no opting at all).&lt;/p&gt;

&lt;p&gt;So, yeah. Fitbit is a great design, and completely insecure, though not unfixably so. Everything I&amp;#8217;ve talked about above could be easily fixed. Flip on https for transfers (but please don&amp;#8217;t encrypt everything, as I&amp;#8217;d like my drivers to keep working), don&amp;#8217;t log everything ever to disk, allow users to set whether they want base sync promiscuity or not. It&amp;#8217;s not that bad. However, the fact that this was even seemed like a good idea in the first place is a bad precedent for health hardware to come.&lt;/p&gt;

&lt;p&gt;And all I wanted was &lt;strike&gt;a pepsi&lt;/strike&gt; some linux drivers.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>OpenYou at the Quantified Self Conference</title>
   <link href="http://www.openyou.org/2011/04/04/openyou-at-qs-conference/" />
   <updated>2011-04-04T10:21:09-07:00</updated>
   <id>http://www.openyou.org/2011/04/04/openyou-at-qs-conference</id>
   <content type="html">&lt;CENTER&gt;&lt;A HREF='http://quantifiedself.com/conference/'&gt;&lt;IMG SRC='http://images.nonpolynomial.com/openyou.org/blog/qs_conf.png' /&gt;&lt;/A&gt;&lt;/CENTER&gt;
&lt;p&gt;After making it to the &lt;a href='http://www.meetup.com/quantifiedself/'&gt;San Francisco Quantified Self meetup&lt;/a&gt; last week, it became obvious how silly it would be to not show up to the &lt;a href='http://quantifiedself.com/conference/'&gt;Quantified Self conference in May&lt;/a&gt;. So, we&amp;#8217;ll be there with whatever hardware we can drag along. Looking forward to meeting people and talking about what can be done with new hardware!&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Project Updates - Liblightstone and libomron</title>
   <link href="http://www.openyou.org/2011/03/27/liblightstone-libomron-project-updates/" />
   <updated>2011-03-27T22:25:09-07:00</updated>
   <id>http://www.openyou.org/2011/03/27/liblightstone-libomron-project-updates</id>
   <content type="html">&lt;p&gt;Time for what I do best, more project updates!&lt;/p&gt;

&lt;p&gt;First off, after 3 years of brokenness, liblightstone may see full stability for multiple devices in upcoming v1.5.&lt;/p&gt;
&lt;CENTER&gt;&lt;A HREF='http://liblightstone.nonpolynomial.com'&gt;&lt;IMG SRC='http://images.nonpolynomial.com/nonpolynomial.com/blog/lightstone-hack/wildivine2-m.jpg' /&gt;&lt;/A&gt;&lt;/CENTER&gt;
&lt;p&gt;The lightstone is a USB device that comes with the &lt;a href='http://www.wilddivine.com'&gt;&amp;#8220;Journey to Wild Divine&amp;#8221;&lt;/a&gt; video game. The point of the game is to teach users to relax and breath deeply. However, with the game itself working sporatically thanks to being based on a very old version of Director, actually finding peace with WD rarely happens.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://liblightstone.nonpolynomial.com'&gt;liblightstone&lt;/a&gt; was established in 2006 to help owners of the lightstone access data from the device in an open source, cross platform way. However, it has been plagued with bugs when trying to use multiple devices on the same machine, and the release of an updated lightstone with different USB VID/PID pairs caused problems. After finally obtaining one of the newer lightstones last week, I&amp;#8217;ve fixed the aforementioned problems and hope to release v1.5 soon. I hope these will make the driver stable enough to call the hardware access project done for the foreseeable future.&lt;/p&gt;

&lt;p&gt;v1.5 will hopefully be released in the next couple of days, after I do some testing across windows machines. I&amp;#8217;ve been getting odd differences in device enumeration between machines with the WDK installed versus without.&lt;/p&gt;

&lt;p&gt;The USB access code from liblightstone is also used in projects like &lt;a href='http://libomron.nonpolynomial.com'&gt;libomron&lt;/a&gt; and &lt;a href='http://www.github.com/qdot/emokit'&gt;emokit&lt;/a&gt;, so these bugfixes will be finding their way to other projects soon.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://libomron.nonpolynomial.com'&gt;libomron&lt;/a&gt; is also going to be seeing some work soon as we try to continue it toward v1.0.&lt;/p&gt;
&lt;CENTER&gt;&lt;A HREF='http://libomron.nonpolynomial.com'&gt;&lt;IMG SRC='http://images.nonpolynomial.com/openyou.org/blog/omron-pedometer.jpg' /&gt;&lt;/A&gt;&lt;/CENTER&gt;
&lt;p&gt;&lt;a href='http://libomron.nonpolynomial.com'&gt;libomron&lt;/a&gt; is a driver for Omron based USB devices, such as the&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HJ-720ITC Pedometer&lt;/li&gt;

&lt;li&gt;HEM-790-IT Blood Pressure Monitor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It currently only covers those two pieces of hardware, as well as their foreign counterparts (like the M10-IT blood pressure monitor). However, it looks like most of Omron&amp;#8217;s equipment uses the same protocol, so the base of the library is extensible to new equipment as it comes out.&lt;/p&gt;

&lt;p&gt;While the omron equipment isn&amp;#8217;t as flashy as, say, the &lt;a href='http://www.fitbit.com'&gt;fitbit&lt;/a&gt;, it&amp;#8217;s far cheaper ($20 for omron&amp;#8217;s USB pedometer if you find it on sale, versus $99 for a fitbit).&lt;/p&gt;

&lt;p&gt;&lt;a href='http://libomron.nonpolynomial.com'&gt;libomron&lt;/a&gt; is currently approaching v1.0, with a few things left to be done in order to get multiple devices working (same issue as liblightstone had), as well as getting device clearing working. Finally, we&amp;#8217;re hoping to have a simple XML/JSON/CSV data exporter available so it can be easily run by other programs with no need for interfacing at the source level, unless you want neat progress bars or something. Everyone loves neat progress bars.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>np_epoc v0.2 released</title>
   <link href="http://www.openyou.org/2011/03/14/np_epoc-v02-released/" />
   <updated>2011-03-14T00:12:09-07:00</updated>
   <id>http://www.openyou.org/2011/03/14/np_epoc-v02-released</id>
   <content type="html">&lt;CENTER&gt;&lt;a href='http://www.flickr.com/photos/qdot76367/5080605788/' title='np_epoc by qdot76367, on Flickr'&gt;&lt;img src='http://farm5.static.flickr.com/4013/5080605788_eb455a1daa.jpg' height='500' alt='np_epoc' width='410' /&gt;&lt;/a&gt;&lt;/CENTER&gt;
&lt;p&gt;v0.2 of the &lt;a href='http://www.nonpolynomial.com/externals'&gt;np_epoc external for Max/MSP and Pd&lt;/a&gt; has been released.&lt;/p&gt;

&lt;p&gt;VID/PID and key are now selectable by users. Users can also get a device count to make sure the VID/PID pair is set up correctly.&lt;/p&gt;

&lt;p&gt;Hopefully key and ID detection will be done by &lt;a href='http://www.github.com/qdot/emokit'&gt;emokit&lt;/a&gt; soon, but that&amp;#8217;s going to take a little more work since we&amp;#8217;re not yet sure how the key is deduced on connection.&lt;/p&gt;

&lt;p&gt;&lt;a href='https://sourceforge.net/projects/nplabs/files/np_epoc/0.2/'&gt;Binaries are available on the sourceforge NP Labs release site.&lt;/a&gt;&lt;/p&gt;</content>
 </entry>
 
 
</feed>

