Friday, October 9, 2026

Husqvarna 701 CAN Touch Display

 


My 2023 Husqvarna 701 Enduro has a very crude display. I have no fuel gauge and no good way to tell how much fuel is in the tank. It has a low fuel light and that is it. It has no coolant temperature, side stand indicator, gear indicator (except a neutral light) or RPM readout either. 

I decided to build an ESP32-based project to fill these gaps. I also wanted to know what ABS mode I was in right after start and not have to wait until after ABS prove-out and wait for the ABS light to indicate state. 

I started with this Waveshare ESP32-S3 4.3" touch display: https://docs.waveshare.com/ESP32-S3-Touch-LCD-4.3B. I bought the socket and plug sides of the OBD connector so I could T into power, ground, and CAN. I used 22AWG shielded double twisted pair wiring to route form the OBD connector to the display. I used a small 5-pin ebike display plug and socket to provide a connection at the display end. I built the project using Visual Studio Code and Copilot. The vast majority of the coding was done by Copilot and/or Gemini.

Here is the OBD connector on the motorcycle (looking into the face of the plug)



I made the harness that T's into the OBD port. The other connector goes to the Veridian cruise control.

Here is the display fitted to the bike.

Here was some early testing once we (Copilot, Gemini, and I) reverse engineered the data from CAN traffic: 


I rode up to Mt Charleston and back, about 44 miles. The estimated fuel economy aligns with my expectation and experience for this ride. I plan to test it between fill-ups and see how close it is. I can use actual measure fuel economy to compare to its estimate and adjust it as needed to improve accuracy. 

I was unable to acquire fuel rate from CAN so we implemented a basic speed-density model to estimate fuel flow into the engine. I made a simple reset button for the fuel level. Fill the fuel tank and tap the reset button (top center) to tell the module the tank is full. From there the speed-density model estimates fuel consumed by the engine and subtracts that from the full tank. The fuel remaining indicator (top right) shows the estimated fuel remaining in the tank. The fuel gauge (top left) gives a simple visual indicator of remaining fuel volume. This design uses no moving parts or fuel senders that struggle to survive the harsh off-road motorcycle environment. It also shows fuel quantity, not level (much more useful). Complex tank geometry complicates the meaning of fuel level. This calculates fuel quantity and is completely independent of tank geometry, fuel slosh, and how level the bike is. You simply tell it when you fill it and it measures (estimates) the fuel the engine is consuming to estimate the remaining fuel volume. 

Since the Waveshare module is not rugged not water and dust proof, I bought a waterproof enclosure to mount it in. I modified the enclosure to make it more compact by cutting the back off and gluing flat ABS plastic to the back to make a very shallow enclosure. In order to minimize shock and vibration, the Waveshare sandwiches between foam behind it, and small felt pads between the front and the clear enclosure front. I also mounted the whole assembly to the top of my front bag, which isolates it more from shock and vibration. Once I get this all working well, I should find more robust hardware for a more production ready solution. This is good enough for testing to prove it out though. I can see through the clear enclosure cover OK most of the time but glare is a problem. The location is not great as you have to look too far down to see it. Ideally I would have it mounted above the factory display but I need a better device for that. A rally tower would make that mounting much easier.

I also calculate fuel economy and remaining fuel range similar to modern cars and display that. The image below is from a Windows emulator or the latest UI design. I made several elements bigger for visibility.



The RPM bar changes to yellow at peak HP and red at max engine speed. The gear indicator not only shows neutral, but also shows all 6 gears. The ABS indicator shows ON (default), off-road (in off-road ABS dongle mode), or OFF. The side stand shows up or down. It turns yellow when down, green when up. The CAN indicator defaults to yellow (no CAN data) and turns green when it is reading CAN data. It can also record CAN data to the SD card. We used that CAN data recorder heavily when reverse engineering. This device has a battery-backed real time clock. Clicking the date/time at the bottom opens a dialog for setting it. This is mainly used for data logging to correlate the data to interactions.

Now that I know how to trigger off-road ABS mode, I could easily implement that in this same display. I am thinking make a feature that has ABS simply follows the traction control setting. If traction control is in off-road mode, set ABS to off-road mode as well. This device has Wi-Fi and Bluetooth as well. I could add features that use that such as a BLE broadcast of selected data, data upload when in Wi-Fi, and mobile app integrations. 

The next step is to validate the fuel economy and fuel tank estimates by comparing fuel added during a tank fill with the tank size minus the display fuel remaining volume. These should be equal (or very close). The fuel economy estimate indicates how accurate the calculated fuel consumed is. Right now I have the inputs to the speed-density model reading 4 times per second and an AI generated engine volumetric efficiency (VE) estimate. I have a VE map created from internet data that represents this engine. Once I get everything working well and validated, then it is time to hunt for better hardware.


Friday, September 25, 2026

Garmin Zumo XT2 Review


 I started using an old smartphone for off-road navigation, as many do. There are some decent apps for this, most support offline navigation (often with a subscription). There are some upsides and downsides to this approach:

Pros

  • Generally you can use your old out of contract device for this. Load the maps while on WiFi before leaving home.
  • This is a device you likely already have. No additional cost.
  • Performance varies based on the device but is generally good even on fairly old devices.
Cons
  • If you use your primary phone for this you risk damage and loss. I have seen many phone holders break on the trail. 
  • If your phone has optical image stabilization in the camera, mounting it to handlebars will eventually destroy that. 
  • The screen is made for bare hands and you may struggle in bright sunlight to see it clearly, especially with tinted goggles, sunglasses, or a tinted helmet face shield.
  • The battery will drain fast having the display always on bright. If this is your primary phone, now you have a dead phone battery. On a motorcycle you can add a charge port if it doesn't already have one but the USB cables often fall out with the intense vibration and shock from off-road motorcycling.
After an accident that I believe was caused by me struggling to see the navigation, I decided it was time for better navigation. I looked at the options. I already had a Garmin InReach and fenix watch so I decided to get Garmin navigation which integrates with these devices. The Garmin Zumo XT2 was on sale so I bought one. This was over a year before the XT3 was available. 

Garmin is a very mixed bag for sure. They have some very high quality hardware and advanced features. I love my smartwatch and InReach. Garmin battery life is amazing. I also have their rescue plan and the SOS can be triggered with the Zumo, the watch, or the InReach.  Garmin's software is very complicated and cumbersome to use. They have multiple apps that do basically the same thing but only work on certain devices. The apps for the XT2 are different than for the XT, or XT3 for some unknown reason. In order to get a GPX route on my XT2 using a PC, I have to have Tread installed on my phone. I don't directly use Tread but it is the conduit between my PC and my Zumo. Here is how I get a GPX file from something like OnX on my PC to my Zumo XT2:

  1. Find the GPX file you downloaded on your PC.
  2. Open Garmin Explore website in your PC browser.
  3. Upload the GPX to Garmin Explore. Always upload it is a "track" and NOT a "route". Yeah, this is confusing when I consider it a route. More on that later.
  4. Once you can see the route in Garmin Explore website, now it is ready to sync to the Zumo through your phone.
  5. Now open the Tread app on your phone. Just open it. You don't do anything else with it.
  6. Open the Explore app on your Zumo and let it sync.
There are other ways to get a GPX file on your device but this works for me so I stick to it.

Routes versus Tracks. Yeah, let me explain. So a route to Garmin is apparently just a rough guideline of a few points of interest you want to visit. This works about like Google Maps routes. Say you select a destination town miles away and Google Maps find the best route there. You decide to stop for lunch so you add a lunch spot to this route. Now it has 2 points on your route. Google Maps will dynamically route you there. The Zumo routes work this same way. It tries to find the best route between the GPX points. This works fine on paved road generally. However, off road it gets lost. It tries to get you back to major roads between points. Never use routes off-road. Always import the GPX file as a track. The Zumo will simply navigate your track point-by-point. You need a GPX file with many points so each segment between the points is very short. GPX exports from OnX, GAIA, and most others will give you a nice dense GPX file for this. 

On road navigation with the Zumo XT2 is great. You can navigate to a place like you would with Google Maps and it generally works well. There is a nice shortcut for home so you can navigate home with one click. It shows what roads are coming up next, and other very useful features. Off road navigation lacks this. You can see your GPX track you loaded, and you can see where you are on it. 

My Zumo XT2 broke on one of my rides. I crashed onto rocks and the impact broke the mount and the back plate of the device. Garmin warranted this repair, sending me new parts right away. They sent a refurbished Zumo XT2 and mount. This was over a year after purchase too. This is great warranty support for physical damage which most warranties generally do not cover stuff like this. However, the refurbished Zumo XT2 had an issue where it would stop responding to the touch screen. A hard reboot would often fix it temporarily. I contacted them and they promptly sent me another unit which has been working fine. 

Overall I am content with the Zumo XT2. I wish it had better off-road capabilities. I suspect the Zumo XT3 is better here. Garmin also makes a very similar (but more expensive device) the Tread which is more focused for off road. The XT3 have many significant upgrades over the XT2. It has double the internal storage, more precise GPS, supports additional maps via Tread, and a much faster processor. It even supports a Garmin Catalyst app. 

Wednesday, September 16, 2026

Husqvarna 701 Enduro Extra Fuel

I have a 2023 Husqvarna 701 Enduro motorcycle. I love this bike. One of the challenges with this design is there are not many options for carrying additional fuel for longer rides. The stock rear-mounted fuel tank carries 3.4 gallons, which gives a range around 160 miles (I average about 50mpg). The low fuel light generally illuminates at around 135 miles. This is adequate range for the vast majority of my rides. Occasionally we want to ride a longer loop that has not fuel stations and I need to carry extra fuel.

I started with a cheap Amazon 1.3 gallon Rotopax copy fuel can. It was under $40, and very poor quality.



The plastic mount broke on the first ride so I reinforced it with through bolts.

There were still several issues. The aluminum plate was cantilevered off the side of the rear luggage rack. When riding in rough terrain the luggage rack would flex. I was concerned with fatigue failure longer term. I attempted to find another anchor point but there is not any point available on is bike. I even considered pannier racks to mount the can but I preferred to not add all that bulk and weight. I also wanted to carry the fuel as low as possible in the bike.

Monday, September 14, 2026

Zion Day Ride September 2026

 

Las Vegas summers are hot. Luckily we have places nearby which are cooler in the summer. One of those areas is Southwest Utah (Zion, Bryce, Brian Head, etc.). A friend and I organized a motorcycle ride starting in Virgin Utah, and making a 160 mile loop through Zion (highway 9) and Duck Creek Village, riding mostly dirt roads in the area. We had nine people join, including one from Virgin, one from Cedar City, and the rest from the Las Vegas area. From Las Vegas it is about 2 hours to Virgin where we met up at the Zion Park & Ride lot. 


Here is the proposed main loop: https://webmap.onxmaps.com/offroad/share/content?share_id=01M1YR2G90TNQ7QTW0N4HMA14X 

I also created an OnX folder for more than the route: https://webmap.onxmaps.com/offroad/share/content?share_id=01M0NWH0C1K0FR6S7PCP8AJTK6

We had to go around a section that allowed me to route on OnX but was private, gated, and posted (circled in pink). We took the route highlighted in green.

There is gas at Deer Creek, about half way through the loop. This is a fairly easy adventure ride (from what I can tell). The hardest section on OnX is a 4/10 but that is only about 1.5 miles.


That hardest section was the Harris Rim Loop Connector. As we got to that section, a couple other riders had just climbed it. I talked to one of them who said it was awful and that we should avoid it. However, there is not a decent option so we rode it anyway. We all made it through just fine. 

The photo below is us gather up at the end of that connector trail.





Here is a Cardo Ride overview of our route.

Here is a YouTube playlist of several videos from the ride: https://youtube.com/playlist?list=PLR8gXJFpgGoE&si=qOAuTucZV4psbW-A 


Sunday, September 6, 2026

Lost Coast BDR-X 2026

 


After baking in the Las Vegas heat all summer, the Lost Coast BDR-X looked particularly inviting. I put a ride plan together to ride this route, but in a different way. We stayed near the center of the official figure 8 route at the Bear River Casino near Fortuna, CA. My ride plan had 3 sections, mostly following the BDR-X route but using the Bear River Casino as our center hub. The routes in brown are my ride plan. 


We completed my first day ride plan as planned.


I got off course and headed towards Garberville for a bit before figuring it out and correcting course. It rained most of the time but mostly light rain. The route was full of curves and scenery.

It was wet.



We got great ocean views, and parts of it ride right along the ocean. Here is a video of highlights from the ride from Bear River Casino to Shelter Cove.: https://youtu.be/7eqj1sbR1cA .



We stopped for lunch and gas in Shelter Cove. The rain had mostly stopped so we ate lunch at the Surf Point Coffee House, right on the ocean. Video from King Peak Road to the Surf Point Coffee House: https://youtu.be/9ZuuL78G2_c



I would recommend the Surf Point. Good food and great views. After lunch we got gas at the store in Shelter Cover and headed South following our route. We finally got to Usal Road, the more challenging part of this BDR, especially in the rain. This would be easy if it was dry but the wet clay was a bit slick. It was not super wet so we were lucky.




The further South on Usal Road we went, the drier it got. We got some great views where it rides along the hills overlooking the ocean.


Yes, I know I need a haircut.

Usal road YouTube video: https://youtu.be/HqVxW8JvpFI. This starts North of Usal and continues to highway 1.

By the time we got to highway 1, the rain had mostly stopped and the sun was out at times (but still quite cloudy). We stayed the night at Fort Bragg as planned.

We had dinner along the Noyo River, just down the road from the hotel. We had planned to eat at the Noyo Fish Company but it was closed. We ended up at the
Sea Pal Cove which is a fish and chips place.


Here is the Cardo Ride track from this day of riding: https://riserapp.com/t/nZeipwZBb18j and Rewind: https://img.riserapp.com/photos/videos/rewind/1918714-rewind.mp4 . It took us about 6.5 hours between Fortuna and Fort Bragg. If it were not raining, we may have investigated more of the spur trails. We rode to the Saddle Mountain Viewpoint but we were in the fog.

The next day we had breakfast at Denny's in Fort Bragg and looked at the weather forecasts.


The forecasts were not good. As we head North, the forecast called for increasing rain up to almost an inch with 10 to 10mph winds. That is no fun to ride in so we just took highway 1 to highway 101 back to the Bear River Casino where we were staying. We got lucky and only had very light occasional rain on the way back. We got back by 10:30am, loaded the bikes, and had lunch at Jack's Seafood Restaurant in Eureka. After lunch,
we decided to check out the Avenue of the Giants.

YouTube of Avenue of the Giants: https://www.youtube.com/playlist?list=PLD9A3UPa2gs8



Looking at the next day forecast was also looking dismal so we left the next morning. Our plan for a 3-day ride turned into a 1 day adventure ride, and a highway ride back to Fortuna the next day.

Here is the YouTube playlist for this ride: https://www.youtube.com/playlist?list=PLX5Dr8FexgVw .

This was the complete opposite of Las Vegas weather so it was a nice break for us after cooking all summer. We got some great views and really enjoyed the first day. 

This is the longest section of BDR I have done. The next closest was about 45 miles of the Colorado alternative harder route where we went over Ophir, Corkscrew, Cinnamon, and Red Mountain passes (although not in order and we did not ride Hurricane Pass). 



Friday, August 21, 2026

1984 BMW 318i Story

 1984 BMW 318i Story

1986 photo of the 318i

This is the story of one 1984 BMW 318i automatic. This story starts in 1986 when my father-in-law bought my mother-in-law (Joyce) this 1984 BMW 318i from a used car dealer in Kennewick Washington. They owned this car for many years. They moved to Las Vegas to retire and the car came with them. Several years after my father-in-law retired, they realized they never drove this car anymore. They did not want to hassle of selling it so they gave it to us instead. I flew out to Vegas and drove the car back to Peoria in the summer of 2000. 

In my garage in Chillicothe, IL

The late 70's and early 80's was dismal for the auto industry. Cars were really low on power, performance, reliability, well just about everything. This 318i was the most anemic version available in the US. It had a 1.8L 4 cylinder engine mated to a crude 3-speed automatic. The engine only made 100hp but it was confined to a rather narrow rpm range that started around 4,000rpm. Below that, the power was real weak. The automatic transmission made it hard to use that tight powerband too. 0-60mph came in 12 seconds at best. 

At this point I will refer to this writeup of all the modifications I made to this car: http://jimroal.com/cars/bmw.htm . When I sold it, I had turbocharged and intercooled it and converted it to a 5-speed manual transmission. It now accelerated to 60 in 6 seconds. 

I hit a deer one evening and the car was totaled according to the insurance company. At this point the value of the car was low so even the minor damage it had was enough to total it.



The car was drivable and I drove it home. The damage was sheet metal level but I decided to sell the car versus repairing it. I sold it to a coworker, Dan. Dan repaired the car and drove it for a few years. A head gasket blew while he owned it but I had included a spare engine when I sold him the car. He swapped the engine and returned it to stock (no turbo). He later sold the car to another coworker, Cort. Cort installed a Megasquirt EFI system with distributorless ignition. He later sold the car to another coworker, Ethan. Dan, Cort, Ethan, and I all worked in the same department and the same building. This car stayed "in the family" for many years. Ethan put the turbo back on. He found some leaks in the header I had made so I repaired them under warranty. This was around 2011 now.

Ethan eventually sold the car to Sam. Sam was into drift competition and he did a major rebuild on the car, installing a roll cage and an inline 6 engine. Here is a short article about Sam's car: https://s3mag.com/sam-holzmanns-e30-bmw/ 

You can see the latest on his Instagram page: https://www.instagram.com/samholzmann/ 




Monday, July 6, 2026

Riding the San Juan Mountains, Colorado

 


A friend and I rode the San Juan mountain passes for 3 days on our motorcycles. We stayed on the Prospector Motel in Silverton, Colorado. The hotel was very basic but clean and comfortable. I would stay there again.


Joe has a Triumph 1200 Scrambler and I have a Husqvarna 701 Enduro. Silverton is a nice town with neat history and a set of steam trains that go between Silverton and Durango.




 
I remember these trains from the last time I was in Silverton as a kid, sometime in the early 1970's. It was great to see them still operating. They also have an outdoor rail museum with many old types of rail cars.

Outdoor Rail Museum

I was impressed with the dining options in Silverton. I was expecting this town to have less good options. We ate the first 2 nights at the Eureka Station restaurant which had the best chicken noodle soup and bison meatloaf. I would recommend this place.


Breakfast options were few but they do have some good places. There are many taverns and bars in town as well. Here is a video riding down Greene Street (main street through town)


Silverton is at 9,300 feet altitude and the passes can be over 13,000 feet. Staying in Silverton gave us a chance to acclimate somewhat to the thin air. 

Note: The videos of the trails make everything look flatter than it is. You can watch the altitude (top left in the videos) and see how fast the altitude is changing to get an idea of how steep it is. Even that does not convey the steepness of these trails. You really have to be there to experience it.