Last week while in Malta I broadcasted a few of my swim sessions live to those that wanted to watch as I slowly plodded across the warm tropical waters of the islands. I had sent out the link via Twitter with no warning, and many of you asked exactly how it all worked. So I figured I’d put together this post to explain all the pieces – from the cellular tracking to the heart rate data to the video live streaming. In the event however you prefer a video to the written word, I whipped up a quick video too! It’s right here:
Or, for those more on the written/photo side, you can continue on! Note that in the video I don’t discuss my toying with Livestreaming and a GoPro, nor do I cover my jellyfish foray, so you’ll want to read those sections too!
Live Tracking with the Garmin FR920XT while openwater swimming:
For almost two years now Garmin has had Live Tracking as a capability of its fitness platform. It started with the Edge 510 and Edge 810, which introduced the ability to pair to a cell phone and transmit your location in real-time to friends/family/stalkers. It shows your trail on a map, as well as speed/pace/distance data and further allowed you to send ANT+ data like cadence, heart rate and power. The running focused Forerunner 220 & FR620 inherited the Live Tracking functionality a year ago upon their release.
With that as a background, I was curious to see if I could make it work while swimming. The obvious challenge here being that unlike the Bia women’s watch, the Garmin FR920XT doesn’t contain an internal 3G chip/antenna. Rather, it requires your cell phone. So that would mean I’d need to take my cell phone with me swimming.
Of course, while some phones are actually waterproof – the iPhone is not one of those phones. But that wasn’t a huge problem, for that I’d simply stick it in my swim buoy. For all my openwater swims I take it with me to provide visibility to boats so I don’t get run over. The buoy has a waterproof compartment perfect for storing stuff (including everything seen below like my sandals).
So to get started I got the phone and the 920XT all paired up and talking to each other. Then I snuck the phone in the waterproof compartment that sits in the swim buoy above the water perfectly accessible to cellular signals.
For the purposes of my experiments, I sent out a notification to Twitter as well as a few people via e-mail. That would share my location live to them for the duration of the swim, and then show the swim track for 24 hours afterwards.
Next, I simply got ready to swim. I was careful to try and keep the watch above the water as much as possible while getting ready. I’ll point out the obvious: Bluetooth Smart signals don’t go through water. So, the only connection the phone and device will have is when the FR920XT is above the water.
With that set…I simply swam:
And, as it turned out – the Live Tracking portion actually worked quite well! People saw my track file online in real-time without any major technical issues:
I found that as long as I swam normally and continually, the signal never dropped. If however, I let my wrist with the FR920XT submerge below the surface more than about 3 seconds, then the watch would give me a warning vibration that “Phone Disconnected”. To remedy that, I’d hold it back above the water for about 2-3 seconds and it’d buzz “Phone Connected”.
The only time that 3 second signal drop happened was when I had stopped to grab my camera. During normal swimming it never triggered a loss of phone/connection. I did see one case though where it didn’t seem to reconnect after I had taken a bit longer underwater (about 60 seconds to get the Jellyfish photos). I had to enable/disable Bluetooth on the phone after that at the end of a swim session a few hundred yards later, but while it reconnected it didn’t properly backfill the trackfile gap – but rather just bridged the two points.
Now, there was one unexpected side effect that took a few swims to narrow down. Specifically that the track looks a bit rough (like I was drunk). This appears to be a bug in the 920XT openwater swim mode only when Live Tracking is enabled. Typically the way openwater swim mode works is that it reduces the plotted track points in order to create a smoother track. All GPS watches do this when tracking openwater swims due to the every-stroke GPS signal loss. It’s a math game more than anything else.
It appears that in the openwater swim mode when Live Tracking is enabled that it significantly increases the track point rate plot rate, resulting in drunk tracks because they aren’t fully processed/smoothed. Ironically however, the distance calculation is clearly done separately, as I’d get near identical distances to that of the Ambit3 with its smoothed tracks. Hopefully Garmin will be able to correct that in a firmware update, seems like it should be an easy fix.
Still, it’s definitely a cool solution that overall actually works quite well for location tracking – especially for those doing long distance swim training in openwater by themselves that want family members to keep an eye on where they are.
Capturing Heart Rate Data with the FR920XT while openwater swimming:
Next up is a much shorter explanation – which is capturing of heart rate data. For this, it’s first important to understand that neither ANT+ nor Bluetooth Smart can transmit through water more than about 1-2 inches (3-6cm). Just can’t happen. Instead, what some companies such as Polar do is to use analog signals in their straps to transmit underwater (such as on the V800). While others like Suunto with the Ambit3 are doing a ‘store and forward’ paradigm where the strap stores the heart rate data and then synchronizes it when above the water. So it’s not live data, but rather end-of-set/swim data. Which, works out great for data capture but isn’t ideal for mid-set HR guidance.
Meanwhile, Garmin has never really played in that space at all. They’ve always restricted the ability to enable the heart rate sensor while in the swimming mode – so you couldn’t pair a HR device and still get swim metrics (distance/stroke/etc…). Of course, that’s likely because at the time those decisions where made there weren’t wrist-based HR straps on the market. Now there are.
And that’s exactly how I get HR data to the FR920XT. See, with an optical sensor such as the Mio Link, I’m able to place the device right next to the Garmin FR920XT. It’s then able to transmit via ANT+ that 1” or so to the watch, and capture the data.
But – and this is important – this is only because Garmin has left the ANT+ heart rate pairing capability present in openwater swim mode. Whether this was on purpose or by accident is unclear (I’ve asked, no response on that one). It’s not enabled on pool swim mode, and even on openwater swim mode you can’t add the HR data field to be shown as a data page, it’s only recorded for later analysis.
All that said…it does work, at least more or less just fine from a signal standpoint.
What I found in my testing was that the signal itself from the Mio Link to the FR920XT transmitted just fine the entire time. What wasn’t 100% accurate was my heart rate. For the first portion of the swim it was abnormally low, then like a light switch it was seemingly accurate the second half of the swim. Since I never stopped, I’m not clear what changed.
However, this doesn’t surprise me – nor is it actually a bad thing (yet). See, optical HR even on dry land can require a bit of ‘fact finding’ to determine optimal position for a given person and activity. While I know my optimal position above water, I need to play around a little bit to find it in the water. Something that minimizes the impact of the water on the device while still being close enough to transmit. As one can see – it transmitted 100% of the time, so it’s not an FR920XT issue, but just a Mio Link positioning thing. I’ll figure it out.
Finally, for those curious – yes, the Scosche would work here too. It’s a bit trickier though because that unit is better suited to upper arm areas – but that’s too far away from the watch. Nonetheless I have done some preliminary testing while swimming with success using it near/on my wrist (and other DCR readers have too).
And as for whether or not Garmin enables the HR capability for pool swims (or disables it for openwater), I’m not sure. But, I think it’s a suitable way for them to compete with Polar and Suunto and their various underwater heart rate recording options. An area where Garmin has nothing to offer today, so an 80% solution is better than a 0% solution.
Livestreaming the swim’s video with a GoPro:
Finally, we get to a little side project that I was hoping to pull all the pieces together to make it happen in Malta, but…things didn’t quite work out. But, I’ll cover where I got to in my experiment, since I got all the pieces individually working – just ran out of swims in Malta to tie it all together as one solution.
The end-goal of this was to use new capabilities from the Livestream service to attach to a GoPro Hero4 via my cell phone stuck in a swim buoy and then have that stream to the interwebs where some non-busy person could see me in the frame as I swam across pristine turquoise waters.
So, let’s talk through all the pieces of that.
First, is the camera and the buoy. For this I wanted to use the swim buoy that I have, since I’d be swimming with that already. There was no reason to re-invent the wheel here in my opinion. My first test was simply using a GoPro curved adhesive mount to the side of the buoy. In order to test things I let the mount harden during the day, and then attached the camera to the buoy while I went to dinner. After which I kerplunked it in the bathtub at the hotel. I was curious if it’d still be upright when I returned.
Upright turned out not to be the issue. Rather, it just fell off. The weight of the GoPro on the slightly flexible plastic meant that the sticky mount wasn’t really ‘locked’ on there. So that as a solution was out.
So I pondered my options. While at home I’d have a ton of interesting solutions, I wasn’t at home. I was in a hotel room on a relatively remote island. Supplies were limited. But, I had an idea. I’d use a spare heart rate strap and attach an adhesive mount to that instead. That’d provide a non-flexible surface, and also re-center things a bit. Presto!
This had the benefit that I could attach a few safety zipties in case stuff went wrong – both on the camera, but also below water on the strap to buoy arrangement.
Next, was going for a test with just this portion of the setup. So I got it all hooked up and went out for a swim. That worked for about 6 meters. Maybe 7 meters. Here’s an actual snippet from the video:
Then about 6-7 meters later, it looked like this:
It would flip up/down constantly, the weight of it simply turning the swim buoy upside-down. I had neglected to pack anything in the buoy. Normally when I’m swimming I’ve got sandals in the bottom, along with keys, phone, etc… In this case, I had…well…nothing. So that meant it was now top-heavy. No worries though, that piece I could solve, that’s easy since this was just a case of not doing what I normally do in a test swim. Go figure.
Next we’ve got the actual transmission portion. For that I’d use the Livestream app. That’s an app by the huge Livestream service (a separate company). They stream all sorts of things, from concerts to state events. They have various tiers of service including free. The key differences between those tiers are really around ability to white label or customize access to a channel. From a streaming perspective, it all works the same. I selected the free tier for now.
With the GoPro Hero4 they announced the ability to tie it together and broadcast out from any Hero3 or Hero4 GoPro unit. So, I tried that. Turns out, that’s actually not the case. In fact, despite all the marketing and technical documentation otherwise – it doesn’t yet work with the Hero4. It’s that kind of stuff that really pisses me off. Seriously, just state ‘It’s coming soon!’, rather than pretending it works and letting people flounder around trying to get it working.
In any case, I got the connection working with the Hero3. The app connects to the GoPro via WiFi and effectively uses the GoPro preview functionality as the video stream. In general, the connectivity piece does work somewhat well.
The downside here is that the quality is super-duper-low. To illustrate this, I went ahead and created a stream over 3G from the island I was at. You can see the upload speed is more than sufficient for fairly high quality content:
But in reality, here’s what was actually captured on the Livestream service (if you sign-in to their service, free, you can look at the video here):
Yup, pretty ugly compared to the raw video seen below:
And that’s approximately the point of my overall experiment that I ran out of swims to make this all work. At this point though, I’ve got all the pieces working independently, but I just need to tie it together. Of course, I don’t really expect it to look terribly great…but…I’ll try. The key thing here is that it’s not actually the 3G upload bandwidth that’s the limiter. Rather, it’s currently a limitation of the GoPro to the phone and the streaming quality there. I can actually stream a higher quality video stream from the phone itself to Livestream, just without the whole waterproofing thing. Still, more to come!
Random Tech Opinion: I see huge potential for someone else to one-up the GoPro/Livestream relationship here and burst this open. It could actually come from one of two sides, the device or the software side. From the software side I think YouTube is a far better partner, since it’s a crapton cheaper and without the annoying paywalls and sign-up walls. YouTube supports various live streaming functionality, but none of which is easily done with the GoPro. GoPro could go this route themselves and open things up to way more people there than Livestream.
The other option is for a device company to all-in-one the whole thing. For example, as much as GoPro wants to be a media company, it outsourced this solution to Livestream, resulting in what as far as I can see is a less than ideal technical implementation (for example, I can’t shut off the screen of the app). Thus, it leaves the door open to Sony, Garmin, and others to nail this either in-house, or with partners as noted above. Just like Garmin offers a Live Tracking feature for their fitness devices, the same thing could be done with the VIRB down the road. Heck, I’d happily pay a nominal subscription fee for the feature. And I think if priced right with the right quality level people would go for it.
Finally, these sorts of things are huge attention getters when you look at pro athletes and sponsored athletes. The ability to slap a camera on during a training or racing activity offers so many opportunities for companies that are untapped – as well as for the athlete themselves too.
In any case, it’s an interesting experiment in the realm of what’s possible.
Oh…and those Jellyfish?
For those that don’t care about technology, well, here’s the most non-technological thing I can add to this post. Not all of my swims were peaches and cream awesome. One swim in particular (one I was transmitting Live Tracking data no less) ended up with me finding some local wildlife.
Now for the vast majority of all of my swims I saw nothing but the occasional little fish. The Med isn’t exactly known for being the epicenter of underwater corrals or tropical fish. But that’s OK, it was pretty and clear water, so I was content.
Except apparently some of the local animals were not content with me being there. Just after I started to make my way across the semi-large bay opening, I felt a slew of pricks down my arm. Like a bunch of tiny needles combined with electricity. Not awesome. But also not a stingray.
But I wasn’t quite clear what it was at first, at least for another 5-7 minutes until I saw my first little jellyfish, then I put two and two together.
It was just a short bit after that that the second little critter found me – this time apparently sliding over my head and down my back. This time it was definitely not awesome. A few minutes later I narrowly avoided his brother from another mother, and stopped briefly to take a photo:
(For those curious, it was with a GoPro Hero4 Black in burst mode, quality was a fair bit better than I expected actually. I then re-cropped the images since it was shot initially in wide angle somewhat far away.)
Of course, I didn’t really have anywhere to go but to keep swimming. Stopping wasn’t an option.
Which, upon looking at the interwebs later on actually worked out fairly well. Turns out that salt water was one of the best thing you could apply to it. Of course, that didn’t stop it from looking pretty awesome by time I wrapped up my swim and walked the 5-10 minutes back to the hotel room:
Fear not though, despite my luck with aquatic marine life, within a few hours it was all but gone and there was never any major pain (or any itching at all). Just a bit of ‘warmth’, kinda like a sunburn. Still, I’ll be sure to avoid the more sketchy jellies in the future.
Enjoy, and thanks for reading! And, keep an eye on Twitter, where I’ll make broadcast announcements at random times. Though, given I’ll be in New Zealand the next 10 days, you can likely assume that on weekdays such announcements would be early morning local time (6-8AM), or evening (5-8PM), since that’s when I wouldn’t be working. Or, at least, hopefully not working… On weekends, all bets are off!