Meshtastic Firmware
 
 
 
 
 
 
Go to file
geeksville d831beab3d moving build selection into platformio.ini rather than nasty #defines. thanks to @sensorslot
for the pointer to https://github.com/arendst/Tasmota - where I just borrowed heavily ;-)
2020-03-27 14:03:58 -07:00
.github/workflows
.vscode moving build selection into platformio.ini rather than nasty #defines. thanks to @sensorslot 2020-03-27 14:03:58 -07:00
bin moving build selection into platformio.ini rather than nasty #defines. thanks to @sensorslot 2020-03-27 14:03:58 -07:00
docs moving build selection into platformio.ini rather than nasty #defines. thanks to @sensorslot 2020-03-27 14:03:58 -07:00
images #17 WIP add tool to capture the system portion of flash 2020-03-17 11:17:58 -07:00
lib Screen cleanups and refactoring 2020-03-18 18:11:35 -07:00
proto@1b2449b50d add support for reporting device errors up through the phone to analytics 2020-03-24 13:33:24 -07:00
release fix #27 - add a device-install.sh script to the release 2020-03-24 14:48:52 -07:00
src moving build selection into platformio.ini rather than nasty #defines. thanks to @sensorslot 2020-03-27 14:03:58 -07:00
.clang-format
.gitignore
.gitmodules
LICENSE
README.md add instructions on how to reinstall 2020-03-24 15:13:28 -07:00
partition-table.csv
platformio.ini moving build selection into platformio.ini rather than nasty #defines. thanks to @sensorslot 2020-03-27 14:03:58 -07:00

README.md

Meshtastic-esp32

This is the device side code for the meshtastic.org project.

Continuous Integration

Meshtastic is a project that lets you use inexpensive GPS mesh radios as an extensible, super long battery life mesh GPS communicator. These radios are great for hiking, skiing, paragliding - essentially any hobby where you don't have reliable internet access. Each member of your private mesh can always see the location and distance of all other members and any text messages sent to your group chat.

The radios automatically create a mesh to forward packets as needed, so everyone in the group can receive messages from even the furthest member. The radios will optionally work with your phone, but no phone is required.

Typical time between recharging the radios should be about eight days.

This project is currently early-alpha, but if you have questions please join our discussion forum.

This software is 100% open source and developed by a group of hobbyist experimenters. No warranty is provided, if you'd like to improve it - we'd love your help. Please post in the chat.

Supported hardware

We currently support three models of radios. The TTGO T-Beam, TTGO LORA32 and the Heltec LoRa 32. Most users should buy the T-Beam and a 18650 battery (total cost less than $35). Make sure to buy the frequency range which is legal for your country. For the USA, you should buy the 915MHz version. Getting a version that include a screen is optional, but highly recommended.

See (meshtastic.org) for 3D printable cases.

Installing the firmware

Prebuilt binaries for the supported radios is available in our releases. Your initial installation has to happen over USB from your Mac, Windows or Linux PC. Once our software is installed, all future software updates happen over bluetooth from your phone.

The instructions currently require a few commmand lines, but it should be pretty straightforward. Please post comments on our group chat if you have problems or successes. Steps to install:

  1. Purchase a radio (see above) with the correct frequencies for your country (915MHz for US or JP, 470MHz for CN, 433MHz and 870MHz for EU).
  2. Install "pip". Pip is the python package manager we use to get the esptool installer app. Instructions here.
  3. Run "pip install --upgrade esptool" to get esptool installed on your machine
  4. Connect your radio to your USB port
  5. Confirm that your device is talking to your PC by running "esptool.py chip_id". The Heltec build also works on the TTGO LORA32 radio. You should see something like:
mydir$ esptool.py chip_id
esptool.py v2.6
Found 2 serial ports
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
MAC: 24:6f:28:b5:36:71
Uploading stub...
Running stub...
Stub running...
Warning: ESP32 has no Chip ID. Reading MAC instead.
MAC: 24:6f:28:b5:36:71
Hard resetting via RTS pin...
  1. cd into the directory where the release zip file was expanded.
  2. Install the correct firmware for your board with "device-install.sh firmware-board-country.bin". For instance "./device-install.sh firmware-HELTEC-US-0.0.3.bin".

Note: If you have previously installed meshtastic, you don't need to run this full script instead just run "esptool.py --baud 921600 write_flash 0x10000 firmware-board-country.bin". This will be faster, also all of your current preferences will be preserved.

You should see something like this:

kevinh@kevin-server:~/development/meshtastic/meshtastic-esp32/release/latest$ ./device-install.sh firmware-TBEAM-US-0.1.8.bin 
Trying to flash firmware-TBEAM-US-0.1.8.bin, but first erasing and writing system information
esptool.py v2.6
Found 2 serial ports
Serial port /dev/ttyUSB0
Connecting........____
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
MAC: 24:6f:28:b2:01:6c
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Erasing flash (this may take a while)...
Chip erase completed successfully in 6.1s
Hard resetting via RTS pin...
esptool.py v2.6
Found 2 serial ports
Serial port /dev/ttyUSB0
Connecting.......
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
MAC: 24:6f:28:b2:01:6c
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0220
Compressed 61440 bytes to 11950...
Wrote 61440 bytes (11950 compressed) at 0x00001000 in 0.2 seconds (effective 3092.4 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
esptool.py v2.6
Found 2 serial ports
Serial port /dev/ttyUSB0
Connecting.....
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
MAC: 24:6f:28:b2:01:6c
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 1223568 bytes to 678412...
Wrote 1223568 bytes (678412 compressed) at 0x00010000 in 10.7 seconds (effective 912.0 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
  1. The board will boot and show the Meshtastic logo.
  2. Please post a comment on our chat so we know if these instructions worked for you ;-). If you find bugs/have-questions post there also - we will be rapidly iterating over the next few weeks.

Meshtastic Android app

The source code for the (optional) Meshtastic Android app is here.

Alpha test builds are current available by opting into our alpha test group. See (www.meshtastic.org) for instructions.

After our rate of change slows a bit, we will make beta builds available here (without needing to join the alphatest group): Download at https://play.google.com/store/apps/details?id=com.geeksville.mesh

Development

We'd love to have you join us on this merry little project. Please see our development documents and join us in our discussion forum.

Credits

This project is run by volunteers. Past contributors include:

  • @astro-arphid: Added support for 433MHz radios in europe.
  • @claesg: Various documentation fixes and 3D print enclosures
  • @girtsf: So far our CI system, but soon lots of device improvements

IMPORTANT DISCLAIMERS AND FAQ

For a listing of currently missing features and a FAQ click here.