meshtastic/docs/developers/build.md

3.4 KiB

id title sidebar_label
build-env Creating a build/development environment Building Meshtastic

This project uses the simple PlatformIO build system. PlatformIO is an extension to Microsoft VSCode.

GUI Installation

  1. Install Python.
  2. Install Git or GitHub Desktop
  3. Install Microsoft Visual Studio Code
  4. Install PlatformIO.
  5. Click the PlatformIO icon on the side bar. platformio icon
  6. Under Quick Access, Miscellaneous, Clone Git Project enter the URL of the Meshtastic repo found here. image
  7. Select a file location to save the repo.
  8. Once loaded, open the platformio.ini file.
  9. At the line default_envs you can change it to the board type you are building for ie. tlora-v2, tlora-v1, tlora-v2-1-1.6, tbeam, heltec, tbeam0.7 (boards are listed further down in the file).
  10. The hardware can be configured for different countries by adding a definition to the configuration.h file. #define HW_VERSION_US or HW_VERSION_EU433, HW_VERSION_EU865, HW_VERSION_CN, HW_VERSION_JP. Other country settings can be found in MeshRadio.h. The default is HW_VERSION_US.
  11. Click the PlatformIO icon on the side bar. Under Project Tasks you can now build or upload.

:::note To get a clean build you may have to delete the auto-generated file ./.vscode/c_cpp_properties.json, close and re-open Visual Studio and WAIT until the file is auto-generated before compiling again. :::

Manual Installation on Linux

  1. On a Linux distro (like Ubuntu), ensure you have pre-requisites installed:
sudo apt-get update
sudo apt-get install python3 python3-dev g++ zip
  1. Install PlatformIO (which is usually via wget/curl command).
wget https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -O get-platformio.py
chmod +x get-platformio.py
python3 get-platformio.py
  1. Clone the repo https://github.com/meshtastic/Meshtastic-device

  2. Change into the Meshtastic-device and then download submodules

cd Meshtastic-device
git submodule update --init --recursive

Note: If you get an error like this:

Compiling .pio/build/rak4631_5005/src/plugins/PositionPlugin.cpp.o
src/nrf52/NRF52CryptoEngine.cpp:3:10: fatal error: ocrypto_aes_ctr.h: No such file or directory

then you need to run that submodule command from the main Meshtastic-device directory.

  1. Activate the Platformio python virtual environment
source ~/.platformio/penv/bin/activate
  1. Build everything (optionally just build what you really need by editing platformio.ini)
./bin/build-all.sh
  1. See the newly built bits in release/archive/firmware-1.2.49.XXX.zip (where XXX is the git commit)

Running the Native environment on Linux

(From @caveman99 )

  • linux. flavour doesn't matter. in my case it Centos stream.
  • pio run -e native
  • then cd .pio/build/native
  • gdb program
  • on the gdb prompt, execute "run"
  • if it eventually coredumps it returns to the gdb prompt, then run bt for a backtrace.
  • the actual name of the binary is 'program'