Https://www.sparkfun.com/sparkfun-gnss-flex-phat-mosaic-x5-im19-imu.html

Hello SparkFun support team,

We have been testing the SparkFun GNSS Flex pHAT kit (mosaic-X5 & IM19 IMU - GPS-29889) and are concerned about the mosaic-X5’s temperature, even though the hardware manual specifies an operating temperature range of -40°C to +85°C.

Tests conducted at an ambient temperature below 25°C with the kit on a workbench (no case):
Firmware version 4.15.0

Scenario 1 (Base mode, only COM1 active):
Over a one-hour period, the temperature rose from 40°C to 63°C.

Scenario 2 (Rover mode, with 4 IP streams, web interface, and disk logging active):
The temperature easily reaches 75°C.

Another mosaic-X5 unit for comparison:
Housed in an aluminum case—where the mosaic-X5 itself does not touch the case directly, but its PCB makes direct contact (via mounting slots)—we observe an average temperature of around 50°C (Base mode, with only COM1 and COM2 active).
Firmware version 4.14.4

Could the small dimensions (44.0 mm x 34.0 mm) of the mosaic-X5 and IM19 GNSS Flex Module be insufficient for heat dissipation?

The GPS-29889 kit will eventually be placed in a sealed enclosure, which could lead to even higher temperatures.

Could the firmware version be a factor, or is the IM19 transferring some of its heat to the mosaic-X5?

Could the IM19’s accuracy and stability be affected by this high temperature?

What are your recommendations, as well as those from Septentrio?

Thank you.

Hi @marcos_aurelio ,

The IM19 draws around 100mA, and so contributes approximately 0.3W. Could that be causing a temperature increase? It certainly seems possible.

For your application, I would suggest trying the IMU-less version of the module and / or installing a heatsink and small fan on the X5 itself.

Thank you,
Paul

Hi Paul, how are you?

I emailed support@sparkfun.com, and they asked me to get in touch via this forum; since it’s my first time doing this, I found that a bit unusual!

I bought this module because I need both components, and I assumed that if it’s being sold on the SparkFun website, it must have already passed certification and quality control.
If the IM19 is contributing to the mosaic-x5’s temperature rise, don’t you think the hardware development team should have anticipated the proper integration between them? Or could I have a defective component?

I haven’t reached the IM19 configuration stage yet; is there a command to disable it? I think that might help us better identify the source of the temperature increase.

What should I do now? Do I need to contact the IM19 manufacturer and Septentrio?

How can I ask the SparkFun engineering team to simulate this in their lab to verify the safe operating temperature for SKU: GPS-29889 while maintaining proper performance for both the mosaic-x5 and the IM19?

In my setup, the SKU: GPS-29889 is positioned away from the Linux Single Board Computer (SBC), so the SBC is definitely not contributing to the temperature rise.

Sorry for all the questions and for the English (I’m using a translator), but I’d really like to get this module working properly.

Thanks.

Marcos Aurelio

Hi Marcos (@marcos_aurelio ),

We are using the exact same mosaic-X5 with IM19 Flex module in the SparkPNT Facet FPM-T. It works well. No Facet FPM-T users have raised concerns about the X5 temperature.

When I have time, I will test the with-IMU and without-IMU Flex modules, side by side, so I can measure any extra temperature rise caused by the IM19.

We have no control over the way you choose to mount the Pi HAT and Flex module within your equipment. If the ambient temperature inside your equipment takes the X5 beyond its operating limit then, I’m sorry, but that is on you. You will need to take steps or precautions to reduce the X5’s temperature, just as you would with the processor on your single board computer. Installing a heatsink and fan would be a sensible way forward.

If you think that is unreasonable, then perhaps you could consider a different design based on the SparkFun Triband GNSS RTK Breakout - mosaic-X5 plus the SparkFun 9DoF IMU Breakout - IM19?

Best wishes,
Paul

Hi Marcos (@marcos_aurelio ),

Here are the results of my side-by-side test:

I placed X5-with-IM19 and X5-without-IM19 Flex modules side by side inside an insulated box.
I recorded the X5 CPU Temperature and other data in SBF format, to the X5’s own microSD storage.
Both X5s were running the same 4.14.10.1 firmware.
Both were outputting GGA+GST+RMC on COM4 at 115200 baud at 200msec interval to feed the IM19 (if present).
The antennas were identical L1/L2/L5 active antennas with the same cable type and length.
I also logged the air temperature near the modules using a thermocouple.
There were no other components or equipment inside the box, only the two X5 Flex modules mounted on Flex Breakout circuit boards. The two X5s plus the one IM19 were the only heat sources. (Plus any heat generated by the identical 3.3V regulators on both Breakouts)
Both Breakouts were powered by 5V from USB-C.
The CPU Load was approximately 26% on both X5s throughout the test.
My altitude is approximately 100m above sea level.

In summary:
The without-IM19 X5 runs at approximately 29C above ambient
The with-IM19 X5 runs at approximately 36C above ambient
The temperature rise caused by the IM19 is approximately 7C

Based on this, the with-IM19 Flex module should be able to operate near sea level in air temperatures approaching 50C.

Higher CPU Loads will cause higher temperatures.

Both X5s operated normally during my test. Neither lost GNSS-fix. Here are the SBF Analyzer plots for the with-IM19 Flex module:

I hope this helps,
Paul

I think a thermal silicone gap pad (or other heat management strategy) will be necessary inside a small enclosure.

Because the system performs no mechanical work or high-power radio transmission, most of the approximately 1.25 Watts of electrical energy consumed is converted entirely into heat inside the enclosure.

You can perform a test as Paul did (but also measure input Watts) to calculate the Overall Heat Transfer Coefficient of any enclosure, Be sure to also connect the same active antenna during the test. That’s a quick way to confirm the effectiveness before/after the installation of a thermal silicone gap pad. Naturally, temperature stability is important to the IMU, as with the X5.

Watts = Heat, and you have to provide a path for it.

Hi Marcos (@marcos_aurelio ),

I tested the mosaic-X5 on a 6"x4" PCB inside the same insulated box. The PCB I used is an earlier version of the PCB in the SparkPNT RTK mosaic-X5. I tested the PCB on its own, without the display or aluminium enclosure:

The PCB was powered via USB-C 5V.
Total power draw was approximately 2.15W.
The PCB uses the same 1A 3.3V regulators used on the Flex Breakout.
The ESP32 was powered but was running a very simple “blink” sketch to minimise its power draw. WiFi and Ethernet were not active.
The PoE and DC-in DC-DC converters were not powered.
The X5 was running the same 4.14.10.1 firmware with the same configuration as for the Flex tests.
Data was again logged to the X5 microSD.
The same active L1/L2/L5 antenna was used.

Over the final three hours, the X5 internal temperature was approximately 20C above ambient.

I will test the X5 with-IM19 Flex Module with a heatsink next.

I hope this helps,
Paul

Hello Paul and rftop,

Sorry for the delay; I was occupied with other tasks.

Thank you very much for sharing your test results; this will be helpful to me
and to others as well.

Just to clarify—I don’t think I made this clear earlier—
all the tests I mentioned were performed on the workbench
at room temperature, without an enclosure or heatsink. The GPS-29889 kit
was not soldered; we used female header connectors.

Today, I ran a few more tests lasting approximately one hour under more controlled conditions,
and I’ve included images of the test setups in the files powerbank.pdf and power.pdf (showing 15-minute intervals
from the first test).

For these tests, I disabled the QZSS, NavIC, and SBAS constellations,
while keeping the data streams active as shown in the PDF files.

Based on today’s tests, the temperature seems to have stabilized at 68°C.

I am currently in the phase of configuring the IM19 and determining how to align
the antenna’s ARP center with the IMU; I started by capturing the IM19 temperature messages:
AT+NAVI_OUTPUT=UART1,ON

This generated the attached file: log_temperature_im19.csv.

To compare the temperatures reported by the Mosaic-x5 and the IM19,
I added a small 5V cooling fan (30x30 mm) blowing air between the Mosaic-x5 and the IM19. log_temperature_im19.csv, with cooler on for approx. 9 minutes:
Date_Time,Temperature_C
2026-07-14 15:26:03,60.27 Mosaic-x5 67 °C (via web)
2026-07-14 15:34:42,32.25 Mosaic-x5 39 °C (via web)

log_temperature_im19.csv, with cooler off for approx. 20 minutes:
Date_Time,Temperature_C
2026-07-14 15:34:42,32.28 Mosaic-x5 41 °C (via web)
2026-07-14 15:54:29,60.27 Mosaic-x5 68 °C (via web)

The deltas between the X5 and IM19 were approx. 7 °C, similar to your test
with and without the IM19.

I need to synchronize the temperature logging for the X5 and IM19 in the rover app.

For the final version, the L-band will likely be disabled.

Now I need to move on to testing with the enclosure and heatsink.

Paul, do you recommend removing the serial number label from the Mosaic-x5
to improve heat transfer (Mosaic-x5 – thermal pad – heatsink)?

To make it easier to understand, what was the ambient temperature
when you performed your tests?

Where can I download firmware 4.14.10.1 to see if my results change?

Thank you very much.

powerbank_power_log_im19.zip.txt (1.6 MB)

Hi Marcos (@marcos_aurelio ),

Here are the results of my with heatsink and fan test. I will reply to your latest post in a separate post.

Flex module with IM19, with heatsink and fan, mounted on a Flex Breakout:

I removed the X5 label using a knife blade. I used IPA (rubbing alcohol) on a swab to remove the label adhesive residue. I added four 14x14x10mm heatsinks, using heatsink tape.

The fan is 12V, but runs nicely at 5V (with reduced air flow). I used aluminium tape to create two legs, allowing the fan to sit slightly above the heatsink. The airflow was “up” (working with convection).

As before, I performed the test inside an insulated box to allow the internal air temperature to stabilize. The box is a SparkFun 9"x6"x4" cardboard box covered with two layers of wool insulation. The PCBite PCB holder sits on another layer of wool insulation:

The insulation is only to allow the internal air temperature to stabilize and slow any changes caused by the room air temperature.

As before, the X5 was running 4.14.10.1 firmware and configured to log NMEA and SBF diagnostic data to microSD every 10 seconds, and output GGA+GST+RMC on COM4 at 200msec interval for the IM19:

The X5 PPS signal defaults to 5msec. I increase that to a more visible 100msec. By default, the rising edge is synchronised with the top of second. (I configure the IM19 for SET_PPS_EDGE=RISING)

Total power input into the box was approximately 2.2W.

The same active L1/L2/L5 antenna was used.

Over the final three hours, the X5 internal temperature was approximately 27C above ambient.

I hope this helps,
Paul

Hi Marcos (@marcos_aurelio ),

Thank you for sharing your results.

To summarise my X5 Flex Module results:

Without heatsink and fan, the without-IM19 X5 runs at approximately 29C above ambient
Without heatsink and fan, the with-IM19 X5 runs at approximately 36C above ambient
With heatsink and fan, the with-IM19 X5 runs at approximately 27C above ambient

For comparison:

Without heatsink and fan, the X5 mounted on a large 6"x4" PCB runs at approximately 20C above ambient

During my tests, the CPU Load was typically 26%

Summarising your latest results (please check my summary!):

Without fan, the with-IM19 X5 runs at approximately 46C above ambient
With fan, the with-IM19 X5 runs at approximately 18C above ambient

During your tests, the CPU Load was typically 54%

During your fan test, you were blowing ambient air at approximately 22C over the X5 and IM19. During my fan test, the ambient air temperature inside the box was 31C. We would both need to measure the air flow rate to truly compare like with like.

You now have a lot of data which you can use to guide the design of your equipment. Based on the predicted modelled air temperature inside your equipment, you can decide if the with-IM19 Flex Module is the correct choice. Or whether you need the X5 to be mounted on a larger PCB, with the IM19 on a separate PCB. You need to consider the total electrical heat load inside the equipment, heat transfer through the enclosure to the ambient air outside, heat load on the enclosure from the sun, any reduction in cooling from being at altitude.

Best wishes,
Paul

Download links for earlier mosaic-X5 firmware:

4.14.10.1

4.14.4

Hi Paul,

Thank you very much for sharing your tests with the heatsink, and especially
for using the same SKU (GPS-29457) that I used in my tests.

Yesterday, I forgot to attach the results of the SBF analysis.

Scenario 1 with the 5V 10,000 mAh power bank

Scenario 2 with the 5V 3A power supply
and the temperature drop and rise when the cooling fan is turned on and off.

I am going to run a test using firmware version 4.14.10.1.

Thank you very much.