Friday, July 13, 2018

Round Bottom Fun Ahead

It's round. It's long. It's more than 3 decades old. It's the new water toy:
It is a Magnum 390 we just picked up. I always wanted a longboard with a round bottom! Last time I sailed one was in the 1980s. It will need a bit of Marine Tex and some glue, but should see the water within the next few days. Good that the water is warm - there'll be plenty of falling when trying to sail downwind :-).

Saturday, July 7, 2018

Windy Welcome

Maybe the wind missed me. Or maybe it's just coincidence. But while my wind sacrifice did not work quite as well as some hoped, I received a nice windy welcome when I got back from Germany. Within 12 hours of being back on Cape Cod, I was sailing nicely powered on a 4.7. Here are some pictures that Eddie Devereaux took at Kalmus yesterday:
Warm means freestyle
Nina working on Flakas
Chris looping

Tuesday, June 26, 2018

Wind Sacrifice

I am the wind sacrifice. I'm good at that! Check today's wind meter readings:
At 4:45 pm, I took the bus to Logan airport. The wind did not even wait for me to get there - it picked up to 25 mph less than 30 minutes later. Coincidence? I think not! The forecast was for 16-17 mph; actual reading were in the high 20s for a few hours.

The next couple of days will be windy, too. Tomorrow's forecast is 16 mph again. I may not go quite as high as today, because it's predicted to be more southerly, but who knows? For Thursday, the prediction is in the mid-20s, so we'll see 30s. Some showers and maybe thunderstorms, but there will probably be a few hours in the morning where it's dry and windy.

So go and get some! It may be all over a week from now when I return...

Monday, June 25, 2018

1000 Million Millions

A large number: 1,000,000,000,000,000. That's 1000 million times a million. Or 10 to the 15th (but that sounds smaller). Or 150 dB. Or a quadrillion.

That's (roughly) the difference in the energy level between a typical GPS signal (-150 dBm) and a bluetooth signal being sent out by a Raspberry Pi (0 dBm). WiFi transmissions are about 10 times stronger still.

For reference, let's look at hearing. The human ear has quite an amazing dynamic range - about 12 orders of magnitude, or a million times a million. The lowest level humans can hear is about 0 dB; the level where instant hearing damage is a real danger is 120 dB - that's the sound of a jet engine pretty close to you. The difference between a normal conversation (50 dB) and a really loud rock concert (100 dB) is much smaller.

So we can't really blame a GPS chip for picking up some "noise" if it's placed right next to a transmitter that screams 1000 million million times louder! Yes, bluetooth and WiFi are at a different frequency, but the difference is not huge: 1.575 GHz, compared to 2.4 GHz for bluetooth and WiFi. It's almost as if the GPS is listening to the baritone in an opera while the soprano is singing a quadrillion times louder. I'm amazed it can pick up anything!

Such great listening skills require a closer look:

This is a section from the "noisy" speeds in my recent post. The blue line is the "doppler speed", or more accurately the "speed over ground". The problem is that it cannot go below zero, so it does not fully reflect the variation in speed caused by the noise. For that, we should look at directional speed, the speed vectors. That's what the yellow and red lines are - "north velocity" and "east velocity". The directional speeds can have negative values, so they often vary more than the "speed over ground" - but not always. The up-and-down that can be seen in the first two high peaks is what's we would expect from purely random errors. When the directional speed stays high (or low) for multiple points in a row, that's a possible indication of systematic errors. One potential source of systematic errors is "multipath" noise, where the same signal reaches the GPS over different paths, which include reflections. Since such secondary paths can remain stable for some time, they can "tilt" the solution one way or the other, and introduced biased, non-random noise.

There are a few observations and ideas that spring from the graph above:

  • When looking at stationary data, we must examine directional speeds, not just speed over ground
  • Moving average filters may be useful to differentiate between random and non-random errors
  • For some test speed data, directional speed data may be useful as as estimate of random speed errors. 
The last point is the most interesting. Since we usually sail  in a straight line during speedsurfing, we can re-map the speed vectors into two components: one in direction of travel, and a second one at a 90-degree angle to it. Any sideways speed, especially any fast variation, would definitively be error. It is probably reasonable to assume that the error in the direction of travel is of a similar magnitude.
However, a closer examination shows that this approach probably would work for test drives, but not for speedsurfing. We are most concerned about errors when they reach 1 knot or more, which is about 0.5 meters per second. When measuring at 5 Hz, this would correspond to a 10 cm lateral movement - something that could quite easily be caused by relatively small body movements, for example from a gust or a piece of chop. But when driving around in a car to test GPS units, such lateral movements do not happen, so the approach should be useful there .. especially on streets that go straight north-south or east-west, and that don't have any trees or buildings on the side. Maybe this approach is of somewhat limited usefulness... time to watch some soccer!

Saturday, June 23, 2018

Foil Against Noise

Let me start with a picture to make clear what this post is about:
It's about how a little bit of aluminum foil can help against RF noise from Raspberry Pies(the kind shown in the picture above - if other raspberry pies make you noisy, try the gluten free versions!).
The graph above shows the results from a stationary test, with measured speed on top, and accuracy estimates at the bottom. For the first 5 minutes of the test (the left, yellow half), I had covered the Raspberry Pi with a bit of aluminum foil; for the second half of the test, I put the Pi on top of the foil.

The results show that (a) the Pi generates a lot of RF noise that's picked up by the GPS and introduces error, and (b) that this RF noise can be blocked quite easily. For those of you who like numbers, here are the averages and maxima for this test (all numbers in knots):
For the numbers, I divided the second half of the test into two parts: a transition part, where the speeds and error estimates where high; and a "not blocked" part, when the numbers stabilized. Moving the Pi took just a few seconds, but the transition period lasted about 2 minutes. I'm not sure exactly what was going on there - perhaps the software in the GPS module needed a couple of minutes to figure out which satellites and/or noise filters to use. 

The numbers in the table above reflect what I had seen many times before in other data sets:
  • At low error estimates (the "with foil" row), actual errors typically are below the error estimates.
  • With higher error estimates, deviations larger than the error estimate can be observed more often.
  • With poor data quality (high error estimates), the error becomes less random, with extended regions of larger error. This is illustrated by the high (false) speed over 2 seconds of more than 4 knots in the "Transition" period. In this region, 10 successive points had errors over 2 knots, about 2x to 5x as high as the error estimate. This would be extremely unlikely to occur randomly.
While the data shown are from a single test, the results are very reproducible. This is quite easy to do by simply hooking up the GPS to u-center, and opening a few graphs. Here's a screen shot from the part where the Pi was covered with foil:
Changes after uncovering the Pi where quite dramatic:
For a lot of the satellites (but not all of them), the observed signal-to-noise ratio dropped significantly, which reduced the accuracy of the speed calculations. So, if you want to use a Raspberry Pi to capture GPS data: cover your Pi!

Saturday, June 16, 2018

Interference and Data Overload

I have been testing a few GPS prototypes with u-blox 8 chips, which promise better accuracy than the "gold standard" Locosys GW-60 watch. Most of the recent tests were with prototypes that had bluetooth transmitters and/or Openlog data recorders.

Generally, the data from the ublox 8 chips were excellent, but in several tests, I noticed some glitches that seemed to be linked to bluetooth. So I made a new prototype that only records to an Openlog recorder, without any bluetooth connection, and compared it to an older prototype with Openlog where I can connect and disconnect the bluetooth chip. Here's a picture that shows the results:
The top graph shows speed, the lower graph shows the speed accuracy estimate. In about the first half of this test (the left side of the graph), the bluetooth transmitter was disconnected. In the second half, the bluetooth transmitter was connected. This was a stationary test, so the speed should always be zero. For the first half, it was close - usually about 0.02 knots, with a maximum around 0.2 knots. But with the bluetooth receiver turned on, there were frequent spikes of 0.5-1 knot. Usually, the spikes were short, and separated by one or more seconds; but the maximum 2-second speed was above 0.5 knots, which is too high.
In this example, I had not bothered to turn on the GPSLogger program, which means that the bluetooth transmitter was frequency hopping, and using about 2 to 4 times more power than when connected to a phone. In previous tests, I had seen some indications that this increases noise even more; but in a separate test today, I could not reproduce this, the noise level was quite high even when the transmitter was connected.

For anyone who likes to see numbers, here are some statistics for the data above - first for the region with bluetooth off:
All speed numbers are in knots. Both GPS units had very similar results. That changed when Bluetooth was turned on:
The first GPS was the Openlog-only, the second GPS had the bluetooth transmitter and was about a foot away. Turning bluetooth on lead to artifacts from RF interference in both units, but the effects where a bit larger in the unit that had the transceiver. One average, this unit also tracked one less satellite; the RF interference must have reduced the signal-to-noise ratio for the weakest satellite so that it was discarded.

In this test, the effect from bluetooth interference may have unusually large, and it may also be possible to reduce the effect with additional RF shielding or different component layouts. However, I find the Openlog setup more convenient, anyway, and it seems to avoid the interference issue completely, so I'll focus on these prototypes for the time being.

Some readers may have noticed the lines in the accuracy graph that drop to the bottom. These are caused by missing data points, which deserved a bit of investigation. The Openlog recorder has only a 512 byte communication buffer, and records to a micro SD card. This can lead to data loss if the writing of the data cannot keep up with the amount of incoming data. In the tests above, the ublox GPS was sending out data about the basic solution (NAV-PVT) and about the satellites it tracked (NAV-SVINFO) five times per second. The satellite information is not used when calculating speed numbers (except for the number of satellites used, which is available in NAV-PVT). But with about 20 satellites being tracked, logging SVINFO can increase the data amount by a factor of 4. Indeed, changing the configuration to not log SVINFO fixed the problem; so did recording SVINFO just once a second instead of 5 times per second. Theoretically, it is also possible to change the firmware in the Openlog recorder to a version that is better suited to high-rate data logging, but that does not seem to be necessary.

Sunday, May 27, 2018

Summer, Speed, and GPS Results

Friday was the first day where it felt like summer. I was perfectly warm in a short-sleeved 3 mm wetsuit, and the Kalmus parking lot saw crowds of windsurfers. The wind was not quite up to summer standards - it was steady at around 18-20 mph until 1 pm, and then went up and down like crazy. At times, the thermals kicked in, and we had 30 mph averages with higher gusts; a few minutes later, it decoupled and dropped to low teens. That happened several times, until it finally cooled of around 5 pm, and the wind was relatively steady .. and in the mid-30s. The Kalmus wind machine is back on!

The forecast for yesterday also held some promise, but the weaker wind did not hold to the surface once it warmed up around noon. Time for some longboard sailing - I explored the little bays close to Egg Island with Gonzalo, who gave me some pointers about longboard racing. Nice!

The summer then ended again today. Temperatures dropped into the 50s overnight, with no sun to warm things up. But we got a rare treat - strong easterly winds! I went to East Bay, and was fully powered on a 6.3 m race sail and the 99 l slalom board. For comparison: on freeride gear, I would have picked a 4.7 and still would have been fully powered! The Kalmus windmeter showed averages around 28 mph, and gusts in the mid-30s. I ended up with a top speed of 32.77 knots, which is a personal best for the spot and the board, and my 5th-fastest session ever. Cool!

I took the opportunity to test my bluetooth GPS prototype again. I had tested it on the water a few times during the last two days, and the results looked great - very close to the results from the "gold standard" GW-60 watch. Here's a graph that compares the 10 second speeds of the bluetooth prototype, my Raspberry Pi Zero prototype, and the GW-60:
Today's results also looked good, but there were a few "red flags" with larger deviations:
I wore two GW-60 watches, one on each arm. However, the differences between the two watches were larger than usual - what was going on? Let's look at the speed graphs in GPSResults:
The two GW-60 watches are on top, the bluetooth GPS is at the bottom. A bit tough to see anything here, but if you look closely at the middle image, you see some missing data points.

I find GPS Action Replay quite useful to have a really close look at data. Here's a movie that shows the aligned speed graphs (after editing out low-speed sections):

I stopped the movie several times when one of the GPS units deviated a lot from the others; usually, it was the red line, the second GW-60 GPS. This GPS simply stopped recording any data points for 50 seconds, and then kept dropping points for several minutes afterwards. Here's a graph from my own analysis software where this is immediately obvious:
The red region means trouble - let's zoom in:
Every time the red line goes from the top to the bottom, one or more data points are missing. The section with 50 seconds of missing data is near the left side of the curve. Because of the missing data, the numbers in the table above were "misaligned" - one top-10 result was missing for the second GW-60. If we take that into account, the numbers look a bit better:
One thing that also differs in this table is the last column. This time, I calculated the difference between the bluetooth GPS and the GW-60 GPS by using the average of the two GW-60 watches (except for the one missing point in each category, of course). I also added a row that shows the average deviation between the two GW-60s and between the bluetooth GPS and the GW-60 averages.
The bottom line is quite clear: the speed results for the bluetooth GPS are very close to the results from the two GW-60 watches. On average, the difference is less than 0.1 knots for 2 seconds; less than 0.05 knots for 10 seconds; and about 0.02 knots for 500 m. It is also well within the "+/-" ranges given by GPSResults (which range from ~0.06 knots for 500 m for the bluetooth GPS to  ~0.35 knots for 2 second data for the GW-60). Looking at the 500 m results in the first table, it is clear that the differences between the two GW-60 watches is larger than the difference between the bluetooth GPS and the first GW-60 watch (which appeared to give more accurate data in this test than the second watch, if judged by the problem areas seen in the movie above).

It's no surprise that the bluetooth GPS is at least as accurate as the GW-60 watch. It uses a GPS chip (the u-blox 8) which is known to be more accurate; this is at least partly due to its ability to use data from various satellite systems at the same time (GPS, GLONASS, and Galileo), while the GW-60 is limited to only satellites from the American GPS satellites. In the tests, the ublox chip was typically able to use 15-19 satellites, while the watch was able to use only 8-10 satellites. More is better!
However, it was still necessary to prove that the prototype does indeed give accurate data, since many things can go wrong, including bad GPS chips and degraded signals from RF interference. The windsurfing tests have consistently shown that the prototype works very well, and actually better than the GW-60 watch when it encounters problems like the one described above.

For those amongst you who love numbers, I'll end with the numbers for the first graph in this post, which includes the accuracy estimates:

Thursday, May 24, 2018

GPS Prototypes

Here's a short video that shows two GPS prototypes ready to be tested on the water:

The one on the left uses a Raspberry Pi Zero W, an e-paper display (similar to what a Kindle uses), and a Stratux GPYes USB GPS module. The one on the right is inside the GoPro case. It's a ublox-8 based GPS connected to a battery and a bluetooth module; the Android phone below it grabs the data over Bluetooth and logs them. Now the wind just has to play along for on-the-water tests tomorrow!

Saturday, May 19, 2018


Nina almost got a Flaka yesterday. She said that for the very first time, the board kept turning while she was sliding backwards. She probably finished the 360 degree rotation, and maybe even a bit more. But she did not realize she was done until afterwards, so she fell onto the sail. But still, that's big progress.

We sailed Lewis Bay in NE wind yesterday for the first time. In NE, we usually go to Duxbury, Chapin, or other spots, but the tide was too low yesterday morning for most of those, and the wind was predicted to drop early. Lewis Bay was a bit gusty, but otherwise quite nice. But there was a surprising amount of ferry and boat traffic.

I almost got to test my Raspberrry Pi Zero "plug and play" GPS while windsurfing for the first time yesterday. Here's what the setup looks like:
It's a Raspberry Pi Zero, a Stratux GPYes USB GPS dongle, a 2500 mAh USB battery pack, a USB cable, some vecro, a zip lock bag, and a waterproof back. The cost for the entire setup is about $50 - about 1/4th or 1/5th of a GW-60 GPS watch. I did wear this while windsurfing, but encountered one little problem: the battery had switched itself off! No test data this time, bummer.

I had noticed a few times before that the battery turned itself off, but was never quite able to figure out when that happens. When it happened before, I thought that I had forgotten to charge the battery, or that the battery was dying - but I was wrong. A little internet search yesterday showed that the "sleep" function is standard for USB battery packs. They are meant to charge phones, which usually happens at 0.5 amps or more. If the current drops below 0.1 A, they decide that the phone is sufficiently charged, and go to sleep. Lazy bastards!

I did a bit more testing with a USB tester today at home, and discovered why the sleep issue was so confusing. Using a variety of USB dongles and hub, I saw that the battery goes to sleep after about 30 seconds if the current is continuously below 0.1 A. It turns out that the Pi Zero uses just about 0.1 A when it's doing nothing. A USB GPS dongle needs about 20-40 mA, so when the dongle is plugged in, the current increases to about 0.13 A. Therefore, the battery always stays on when I test at home.

One of the things that needs current is WiFi. It's usually on when I'm at home, although the script that starts the logging turns if off when a GPS dongle is connected to extend the battery life; that drops the current by about 20-30 mA. When the dongle is pulled and the logging stops, the WiFi is automatically turned back on.

But what happens when WiFi is on, but no network is available (which is usually the case when windsurfing)? It turns out that not being connected to a network has about the same effect as turning WiFi off - the current drops to about 70 mA (with no GPS dongle connected). So that's what happened yesterday! I turned the Pi on before rigging, and connected the dongle about 15 minutes later ... without checking if the battery still was on. But the lazy thing had gone to sleep.

The little test failure just underscores that you can't see much when you're flying blind - the Pi GPS logger needs some kind of display. I've got a little 2.13 in e-paper hat that has exactly the same form factor as the Pi Zero, and got the demo programs to run. Getting it to work with the logger will require a bit of trickery, since there don't see to be any Java drivers for the display. For now, I'll probably go with some primitive form of inter-process communication between the logger and a Python or C program for the display, maybe through a file on a RAM disk. That's the easiest solution that comes to mind, and would make it quite easy to support other kinds of displays, too.

Saturday, April 28, 2018

Great Fun at the Nationals

We're at the US Nationals in Seaford, Virginia, and we're having a blast. How could you not at an event venue like this?
The venue .. before the crowds arrived
It's Dave Kashy's place, where we have raced several times before - the perfect place for a regatta. Even better is the organization, with race results posted online shortly after the races, and group dinners at great local restaurants. It's almost too easy to make new friends, and much more fun to race with friends than with strangers.

I'm in the Kona fleet, so I don't have the usual "bad gear" excuses for placing near the bottom of the fleet - it's all me. But I don't really care, it's lots of fun. It's great to see all these fantastic windsurfers on the water. 
Kona racing

Sunday, April 22, 2018

Hatteras Report

Sorry about the long gap between posts - it's been way too windy the last two weeks. We spent that time in Hatteras, and it was windy every single day. Both Nina and I had to take a day off in the middle because we were to exhausted. But we also wanted to be (somewhat) fit for OBX Wind week, where we both participated in the long distance race. Nina also did the freestyle clinic with Phil Soltysiak; I was signed up for the slalom races, which turned out to be very interesting.. more about that later.

Seeing more than 200 windsurfers compete in the long distance race was amazing - check the picture below:
OBX Wind long distance race. Photo by Donald Ferguson
We did a total of three long distance races, one on Wednesday in wind around 15-20 mph, and two on Thursday in 25-35 mph wind. Each race was out to the reef and back twice, which was about 13 km (8 miles). Even though the wind dropped during or right before two of the races, leaving many competitors slogging, there were lots of happy faces and high-fives after the races. Almost everyone played nicely, but a few racers regarded their placing in the race as much more important than adhering to basic safety or right-of-way rules. Both women in our house who competed had incidents where a racer either forced them to get of the board to avoid a crash, or passed dangerously close (in the middle of the course, with plenty of space to spread out). It is quite unlikely that they will compete in future OBX Wind long distance races. 

Nina did quite well in the long distance race, placing second in the Women's Open division (which had 8 women competing), and leaving all 18 women in the freeride division, as well as more than 100 male windsurfers, behind. I accomplished my goal of finishing all races without breaking anything. On day two, that required switching to freeride gear (Tabou 3S 96 and North Ice 4.7), since there was no way I would have made it through the course with any semblance of control on a race sail and/or slalom board. Since I can actually go faster on this gear than I would have been on slalom gear in the conditions, I managed to squeeze into the top-25 overall, which I am quite happy with.

The slalom racing was quite interesting. From the very first day on, I had realized that the "chop" at the Corpus Christi and SPI spots had seriously spoiled me. The chop in Avon in 20 mph wind (according to the highest nearby wind meters) was much higher and more chaotic than the chop at Grassy Point in 30 mph wind. I (re-)discovered that I really don't like to sail slalom gear in these conditions. After a week of trying and adjusting things, I got somewhat more comfortable, managed to keep most of my jibes dry, and even plane through one occasionally ... but then, the slalom races started. In the second race, I managed to come in in the top third of the ~20 racers, but it quickly went downhill from there. With all the chop around the marks and the distractions from other sailors, I blew most of my jibes. Since I did not wand to be run over (and since my starts sucked, anyway), I decided to let most of the field go ahead before getting to speed. That turned out to not be a smart decision - I had the pleasure of sailing through everyones chop, and then had to avoid all the others who had fallen in their jibes. More dropped jibes, even less confidence ... not a good feedback loop! The final straw was the guy who absolutely had to improve his rank from third-last to second-last by first passing me upwind, with about a foot distance between our boards, and then again passed me fully planing about 2 inches from my head when I was down at the mark. Really? You're at the tail end of the field, but you're such a great sailor that passing someone this closely is safe? So that you can come in 13th instead of 14th? At that point, I decided that slalom racing was definitely not for me, and went in. I could have come to that conclusion earlier, considering that I usually sail way upwind, downwind, outside, or otherwise away from the crowds; but I had previously participated in one slalom series (and several longboard races) where the testosterone-level seemed a lot lower, and everyone sailed more considerate. It just gave me the wrong idea that that's typical.

Nina's choice of doing the freestyle camp was a much smarter one. She learned a lot, and made progress on several moves she worked on. Compared to many racers who displayed the attitude "get out of my way or else", the freestylers were a much friendlier crowd - several high-level freestylers stopped by and gave her tips when they saw the moves she was working on, or demonstrated the moves for her. The freestyle competition was also absolutely awesome, with great moves by top PWA pros Youp Smit and Phil Soltysiak, East Coast freestylers like Mike Burns, Chachi, Max Robinson, and others.
Youp Smit freestyling
We left Hatteras to go to Seaford, VA, where the US Nationals will take place in a few days. I'll be in the Kona category, where I have sailed in before and loved it. We got lucky and scored a really nice AirBnB close to the event - here's a picture from today's sunrise, taken from our apartment:

Tuesday, April 3, 2018

For Pi Players

A couple of people have expressed interest in also playing around with Raspberry Pi-based GPS loggers, so I have posted some very brief instructions and a ZIP file with the code I use at If you want to play along, you'll have to figure out all the Pi things on your own - Google is your friend! I'll entertain any suggestions for improvement, but can't make any promises - I hope to windsurf a lot in the next few weeks, and spend the rest of the time talking about windsurfing, drinking beer, and sitting in the hot tub :-).

Tuesday, March 27, 2018

The Pi Logger

Since it's too cold to windsurf, and cheap OTG phones are not available in most of the world, I've been looking into using a Raspberry Pi for logging GPS data. For those who don't know Raspberry: they are tiny little Linux computers that cost between $5 and $30, depending which model you want. Here's an image showing two of them:
The clear case contains a Raspberry 3 (~ $30); the white case a Raspberry Zero W ($10). The black thing at the bottom is a USB battery; the blue & black thing at the left is a GT-31 GPS. Here's a view from the side:

There's a USB GPS dongle plugged into the Raspberry 3 - the same dongle I had used with Android phones before. I tested the Pi 3 - dongle setup on a bur ride into Boston today, and it worked! Here's are some speed tracks from the dongle and a GW-60 watch:
The blue lines are from the GW-60 (the "gold standard GPS), the red lines are from the dongle + pi. The watch had problems when the bus went under bridges, and dropped a bunch of points (the lines to the bottom). Zoomed in, the data from the dongle look less noisy than the watch data:
This is reflected in lower error estimates for the dongle data (the numbers on the right side):
No big surprises here, the dongle had done better than the watch in previous driving tests (when using an Android phone). The next thing will be to get some tests with the smaller Raspberry Pi Zero W in a few days (I'm waiting for a cable I need).

So far, the setup is just a logger: plug the battery cable into the Pi, wait a couple of minutes for it to boot, plug the dongle in, and record. When done, take the dongle out, and the Pi will shutdown a little later. Back home, grab the data over WiFi, and through them into your favorite GPS software, or upload to To get this to run, it needs a custom Java program, a couple of libraries for the USB/serial communication, a couple of scripts, and an entry in the /etc/rc.local to start things up automatically - not too bad.

The hardware cost for Pi Zero W + GPS dongle + battery + case cables is around $50 US. Adding a small display would add another $40 or so, almost doubling the cost, so that's not very high on my list of priorities.

Things I'll probably try first are:

  • Use a smaller battery pack
  • Pack things neatly for use when windsurfing
  • Configure the Pi Zero as a USB drive for easier downloading onto a computer
  • Use Bluetooth to announce speed
  • Use Bluetooth and an Android phone to display speeds 
  • Automatically transfer files after a session to a phone or PC (over Bluetooth or WiFi)
The entire setup should consist of a few things that are easy and cheap to buy, and a few cables, with no or very little assembly required. Geeks can swap the USB dongle against a ublox 8 chip with a larger antenna, and hook it up using either a serial-to-USB cable, or using the GPIO pins on the Pi (which would also require software changes). 

Monday, March 19, 2018

Texas Wrap

After three days of driving, we're back from Texas, and were once again greeted by snow on the ground. I'm not sure what the bigger shock was, though - the temperature differences or the "sticker shock" in the supermarket, where exactly the same food costs 1/3 to 1/2 more. Maybe I can understand that for fresh fruit from Mexico - but for frozen food? Well, at least the selection of vegetarian pizza is better here. Texas is not the best place for vegetarians!

The weather this year was weird, with a lot of cloudy and rainy days. I still got to sail 31 days, about the same as last year, but that included 4 light wind days, and 4 days on South Padre Island. My biggest sail (the 7.8) also was the most used sail, and only 6 of the 31 days were on sails smaller than 7.0 (2 x 5.6, 4 x 6.3).  It's not quite as bad as it might seem, though - since I only sailed slalom gear, I was on the 7.0 race sail in 23 mph wind averages, where I would use a 5.0 on freestyle gear. The two days on the 5.6 had wind averages of 27 and 32 mph.

We got only one "real" speed session this year, and not a single day with northwesterly wind that would have been perfect at the South Bird Island Slicks. On the upside, we sailed a couple of spots for the first time that are great for long distance speed: the North Flats at South Padre Island, and Grassy Point in Corpus Christi. At low water levels, both spots are great for nautical mile and one hour runs, so it's no surprise that 4 of my top 5 sessions for both of these disciplines are from this year. Good practice for the OBX long distance race next month! And maybe all that "big sail" practice will be useful at the US Nationals a week later, where I'll be sailing a 9.0 in the Kona One category. It's cool to see that more than 50 windsurfers are already registered for the US Nationals, including racers from the US, Canada, Denmark, Great Britain, Belgium, FranceBrazil, Poland, Italy, and Germany. The list includes multiple national champions, so the racing should be hot! See you there or in Avon in a few weeks!

Monday, March 12, 2018

The Difference Between Good and Bad

No, this is not a philosophy post. It's about GPS reception. Surprised?

When I looked at GPS test results from yesterday and today, one thing puzzled me. Look at the data and take a guess:
Why was the phone GPS so inaccurate on 3/11, with large errors in every GPSTC discipline, but quite accurate on 3/12? I'll give you some clues, so you can see how early you can guess the answer.

Clue #1: A cold front pulled in yesterday afternoon. Temperatures dropped from the 80s into high 60s yesterday evening, and to 50s today.

Clue #2: That made me wear a 4 mm wetsuit today, while I was sailing in a lycra top yesterday.

The ardent reader of my blog may have a suspicion on what was going on by now (ha!).

Clue #3: The arm band I use for my phone tends to slip on the lycra, but much less so on the wetsuit. Yesterday, I stopped several times just to re-orient the phone so that it was pointing to the sky; it often was on the side of my arm.

Clue #4: Compare the track points from one run where the phone reported about 1 knot less speed than the GW-60 shown here:
to a run where both devices gave almost the same speed:
Clue #5: Check the "Sats" column for the phone data (the numbers on the right side) for the picture above.

So: yesterday, the armband with the phone slipped often, so that the phone was on the side of my arm, instead of pointing up. The runs that deviate most from the GW-60 data had reception from fewer GPS satellites, and changes in the number of satellites during the run. It seems that having the phone facing sideways on the arm during speed runs screws things up. That's not really very surprising - perhaps the more surprising thing is that the USB dongle gave accurate results yesterday (it was in the same bag, lying on the screen of the phone).

Can we verify that turning the phone sideways and blocking one side screws up GPS reception? Sure! I used GPSLogit, which has a graph that shows satellite reception. Here's a screen shot showing the reception with the phone facing up:
The phone used GPS 13 satellites, and had a decent horizontal accuracy of 4.6 meters. Just turning the phone onto its side did not change much, but then putting a hand close to the top of the phone on the back side did:
Now, the phone had good signal (green bars and dots) from only 7 satellites, and the estimated positional accuracy was 19.7 meters - four times worse!

If you want to reproduce this, but don't have GPSLogit, there are plenty of free GPS test apps on the Google Play Store available that could be used instead. The phone's GPS antenna is typically located near one of the top corners of the phone. You'll have to wait a few seconds to see changes in the satellite reception (probably because that information is not updated as often as position and speed info).

So, if you want to get accurate speeds from your phone with GPSLogit or Windsport Tracker, make sure the phone is facing to the sky! Of course, that's the same for the GW-60.

Sunday, March 11, 2018

Dongles Beats Phone

Here's a graph that compares the accuracy of the GPS from an Android phone to the USB GPS dongle that I have been testing:
The bars show the (absolute) difference between the results of the GPS units to the results from the "Gold Standard" GW-60 GPS in the six GPS Team Challenge disciplines over 10 different windsurfing sessions. The unit is knots. Shorter bars are better.

The results show that the phone GPS (red bars) can give quite accurate results, but sometimes does not. In 5 of the 10 sessions, at least one number (usually for 2 second average speed) was off by 0.3 knots or more. In three sessions, the observed difference was larger than 0.5 knots, which is definitely unacceptable for competition (but still good enough for just recording your sessions, and getting an idea how fast you were).

In contrast, the USB dongle had a maximum error below 0.4 knots in all 10 sessions, with a maximum deviation of 0.2 knots in 9 out of 10 sessions. The one session with a higher error was the one I reported about previously, where the arm band with the phone and dongle had slipped for large parts of the session. In all other session, the accuracy was very good. For comparison, the observed differences when wearing two GW-60 watches (one on each hand) are often in the 0.1-0.2 knot range.

Compared to the phone GPS, the USB dongle has another advantage (in addition to the higher accuracy): the u-blox GPS chip in it can provide accuracy estimates, which allows the automatic detection and elimination of artifacts, for example those that can happen during crashes or when swimming.

Anyone interested more detail can look at the data in this PDF file. You may notice that not all sessions have entries for all 6 GPS disciplines. There are various reasons for this: some sessions are shorter than 1 hour, so GPSResults did not give 1 h results; other sessions are different length in the different files (for various reasons, including a little bug that stopped the dongle logging in earlier versions), so distance differences where meaningless; and so on.

If you're really interested and want to look at the raw GPS data yourself, you can download them from here. It's a 32 MB ZIP archive with about 35 files. Note that you may need to define the time range in GPSResults for some of the sessions where the different units recorded different length sessions if you want to get meaningful results. Also, a few of the GW-60 session contain data from multiple sessions, so make sure to select just the session you want to compare.

Friday, March 2, 2018

Another Naughty Spot

I recently wrote about how great Grassy Point in Corpus Christi is for nautical mile runs (naughties). Today, I finally got to try out a different naughty spot that I had wanted to sail for years: the shipping channel to the right of the JFK Memorial Causeway between Corpus Christi and North Padre Island. Check out the water depth map:
The channel is between the causeway and the big green spoil area in the lower right quadrant of the map. We cross the causeway every time we go shopping, and many times when the water level was low, parts of the spoil area have been above water; the boundary region next to the channel often was just inches deep. A perfect speed channel?

Today, the wind direction was just right: NE, a 90 degree angle to the channel (note that the map above is not in the usual "north on top" orientation). At around 19 knots, it was weak enough to let me use the Falcon 112 - when exploring, a little extra volume is always welcome! After a 5 minute drive from our condo, I was on the shore, ready to rig. Here are today's tracks:

The water level today was quite high. I got off at one spot that's shown in green on the depth map, and the water was above my hips. That meant the channel had some chop - perhaps a foot high, but quite orderly, allowing me to pick lanes. The channel is about 50-80 m wide, so it allows some mini "downwind" runs at about 15 degrees angle to the channel direction. One of those got me a top speed of 28.1 knots over 2 seconds. The best nautical mile run was 25.45 knots, pretty decent for square runs in 19 knot wind. My jibes today were quite poor, partly because I went for very tight turns which the Falcon 112 does not like much, so the hour came out at 20.06 knots. But with a bit more wind and a lower water level, this would be a great spot for 1 hour runs; with a slightly less square wind direction, it will be a great spot for naughties.

Thursday, March 1, 2018

Too Much?

We really had planned to not windsurf today. But when the meters show 25 mph wind, and it's sunny and warm, what do you expect from a couple of wind addicts? That they stay home, just because today would be the 12th day of sailing in the last 15 days, and the fourth day in a row? Really?

Of course we went. And had a blast. I started the session by sailing 2.5 km ( 1 1/2 miles) upwind on a 50 degree weed fin. Nina joined me a bit later to work on her Flakas - for once not overpowered, and on a "big" sail (4.7). That's in contrast to yesterday, when she rigged down from 3.7 to 3.4, and was still overpowered. Here are today's GPS tracks:
That was a thoroughly enjoyable session. Easy fun on flat, knee- to hip-deep water. 

Yesterday was a different story. The forecast had predicted what we got today - 22 mph, but from the south instead of the north. On sunny days, the wind always seems to come in a lot stronger than predicted, and yesterday was no exception. We rigged in 26 mph wind, but then got almost blown off the water when it increased to 32 mph gusting to 40. At least that's what the meters said. But at other spots, Nina would have been perfectly happy on a 3.4.  Of course, she looked good:
But she was so powered on the 3.4 that she aborted many Flaka attempts - even going far downwind was not enough to dump the power in the sail. After hearing her state that she was overpowered, I felt a bit better about my problems to control my 5.6 m race sail. I was on my small board (a 72 l speed board), and I had expected to get some nice nautical mile runs in - but even before the wind really picked up, I never felt in control for more than a few hundred meters, usually in the flattest sections and in lulls. My inner chicken simply did not want to risk any big stacks at 30 knots a mile or two from the launch. In my defense, the water level was a bit higher, which increased the chop and made it slightly more chaotic. 

So the IC sent me to look for some flat water, and I explored an area that I had not ventured to before: Pita Island. Just behind the island, I found a couple of hundred meters of perfectly flat water:
The speed strip is quite short, but you can enter it with a flying start, and you can probably sail onwards after it. The water still is quite flat, but there is a sandbar under water that may make it a bit too shallow. I only did a couple of runs there, and then returned back to the launch, since this spot is more than a kilometer away, and I was not sure if Nina could see me there. Sometimes, people get worried unnecessarily when they see me walk around to check the water depth... but I admit that I was a bit tired by then. Even with just two runs, this ended up being my 4th-fastest session ever, with a 2 second speed of 32.5 knots. I'm sure I'll re-visit this spot in the future!

The day before that had been similar, but different. The wind also came in almost 10 miles higher than predicted, but only to the mid-20s with gusts in the low 30s. With a less wind and a lower water level, the chop was small and nice, perfect for trying to improve my personal best (PB) for 1 hour average speed. During the second half of the hour, the wind had increased, and holding on to the 6.3 on the  Falcon 99 was quite entertaining, but well worth it - I improved my PB by 1.5 knots, to 24.14 knots. Here are the tracks:
Runs were between 3.5 and 4.5 km long. The darker green region on the right was very smooth, the region on a left required a bit more attention. Afterwards, we went to the Lazy Beach Brewing Company to celebrate, which has become one of our favorite watering holes. Nina's expression shows what she thinks about the place:

Sunday, February 25, 2018

BIB and Grassy Point Pictures

The last few times we sailed in Corpus Christi, Many Miles Mike and his wife Julie took some nice pictures. The originals are at and, but I took the liberty to copy a few shots:
Nina at Bird Island Basin

Speed at Grassy Point
Plenty of space for kiters and windsurfers
Needs more practice..

There was plenty of wind here the last couple of days, but we were in South Padre Island. After two great days there a few weeks ago in northerly winds, we figured we'd check it out in southerlies. It was plenty windy - Nina rigged down from 4.5 to 4.0, and still was a bit overpowered. But the tide was higher, and the wind was quite unsteady, which made it more similar to a typical day at BIB. Grassy Point in Corpus Christi seemed smoother on the one very windy day that we sailed there, which would be no surprise, given that the water is about a foot less deep there, and some spoil islands flatten the water even more. Looks like we'll get a a session or two there towards the middle of the week :-).