Rapid Prototyping with MacroFab, Part 1

As part of my jeepbot project, I wanted to build some printed circuit boards (PCBs) to test the concept, try out different designs, and generally just have a real solution. I learned quickly that going from LEGO-style building blocks based on Arduino boards to my own PCB was another learning curve with a lot of unknowns. There are certainly plenty of tutorials online for designing boards, board houses for building them, etc., but it certainly wasn’t an easy or inexpensive job for those learning how to build. As a result, my project languished a bit as both my day job became more demanding (and amazing, rewarding) and the work effort for this project began to look larger and more complicated than I had anticipated.

Around this time, a former co-worker founded MacroFab, a company geared towards solving the problem of making it easier for small “makers” (like me!) to “go from prototype to market faster than ever before.MacroFab’s promise is to make it fast, easy, and cheap to create prototypes, and then make it easy to move into the market easily. Macrofab will even manage production and inventory for you!

While the market support is very intruiging for turning my project into an actual product, at my project stage I was mostly interested in Macrofab for the prototyping aspect of it. Given I had almost zero experience designing schematics, creating boards, or really anything related to creating hardware, I wanted something easy and inexpensive, as I was sure to be making a lot of mistakes.

I decided to make a small board to test out everything. I really didn’t know what to expect when trying to create a real board, so I stuck with something very simple and easy to test: a +12v to +5v power supply. The design I picked was simple: a circuit based on a NCP1117 linear voltage regulator, along with a DC barrel plug for input power, a diode to keep everything safe, a header for the output signals, and a green power-on LED for good measure.

MacroFab’s interface starts off with you creating a new project, and then uploading your design either directly from your design tool, such as CadSoft’s Eagle, or from raw industry standard file formats. Since I’m using Eagle, that was an easy choice.

Screen Shot 2016-02-06 at 3.42.53 PMAfter your files are uploaded and their system processes them, you are presented with a view of your PCB and all of its layers. You also start getting a cost estimate on your design based upon the PCB price, the parts, and MacroFab’s own labor costs. As you can seen from the screenshot, this board costs less than $17 for a quantity of 1. Absolutely amazing.

Screen Shot 2016-02-06 at 3.43.16 PMThe next step in the process is going through your bill of materials. As I learned later, this is the part of the process where you need to pay the most attention. MacroFab’s software will do a decent job of finding parts for you based on your design files. However, not all parts can be found all of the time and you will need to double-check that the parts match your design correctly.

One thing that MacroFab has done is a huge benefit here: they have their own house parts, and an Eagle library to make selecting them easy. For common things such as resistors, capacitors, LEDs, common micro-controllers, headers, etc. these are a slam-dunk. Not only are the parts guaranteed to be on-hand, they’re usually a lot cheaper, too. And for someone like me, I’m not particularly interested in the nuances of picking the absolute “best” part available; I want good-enough, available, cheap, and easy. Are there better LEDs than the ones in MacroFab’s inventory? Maybe, and you can get them if you want, but I’m not sure why I would spend any time looking for them. Can you tell I’m not a hardware engineer?

The final step in the MacroFab interface before ordering is to review the placement of the parts you’ve selected. Here’s your final chance to review, and it gives you a visual indication of how the parts will be placed on the board. It’s pretty easy to see if you’ve picked a through-hole part instead of a surface-mount, for example, so this step is amazing valuable and easy.

Finally, you order your part and MacroFab’s operations take over. Within a day or two of submitting your order, MacroFab’s engineers do a sanity check on your design. In my case, they wanted to verify that I had the right resistor and diode values in my design – I said yes (which later turned out to be wrong!) – and off they went to producing the board.

MacroFab doesn’t create its own PCBs – that’s a cut-throat business with little margin – so they send out for PCBs from other vendors. At the same time, they order any parts they might need for your design if they do not already have the parts in stock. Once everything is in stock, they do the final assembly of the board in house. With all three of the boards I have had them build so far, there have been little issues at this stage of the game, all related to my own mistakes.

In this case, the DC power plug part I picked had the wrong type of through-hole connectors. Whoops! As a newbie, I didn’t have enough attention to detail when I was selecting that part (MacroFab’s interface couldn’t find the right one for me automatically). No matter, I had a bunch of those in my workshop at the house, so I asked them to skip placement of the part.

IMG_2365About two weeks (during the busy holiday season, no less!) after I submitted my order, my board arrived. Included were the spare parts from my order and the assembled board itself. How exciting, my first PCB ever! As someone who started out with electronics and hardware as a kid, but quickly moved to software, this was hugely satisfying and made me wish I had done it decades ago.

You’ll notice the couple of hand-solder marks on the outline for the DC barrel jack that I made. It turns out I didn’t have the right part in my workshop after all, so I just soldered some wire leads to the pins to test everything out. And, it didn’t work! Puzzled, but not surprised, I did some quick analysis. It turns out my diode was not the right voltage rating. Instead of a maximum of 100v, it had a pass-through voltage of 100v instead of 12v… whoops!

Once I bypassed that diode, the circuit worked great, except for my LED not lighting up. I quickly found that I had selected a 150K Ω resistor instead of the 150 Ω resistor I needed. MacroFab actually caught this mistake, but I told them the part was the right one. D’oh!

Regardless, my first experiment was a success. For less than $20 delivered, I had my first PCB design built and I learned a great deal about the process. All of which made it much easier to do my next project, and the goal of all of this – the intelligent switching board for my Jeep. See part 2 for more details on the next phase.


CAN Bus Hacking with the Arduino and Raspberry Pi

In December of 2013, I published a set of videos on YouTube discussing how to do CAN bus hacking using an Arduino and/or Raspberry Pi. These videos were made in conjunction with my Jeep hacking projects.

Several viewers have asked for a little bit more information on getting an Arduino and Raspberry Pi to talk to one another over a CAN bus, so I thought I’d provide a bit of written information here to accompany the videos. In addition, two years of time have provided some improvements that make everything easier.

For both the Arduino and the Raspberry Pi, I used daughter boards that use Microchip’s MCP2515 CAN controller and MCP2551 CAN transceiver. These are extremely common integrated circuits for CAN and are great to integrate with as they use an Serial Peripheral Interface (SPI).

The Videos

The CAN Bus

A CAN bus has to be properly terminated on each end of the bus. The easiest way to do this on a bench is using a breadboard. Use two 120 Ω resistors on each end of one of the power rails to terminate the bus properly. You can then connect your nodes to any location within the power rail and have them join the bus properly.

Be sure to create a twisted pair out of each set of wires coming from each node. CAN bus is highly resilient to electrical noise when each node follows certain rules, and twisted pairs of wires is one of those rules.

A CAN bus setup on a breadboard
A CAN bus setup on a breadboard

The Arduino Setup

Sparkfun sells a CAN bus shield designed by SK Pang. This shield is great for developing automotive-focused applications, and is extremely easy to use from a software standpoint. Once built, the shield plugs into an Arduino with no further configuration.

For software, the following should be downloaded:

  1. My AVRDebug library – https://github.com/dcgibbons/AVRDebug
  2. My “hello, world” application – https://github.com/dcgibbons/CANBusHello
  3. The library for the Sparkfun / SK Pang shield – https://github.com/sparkfun/SparkFun_CAN-Bus_Arduino_Library

Once built and downloaded, the project will broadcast a message to the CAN bus every 500ms. The message will contain an ASCII string value of a monotonically increasing integer value.

If you run the project without another node connected to the CAN bus, expect to start seeing errors after a few messages are queued up. The sender requires another node on the network to acknowledge the message electrically. This can trip you up if you are first starting out with the CAN bus as it is non-obvious why you might be getting an error.

The Raspberry Pi Setup

The easiest way to get CAN support on your Raspberry Pi is to buy a daughter board from SK Pang: the PICAN board. You can build your own configuration using mcp2515 and mcp2551 ICs, but for the price the PICAN is an easy bet.

Today the Raspberry Pi setup is much easier than ever before. Pick the 2015-02-16 or newer version of Raspian and you will not have to compile any kernel modules.

See this blog post on SK Pang site on setting up your complete system.

On the RPi, the regular SK Pang setup they have documented works great. On mine, the end of my /boot/config.txt looks like:

and then my /etc/network/interfaces file looks like:

auto can0
iface can0 inet manual
    pre-up ip link set $IFACE type can bitrate 500000 listen-only off triple-sampling on
    up /sbin/ifconfig $IFACE up
    down /sbin/ifconfig $IFACE down
The ip command can give you a big clue on state if you use this command:
root@raspberrypi:~# ip -details -statistics link show can0
3: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 10
    can <TRIPLE-SAMPLING> state ERROR-ACTIVE restart-ms 0
    bitrate 500000 sample-point 0.875
    tq 125 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
    mcp251x: tseg1 3..16 tseg2 2..8 sjw 1..4 brp 1..64 brp-inc 1
    clock 8000000
re-started bus-errors arbit-lost error-warn error-pass bus-off
     0          0          0          0          0          0     
RX: bytes  packets  errors  dropped overrun mcast
     632288     79036    0       103     0       0     
TX: bytes  packets  errors  dropped carrier collsns
     0          0        0       0       0       0
The couple of things I bolded are key. The clock should be 1/2 of what the oscillator setting in config.txt is (weird quirk). The state is the actual MCP2515 state – so error-active is what you usually want to see. Error-passive or Bus-off are bad. See the mcp2515 datasheet for details there.
You’ll want can-utils downloaded and installed: https://github.com/linux-can/can-utils
Then, if you run the Arduino project so it’s sending data every 500 ms, and then run this command on the RPi, you should see some similar output:
pi@raspberrypi ~ $ candump -t a -c -c -a can0
 (1452184714.419422)  can0  1FF   [8]  31 34 32 35 33 00 00 00   '14253...'
 (1452184714.939332)  can0  1FF   [8]  31 34 32 35 34 00 00 00   '14254...'
 (1452184715.459257)  can0  1FF   [8]  31 34 32 35 35 00 00 00   '14255...'
You can use the can-utils for just about everything. cansend and canplayer are useful for sending messages, candump and cansniffer are the two used for watching data (cansniffer is especially awesome for figuring out what’s really happening). If you want to write custom software that uses CAN on the RPi, then you can use these as examples. It’s effectively just using the socket system calls.
So that’s pretty much it. You have to have the bus speed match, you have to have the correct wiring, but otherwise that’s all there is to it. I’ve got a setup with an Arduino as shown below, the RPi as shown below, another RPi with a different CAN board (still mcp25xx), and a breadboard cased ATMEGA setup without the Arduino hardware. All works great.

Epic Bicycle Rides – Corona Pass in Winter

I biked up Corona Pass on 1/1/2016.

What’s Corona Pass?

Corona Pass, also known as Rollins Pass, is a high-altitude mountain pass in north-central Colorado, between the towns of Winter Park and Nederland. Part of the Moffat Road, Rollins Pass was the first railroad passage over the Rocky Mountains, before the Moffat tunnel was opened in 1928. The pass was used by railroad traffic from the early 1900s through 1928, and then thereafter has been used mostly as an scenic automotive drive.

In the summertime, I bicycle up Corona Pass several times a season. It’s great to get above the tree-line on a bicycle, and the pass road itself has access to many great single-track trails such as Broken Thumb, Twisted Ankle, and Rogers Pass.

In the winter, the road turns into a snowmobile heaven.  The Grand Adventures company has the USFS permits for grooming much of the trails in the Fraser Valley, and Corona Pass is one of the major roads for their service (and for public use as well). As a result, it turns into a great road for fat biking in the winter. I’ve ridden this pass in Winter a couple of times each season, and it’s always been a blast.

The Plan

This ride had been my New Year’s Day plan for a while, but it almost didn’t happen. It got down to -20ºF overnight at my place, and in the morning it wasn’t really warming up. But, thanks to some weather sorcery, it was actually warmer closer to the mountains. I left 90 minutes later than planned – at 11:30am it was -11ºF at my place, and 15 miles away at the start of my ride it was a whopping 8ºF. Cold, but certainly bearable, especially on such a bright sunny day.

The Destination

The road was in great shape on the way up – groomed, snowmobiled, and packed in well.

On the way down, enough snowmobile traffic had come up during my ride that the snow was really chewed up. In some respects that made for a better descent, as I had to pedal just enough to keep my heart rate up and that kept me from freezing as much.

The ride up took 2hrs 50min to cover 9 miles, with 2200 ft elevation gain with a 4.4% average grade. The descent took just an hour.

This was the first time I made it all the way to the top of where the snowmobile traffic goes. What a great adventure, and great way to start 2016.

Scenes Along the Way

After a 3/4 mile climb over a rough snowmobile trafficked hill from the parking lot, I wound up on Corona Pass road. The Grand Adventures snowmobile rental company grooms the main road regularly. It’s a gentle grade (~3-5%) and a relatively easy climb up. The road closed sign is because the Needle Eye tunnel, on the Front Range side, collapsed years ago and they haven’t re-opened it yet. You can go all the way up from Nederland, and all the way up from Winter Park, but you can’t drive over – non-motorized traffic can make it over, though.


Only light tracks left on the super packed snow.


First big break with the treeline now closeby. Rogers Pass is in view, and Riflesight Notch is just ahead.


The famous Riflesight Notch railroad trestle. When the railroad ran, the tracks would circle down the hill and then come out underneath the trestle from a tunnel, hence the name.


A friendly snowmobiler took my picture while next to the trestle. Mt. Epworth and my destination is just behind me.


Welcome to the tundra. I MADE IT! This is as high as I’ve been in in the winter on any of my rides up here. Rollins Pass is about 2-3 miles in the distance, but the road isn’t groomed in the winter (enough for me to make it on a bike, anyway).


I’m still alive! Despite being very, very cold, there was no wind today – absolutely none. It was awesome up top.


Gratuitous pano…


Looking down towards the Fraser valley from the top. You can see Fraser and Tabernash (my place!) far below.


And there’s the Continental Divide! Just a hundred yards or so away. On the otherside is Nederland and then Boulder.


Looking towards Winter Park we can see the ski resort and the Riflesight Notch railroad trestle where I just came from.


Looking back towards the North we can see Mt. Epworth and Rollins Pass in the distance. If you look closely, you can see snowmobile tracks the more advanced riders have made over to that area.


Further down the hill. In the summer, this rock is just above the main road. The snowmobiles all wind up here for the scenic view.


11,500 ft!


About to descend… this hill, down towards Corona Bowl, was actually too steep to ride up, so I hiked up. Coming down, a minute or so after this shot was taking, I built up too much speed and had a spectacularly fluffy powder crash. A little less air pressure in the tires would have helped that…


Back down at the Riflesight Notch railroad trestle… still early in the season so it is visible.

My Houston Marathon Experience

On January 18th, 2009 I ran the Chevron Houston Marathon – my first full marathon – and finished in 4 hours, 54 minutes and 42 seconds.

The Event

2009 Chevron Houston Marathon Course Map
2009 Chevron Houston Marathon Course Map

The full and half marathon events began at the same time with groups separated into two waves. The second wave, which I was in, began 10 minutes after the first wave. The half marathon group started a block away from the full, but joined back up at mile two.

Both the full and half marathon events start and finish at Houston’s George R. Brown Convention Center. The course winds through The Heights neighborhood, through the Montrose district, meanders through the Rice University area, leaves the loop 610 boundary for The Galleria and Tanglewilde districts before turning to downtown via the Memorial Park area.

My plan was to find the runners in the 4 hour, 15 minute pace group and stick with them throughout the run. I intended to use the Jeff Galloway technique of running a few minutes followed by a brief walk. At my pace, he recommends a 4 minute run followed by a 1 minute walk. This pattern is supposed to be repeated until approximately mile 18 where you can then turn on the steam and finish strong. In theory, that is.

As it turned out, I immediately lost sight of my pace leaders even though I was perhaps only 25 yards behind them at the starting gun. The sheer mass of people made it difficult to go the full pace for the first three miles. The massive crowd also made it difficult to start the run/walk cycle right from the beginning, although I did pick it up around mile three.

Between miles 5 and 6 we ran in The Heights neighborhood, and right along the two streets that border my parents’ street, so they came out to see me run past. About this point I ran into – no pun intended – a few of the runners from my running group that run about the same pace I do in training. I started maintaining a running pace that stayed with them and we each began to push the pace a little faster as the crowd thinned out some. This is telling from the result data… over the first 6.2 miles I averaged 5.9 mph or a 10 minute, 7 second per mile pace. During the next 6.2 miles my average pace was 6.0 mph or a 9 minute, 57 second per mile pace – right where I wanted to be.

At mile nine, in the Montrose district, the half-marathon group reached their turn-around point and suddenly the streets became a whole lot less crowded. The spectators thinned out as well, although still remained thick and loud throughout most of the remainder of the course when located on residential streets. The effects of a cheering crowd in an event like this cannot be underestimated. All of the runners have their names printed on their bibs, so you literally have thousands of people calling out your name as you run by; never underestimate the power a flirting woman cheering a name can have on the competitive male psyche!

Almost Halfway
Almost Halfway

I finished the first half of the marathon within 30 seconds of my previous two half marathons I ran in October. That lifted my spirits but fatigue began to set in a few miles later. Just after the 14 mile point we turned onto Westpark and climbed a very large overpass. We also left the residential neighborhoods for a few miles so the combination of the distance, lack of cheering and fatigue of the hill climb finally got to me and I dropped off the pace. The next seven miles proved the most difficult of the race; during my 13.1 to 18.6 mile split I averaged only 5.3 mph or an 11 minute, 18 second per mile pace.

At around the 18.6 (30K) mile point to mile 20 I reevaluated how I’d run the rest of the course. Unlike many of the training runs, I had not bonked but rather muscle fatigue had set in. I decided to take it easy, concentrate on finishing well, and walk as much as I needed to. I did find that keeping a relatively fast running pace felt better than a slower one, but I had to walk much more often to recover. As a result, my last split time was only an average of 4.5 mph or a glacial 13 minute, 17 second per mile pace.

Around mile 20 the race officials also changed the flag risk from green (run as planned) to yellow (ensure adequate fluids and cooling; slow pace as heat increased) as the temperature approached 70 degrees. It really was a near perfect weather day, except runners would really prefer it to be 20 or 30 degrees cooler than that for racing.  I felt comfortable and cool enough, but noticed I was running slower with the same heart rate as I was earlier in the day (which I try and keep between 160 and 165 during a race).

During the last three miles the head coach of my running group, along with the coach of my pace group and several other members of the group caught up to me and did their best to encourage us to keep up and finish strong. I picked up the pace for a little while but fatigue won out and they wound up passing me around mile 25. In the end they finished just under two minutes ahead of me, but it was neigh impossible to keep up at that point.

It really was a wonderful experience crossing the finish line of a marathon. It was tough, although I think my first 100 mile bicycle ride years before was probably a tougher challenge. I was not nearly as exhausted as I thought I would be, although that should not underscore just how amazingly worn out I really was.

After the Finish

Still Alive!
Still Alive!

Immediately after crossing the finish line the organizers herd you into an area where you get a finisher photograph taken. After that you are brought inside the George R. Brown, given your finisher medal and then herded over to the medical area where you are weighed. They compare your weight after the race to what you weighed the previous day when you picked up your packet at the event expo. In my case, I was the same weight so they were concerned I might have hyponatremia.

They took me back into the medical area and had me fill out a questionnaire with the gist being how much water  you drank during the race and how you feel. In my case, I felt great (sore muscles aside) and I had been using an electrolyte add-in for my water during the event. In fact, towards the end I suspected I needed more fluids than I had drunk because I was covered in a thick layer of salt and I did not have to urinate at all during the event. After checking out my questionnaire and making sure I really felt okay they let me go, but this is an interesting data point for me and future runs.

After that little distraction, which unfortunately took a half hour, it was time to herd through the food area, get my finisher’s t-shirt and other goodies, pick up my checked baggage, change clothes and then find my friends. They of course were terribly worried about me since they were not sure when I crossed the finished line and then I was MIA for the extra half hour after I did.

Once everything was squared away we left, found ourselves an IHOP for lunch (mmm, pancakes and eggs!) and then went home. I treated myself to an ice bath as soon as I got home, which was more enjoyable than it sounds, followed by a wonderful shower and a slow, short bicycle ride in the park behind my neighborhood. Amazingly, I didn’t collapse into a coma as soon as I was done with all of that but stayed up until a normal time, even though I had been up since 3:30am.

One of the more amusing things to do after any endurance event like this is to add up just what all you ate during the day. In my case:

  1. Breakfast: banana protein cake
  2. Pre-run: 1 Gu packet
  3. During: 3 bags of Clif Shot Bloks, 2 bananas, 1 Gu packet, and 10 (!) cups of sports drink, plus about the same amount of water
  4. Post-race: 1 slice pound cake, 1/4 bagel, 1/2 cup scrambled eggs, 1/2 cup potatoes
  5. Lunch: 1/2 omelette and 1/2 harvest grain ‘n nut pancakes @ IHOP
  6. Snack: cottage cheese, granola, and raisins
  7. Dinner: banana protein cake

Wow! All of that sounds excessive but I likely did not really eat enough during the day as my heart rate monitor reported a energy expenditure of 3,878 kilo calories during the marathon itself. And let’s face it, you run a marathon and it is pretty much a license to eat whatever you can handle that day. I should have ordered a pizza!

The day after the marathon I found myself extremely sore, but not nearly as much as I thought I would be. I was slow, but fully functional. I did notice that as the day went on my entire back was highly sore, which is a new experience for me.

Today, two days after, I was less sore but my muscles were still screaming at me. It was time for a massage (which I stupidly scheduled in advance without thinking it was the exact time of the presidential inauguration, whoops!). Deep tissue massages are a bit sadomasochistic to begin with, but this one was truly an amazing amount of pain. The old cliché about muscles you didn’t know existing being sore was so true. Nevertheless, it is an amazing recovery tool and I found myself feeling wonderful afterward. The muscles in the middle of my back and my right shin were the most sore and the massage went a long way to relieving their pain.

I am supposed to take  break from all exercise until Thursday, at which point I can go for a short run or walk. This weekend the bicycling training season begins anew, and a gentle ~40 mile ride in the country will likely be a wonderful recovery tool as well.

The Training

I started running in late April, 2008 after the MS150 bike ride between Houston and Austin. My cardiovascular conditioning after the bicycle training season was excellent, which made pushing myself during the runs easy, but my running technique itself was not sound. My good friend Teri noticed how I was running and offered a few suggestions which dramatically changed how I ran and the impact it had on my body. After that point, running became relatively easy.

I signed up with Fort Bend Fit to utilize their training program for the 2009 Houston half-marathon. My training progressed much faster than I expected and I ran my first half-marathon in Albuquerque in October, followed by the warm-up Houston half-marathon a week later. At that point, I decided to switch to the full marathon race and continued to follow the full marathon training program.

During the training season I ran 600.5 miles over 120 hours and 56 minutes, expending a whopping 75,711 kilo calories – not including any of the cross-training I did. The Fort Bend Fit training program was a full 28 weeks long, making it possible for anyone to go from being able to do a 5K distance to a full marathon during that time.

During the training season I ran 2 5K races, a 5 mile race, 2 half-marathons, a 25K race and a 30K race, not to mention all of the nurmous additional training runs in between.

It was a truely awesome experience.

Now What?

The day of the marathon, and the following Monday, I had zero interest in ever running another marathon. Zero. I like bicycling a whole lot more, and that experience is a whole lot easier on your body (unless you crash). But today I noticed I am already looking for future events and reading different recovery scenarios for the first time marathoner. D’oh. Maybe I should just give in and start doing triathlons. An ironman would be fun…

Biking in Big Bend – Chisos Basin to Rio Grande Village

Today I took my road bike on a trip from the Chisos Basin down to the Rio Grande Village in Big Bend National Park. This is a 30 mile one-way route that is almost entirely downhill.

The Chisos Basin visitor center is at 5,400 feet elevation and the Rio Grande Village visitor center is at 1,850 feet elevation: 3,550 feet of total descent = fun! There was around 700 feet total ascent, most of which occurred right at the beginning to get out of the Chisos Basin itself. Unfortunately this means you aren’t quite warmed up before tackling the hardest hills of the route and at the highest altitude. The good news is that if you can handle those hills, you can probably handle the return trip up to the Chisos Basin, either all the way from Rio Grande Village or just from Panther Junction.


There was a surprise around mile marker 14 west of Panther Junction: a coyote decided I’d make a fun chase. I was cruising around 25 MPH when I heard the pitter-patter of paws on the asphalt as the coyote ran from the desert onto the road in full chase. Two things were immediately clear: I had activated his chase instinct so it was either outrun or fight, and coyotes are a lot faster than domestic dogs. I had to bring the speed up to over 30 MPH for almost a half mile before he gave up the chase.

I spoke to an older ranger a couple of days later about this and he said yes, this does happen and there’s little you can do about it other than not ride. He said all 3 of the big predators in the park (coyotes, bears and mountain lions) have a strong chase instinct and if they actually start after you it’s too late; coyotes just happen to be the only ones you can actually outrun. He mentioned that they are used to seeing people walk and vehicles drive by, but bicyclists and trail runners are slow enough and interesting enough it really excites their instinct.

This was my first time biking in the park and it was fantastic. The park is of course very isolated and the low speed limits (45 MPH) gives the little bit of vehicular traffic ample time to avoid you. At bicycle speeds you can often sneak up on wildlife (or be snuck up upon…). The road quality, while older asphalt, is rather decent and makes for a nice, smooth and fast ride.