WADAMESH Tips for the ThinkNode M9

WADAMESH Home Screen

This firmware from https://www.wadamesh.com/index.html has really won me over with its fully open source approach, and its very rich ecosystem of apps and functionality. At first though, the app can appear a bit daunting (almost too much detail).

So although I gave some highlights at my Elecrow ThinkNode M9 page and a few screenshots, I thought I’d do this page as well with specific tips on shortcuts, tricks, and workarounds (more so needed on the non-touch version that the M9 is).

Radio Settings

WADAMESH RadioSettings

The screen inside WADAMESH looks slightly different. You still pick the EU/UK Narrow (if in ITU Region 1 which is Africa/Europe/UK), and it should populate everything for you. Just check that the AF (Airtime Factor) box is 9.00 (for ITU Region 1 again). As Region 1 is a max of 10% duty cycle you may have expected to see a 10 there, but WADAMESH accepts 9 for 10%, 3 for 25% or 1 for 50%. Make sure you have 9 set here for South Africa.

If you connect from a mobile phone app, via Bluetooth, to WADAMESH, you’d set it there as normal for 10%.

An incorrect radio preset will likely prevent you from connecting to your local mesh as it determines the radio frequency, spread factor, etc. Each region has legal regulations about what frequencies may be used license-free, and also what power levels and duty cycles are allowed. Using the correct preset ensures this is all compliant, and you will connect correctly to your local mesh.

Quick Access to Control Centre

WADAMESH ControlCentre2
WADAMESH Control Centre screen

Press ctrl key – think of this as the pull down quick settings screen on your phone. Here you have access to the power button (reboot, shutdown, download mode), screen brightness, Wi-Fi toggle, Bluetooth toggle, GPS toggle, Main Accent colour (that lightbulb middle right), keyboard back lighting (on/off/auto), sound toggle, and do not disturb toggle.

Bottom right two buttons are for Screenshots: The one that shows ‘3s’ will toggle between now, 3 secs and 10 secs delay. The button to the right of it with the picture symbol, triggers the screenshot, and the Control Centre window closes automatically. See File Copying below for how to copy these off the device.

It shows a bunch of other status info such as date, time, GPS status, battery percentage/voltage, memory, TCP/IP address.

To exit it press the ctrl key again (from Beta 79), or the Back key.

Quick Access Buttons

WADAMESH QuickButtons
ThinkNode M9 Keys

As there is no touch screen so you really need to make use of the shortcut keys.

The one’s labelled in red, are the function keys, and do the following:

  • 1 – Opens Chats list and closes any active app
  • 2 – Home and shows app drawer or toggles with Home view
  • 3 – To Mentions screen
  • 4 – D-pad with press in centre being OK/Enter and the sides will move up, down, left and right (Activate the focused item; send a message; run a terminal command; newline in the editor). A long press can also unlock the screen, and for some items will pop up a context screen (a bit like a right click with a mouse on a PC)
  • 5 – Back key
  • 6 – Adverts key opens options to send flood or zero-hop advert
  • 7 – Map key opens the map page (see below)

Other important key shorts cuts are:

  • ctrl key – press this to open the Control Centre to quickly toggle some settings
  • Requests are logged for having double tap on space key to add a period, a request to pop up the emoji picker etc, but I’ll update here as they go live

Map Pan Mode

WADAMESH MapView

On Map screen, press Map button again to toggle between pan mode and moving focus on the icons.

The D-Pad is used to pan when in pan mode, and to move focus when in button focus mode on the map.

Typing & editing

Once you get used to this, it becomes a lot easier to find your way around text editing:

Inside a text field the left/right arrows (D-Pad) move the caret — and when the caret is already at the edge of the text, the same press steps focus out of the field, so you’re never stuck. Enter sends (toggleable under Settings), Back leaves the field. In the Terminal, Enter runs the command; in the text editor it inserts a newline.

To type numbers or alternative characters, you need to hold the Sym button on the keyboard whilst typing. This is pretty fiddly if you need to type out say an IP address, so Beta 70 has introducing latching of the key. But it went live only for the T-Deck for some reason. I’ve requested it for the M9 as well. The idea would be for a single number you’d press the Sym button once (it would latch for a single character) and then the number button. To hold the latch you could double-press (two presses) of the Sym button, and it would stay latched. For the T-Deck this works with the symbol and alt keys.

The emoji button is now, from Beta 78, to the right of the text box. Type whatever text you want, click right on the D-Pad to choose the emoji button, and after hitting OK to select it, it should be inserted where your cursor was, and you can carry on typing from that point. The flow is now quite intuitive. There is also a special characters button to the right of the text box and this will insert various characters not found on the physical keyboard.

20260907 180340
Special characters and emojis

Note also there is no ‘long press’ to, for example, delete lots of text. It is a single press of the delete key for every character. The D-Pad will though move left and right, with single presses, to get to something you need to fix.

Accented and Nordic letters (from beta 76) just type a letter, then left and right (on D-pad) walk the variants and Enter takes one. If you do not need to use one of those special characters, you just carry on typing as normal.

The button to the left of the emoji button, is the Quick text button. You set this up in Settings, but here you can quickly select text to be inserted in one go i.e. like a #MeshCoreMonday message, or I’m driving will answer later, etc.

Other Quick Actions

On the chat screen:

WADAMESH ChatActions
WADAMESH Chat Screen

The + at top left is to add new types of channels – hashtag, private encrypted, etc (remember with MeshCore it is good practice to move off the Public channel for longer group chats so we have #channel1 and #channel2 for example by us – you need to create such a hashtag channel, to move to it).

The tick mark can be navigated to, and pressing OK will mark all messages as read.

To the right of the tick is a QR code button. That will open a QR code to share the channel (useful for channels with passwords).

WADAMESH ScrollDown 1

If you find yourself somewhere in the feed and want to quickly get to the bottom, you can move the focus to that down arrow shown in the image above, and hit OK on the D-Pad button to quickly jump to the bottom (latest message).

Context Menus

These can appear when you hold the D-Pad (OK) in for about 5 seconds when standing on a message or contact/node. They can be used to do various things:

On a repeater/companion node in Contacts view

WADAMESH AdminMenu

Make sure you are in the Contacts view (not Chat view).

This is how you access the remote administration of a repeater. After you have entered the password it will remember that password in future.

You can ping the repeater, pull its telemetry (battery level, temp, etc), trace SNR (signal-to-noise ratio) level over time), a range test, a sight line (to show if there are physical obstructions in direct line of sight). In the image above I have also marked this one as favourite, so here you can toggle favourite on/off.

Rest path is used if you cannot log in to that repeater or get any ping back. It could be you have moved locations, or a repeater that was in the path, is offline. Reset path will remove the old saved path, send out a flood advert, and determine a new path for that repeater (or in fact it could be for a companion chat node too).

On received message inside chat

WADAMESH MessageLongPress

A long 5-second press (and from Beta 77 even just a quick press) can bring up these options to send an acknowledgement ack showing signal level, hops, and repeaters in the path of the message you received.

Info shows similar information, but in a popup to yourself.

The @name will create a reply that mentions that sender.

On sent message inside chat

WADAMESHOwnMessageLong

A long 5-second press (and from Beta 77 a quick press) can bring up these options to copy the content (to maybe paste and resend to other people), show info about its status, and resend does the obvious.

While we’re on the topic of messages, they are the hearty and soul of MeshCore. MeshCore is actually better at message routing as well as proper acknowledgement of delivery, so it is worth pausing to look a bit deeper into what WADAMESH shows here:

WADAMESH message conf

What we see above, is a direct message chat. The message at the bottom is confirmed delivery, shown by the double tick marks, and the recycle icon with the 2 indicates it travelled two hops through repeaters.

The two messages above it failed. I did a resend on one of them today.

WADAMESH message info

This was a long press on the received message and I chose to see the info for it. It shows here that it was a DM (direct message) and its status is delivered, and it confirms the repeats were heard by the tow named repeaters. The ZS1OSS Room is actually a rooftop Room Server node that I have on my house (more on room servers in my MeshCore page).

Screen Locking

The theory is that locking the screen will stop it waking up every time a message is received. By default, WADAMESH briefly lights the screen and shows the message, and that wakes the screen and uses battery.

To lock screen – hold space button, and you’ll see a brief countdown to lock.

To unlock screen – From Beta 77 unlock is two quick presses of the D-Pad.

I notice with the screen locked, I do hear an audible sound as a message is received, but the screen and keyboard do not light up.

Scheduled Do Not Disturb

WADAMESH DND

In Settings under the Sound menu you’ll find the scheduled do not disturb mode. This is ideal for your sleep or wind downtime. Above you’ll see I’ve scheduled mine to start at 23:30 and end at 09:30.

To change those times, use the D-Pad to position on the -30m on left or on +30m on right, and as you press the D-Pad OK it will change the timer accordingly.

This mode cuts out any sounds, but I just need to check if it actually lights the screen and shows a notification (I don’t think so if I look at my battery graph as that showed no wake times, but then no-one sent messages in the middle of last night).

Battery Life

20260909 004031

In Settings / Battery there is a battery save function which reduces CPU speeds when idle. Toggling it on can gain an hour or two of extra battery life and not really impede any functionality. You can also toggle on/off showing when the CPU is used.

20260909 144044

Scrolling down also gives additional information about what is keeping the device awake.

20260909 144103

CLI Commands

These are various commands you can execute to quarry (get) or set various parameters from the command line.

help / ?            this command list
status              device status
ver                 firmware version
clock               RTC time (UTC)
get                 show radio params
advert              send a flood advert
advert.zerohop      send a 0-hop advert
set name <v>        set node name
set freq <MHz>      set frequency
set bw <kHz>        set bandwidth
set sf <7-12>       set spreading factor
set cr <5-8>        set coding rate
set tx <dBm>        set TX power
wifi status|on|off|scan
wifi use <n> | set ssid <v> | set pwd <v> | apply | clear
mqtt status
tcp status|on|off
ble status|on|off
ota status|start|netdiag | ota url <https://...bin>
reboot              restart the device
bootloader / dfu    reboot to download mode

Remote Access

On the apps screen there is an app called Remote. This will enable access via the WiFi network from your browser when you open http://deviceip:8765 where device IP is the actual IP of your device. The app should display this address as well.

The two main ways to access the device remotely are:

Remote Terminal

A lightweight text access where you can choose from a Chats, Contacts, or Terminal view tabs at the top. Top right is also a settings gear cog that will open this window below.

WADAMESH Remote
WADAMESH Remote Terminal View in desktop browser

Remote UI

The device reboots into remote UI mode, so the display only messages the IP address to access via the desktop (or mobile phone) browser. It renders a full graphics view in the browser, which naturally will use more battery.

WADAMESH Remote UI

For the view above you use the desktop’s mouse to drag the screen up or down, click to open, etc. The Rotate button at the bottom switches between a portrait or landscape view (by starting the device). The Exit remote button at the bottom of the screen will reboot the device into its normal display mode.

Console mode

This is intended more for developers and does nothing useful for end users. It is pure console commands on the device, and you need to type ui and enter to exit out of it.

File Copying

From Beta 77 there is now a Transfers app in the app drawer. The app allows you to download from screenshots on the device, and uploads will go into the transfers folder on the device. Wi-Fi needs to be active, and the device connected to the same network as your desktop or mobile device.

To use this, go to Settings and open the Transfers app. It will display a web address like below, with a unique changing PIN code to be entered on your browser to authenticate the session.

20260906 192924

Open that web address in your desktop browser and enter the PIN and hit Connect (see below). Note this PIN will expire if you have not connected in about 30 seconds.

WADAMESH FileTransfer1 1

The view in the browser (above) allows you to download each of the screenshot files to your PC. As of Beta 79 there is now a delete action here for each file, and also a drop-down menu next to device files, where you can filter on all, or just specific directories. The view defaults to all.

GPS Location Privacy

20260907 172620

Probably a first for any MeshCore app, from Beta 78, in the Settings / GPS view there are options for: exact, or displaced by up to 100 m, 250 m or 1 km. Only what you broadcast has this offset; your own map keeps the real fix. From Beta 79 the direction of displacement will change every time you toggle between different displacement values.

When answering a position request from your chosen contacts, you can choose to send your real position. It defaults though to using the chosen displacement. Note that one to one chats with a contact are encrypted, so the position is not publicly broadcasted.

GPS Compass App

20261008 004704

This app (seen above) is found in the app drawer view (if you installed it from the Store app). Apart from working like a compass, it will also show how many satellites are locked onto, as well as the tilt angle, altitude, and speed.

Putting focus on items like ALT or SPD, and pressing OK on the D-Pad, will toggle between metric and imperial units.

TGT is intended to select a target contact, and then be able to give navigational direction and distance to reach them.

Audio and Sound

No, you are not imagining it, there is no volume control. The M9 does not have a music speaker at all. It has a buzzer and the only adjustment is a frequency change. From Beta 76 there is now a louder toggle in sound settings, and this merely increases it to a higher pitch frequency. When toggling it does give a sample sound so adjust it to what suites you best.

High Contrast Display

Viewing the screen when outdoors in the sunlight can be challenging, so from Beta 84 there is now a toggle to enable high contract (HC) mode. It temporarily replaces the custom accent with black/white while HC is active; the saved accent returns when HC is disabled.

The Control Panel sun button still switches between Night and Day. It preserves the High contrast setting, so it switches Night HC <-> Day HC when High contrast is enabled.

  • Open Settings > Display.
  • Under Appearance, select Night or Day.
  • Turn High contrast on.
  • The device restarts to rebuild the complete UI with the selected palette.
20260921 163707

Windows Malware on SD Card

202600921 003536

Some M9s got malware included on their built-in SD cards from the factory, according to this security advisory at https://www.elecrow.com/Thinknode-M9-Security-Advisory-SD-Card-Malware-Risk.html. It only affects Windows computers, and only if you have broken the device open and taken the SD card out to plug it into a Windows computer. Normal USB-C connections are not a problem as the M9 does not expose the SD card to a connected PC.

But WADAMESH Beta 82 and newer now have a store app called SD Scan which will scan for this worm. The screenshot below shows it was found on my M9’s SD card.

20260918 171807

After I clicked through to have the files deleted, I ran the test again and it showed all clear.

20260918 172048

Test and Bug Reports

From Beta 85 you can go to Settings and About, and there is a ‘Send a test report‘ option to give some feedback to say what works on your board. The report carries the board, the version, your ticks and the free memory. No name, no contacts, no position, and the device lists exactly what it will send before it sends it. Your device is identified by a salted hash of its public key, so a second report replaces your first rather than counting twice and nobody reading the page can work back to a node. It needs Wi-Fi. What comes in lands on https://wadamesh.com/beta, and that is what the next stable release gets promoted on, instead of a build being promoted because nobody complained.

If things are working, use that page to tick the functions what you actually have been using, and select how long on that specific beta version, add optional comments, and submit.

wadamesh beta reports

Report a bug on the same page draws a QR code. Scan it with your phone and a GitHub issue form opens with your board, version and diagnostics already filled in, so you only type what went wrong, and it is filed under your own account, so the replies reach you.

20260923 195613

Optional and off by default: Count this device lets the update check say which board and build it is running, so a board nobody has reported on can be told apart from a board nobody owns. Those require opposite responses and nothing could tell them apart before.