I’ve been writing about Meshtastic firmware and hardware since 2020, but I never had the opportunity to test it myself. This has now changed as Elecrow sent us the ThinkNode M1 and ThinkNode M2 Meshtastic nodes for review.
Both rely on Semtech SX162x radios, but the M1 is based on a Nordic Semi nRF52840 Bluetooth MCU with a 1.54-inch E-Ink display and GPS, and the smaller M2 is based on an ESP32-S3 chip and a 1.3-inch OLED but lacks a built-in GPS module. Since I’ve never used Meshtastic before, this “review” will be more like a Getting Started Guide from a beginner’s perspective. After an unboxing and a teardown, I’ll test messaging, GPS sharing, and the range I can get in a suburban environment in Thailand.
ThinkNode M1/M2 unboxing
Both packages look similar, with a plastic case and a white cover. The ThinkNode M1’s main features include a high-gain antenna, Meshtastic app compatibility, location support, 1,200 mAh battery, low power, and LoRa connectivity. The M2 is similar but lacks location support, features a 1,000 mAh battery, and a 1.3-inch OLED. It’s also described as a “high performance” solution with ESP32-S3 SoC rather a the “lower power” solution using nRF52840 MCU.
The package content is similar with some small variations. The ThinkNode M1 ships with a USB cable for charging, a LoRa antenna with a rubber joint, and a user manual, while the ThinkNode M2’s antenna is integrated into the design.
The M1 is large and thicker. It features a knob for power and the epaper display’s backlight, a GPS switch, as well as function and page turn buttons. The more compact M2 only comes with power and function buttons, notably because it lacks GPS, and an OLED does not need brightness adjustment as it’s readable in the dark.
Both came charged, and we could turn them on out of the box.
Teardown
Let’s try to have a look inside both Meshtastic nodes. We’ll start with the M1 loosening four screws on the bottom side of the plastic enclosure. We can see the 1,200 mAh battery and the GPS antenna on this side.

It was then fairly easy to move the board from the enclosure and access the side with the E-Ink display, Buzzer, and LEDs for power and data. There’s also a four-pin header with CLK, DIO, 3.3V, and GND signals, which might be used to connect an external GPS module.
The battery and E-Ink display were firmly attached (glued), so I did not attempt to remove those.
Let’s now do a teardown for the ThinkNode M2.
One we open the case, we can see the 1,000 battery, as well as a 12-pin header for expansion. Somehow, I was unable to remove the board from the enclosure.
So I removed the battery to have a closer look, but there are no visible screws. Maybe the board is glued to the case or a few screws can be found under the sticky pad. I’ll skip this as I need to use the device first…
Meshtastic app connection to ThinkNode M1/M2 and configuration
Let’s now install the Meshtastic app on two Android smartphones from the Google Play Store. When we start the app, we’re asked to connect a device. So I turned on the ThinkNode M1, went to the Bluetooth section on Android, and the “Meshtastic_b525” device was shown in the list of available devices. I could pair my phone to it after entering the pairing code, and the “b525” device was shown as connected in the Meshtastic app.
I did the same with the ThinkNode M2 and another Android phone. However, I was not sure what step to take next, so I went to the initial config documentation on the Meshtastic website. One important consideration is to select the proper region code. I live in Thailand, so I would have to select a 920 – 925 MHz Frequency range, 100% duty cycle, and a 16 dBm power limit.
This varies a lot between countries. For instance, the European Union regulation requires a 10% duty cycle and a 27 dB power limit. The power limit is quite low in Thailand, so the range will be limited compared to other countries like New Zealand (36 dBm) or neighbouring Malaysia (20 or 27dBm). For reference, 16 dBm converts to 40 mW, and 36 dBm to 4 Watts, or 100 times more power! If we wanted a longer range in the ~923 MHz range, we would select Malaysia, but as law-abiding citizens, we’ll only use Thailand settings for this review.
As a messaging and GPS coordinate sharing solution, I thought that Meshtastic settings would be pretty basic with only a few options, but my assumption was completely wrong, and if I were to go through all of them, I’d have to write a book instead of a review. They can be accessed by clicking the top right icon (with three points) and selecting Radio configuration.
We can now go to User to configure the long and short names, then to LoRa to select the frequency plan (Thailand here). We’ll do that on both smartphones, and then tap the fourth icon at the bottom, so scan the QR code from one phone to the other.
Note that changing the configuration requires the user to click the Send button at the bottom of the configuration page. This will reboot the Meshtastic node.
We now have two Meshtastic nodes: CNX Software/CNX and LPT Maker/LPT. As long as a phone is in the Bluetooth range of either we can send messages to the LongFast channel. The messages will also show on the ThinkNode M1/M2 nodes, at least if it is in English. Thai language works in the app, but will be blank on the displays. I could also see the rough GPS coordinates for the CNX node (M1 with built-in GPS) in the map (third icon at the bottom), but with low accuracy. I initially thought it was because I was indoors, but that’s not quite the case. More on that later.
First Meshtastic test in the field – A forest run
Since we went for a run in a forest park with a ring that’s about 4.5 to 5 km long and a straight-line distance of about 1.5km, I thought it would be ideal for a GPS and range test.
We could chat normally when the two smartphones and nodes were close to each other, but I still noticed the GPS coordinates showed a circle of about 5km in diameter on the map. Not overly useful…
The third icon from the top right in the map section will show the phone’s GPS location along with the ThinkNode M1 location (CNX 2 min). It’s well over two kilometers apart, which is disappointing. I tried to to in the Position config to find a “precise location” option, but there was nothing there. While the ThinkNode M2 lacks GPS hardware, since it’s connected to a smartphone, I thought it might be possible to share GPS coordinates too. I’ll try to figure out both the GPS accuracy and M2’s GPS coordinate sharing once I’m back home.
We can still check the range. When we were at the furthest distance between the M1 and M2, we tried to chat over Meshtastic, but it did not work. When a message doesn’t go through, it will show a crossed cloud, and when it’s trying to send, it will just show a cloud. A successfully sent message will have a cloud with a tick, as we’ve seen above.
We can tap on the crossed cloud and select Resend if needed. So I walked back towards the node M2, which was in a car (admittedly not ideal), and resent the message from time to time. As mid-distance, it was still not working, so I asked to test the M2 out of the car, but it didn’t help. It was only when I was at a little over 100 meters that the message went through. LoRa is often advertised with a range of up to 10 km in line-of-sight, or 2 to 3 km in urban environments, so it was disappointing, even though I was expecting a shorter range due to the power limitation in Thailand.
I also left both devices on until their battery was depleted, and the nRF52840-based ThinkNode M1 with E-Ink display could last over 24 hours on a charge, while the ESP32-S3-based ThinkNode M2 would only last 7 to 8 hours in LONG_FAST mode.
Firmware update, GPS precision, and providing phone location to Mesh
Before I worked on the issue above, I noticed the firmware installed on the Meshtastic M1 and M2 was version 2.6.5, but a new stable version (2.6.11) was available.
So I decided to update the M2 to make sure I did not miss any potential recent features and fixes. Unless I missed something, the firmware can’t be updated from the Android app, and instead, we can go to flasher.meshtastic.org in Chrome or another browser with USB serial support (Firefox won’t work).
I connected the ThinkNode M2 to my Ubuntu laptop with the provided USB-C cable, and the device was automatically detected. I then selected firmware 2.6.11 Beta from the “Stable” list and clicked the Flash button.
If Full Erase and Install is enabled, you’ll lose all your data, so I didn’t change that setting, and click Update to carry on.
It will take a couple of minutes to complete, and once done, we can go back to the Meshtastic app to double-check that the firmware was updated to version 2.6.11.
Let’s now try to address the GPS location accuracy issue. This can be changed in the Channel settings. Tap on LongFast, and there we can see that the position is enabled with an accuracy of 2.9 kilometers… But we can change by enabling “Precise location”.
It works, but LongFast is the default channel, and it’s like a public channel, so anybody with another Meshtastic node could also access the GPS data. So it’s recommended to create another channel to share this data. So I did that, called it ChiangMai, enabled Precise location, and moved it as the Primary channel since it is where periodic position (and telemetry if you have sensors) broadcast occurs.
We can now chat in the ChiangMai and LongFast channels, and you can see the “CNX 1 Min” pin does not have a large circle around it, and it’s quite close to the location reported by the phone’s GPS (blue circle). You’ll also notice the “LPT now” pin on the map, meaning I could get the location data with the ThinkNode M2.
How did I do that? I first wasted time trying to find the option “Provide phone location to mesh” in the settings as mentioned in some instructions, and was getting nowhere… That’s because the option is in the Connect to radio section (fifth icon from the bottom bar), and is only available once the phone is connected to the node over Bluetooth.
Once I did that, the location of the ThinkNode M2, or more exactly, the phone attached to it, was shared through the Meshtastic app.
ThinkNode M1/M2 range testing in a suburban environment
Some people achieved ranges of over 300km with Meshtastic, but that’s with fixed stations placed on a pole and using large antennas. What we’ll be testing here is the range between the M1 and M2 Meshtastic nodes in LONG_FAST mode with the M2 in a fixed outdoor location on somebody’s lap and the M1 in my pocket while I walk away, also I will also hold the M2 in my hand raising my arm to extend the range if the message can’t be sent. This will be done in a suburban environment with a few buildings not over two or three stories tall and some trees.
I initially enabled Range Test mode on the M2, but I failed to properly read the documentation, which stipulated “Both Sender and Receiver must have the module enabled”. Oops, luckily, I also tested that manually by sending text and receiving an answer in various locations along the way. Raising the M2 node in my hand increased the range by maybe 20 to 30 meters. I found out the range to receive and send messages was 286 meters in this test.
The distance between the two devices is also shown on the display, but I wanted to double-check on Google Maps, as shown above, and both results are approximately the same (286m vs 265m).
I repeated the test walking in another direction, and the end result was similar at 262 meters.
I found the range somewhat disappointing, so I consulted with Grok to find a way to extend the range without increasing the Tx power and staying within the range stipulated by Thailand regulations. I was told that switching to LONG_SLOW mode could double the range, at the cost of increased power consumption. So the next day, I changed LoRa settings on both the M1 and M2 nodes to set the Model Preset to LONG_SLOW.
I repeated the test, and I could indeed walk further while still being able to chat with the other party. If I remember correctly, I read 565m on the M1 display (forgot to take a photo), and checking in Google Maps reports 550 meters. The small difference may be due to the slightly different location reported by the built-in GPS compared to the phone’s GPS.
That’s more like it, and it might be enough if we need connectivity when hiking in groups in the same direction. Since it’s a mesh network, we could further extend the range by adding additional nodes, and other countries will have longer or shorter ranges depending on local regulations. A fixed node placed higher and with a large antenna would help extend the range as well.
Display and buttons
To conclude, let’s have a quick look at the menu on the display and the functions enabled by the buttons. I’ll start with the ThinkNode M1.
We can switch between pages with the “page turn” button. The first page shows the latest message and its source/time, the second shows the signal strength, distance, angle to the other node(s), the third page shows the list of nodes and channels, and the final page provide battery information, time (not correct, I must have forgotten to set the timezone somewhere), channel utilitisation, altitude, and GPS coordinates. Note: the first page will disappear if you send a message, and come back once you receive one.
The Function button enables four actions:
- Single press – Ping to network to report the device location (instead of relying on timed or distance-based updates)
- Double press – Turn the LED backlight on/off. If you rotate the power know and the backlight is not adjusted, that’s probably because you pressed the button twice.
- Triple press – Trigger an SOS alarm signal. But it’s a joke… It will continuously trigger the buzzer and blink an LED, and around one meter away, it can be heard and seen, but when we tried it three meters away, we could never hear the buzzer or see the LED in an outdoor setting.
- Long press – Enter standby power-saving mode
Now let’s do that with the ThinkNode M2. There are also four pages, but at the time, I had sent a message, so there were only three.
It’s basically the same, minus the GPS coordinates since the ThinkNode M2 lacks a built-in GNSS module.
There’s a single Function button enabling three actions:
- Single press – Switch between pages
- Double press – Ping to network to report the device location. Note: It does seem to work even without a GPS module. It will show the text “Send ad-hoc nodeinfo” on the display, and the position is updated on the other side, with the Meshtastic app showing “LPT Now” in the Map section.
- Triple press – Trigger an SOS alarm. Same joke as the M1…
Conclusion
That was an interesting experience, and I’d like to thank Elecrow for sending the ThinkNode M1 and M2 for review and getting started with Meshtastic. I personally prefer the M1 with its built-in GPS, E-Ink display, and much longer battery life, but the M2 model is smaller, cheaper, and also supports WiFi in case you need this feature (not tested here). The ThinkNode M1 is sold for about $70 on AliExpress, while the ThinkNode M2 goes for under $60 before eventual taxes. You’ll also find both on the Elecrow store, with the M1 going for $53.90 and the M2 for $43.90 plus shipping and taxes. You can save $14 and $22, respectively, if you don’t need an enclosure.

Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress. We also use affiliate links in articles to earn commissions if you make a purchase after clicking on those links.


































