DIY-Build Your FoxLAP device

FoxLAP – The DIY version

EDIT: This tutorial is starting to show its age, as it was originally written in late 2021. Some of the components used at the time, such as the GNSS module, are now becoming difficult to find.

This is what you will have at the end of this tutorial: a fully functional GPS lap timer.

It does, however, come with a few limitations.
This DIY version does not include external sensors such as RPM, water temperature or EGT, and it has no built-in accelerometer. It is also not designed to be fully water-resistant and uses a simple physical power switch instead of an advanced battery-management system.

And yes, the inside is going to look a little rough, with hand-soldered wires and hot glue!

This is intentionally a quick and simple implementation. The first FoxLAP prototype was built in almost exactly the same way so that I could start developing the firmware. I rebuilt one for this tutorial without spending too much time trying to make the internal assembly perfect. I’m sure many of you can build something cleaner — and if you do, please share it!

Despite these limitations, you still get the essential FoxLAP features: lap timing, gap to best lap, speed, sectors, theoretical best lap, live delta and session recording. You can also analyse your recorded GPS data afterwards using GPXRender software or with the online tool


The goal of this tutorial
The aim is to build the simplest possible FoxLAP device using readily available components. This is very close to the hardware i originally used when I started developing FoxLAP, so rebuilding it for this tutorial brings back a few memories

Is it the ultimate hardware design? Definitely not. Could some components be replaced with better or cheaper alternatives? Of course.

Why Blender? Why this display? Why this ESP32 board? There are plenty of choices that could be debated or improved. But this version exists, it works, and it is relatively easy to reproduce.

So, ready to build one?

1- Required parts

This is what I used, mainly because I already had most of these items at home. Some of these parts can be replaced with more convenient or cheaper alternatives, depending on what is available in your country.

I have included links to purchase the components, but I have no affiliation with these sellers and I do not earn anything from these links. You are of course free to buy the parts wherever you prefer.

More & important informations:

1- GNSS module: this tutorial is designed to use the MatekSYS SAM-M10Q mounted inside the enclosure. However, you can probably use any genuine u-blox GNSS module. Please avoid very cheap GNSS replicas. A $5 GNSS module is unlikely to provide the accuracy and reliability you want for lap timing. You can find cheaper genuine u-blox modules such as the M8N, but you will be limited to 10 Hz. That is still perfectly usable — for comparison, the Alfano 6 GNSS also runs at 10 Hz. With some M8N modules, you may not be able to install the GNSS receiver inside the enclosure, so it will have to remain external. In that case, you will need to adapt the 3D enclosure model. I already have a few 3D models designed for this type of configuration.
I had good results with this u-blox M8N receiver:
https://www.aliexpress.com/item/32748573256.html

At the moment, this project is only compatible with u-blox GNSS chips. I may add support for other GNSS modules in the future if they prove to be reliable, accurate and affordable. Some users have also successfully used the QUESCAN M10Q.
Note: on first startup, FoxLAP attempts to communicate with the GNSS receiver at 9600 baud. Depending on the module you use, you may therefore need to configure the GNSS receiver before installing it.

2- Display: this JLX 256×128 COG is available in both 5 V and 3.3 V versions. I used the 5 V version simply because I already had one. The battery shield used in this tutorial includes a 5 V boost converter, so I used it to power the ESP32, the GNSS module and the display. You can also use the 3.3 V version of the display, but obviously do not connect it directly to 5 V. I chose the white backlight version simply because I prefer white backlights.

Important: the display must be the SPI version.

3- MicroSD card: the ESP32 cannot directly use FAT32 partitions larger than 32 GB, so I recommend using a card of 32 GB or less. If you use a larger card, you will first need to create a 32 GB FAT32 partition on it. For this project, even 16 GB is already more than enough. As with the GNSS module, avoid cheap no-name microSD cards. They can cause all kinds of read/write errors and intermittent problems that are extremely frustrating to diagnose. I have already wasted far too much time with cheap cards before eventually throwing them in the trash! Use a reputable brand and save yourself the headache.

4- 18650 battery: again, don’t be fooled by unrealistic specifications. Avoid no-name batteries advertised as 12,000 mAh or similarly impossible capacities. Use a good-quality 18650 cell from a reputable manufacturer. The battery’s positive and negative terminals must be flat.

With batteries that have a raised button-top terminal, it may be difficult or even impossible to fit the battery into the slot provided in the enclosure.

2- 3D Print

  • STL files were created using Blender.
  • 3D Printer: Creality CR10s PRO.
  • Slicer: I used Cura to slice the 3D models
  • 3D filament: i used the 1.75mm ZIRO Filament PLA with carbon fiber. Amazon link: https://www.amazon.com/dp/B01IICFS4Y/
  • Print settings: 0.4mm nozzle, Standard quality (0.2mm), 40% infill, Support (zig zag support)
  • Print Speed: Usually I set the speed to 60% of the maximum speed the printer can achieve. Because I saw that the more I increase the speed, the more faulty prints I get.

I’m not a 3D-printing expert, but I got my best results by printing the STL models this way. In the screenshot, I assembled all the STL parts together only to show you how they are positioned. In practice, I printed each STL part separately, not all together as shown in the image.


There is also 2 other parts printed with flexibale filament. You will need two M8 flat-washer parts. They will help you mount the lap timer securely to the steering wheel. This filament gives very good results, but it is quite expensive, and you probably won’t want to buy an entire spool just for two small parts. You can try printing them with regular PLA instead.

Here is the STL files you must print:

  • 01-FOXLAP-DIY-Overlay.stl: 1 print (you can use a different color for this part)
  • 02-FOXLAP-DIY-box-top.stl: 1 print
  • 03-FOXLAP-DIY-box-bottom.stl: 1 print (print this one if you don’t want external sensors)
  • 03-FOXLAP-DIY-box-bottom-ext.sensor.stl: 1 print (print this one if you want external sensors)
  • 04-FOXLAP-DIY-buttons.stl: 4 prints
  • 05-FOXLAP-DIY-buttons-support.stl: 2 prints
  • 06-FOXLAP-DIY-flex-rond.stl: 2 prints

3- Assembly guide

From this point on, you should have the 3D-printed enclosure and all the electronic components in front of you. Here is the complete wiring diagram. Even though the circuit itself is quite simple, it requires a fairly large number of wires.

3.1 Buttons assembly
Insert the four buttons into the button holder you printed earlier.

Make sure the buttons slide freely without binding. Enlarge the holes slightly if necessary, as 3D printing can sometimes leave a small amount of excess material around the edges.

Then attach the button-holder parts using M1.2 × 5 mm screws. Repeat the same process for both the left and right button assemblies.

Connect all the button ground pins together, then connect them to the display’s K ground pin. Use a different wire color for each button. This will make it much easier to identify the correct wire when you solder them to their corresponding ESP32 GPIO pins later. It’s time to add the 4 debounce resistors on the buttons.

IMPORTANT: you may not have to add the debounce resistors (even if it’s not recommanded). But you must add them if you are willing to use the device in engine environnement

Apply hot glue to all solder joints. Remember: vibration is our enemy. Leave enough length on the wires, as you will need to solder them later to the ESP32 located in the other half of the enclosure.

3.2 Display assembly

Install the display and secure it with the screws. You can add a small amount of hot glue to help position the display correctly and make sure it does not move.

Here is how the display should be connected to the ESP32. Prepare and solder the wires to the display, but do not solder them to the ESP32 yet. Again, leave enough length on the wires, as you will need to connect them later to the ESP32 located in the other half of the enclosure.

3.3 Bottom part assembly

Place the power on/off switch and hot glue it.

Insert the M8 × 30 mm screw, apply a small amount of regular glue to the top of the screw, then tighten it into place.

Fill the remaining space around the M8 screw head with hot glue to secure it firmly in place.

3.4 Battery assembly

Now take your 18650 battery and use a spot welder to attach nickel strips to both terminals.

Place the battery inside the enclosure and apply hot glue around it to hold it securely in place.

Follow this wiring diagram to connect the lithium battery charger

You should now have something that looks like this.

Make sure the power switch is OFF during the following steps.

At this point, you can also check that the battery charges correctly and verify that you can measure approximately +5 V between the 5V and GND pins on the lithium battery charger board. The two 10 kΩ resistors connected across the battery terminals will allow us to estimate the battery level using the ESP32 ADC. This is clearly not the most accurate way to measure battery level, but remember: this tutorial is intended to build a simple and inexpensive version of FoxLAP. It will still give you a reasonable indication of the remaining battery level.

3.5 GNSS assembly

Take your MatekSYS SAM-M10Q GNSS module. Prepare the required wires and solder them to the module according to the wiring diagram.

3.6 SDCARD assembly

3.7 Wire to the ESP32

The SD card reader module I used here is not exactly the same as the one listed in the parts section. The one shown here is actually too large for this build, but it was the only module I had available when I recreated the DIY device for this tutorial. I didn’t want to buy another SD card module just for that. Use the SD card module listed earlier in the parts list. Alternatively, you can also use a microSD-to-SD adapter as the card holder — yes, it works.

Now solder the wires to the corresponding ESP32 GPIO pins.

It’s starting to look pretty ugly now, isn’t it? 🙂

Now connect the display and button wires to their corresponding pins on the ESP32.

(Only after Point 4 and 5 have been completely done)

But before closing the box, you have to flash the board with the firmware. See Point 5. Firmware installation to do it.

Close the enclosure and secure it with six M3 × 16 mm screws.

Then glue the front panel into place. I printed mine in yellow, but of course, yellow is not mandatory! 🙂

It should be working now… And it definitely looks better once you can’t see what’s inside. 😄

Obviously, the dedicated-board version is much easier to assemble. It also includes a larger display and many more features. If you are interested in the dedicated-board version, you can find more information on this page

4- Prepare your SDcard

Partitions larger than 32 GB will not be recognized by the device. So if the SD card is not detected, make sure that:

  1. You are not using a poor-quality, no-name SD card.
  2. The partition size is 32 GB or less.

If your SD card has a capacity greater than 32 GB, you will need to create a 16 GB or 32 GB partition. Any remaining space on the card will not be used.

Format the SD card using the FAT32 file system.

Once the formatting is complete, the SD card will be empty and ready to be inserted into the device.

5- Firmware installation

Download this zip file containing the firmware and the tools to flash the board.

Version 2.14 – release date 2026/05/20
What’s new in version 2.1X:

  • Faster Gui using hardware SPI
  • Led controller
  • Fix bug in track management
  • Fix Bug in Live Delta for custom tracks

5.1 Flashing on windows operating system

Unzip the contents of the downloaded archive. Connect your ESP32 board to your computer via USB, then run the flash_firmware.bat file.
You will be asked to enter the COM port used to communicate with the board. Enter it like this:

COM6

Of course, if your board is using a different COM port, replace COM6 with the correct one. And please don’t contact me just because COM6 is not recognized — your board may simply be using another COM port. 😄

Or you can enter directly the following command

esptool.exe --chip esp32 --port COM6 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x1000 foxlap.DIY.bootloader.bin 0x8000 foxlap.DIY.partitions.bin 0xe000 boot_app0.bin 0x10000 foxlap.DIY.bin

Now Hard reboot the board. OK, now the device must be working…

5.2 Install a new firmware on an exising and running device

Start your FoxLAP device, then go to:

WiFi transfer → Start WiFi

If you have not yet set a WiFi password, go to:

WiFi transfer → Set WiFi password

Your password must be at least 8 characters long.

Once this is done and the device is running in WiFi mode, you should see “WiFi Data Transfer” on the screen, along with the name of the hotspot created by the device, for example:

FoxLAP_xxxxxx

On your computer, connect to this WiFi hotspot. Remember that WiFi passwords are case-sensitive. Then open GPXRender, available on this website, and click “Synchronize device”.

If your computer is correctly connected to the FoxLAP device, a window will appear. Go to the Firmware tab, select the new firmware file, then click Flash. You can now update the firmware over WiFi without having to open or disassemble the device.

6- First launch and configuration

At the first launch, you must get this screen. If it is not already done, create a FoxLAP account here
You will need to enter your name, choose a password, and provide a few other details. Some characters are not allowed, so please pay attention when choosing your login information. You will need to enter the same information directly on the FoxLAP device, and since screen space is limited, I had to restrict the list of supported characters.

Only these characters are allowed at this time: 0-9, a-z, A-Z, ! # $ % & ‘ ( ) * + , – . @ : ; =

What you need to enter during the first startup is shown in this video. The device must be able to connect to the Internet, so you will need to enter your WiFi credentials. You may have trouble with WiFi passwords containing special characters that are not supported by the device. In that case, you can share your phone’s Internet connection by creating a mobile hotspot with a password that only contains characters supported by FoxLAP.

If the connection is unsuccessful, turn off the device and restart it to try again.

Once the connection is successful, the device will automatically retrieve the settings stored in your account, which are available on this page https://foxlap.com/mydevice.php

You will be able to change the device settings and also select or unselect the tracks available on your FoxLAP. Do not select all tracks. Only select the tracks from your country or the ones you are likely to use. The more tracks you select, the longer the automatic track detection may take. After changing your track selection, don’t forget to click “Save Track Selection”.

Then, on the device, go to the “Synchronize” menu and select “Update Track Database”.

What to do if your track is not available on the device?

I recommend creating your own track using the tool provided here: https://foxlap.com/track_creation.php

Once the track has been created, go to https://foxlap.com/mydevice.php, select your newly created track in the “My Own Tracks” category, then click “Save Selection”. Then, on the device, go to the “Synchronize” menu and select “Update Track Database”

A few tips:


I will add more information and tutorials explaining how to use everything. But please keep the following points in mind:

  • There may still be some bugs. The DIY firmware is a fork of the dedicated-board firmware, and I have not tested every feature on this DIY version, as I do not personally use it.
  • I cannot predict how good the GNSS reception will be at your location. Here in France, the signal quality is very good. In an upcoming firmware version, I also plan to add an option that will allow you to select the SBAS PRNs yourself.
  • Before heading out onto the track, turn on the device and make sure the GNSS reception is good. In the bottom status bar, you should see at least 12 satellites, and the HDOP (Horizontal Dilution of Precision) should preferably be below 1.0. Around 0.7 or lower is ideal; here in France, I often get values around 0.6.

Turn the device on and leave it stationary for a while before driving, to allow the GNSS receiver to obtain a good and stable position fix.

I have one important requirement regarding commercial distribution: you may not sell this DIY version. Commercial use of the DIY version is not permitted.

That’s all for the moment,
Renan BROQUIN

Download FoxLAP User Guide

https://foxlap.com/dl/foxLAP-UserGuide.pdf

This is what it looks like to drive with FoxLAP1:

This is what it looks like to drive with FoxLAP2:

DIY Builds from the community:

133 thoughts on “DIY-Build Your FoxLAP device”

  1. Hello! I have followed you since the beginning of the project, I am interested in the dedicated board, to be able to connect sensors When will it be available? Greetings, you have done a great job!

  2. hola buenas tardes me interesa, me gustaria adquirir esta vercion, para poder hacerla para uso personal y experimentar en la electronica, saludos desde argentina

  3. Stumbled across your project, wow you have put a lot of work into this.
    The DIY version looks great .
    I started building something a year ago to check what my motor is doing but life keeps getting in the way. When time permits I am still modifying and improving.
    So far I have RPM with LED indicator, temp and GPS data.
    Watching with interest as your project evolves.

  4. This is something!!! Currently printing and waiting for a screen. Would it be simple enough to adapt code for an e-ink screen? I think on an outdoor track would actually be the best readable kind of screen. When will firmware available? Thanks.

  5. I `m waiting for last part of the tutorial. Thank you for your help. If you accept if you want I pay you some beers! Thank you!

  6. Flashing the firmware on esp32 works like a charm. I still have to do some welding, and then test the device on track. I’ ll be back soon with the review.

  7. He probado por fin el dispositivo y es realmente increible y fiable, no me esperaba tal precision .
    Gracias por compartir el gran trabajo que has hecho.
    Si que es verdad que hay algun bug pero el trabajo es excelente sigo esperando nuevas versiones de firmware !

    Gracias y genial trabajo.

  8. Thanks, I was waiting and checking your website every week since I found it, I will try the DIY with my pitbike.

    Thankyou so much 🙂

  9. Great tutorial, firmware flasher works like a charm, but I encountered a bug, after hitting OK at the Foxlap account screen and choosing a Wi-Fi network the ESP turns unresponsive and I cannot type in my Wi-Fi password.

  10. Hola de nuevo! Los principales errores que he encontrado son relacionados con la tarjeta SD cuando cargas perfil o tracks, hay veces que genera un bug y se debe resetear por completo el dispositivo ( incluso formateando la tarjeta SD), tambien me ha pasado cuando exportas los datos desde el dispositivo via internet que tambien ha habido que formatear todo perdiendo las sesiones guardadas, por lo que recomiendo antes de subir los circuitos hacer una copia en el ordenador previamente para no perder las sesiones.
    Mejoraria el sistemas de dashboard haciendo posible subir las sesiones desde el pc ( que esta la opcion pero no se puede ejecutar) y no via internet desde el laptimer ( es mucho mas lento y poco fiable).
    Tambien daria la opcion de subir archivos al dashboard con el formato de Alfano para poder comparar vueltas con los demas pilotos, o a traves de GPXrender algo mas intuitivo que te permita guardar la vuelta rapida como en web para poder comparar mejor.
    Insisto todo esto son criticas constructivas, el aparato es lo mejor que puede haber a nivel casero, y seguire probandolo e intentando ayudarte.

    un saludo! nos vemos en instagram @pitbikezaragoza

  11. This weekend I’ve tested the device,.it’s magical, works flawless without any bug. It is very precise and accurate. The online dashboard is also great you can analize and compare the lap times. This is for real.the best laptimer ever done.

  12. Hello, thank you so much for sharing this tutorial with us! This device is so amazing!
    I got one fault, when I tried to record an own track. The device always shuts down and reboots again.

    Can you tell me on which pin no the RMP signal can be attached? Or is it possible to get the scetch of the programm to customize it more and more to my preferences?

    Thank you so much!
    Best regards
    Achim

    1. I can confirm this problem, could this be because you don’t have any tracks nearby? Because when you are around one track, the recording function is working.

    2. The solution is to create your own new track using map editor, then synchronize your device and Update Track Database. The explanation is you can’t drive on a track that does not exist into your device. It’s just like you try do drive a car but you don’t have the maps loaded on to your GPS device.

    3. Hello!

      One more here. I first tested the foxlap on known track (with a little change) and worked great.

      I tried to show my friend close to my house, but it kept restarting as soon as we started moving.
      If we click “create new track” and don´t move, the device was on.
      As soon as we moved one meter, it restarted.

  13. Hi, excellent and fun to start playing around with the device.
    As many had said before great job, and I look forward to test it on track.

    It looks like I need the 38 pin esp32 borad since you use the GPIO0 pin for display RST. Would you consider change that pin assignment if possible to make it 30 pin board compatible for the simpler DIY version.

    Regards Johan

    1. hi johan,
      correct, maybe i will do it if i have time to focus again on the DIY version. i made this DIY version in January 2022 to start the development and see if i can get interesting results (the extra pins are interesting to add sensors). I dropped the development board for a dedicated board in may 2022.

      1. This issue is really a nonissue, it was just that I had some 30 pin boards at hand and no 38. Now I have to wait a few days for new boards. 🙂

        Would you consider releasing the DIY version as opensource. You could put whatever licensing limitations on it as you want to keep people from doing stuff you dont want with your work. Then we tinkerers can do these small tweaks and perhaps even contribute to your product.

        For my part I just want the accurate gps tracking features. Will run dual devices for engine monitoring until I can get hold of a “fancy” one 🙂

        Regards
        Johan

        1. Dealing with the same issue. I would love for it to be placed on GPIO4. My 30pins have everything but 0.

          1. GPIO 0 is the boot button. The boot function uses this GPIO pin. You can connect to it, but if you’re unsure, you can use a multimeter to test if the GPIO0 pin on the chip is connected.

  14. You are amazing, every week you come up with another magic function. Do you think you can post the new firmware this week? We are heading to our race on friday early in the morning. Thank you in advance.

  15. Hi,

    Thanks for all the great work and for sharing! About the 18650, can we make the slot provided in the box slightly longer so that we have the option to use 18650 with protection? Or is there protection already built in to the circuit?

  16. Hi,

    Is there circuit protection for the 18650 battery? Reason I ask is I was thinking of going with a protected 18650 but those all have the protruding top; not flat top. Is it possible to amend the 3D drawing to allow for some extra millimeters to accommodate a sightly longer battery?

    Thanks,

    1. you are afraid about over-discharge? the PCB is dealing with this issue; but the DIY version is a (too) very simple version. you can modify the 3D design if you want to add extra circuitry.

  17. I’ve flashed the new firmware, it’s great that it can be flashed by wireless. What algorithm is it used to calculate the main jet? On my phone a have two applications, the free one gives me a value of 115. and the payed one gives 122. The new foxlap feature gives me a 118 value, so it’ somewhere in the middle.

  18. Today is June 8th. I built my first DIY device and have already upgraded to firmware 1.2. So far without a case and without a GPS sensor. But it’s already working and I’m very happy about it. I am looking forward to the opportunity to connect the RPM of the engine. By then, I’ll probably have made my own case for it and connected the GPS. Question: Is there any button anti-shattering in the program? I often get false positives when pressed.

  19. Hi,

    For the display, I don’t see the model you mention on the N.American version of AE. I only see this – https://www.aliexpress.com/item/32818052799.html?spm=a2g0o.productlist.main.1.5399581bWezmxC&algo_pvid=ab72c4be-7784-451d-b43c-45a3a3bd73ad&algo_exp_id=ab72c4be-7784-451d-b43c-45a3a3bd73ad-0&pdp_npi=4%40dis%21CAD%2118.43%2118.43%21%21%2113.12%2113.12%21%402101e9a217186835696836000e4562%2167306057772%21sea%21CA%212851139477%21&curPageLogUid=DzOdIqsqyMI0&utparam-url=scene%3Asearch%7Cquery_from%3A

    The dimensions are slightly different to the one you used. Will this cause an issue with the 3D-printing?

    The dimensions for my version:
    Outline Dimensions: 79.4*62.8*6.4mm
    Active Area: 71.74*38.46mm

    The dimensions for your version:
    Outline dimensions: 72.1*56.4*6.1mm
    Active area: 66*37MM

  20. Hi,

    I am going to use a 3D printing service as I don’t have a 3D printer. In the configuration page, I am offered options such as Supports (Enabled or disabled), Wall count (Default 2), Top Layers (Default 2), Bottom Layers (Default 2), Ironing (Enabled/Disabled). Do you know what choices I should make for these options?

    Thanks,

  21. Hello,

    Congratulations excelent project, it is the best project in its category that I have ever seen.

    I maked a working prototype, but FOXLAP only shows a maximum of 10hz (I’m using the Mateksys SAM-M10Q GNSS module).
    HDOP is always close to 0.7.
    The SAM-M10Q datasheet states up to 20Hz for GPS+Galileo or 18Hz for GPS only.

    Could you tell me what the problem is?

    It seems to me that in firmware 1.2 I lost the Glonass signal, I already did the configuration and it didn’t solve the problem.

    How export GPX file from the FOXLAP website to analyze the Hz?

    Thank you

  22. Bonjour
    Personnellement, j’ai pas la patience de collecter tous les objets sur Aliexpress.
    J’ai ete au plus rapide….
    Mini ordinateur windows 11 avec processeur N100 et un ecran tactile de 5 pouces etanche
    Total 120 Euros sur Ali livré en 2 jours…;
    Est t’il possible d’ajouter une lecture a partir d’un port ou usb pour le gps et aux capteurs depuis le logiciel sans avoir a monter la totalité de l’artefact….,????
    Je m’explique, l’ordinateur peut afficher la carte en direct grace a googgoole, et la partie chronometre avec la trajectoire son enregistres en dur sur le pc embarqué (ok ok, 1kg en total en plus) en lecture instannée… de ce fait on peut comparer en réel (afficheur tete haute dans le casque….) On tue le game la mais…..je peux envoyer des photos de mon montage….

  23. Hello, I’ve built one of these devices but when I look at the schematic you have the buttons connected to the 3v3, but in the tutorial you have them soldered to the ground, I’ve soldered them to the 3v3 on the ESP but they don’t seem to be detected by the device, Should I resolder these to the GND? Thanks

    1. Yes, buttons have to be connected to GND. One side of the button is connected to the GPIO pin of the ESP32, the other side of the button is connected to ground (GND).
      Connecting a button to 3.3V with a resistor, typically referred to as a pull-up resistor, is a common practice to debounce the Button Presses. It is not mandatory to debounce the buttons but it is recommanded

  24. Thanks for the quick reply, just resoldered it to the ground and its working great, really appreciate this project, going to the track this saturday to test it out can’t wait 🙂

  25. Hi,

    I ordered 3d prints for all the parts and I picked them up today! Exciting times! I am trying to attach the button holders. Should there be a gap between the bottom of the button holders and the buttons?

  26. Hello, I tested my device several races and it is fabulous. 🙂
    Having the lambda and rpm values would be so great. Will you integrate these features in the DIY version as well? This would be so helpful!

    Thank you!

  27. I often encounter a problem where, after uploading the sessions, only 8 out of 13 sessions are available on the device. The other sessions are no longer visible after uploading and are also missing on the SD card. However, they are still available in the Foxlap online account. Is there any way to restore them to the device? Can I download them from somewhere? I couldn’t find any information about this on the website.

    Thank you!

  28. Unfortunately the esptool.exe does not work on my win10. So I tested some other software to flash the esp32, but I couldn’t get the board into flash mode. In my case only a web flasher solve the problem.
    https://nabucasa.github.io/esp-web-flasher/
    Maybe it will help someone how does have the same problem.
    Very very nice project!!

  29. Hi. It’s a nice project but with some issues. First of all and the most important part of this project is the gps and I used in my configuration a neo m8n module but it seems there is a problem. I tried several modules and the issues that it takes too long to get the fix sometimes 40 minutes. My question is can you tell us what is the baudrate used in your source code to communicate with gps? What are the messages you get from gps, nmea or ubx or both of them? At least I can try to flash my module.
    Thanks a lot

    1. This project has been designed to use a m10n or m10Q. But it works with an m8n too. Your issue is coming from your GNSS receiver for sure. 40 minutes to get a fix ?
      1- You are located inside a building or somewhere you don’t have a direct access to the sky
      2- Your GNSS receiver is a poor replica and is not a m8n but a m6n or something else but advertised as a m8n
      3- Or it can be an issue with your antenna

      The firmware configure the GNSS receiver automatically if an m8n, m10n, m10Q is discovered. So maybe check that you ship is a real m8n

  30. After more than half a year since the publishment of the first firmware for this project, we are waiting for an update that includes the water temp and rpm sensors. Is it possible to have this update in the nearest future? Or we have to buy Alfano or Micron devices?

    1. everything require a lot of time with materials and especialy when it is a spare time project. i’m preparing th tutorial to add external sensors to this DIY laptimer. you will not have to wait so long now.

    1. of course. But everything needs a lot of time with materials. i’m preparing the way to add external sensors to this DIY laptimer. you will not have to wait so long now

  31. What a great surprise, this year Christmas came earlier, can’t tell how happy you made me by publishing the new firmware release. If you tell us what sensors do we need or you can sell them and publish the 3D model for the back case we can consider that the new year came also earlier.
    You are awesome 👍

  32. Hi,

    I built the DIY version and I bought the sensor box. I assembled everything and it works nice, except one thing.
    If sensor cables between ESP32 board and M8 connector are touching each other, then I have RPM signal around 13800-13900, so these 2 cables are interfering.
    Can you suggest what to do with this problem?

    Thanks in Advance!

    1. RPM is very sensitive, the GPIO is in floating state on the DIY version (that was the best configuration i tested on this very simple version of the device). Your engine generate a lot of EMI. avoid to have the RPM cable from the M8 connector touching anything else. try to isolate this cable to let him go to the GPIO. Use the star grounding technique. let me know if you need assistance.

      1. Its a really useful thing to know! I also ordered ferrite ring, BUT my biggest mistake was to exchange RPM and Temp cables. Now seems okay, just sometimes peaks of 100-200rpm when the device is standing on my desk. Let me assemble my bike and test it! Anyways if you are interested I designed a whole new case for the DIY version where you dont need to hot glue anything. I can send some pictures about it. It is also smaller in size.

  33. Hi,
    This is an awesome project

    I’m testing the diy version and found a few bugs:
    1. If guest driver is deleted from the list of drivers (which can be done from the UI), the device wouldn’t load again. It just shows blank screen after loading.
    2. Disabling voltage monitor in the settings doesn’t seem to do anything. Battery status is still showing in the bar.

    1. Hi,

      I also experienced the same symptom after deleting GUEST driver, so +1 to this bug.
      Actually I just realized, this is the reason I have blank screen after loading. I thought I have other problem.
      Thanks for sharing this information.

      1. Did you removed the driver directlty in the sdcard filesystem or using the interface on the device?
        i can’t reproduce this issue.

        1. Hi, sorry for the late reply. If you haven’t managed to reproduce the issue, it appeared on both v1.2 and v1.3 software versions and was apparent if the guest driver was removed either way, from the file system or from the user interface.

  34. Good Morning.
    I have been working on the DIY timer and followed the directions. I have flashed the hardware and rebooted but other than the screen lighting up I am not getting anything on the display.
    I am a bit of a novice but I have checked the wiring and cannot find anything obviously wrong.
    Are you able to suggest any possible advice?
    Thank you.

    1. Are you using the same display as recommanded? it must be coming from a wiring error. display initialisation showing the bootscreen is one of the first thing the device is trying to do. if you see nothing except the backlight, there must be an error regarding wiring. can you shar pictures of your wiring on the display and on the esp32 ?

  35. Would it be possible to use the GPS from the link below internally?
    It has a much better price compared to the others.
    thanks.

    1. Hello, there is no plan to make it compatible with other GNSS. Only uBlox
      It takes a lot of time to test a GNSS, and most cheap GNSS do not give good results. I stick with what I know and what I know gives good results

  36. Ciao

    during a test a bad lap has been recorded and now is fixed as best lp of that circuit, that is wrong. I have already deleted this session on Folap and also on online account but wrong best lap still remain linked to the circuit. How can i do to remove it?

    Thanks a lot in advance

    Ciao

    Andrea

    1. Solution 1: On the device, Go to “Tracks”, select the wanted track (your location must be near the track). Then on the menu, click on “Reinit Best LAP”. you will no more have a best lap recorded for this track.
      Solution 2: (The free way) remove the SDcard from the device, insert it into a computer. Open the file “drivers.xml” located at the root. you will see in this file the UID of the driver. This UID is also the name of a directory located at the root of the sdcard. open this directory, and open the file “record.xml”, you will be able to edit the content and change the best lap time with whatever you want. ATTENTION to formatting.

  37. I have a suggestion: Do you think it’s possible to display the water and EGT temperature values just like the RPM value, outside the Lap Recorder menu, without the need of GPS signal? It can be useful when you are inside of a garage, so don’t have GPS signal and you want see those values.

    1. Good Idea. in the RPM monitor Mode (remnant of the time when I developed RPM capture), you can also see the water temperature, in the bottom bar (small but here). i will add a sensor monitor mode without the need of GPS. in such a small display, it’s always a challenge to put everything i want to put – please don’t say that i must develop a version on a larger display – It’s only a side project and it contains far more than i expected at first – Stay tuned for a new firmware update

  38. From hardware point of view I think your project has reached it’s goal, it has everything a kart driver needs In terms of software there will always be improvements. Another idea, I don’t know if it has been implemented or not because I haven’t been in that situation, is an alarm for temperature, if the water or EGT temperature grows above a limit preciously set up, the screen may blink and display a message or the temperature with a lage font so that the driver can see there is a problem with the engine or cooling system.

    1. Yes it has been implemented. you can set limits. Your custom limit (usually and by default 55°c for rotax) invert the water temperature color in the display (you can’t miss it). and an hard coded limit with a huge alert on a the display (80°c or 85°c) saying that might must stop now… Try not to put yourself in the situation of seeing this screen.

  39. Hey, I am using this very nice device on my Pitbike and I would like to use the watertempprobe as a oiltempprobe. Is it possible that you make the hard coded limit variable. Otherwise I fear that I will get the huge alert all the time. Thank you so much.

      1. Thank you! This would be so great! Do we have then the possibility to choose if „Wat“ or „Oil“ will be displayed? 🙂

  40. I’m experiencing a lot of slowness when synchronizing sessions from my device to the online platform. It takes 5 to 10 minutes for a session to be transferred.

    I’ve tested it on several WIFI networks, all with high speeds, but I always notice this slowness.

    Can anyone tell me if they’ve experienced this before or if there’s any way to fix it?

    1. You’re right that the ESP32’s Wi-Fi throughput can be a bottleneck – 5–10 minutes per session is unusually slow. Here are a few things to try:

      Reduce file size: Lower your GNSS update rate (e.g. from 25 Hz down to 10 Hz) in Settings > GNSS Mode. Fewer data points mean smaller session files and faster uploads.

      Optimize your Wi-Fi link: Make sure you’re on a 2.4 GHz network (the device doesn’t support 5 GHz).
      Position the device as close as possible to the access point, with minimal obstructions.

      Check for firmware updates
      We regularly improve transfer performance. download and install the latest build.

  41. Hi, first of all thanks for sharing this great project. Congratulations!
    Unfortunately I have a problem: my sd is not detected.
    I tried a 4gb sd and a 16gb. The message “waiting sd” remains and then it starts. What could it depend on?

  42. hello and compliments for your project. I have a problem: at startup the system does not see the sd memory. The message “waiting sd card” remains for a while and does not detect the memory. Did I do something wrong in the installation?

  43. Hey! I recently have built your dyi version and it works great.

    The only thing it needs is a live time delta (to show your time live in comparison to your fastest time during each lap, so you can see exactly where your are faster or slower while driving).

    I think this is a really popular feature and I wanted to ask if there is a way I get my foxlap timer to show a live time delta?

    I look foward to hearing from you! 🙂
    – Harry

      1. This little thing is getting better and better!! 🙂
        Would it be possible that you make one additional screen, so that only the value of live delta is visible over the whole screen (big numbers)?
        And perhaps switch the color of numbers and background when the value is positive to see that we are slower without reading the numbers.

        And would it be possible to get this live delta for each segment compared with the fastest segment?

        Thank you so much!
        Best regards

  44. Thanks for the recent update, you are doing a great job.

    I have another idea for a new feature:

    It would be nice to connect a small LED strip that lights up green when the live time delta is faster. This would work similar to how the Mychron and Alfano systems show a green light when you improve your lap time. The green light is just a quick way to see that you are going faster, without needing to look at the screen.

    This could be done by soldering a small LED strip onto the board. Here is an example LED strip: https://phaserfpv.com.au/products/tbs-tiny-leds-femto-8-led-4pcs?variant=31904785825869&country=AU&currency=AUD&utm_medium=product_sync&utm_source=google&utm_content=sag_organic&utm_campaign=sag_organic&gad_source=1&gad_campaignid=21891404095&gbraid=0AAAAAC7E5-QeRY2rC9ne-dw9-BvtuQb8V&gclid=Cj0KCQjw5JXFBhCrARIsAL1ckPtGefUGCSYGIaxiAsJ6LTvJ_8IwaN8y87EiY2-WSJIL5kDzsgyix3AaAtoNEALw_wcB.

    These strips are often used on FPV drones and usually have three pads: ground, power, and an LED pad for controlling the color and effects.

    Do you think this could be possible to add? I think it would be a really cool feature!

  45. Hi, i just tried to syncronize the device and the problem i got was that after connecting to the wifi i had the message on the screen “Check FoxLap Account”. After clicking OK it asked for the WIFI password again. Tried with two different WIFI networks. Even tried to erase the SD card and to login into the account again, but after entering the WIFI password, the same message appeared again. Tried to downgrade ESP to previous software versions, but nothing changed.

  46. Kinda have a question after i flash the board and i think i did it properly i have the backlight just showing can’t see any boot on the screen i re did the wires multiple times so im kinda confused if its the flash or my supidity

    1. Typically, this indicates either that the wrong firmware was flashed, the flashing process failed, or there is an issue with the wiring that needs to be checked.

    1. led addon development

      Yes, I’m working on this addon. Six LEDs will be able to display, depending on the chosen mode:
      – RPM level as a bar graph
      – Live delta indicator
      – Sector times (2 LEDs per sector, green or red — no need to explain what that means)
      – … if you have any ideas … please tell me

      These NeoPixel LED strips are affordable (as shown in the picture) and work as a quick-and-dirty solution, but under direct sunlight they’re almost invisible. That’s why they won’t fit our needs. I’ll have to use brighter LEDs with directional lenses instead. I will post on the progrees of this addon. i’ve already made a prototype.
      led addon development

      1. Can this led strip also indicate charging progress of the battery while charging? Let’ say 1 LED turned on for 20%, 2 LED’S for 40% and so on.

    1. Here are some hardware options available for debugging and testing purposes. The content may vary across firmware versions, depending on what is considered useful or not:

      Brownout Detection is a safety feature on the ESP32 that monitors the power supply voltage. If the voltage drops below a safe threshold, the ESP32 automatically resets to prevent unpredictable behavior, data corruption, or potential damage to the chip.
      In some cases, you might choose to disable brownout detection—especially if the ESP32 is powered by an unstable source, which can cause false brownout triggers and unnecessary resets.
      By default, brownout detection is enabled.

      PCNT (Pulse Counter) is a hardware peripheral on the ESP32 used to count digital pulses (signal transitions) on specific GPIO pins.
      It is disabled by default and typically does not need to be activated unless specifically required for a particular use case.

  47. Hi. Syncing from the device does not work. I do not know after which update this happened, but when I select sync, the FOX Lap account verification message appears, followed by a list of Wi-Fi networks. I tried to re-flash the device through the cable. I formatted the card, I deleted my account on the website and opened a new one in another mail. NOTHING HELPS. I even changed the microcontroller to another esp-32. That didn’t help either. Why did this happen?

    1. seems to come from your location… don’t know why yet, but you are not alone from this country to get issues with sync. am working on it to get the solution

      1. Thank you for your response. Even VPN authorization doesn’t help. When I first assembled the device, everything was fine. This happened around spring, starting with version 1.58. I will try again using different networks. If it works, I will let you know.

        1. i may have firmware versions for you to see if it solve this issue (contact me via email) – But from what i see, it is not coming from you nor from me. i know that using VPN don’t work.
          i had 2 or 3 users from your country with the same issue (i think it is related to DNS). i’m working on it.

    2. Solved in firmware v1.68.
      Setting => Synchronization mode => 2.Secured
      (The TLS stack consumes a significant amount of memory and leaves the heap fragmented. Use this mode only if the device cannot be synchronized in the default mode. In secure mode, the device will restart after each synchronization process because the heap remains too fragmented, and restarting is the only way to restore a clean heap)

  48. Is there a change to manualy change GPIO0 pin to like GPIO4, because i have nowhere to connect RST pin from LCD, and everything seems to turn on, but lcd is only backlighting blank screen. Or should i buy different ESP32, with 38PINS?

    Thank you, love this DIY, very well done.

    1. Connect RST to +3.3V: it will probably work, but you lose the option of a software reset (never tested, let me know if it works)
      Leave RST unconnected: the display may rely only on its internal power-on reset; sometimes it works, sometimes it doesn’t (risk of random behavior).
      Best practice: keep RST on the given GPIO. No there is no way the change the GPIO

      1. Connecting RST to 3.3V didn’t work still blank screen, I just bought different ESP with 38pins, and it works flawlessly.
        Thank you so much.

        I’m in Lithuania, but while testing at home, i have a problem with satellites doesn’t want to connect, or with only 1-2. HDOP very high.

        1. What GNSS chip are you using? Install the device in a fixed position, outside with a clear view of the sky. On the first launch, satellite acquisition may take a few minutes.

          1. Yes, it was my bad, sorry. Messed up with GPS parameters.
            Already tested lap recorder, works fine, love it.

  49. Good morning, for a few versions now, I’ve noticed that my delta on the dashboard isn’t working anymore. I created the track I’m on through the dashboard here on the website. Is there any information on the track to ensure the delta works correctly?

    Thank you.

  50. In the device settings, we don’t have the option to enable the accelerometer.

    Does the dedicated version have an integrated accelerometer? Would it be possible to connect this module to the DIY version as well?

    Thanks

  51. hello my friend, with this project, you save my life:)…..I need to implement my foxlap with the exhaust gaz probe on the Mini 60 TM. How can I proceed?
    You’re the best…..

  52. Hi,

    Firstly, thank you for sharing this awesome project. It is truly interesting and helpful for those interested in using it while driving rental karts. Also, the cost is significantly lower than buying a MyChron, for instance.

    I’ve been using it since last month and I noticed that there is an option to connect a GoPro to it. I got the version.txt file from my GoPro and copied it to the GoPro folder inside the microSD card. When I try to connect to my GoPro, Foxlap shows the following message: “waiting smart remote…”. I tried connecting my GoPro through the remote connection, but with no success.

    Can indicate what am I doing wrong? and what do I get by connecting the foxlap to my gopro?

  53. A couple of notes. The build went well. I’m having SD Card issues but I’ll do some more troubleshooting before bugging you. One thing to note, I had issues loading the firmware while everything was connected. I had a spare ESP32 here and flash went perfect. I was getting “Wrong boot mode detected.” I have no doubt removing a bunch of wires would have fixed it, but holding the boot button while powering up the device put it into the right mode and I was able to flash with everything still connected. Maybe add a note somewhere that flashing before assembly is a good idea. Someone else mentioned this, but it would be great if you could release the code for the DIY image. I realize that would be hell to support, but you can disclaim your way out of that. Thanks for a cool product, I can’t wait to give it a try!

    1. I replaced the bad SD card shield and it works perfectly! I got to try it out today, I’m using it in a car and adding the tracks with the track editor. There is nothing else that works this well for the price. I recommend buying the board unless you are big electronics geek though. It was not easy building and troubleshooting the DIY setup.

  54. What a great lap timer. Thanks for all your work, it has helped improve many areas of my karting after analyzing its data.
    With the help of the videos with lap overlays make it so interesting to view at later times.

    Noticed LED controller in the last firmware, does this mean it’s past prototype and is there a GPIO pin assigned?

    1. Thank you for your message. Yes, that is correct. A GPIO is assigned to control the LEDs. I will publish detailed information on how to implement them.

      1. Could you provide the pinout? And the number of LEDs needed? Thank you for the great progress in these years of development.

      2. Hey can’t wait to get the GPIO pin number. 🙂 I prepared everything from hardware side. Do you know until when you will publish it? 🙂

  55. The LEDs worked perfectly, I used them over the weekend and it’s wonderful, thank you for the work!!!

    Could you also grace us with an RPM reading? That would be wonderful.

  56. Hi! I set up this device, created a track, gave it 5 minutes to acquire satellites, and set the GPS + Galileo + Glonass + SBAS (10 Hz) settings. It picked up 12 satellites, HDOP was consistently 0.76. I drove onto the track, did a few laps; the device displayed speed and position correctly, but it didn’t record the session and didn’t count either the time or the laps. I recreated the track and extended the start line, but the result is the same. The firmware version is the latest (2.04). Is this a firmware issue, a settings issue, or did I do something wrong?

    1. Did you update the tracks on the lap timer after creating your track?
      Was this track selected on the lap timer?
      Were you driving in the correct direction on the created track? If you drive in the opposite direction, the lines won’t be detected.
      Do you have a session recorded on the lap timer? If so, please share it with me.

      1. yes, i update all, tracks are available on the device and displayed correctly, but device do not record sessions at all.
        UPDATE: I flashed firmware v2.03 and everything works fine, so the problem in the firmware 2.04. I created test track near my home and ran 3 laps, firmware 2.04 displays position, speed, but do not record session, do not count time after first crossing the start line, firmware 2.03 start recording session and counting time after first start line crossing and stop recording after I stopped my car. all the settings was the same.
        And another one bug: I created only one track (test track), but after 3 synchronizations device displays 3 duplicates in the tracks menu. The same behavior with 2.03 firmware

        1. ok noted. please try latest firmware V2.07 and let me know
          bug identified for duplicated entries in track list after update (will be fixed in next coming versions)

  57. Battery fully discharging in less than 10 days when Foxlap unit is switched off using the Battery Shield V1.1.0.
    To fix this I have now replaced the V1.1.0 Battery Shield with a V1.2.0 Battery Shield.
    With V1.2.0 Battery Shield and the Foxlap unit switched off battery discharge from 100% charge to 75% charge takes about 30 days.
    When foxlap unit is switched on and being used on the track both of the shields are about the same, discharge is 100% to 40% for about 7 hours continual use.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top