2.9 KiB
Meshtastic Firmware Hacks
Prerequisite
-
Download & install PlatformIO
-
git clone https://github.com/meshtastic/firmware.git
-
cd firmware && git submodule update --init
Customization
Custom Boot Logo
-
Use XMB Viewer to convert an image to XMB
-
The data from this goes in
firmware/src/graphics/img/icon.xbm
You can use the provided icon.xbm for a rad GTA:SA fist to show up on boot.
Custom boot message
-
Navigate to
firmware/src/graphics/Screen.cpp
-
Find & replace
const char *title = "meshtastic.org";
with your custom message.
Custom screen color
-
Navigate to
src/graphics/TFTDisplay.cpp
-
Find & replace
#define TFT_MESH COLOR565(0xFF, 0x00, 0x00)
with your custom color. (The one shown here is for RED mode >:))
Custom alert sound (for devices with a buzzer)
- From the mobile app, click the 3 dots on the top right, and select
Radio configuration
- Under
Module configuration
, selectExternal Notification
- Scroll down & you will see a
Ringtone
option that takes RTTTL formatted tones.
As far as I know, at the time of writing this, the only way to change the Ringtone is from the App. While this is not a "firmware" related thing, I included it in this file because it was difficult to find this setting...
Display RAM/PSRAM Usage
Look for these lines:
display->drawString(x, y + FONT_HEIGHT_SMALL * 2, "SSID: " + String(wifiName));
display->drawString(x, y + FONT_HEIGHT_SMALL * 3, "http://meshtastic.local");
And place the follow code AFTER the above lines:
// Display memory usage using the MemGet class
uint32_t freeHeap = ESP.getFreeHeap();
uint32_t totalHeap = ESP.getHeapSize();
uint32_t usedHeap = totalHeap - freeHeap;
display->drawString(x, y + FONT_HEIGHT_SMALL * 4, "Heap: " + String(usedHeap / 1024) + "/" + String(totalHeap / 1024) + " KB");
// Display PSRAM usage using the MemGet class
uint32_t freePsram = ESP.getFreePsram();
uint32_t totalPsram = ESP.getPsramSize();
uint32_t usedPsram = totalPsram - freePsram;
display->drawString(x, y + FONT_HEIGHT_SMALL * 5, "PSRAM: " + String(usedPsram / 1024) + "/" + String(totalPsram / 1024) + " KB");
Heartbeat for redraw
- Uncomment the line that says:
#define SHOW_REDRAWS
This will show a little 1x1 pixel on the top left corner anytime the screen is redraw.
Compile & flash firmware
- Select
PlatformIO: Pick Project Environment
& select your board. - Run
PLatformIO: Build
to compile the firmware. - Place device in DFU mode & plug in to the computer
- Do
PlatformIO: Upload
to send the firmware to the device - Press the RESET button or reboot your device.
See here for more information building & flashing custom firmware.