# Setting up a Torch unit to record RAWX data

**URL:** <https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256>\
**Category:** GPS/GNSS\
**Created:** [July 29, 2025, 3:43pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256 "2025-07-29T15:43:02Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![Avantasian](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/avantasian/32/10474_2.png) [@Avantasian](https://community.sparkfun.com/u/Avantasian)\
**Post date:** [July 29, 2025, 3:43pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/1 "2025-07-29T15:43:03Z")

</div>

Hello everyone,

I’m trying to set the RTK Torch to log data in UBX format to send it later to OPUS and CSRS, however, after setting my messages I noticed there is no option to enable: UBX\_RXM\_RAWX or UBX\_RTCM\_1230 for example.

I used to do this using an RTK Facet head but its faulty now and we are currently waiting for the spares to repair it, my question is, is it possible to log data with the torch? I’m using SW Maps on an android tablet to log the data as the torch doesn’t have a SD card slot built in.

When I log data and try to convert to RINEX on emlid studio software it gave me an error, I reached emlid customer service and they said the UBX file I sent its binary but it contains the NMEA messages and that’s the reason I can’t convert to RINEX

Using U-Center I can see this:

 ![Screenshot 2025-07-29 112710](https://canada1.discourse-cdn.com/sparkfun/original/2X/9/95a7af60a94d85e36e7297831f8a6674448b2bb1.jpeg)

If there is more information needed, please let me know.

Thanks

---

<div class="post-metadata">

**Author:** ![sparky](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/sparky/32/6021_2.png) [@sparky](https://community.sparkfun.com/u/sparky)\
**Post date:** [July 29, 2025, 8:44pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/2 "2025-07-29T20:44:48Z")

</div>

UBX is a proprietary message format only found on u-blox modules. The Torch uses the UM980. You will need to enable a handful of RTCM messages and then go through a post processing step to obtain RINEX using RTKLIB.

This is _very_ similar to the LG290P (also not u-blox) issue discussed [here](https://community.sparkfun.com/t/how-to-collect-raw-gnss-data-with-the-rtk-postcard/65500/28). Obviously the commands are wholly different, but the Torch currently supports the enabling of a [whole host of RTCM messages](https://docs.sparkfun.com/SparkFun_RTK_Everywhere_Firmware/menu_messages/#individual-messages). I just don’t know which ones to tell you to enable to get to a PPP CSRS solution.

To make this easier, we really need a ‘Surveying Defaults’ akin to the original RTK line that enabled the u-blox RAWX and SFRBX messages, but for the Torch and Postcard. I’ve created an issue [here](https://github.com/sparkfun/SparkFun_RTK_Everywhere_Firmware/issues/706) to add that feature but it may be a good bit before we can get there.

---

<div class="post-metadata">

**Author:** ![rftop](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/rftop/32/6121_2.png) [@rftop](https://community.sparkfun.com/u/rftop)\
**Post date:** [July 29, 2025, 8:56pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/3 "2025-07-29T20:56:22Z")

</div>

> [@Avantasian](#):
>
> I’m using SW Maps on an android tablet to log the data as the torch doesn’t have a SD card slot built in.

Since SW Maps has a feature to create & save UBX files, this might not take much.  
It’s my understanding that the app can generate these even for non U-Blox chips.

Anyone know which RTCM messages are the minimum required for SW Maps to generate UBX?

---

<div class="post-metadata">

**Author:** ![sparky](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/sparky/32/6021_2.png) [@sparky](https://community.sparkfun.com/u/sparky)\
**Post date:** [July 29, 2025, 9:13pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/4 "2025-07-29T21:13:15Z")

</div>

@rftop - Is SW maps doing any conversion or is it just a text file with a UBX extension?

If I had to wager a guess based on @PaulZC’s work,

RTCM3-1019  
RTCM3-1020  
RTCM3-1042  
RTCM3-1046  
RTCM3-1074  
RTCM3-1084  
RTCM3-1094  
RTCM3-1124

All look to be [supported](https://docs.sparkfun.com/SparkFun_RTK_Everywhere_Firmware/menu_messages/#individual-messages).

---

<div class="post-metadata">

**Author:** ![rftop](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/rftop/32/6121_2.png) [@rftop](https://community.sparkfun.com/u/rftop)\
**Post date:** [July 29, 2025, 9:29pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/5 "2025-07-29T21:29:28Z")

</div>

> [@sparky](#):
>
> @rftop - Is SW maps doing any conversion or is it just a text file with a UBX extension?

IDK, and unfortunately I don’t have my Torch with me, or any of my tablets that I’ve previously used the “Log to File” option in SW Maps.

This [Post](https://community.sparkfun.com/t/sw-maps-sparkfun-surveyor-invalid-ubx-log-files/45251/7) suggests the user was successful (although with a F9P).  
I’m still guessing that a U-Blox chipset isn’t a requirement for SW Maps to generate the file…but that’s a guess 😉

---

<div class="post-metadata">

**Author:** ![sparky](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/sparky/32/6021_2.png) [@sparky](https://community.sparkfun.com/u/sparky)\
**Post date:** [July 29, 2025, 9:41pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/6 "2025-07-29T21:41:43Z")

</div>

No luck yet, but the device is outputting the messages correctly AFAIK:

```
Rover Accuracy (m): 1.031, SIV: 31 GNSS State: 3D Fix
    rtkParse Unicore Binary, 0x0094 (148) bytes
    rtkParse NMEA GNGGA, 0x0058 (88) bytes
    rtkParse Unicore Binary, 0x0048 (72) bytes
    rtkParse RTCM 1019, 0x0043 (67) bytes
    rtkParse RTCM 1020, 0x0033 (51) bytes
    rtkParse RTCM 1042, 0x0046 (70) bytes
2025-07-29 21:39:06.026
    rtkParse RTCM 1046, 0x0045 (69) bytes
    rtkParse RTCM 1074, 0x00c5 (197) bytes
    rtkParse RTCM 1084, 0x0084 (132) bytes
    rtkParse RTCM 1094, 0x00d7 (215) bytes
    rtkParse RTCM 1124, 0x0143 (323) bytes

```

But RTKLIB RTKCONV is not happy with the log file, so far:

 ![image](https://canada1.discourse-cdn.com/sparkfun/original/2X/3/3ec73655ad367f37abc0375d2102c0d4a124487b.png)

---

<div class="post-metadata">

**Author:** ![kcrossen](https://avatars.discourse-cdn.com/v4/letter/k/50afbb/32.png) [@kcrossen](https://community.sparkfun.com/u/kcrossen)\
**Post date:** [July 29, 2025, 9:46pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/7 "2025-07-29T21:46:54Z")

</div>

Now using QField, more bugs (“unexpected behavior”) but generally more capable. For example, zooming in is unlimited, works well w/ QGIS, etc.

Ken

---

<div class="post-metadata">

**Author:** ![kcrossen](https://avatars.discourse-cdn.com/v4/letter/k/50afbb/32.png) [@kcrossen](https://community.sparkfun.com/u/kcrossen)\
**Post date:** [July 29, 2025, 9:50pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/8 "2025-07-29T21:50:18Z")

</div>

Also have converted to Emlid M2, generally more mechanically rugged, better designed, better made.

Ken

---

<div class="post-metadata">

**Author:** ![sparky](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/sparky/32/6021_2.png) [@sparky](https://community.sparkfun.com/u/sparky)\
**Post date:** [July 29, 2025, 10:25pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/9 "2025-07-29T22:25:41Z")

</div>

Paydirt! Per usual, _listen_ to Paul. I forgot to set the format to RTCM 3

 ![image](https://canada1.discourse-cdn.com/sparkfun/original/2X/4/4ff3558e60c7304042062d4bedadbe9f31680fe2.png)

![image](https://canada1.discourse-cdn.com/sparkfun/original/2X/b/b310046face25dee05d854399d14e2dd2f3bedd8.png)

Now I only logged for ~30 seconds but I think this works. I’ll start building out that logging option. It’s pretty tedious to select all the RTCM messages.

---

<div class="post-metadata">

**Author:** ![jpb](https://avatars.discourse-cdn.com/v4/letter/j/f475e1/32.png) [@jpb](https://community.sparkfun.com/u/jpb)\
**Post date:** [July 29, 2025, 11:26pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/10 "2025-07-29T23:26:40Z")

</div>

You may want to use RTCM messages for flexibility with multiple receivers, but the Unicore command is OBSVMB for raw data. Similar to Ublox’s RAWX.

I use:  
\< OBSVMB COM2 15  
\< GPSEPHB COM2 ONCHANGED  
\< GALEPHB COM2 ONCHANGED  
\< GLOEPHB COM2 ONCHANGED  
\< BDSEPHB COM2 ONCHANGED  
\< GPGGA COM2 15

You pick the COM port and rate you want. OBSVMB is the important one. If you want a Navigation file the xxxEPHB commands will give you that. The (NMEA) GGA sentence might be needed if you want an approximate position in the RINEX file. Again only the OBSVMB data is necessary for OPUS/AUSPOS/CSRS processing.

---

<div class="post-metadata">

**Author:** ![sparky](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/sparky/32/6021_2.png) [@sparky](https://community.sparkfun.com/u/sparky)\
**Post date:** [July 30, 2025, 2:34am UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/11 "2025-07-30T02:34:57Z")

</div>

@jpb - Neat! Thanks for the heads up.

Needless to say ~30 seconds is far too little time, but CSRS did manage to report with not terrible accuracy:  
 ![image](https://canada1.discourse-cdn.com/sparkfun/original/2X/f/fa2dcbd1258f777fe9ff2d83cc03b5e618ab52a6.png)

---

<div class="post-metadata">

**Author:** ![Avantasian](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/avantasian/32/10474_2.png) [@Avantasian](https://community.sparkfun.com/u/Avantasian)\
**Post date:** [July 30, 2025, 1:51pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/12 "2025-07-30T13:51:46Z")

</div>

@sparky

How you got the data displayed like that?:

“Rover Accuracy (m): 1.031, SIV: 31 GNSS State: 3D Fix  
rtkParse Unicore Binary, 0x0094 (148) bytes  
rtkParse NMEA GNGGA, 0x0058 (88) bytes  
rtkParse Unicore Binary, 0x0048 (72) bytes  
rtkParse RTCM 1019, 0x0043 (67) bytes  
rtkParse RTCM 1020, 0x0033 (51) bytes  
rtkParse RTCM 1042, 0x0046 (70) bytes  
2025-07-29 21:39:06.026  
rtkParse RTCM 1046, 0x0045 (69) bytes  
rtkParse RTCM 1074, 0x00c5 (197) bytes  
rtkParse RTCM 1084, 0x0084 (132) bytes  
rtkParse RTCM 1094, 0x00d7 (215) bytes  
rtkParse RTCM 1124, 0x0143 (323) bytes”

I just got this:

 ![Screenshot 2025-07-30 094228](https://canada1.discourse-cdn.com/sparkfun/original/2X/6/642821d0fc050c624467c352facfe8a6ea49818b.jpeg)

Of course the Output GNSS data to USB is disabled, but even when enabled i just see the whole strings.

I downloaded the UPrecise software from the unicore communications website but it won’t let you configure the receiver through it, however it’s just plug and play to visualize data and upgrade the torch which is nice, im currently logging data with the RTCM messages suggested on to try with the RTKCONV.

One question, are the messages:

RTCM3-1019  
RTCM3-1020  
RTCM3-1042  
RTCM3-1046  
RTCM3-1074  
RTCM3-1084  
RTCM3-1094  
RTCM3-1124

Enabling OBSVMB, \< GPSEPHB, \< GALEPHB, \< GLOEPHB, \< BDSEPHB? or how do you enable that on the torch?

Thank you for all your guidance, it’s been very helpful

---

<div class="post-metadata">

**Author:** ![rftop](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/rftop/32/6121_2.png) [@rftop](https://community.sparkfun.com/u/rftop)\
**Post date:** [July 31, 2025, 4:11pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/13 "2025-07-31T16:11:40Z")

</div>

> [@Avantasian](#):
>
> How you got the data displayed like that?:

In the Serial Configuration, go to  
s) Configure System

From there, you have several menus to play around in, like:  
d) Debug software  
h) Debug hardware  
p) Configure periodic print messages

 ![image](https://canada1.discourse-cdn.com/sparkfun/original/2X/7/70435dfc6a803439cd5a34a6685c92a4606ebad8.png)

---

<div class="post-metadata">

**Author:** ![Avantasian69](https://avatars.discourse-cdn.com/v4/letter/a/ee59a6/32.png) [@Avantasian69](https://community.sparkfun.com/u/Avantasian69)\
**Post date:** [June 9, 2026, 5:55pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/14 "2026-06-09T17:55:37Z")

</div>

Is there any workflow update on this? my Facet got drown and I need to log raw data to send to OPUS, I only have my torch alive, do I have to buy something else? Also i dont know if there is any update on the NGS listing for the torch?

---

<div class="post-metadata">

**Author:** ![JRLockerby](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/jrlockerby/32/12965_2.png) [@JRLockerby](https://community.sparkfun.com/u/JRLockerby)\
**Post date:** [July 9, 2026, 12:46pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/15 "2026-07-09T12:46:16Z")

</div>

If I read this right you are trying to effectively log RINEX data with the RTK Torch? I have had good success with it and have successfully sent files to NGS with the correct antenna selection. You only need a phone or tablet plus a PC to convert the file. I am overseas at the moment but can provide detailed instructions when I return home in a week.

---

<div class="post-metadata">

**Author:** ![Avantasian69](https://avatars.discourse-cdn.com/v4/letter/a/ee59a6/32.png) [@Avantasian69](https://community.sparkfun.com/u/Avantasian69)\
**Post date:** [July 9, 2026, 12:59pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/16 "2026-07-09T12:59:00Z")

</div>

Hey, Tha k you for checking this out, yes I was able to do it properly, is was easier than I thought, I captured the data with my laptop and then convert it to RTCM using RTKlib and submitted to opus, all came clear!!

---

<div class="post-metadata">

**Author:** ![JRLockerby](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/jrlockerby/32/12965_2.png) [@JRLockerby](https://community.sparkfun.com/u/JRLockerby)\
**Post date:** [July 9, 2026, 1:29pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/17 "2026-07-09T13:29:18Z")

</div>

Good to hear. It also took me some time to figure it out. I logged using SW Maps logging function and copied to PC. I have been working on summit elevations an a laptop gets clumsy.

---

<div class="post-metadata">

**Author:** ![semuadmin](https://yyz1.discourse-cdn.com/sparkfun/user_avatar/community.sparkfun.com/semuadmin/32/7096_2.png) [@semuadmin](https://community.sparkfun.com/u/semuadmin)\
**Post date:** [July 9, 2026, 8:18pm UTC](https://community.sparkfun.com/t/setting-up-a-torch-unit-to-record-rawx-data/66256/19 "2026-07-09T20:18:33Z")

</div>

FYI [PyGPSClient](https://github.com/semuconsulting/PyGPSClient) (via its underlying parser [pyunigps](https://github.com/semuconsulting/pyunigps)) is also capable of parsing Unicore binary messages (which include observation, ephemerides, time and ionospheric correction data) _and_ configuring receivers like the UM960 and UM980 via its “TTY” (ASCII text) configuration facility.

 ![Screenshot 2026-07-09 at 22.23.49](https://canada1.discourse-cdn.com/sparkfun/original/2X/6/62954e5d3466c3ed0a86d159b62e93cf312ab531.jpeg)
