Compare commits

...

644 Commits

Author SHA1 Message Date
Kevin Hester
a405d81c46 1.2.43 2021-07-26 10:26:53 -07:00
Kevin Hester
aac3143745 Merge remote-tracking branch 'mine/dev' into dev
# Conflicts:
#	version.properties
2021-07-26 10:14:46 -07:00
Kevin Hester
bb396508a4 Merge pull request #822 from audunf/issue-108
Track recent packets in unordered_set
2021-07-26 04:53:13 +08:00
Kevin Hester
810740b156 Merge branch 'master' into issue-108 2021-07-26 04:31:05 +08:00
Kevin Hester
19ffddb02e Merge pull request #819 from thebentern/patch-1
Convert MQTT server user preference to hostname:port
2021-07-26 04:30:52 +08:00
Kevin Hester
5826c52242 Merge branch 'master' into issue-108 2021-07-26 04:23:33 +08:00
Kevin Hester
a6904105f7 Merge branch 'master' into patch-1 2021-07-26 04:08:08 +08:00
Kevin Hester
da8ab82126 Merge pull request #823 from claesg/master
Fix for reading battery level on RAK-4631
2021-07-26 04:07:00 +08:00
claes
978bb7aa8b Fix for build error on T-Echo 2021-07-25 19:37:00 +02:00
claes
32fea4cbd7 Fix for reading battery level on RAK-4631
Build tested on RAK4631 with battery and their solar panel box.
This is from the log:
17:40:30 102 [Power] Battery: usbPower=0, isCharging=0, batMv=4164, batPct=96
Note that mV reading and Pct is ok.
It does not detect being connected to USB and charging.

Also tested on TBEAM where it seems to be ok.

There still seems to be a problem with the FW for this board that it goes to
sleep for ever after running for a few hours.
2021-07-25 18:25:11 +02:00
claes
6e136b9796 Fix for reading battery level on RAK-4631
Build tested on RAK4631 with battery and their solar panel box.
This is from the log:
17:40:30 102 [Power] Battery: usbPower=0, isCharging=0, batMv=4164, batPct=96
Note that mV reading and Pct is ok.
It does not detect being connected to USB and charging.

Also tested on TBEAM where it seems to be ok.

There still seems to be a problem with the FW for this board that it goes to
sleep for ever after running for a few hours.
2021-07-24 19:47:57 +02:00
Audun Foyen
986d44873a Issue-108. Track recent packets in unordered_set
Check individual packets seen recently for expiry - and purge.
Otherwise - only scan all of recentPackets for expired once
fill > 75% (of MAX_NUM_NODES).
2021-07-20 21:19:35 +02:00
Sacha Weatherstone
2e1746ca0f Merge pull request #820 from meshtastic/sachaw-patch-1
Update README.md
2021-07-09 13:56:15 +10:00
Sacha Weatherstone
863b60277b Update README.md 2021-07-09 13:36:37 +10:00
Ben Meadors
035f25190b Handle MQTT host string with port omitted 2021-07-02 07:47:12 -05:00
Ben Meadors
3ea03dadb5 Convert MQTT server to hostname:port 2021-07-01 16:57:50 -05:00
Kevin Hester
753ae00ddb Merge pull request #818 from geeksville/master
Master
2021-07-01 23:50:57 +08:00
Kevin Hester
2759c8d037 1.2.42 2021-07-01 08:50:12 -07:00
Kevin Hester
301f196bca fix rotation for ttgo t-echo case 2021-07-01 08:49:49 -07:00
Kevin Hester
32f3682fae Merge pull request #816 from geeksville/eink
Eink
2021-06-28 03:52:04 +08:00
Kevin Hester
fc9fc1ee6f 1.2.41 t-echo final build 2021-06-27 12:29:48 -07:00
Kevin Hester
659286f738 WIP new adafruit eink display lib at least starts 2021-06-27 11:41:39 -07:00
Kevin Hester
17a1262382 pull in new epaper lib (which required importing configuration.h everywhere
for dumb reasons)
2021-06-27 10:56:28 -07:00
Kevin Hester
66b96d2052 Remove old epaper library 2021-06-27 09:58:36 -07:00
Kevin Hester
06892c412c 1.2.39 2021-05-29 13:19:27 +08:00
Kevin Hester
5c4d1a88a8 update protos 2021-05-29 13:19:27 +08:00
Kevin Hester
eb9e976fab 1.2.39 2021-05-29 13:19:05 +08:00
Kevin Hester
451b085c13 update protos 2021-05-28 11:01:01 +08:00
Kevin Hester
27dced6a35 Merge pull request #814 from geeksville/dev
remove google play link (for now)
2021-05-28 10:17:29 +08:00
Kevin Hester
3c4f3316c0 remove google play link (for now) 2021-05-28 10:11:58 +08:00
Kevin Hester
2f607d5a8c Merge pull request #812 from geeksville/dev
main Native build on OS-X (probably)
2021-05-26 10:42:31 +08:00
Kevin Hester
42f3154079 store elfs (for later debugging) in github artifacts 2021-05-26 10:21:26 +08:00
Kevin Hester
e7e09cb7ed fix wifistubs to not be on esp32 2021-05-26 10:20:44 +08:00
Kevin Hester
c6092ea520 Merge remote-tracking branch 'root/master' into dev
# Conflicts:
#	bin/build-all.sh
2021-05-26 10:10:57 +08:00
Kevin Hester
29ff778e22 fix #811 nodes rebooting due to invalid printf call, thanks @IZ1IVA
Ouch, this was nasty - printf format string wasn't matching the parameters
passed in causing a NPE due to a missing last param.

I'll investigate why printf format strings were
not being checked by the compiler (normally gcc offers that feature)
2021-05-26 10:00:23 +08:00
Sacha Weatherstone
d80814a12e Merge pull request #813 from michelepagot/master
Add device-install.bat and device-update.bat to the release package
2021-05-26 11:30:03 +10:00
Michele
cfeb0b47e9 Merge branch 'meshtastic:master' into master 2021-05-25 23:06:36 +02:00
michelepagot
6f14d017d8 add both device-install/update.bat to the release package 2021-05-25 22:54:04 +02:00
Kevin Hester
cf4e508fb3 1.2.38 2021-05-25 09:02:26 +08:00
Kevin Hester
96fc1f5272 use long versions for release names 2021-05-25 08:45:47 +08:00
Kevin Hester
5b65fd5754 force new revision names, incase we mess up builds 2021-05-25 08:33:14 +08:00
Kevin Hester
29587d4c4e 1.2.37 fix release script 2021-05-25 08:30:03 +08:00
Kevin Hester
a98bf80c24 fix release script 2021-05-25 08:30:03 +08:00
Kevin Hester
49869ca044 Merge pull request #810 from geeksville/dev
1.2.36
2021-05-25 08:05:11 +08:00
Kevin Hester
54d4fb7d46 1.2.36 2021-05-25 08:04:06 +08:00
Kevin Hester
5699abc8ad Merge remote-tracking branch 'mine/dev' into windev 2021-05-25 05:12:44 +08:00
Kevin Hester
6b56583023 copy windows install scripts into build dir 2021-05-25 11:18:36 +08:00
Kevin Hester
abe95ae1a4 most of the changes needed to build native on Windows 2021-05-25 05:08:57 +08:00
Kevin Hester
4e8e85c9f1 Merge branch 'master' of https://github.com/meshtastic/Meshtastic-device into windev
# Conflicts:
#	geeksville-private/windows-build-instructions.md
#	src/graphics/Screen.h
2021-05-25 03:43:47 +08:00
Kevin Hester
26bb4ffe79 windows build wip 2021-05-25 03:38:06 +08:00
Kevin Hester
c857e5707e Merge pull request #808 from geeksville/dev
fix wifi api bug
2021-05-24 10:01:11 +08:00
Kevin Hester
aaf1570938 Merge remote-tracking branch 'root/master' into dev 2021-05-24 09:43:45 +08:00
Kevin Hester
a8feb40ae9 cleanup 2021-05-24 09:42:25 +08:00
Kevin Hester
be410a3913 Fix #807 TCP API on ESP32. thanks @jfirwin your hint made the problem easy to find! 2021-05-24 09:42:21 +08:00
Kevin Hester
069b0d38be Fix wifi to allow usage with unsecured networks 2021-05-24 09:21:52 +08:00
Kevin Hester
7cae8dc50f Merge pull request #806 from geeksville/dev
back in the saddle
2021-05-23 18:22:30 +08:00
Kevin Hester
70b0a73572 Split native build into a cross-platform target vs a linux only target 2021-05-23 17:57:20 +08:00
Kevin Hester
72d7142751 also check in the gpiod .h file 2021-05-23 17:36:08 +08:00
Kevin Hester
8367b9b159 add gpiod lib prebuilt binaries for linux 2021-05-23 17:25:35 +08:00
Kevin Hester
ad1cbf60b4 Merge remote-tracking branch 'root/master' into dev 2021-05-23 17:05:47 +08:00
Kevin Hester
1c4bf8ac18 Merge pull request #805 from michelepagot/master
.bat porting of install and update scripts
2021-05-23 17:05:20 +08:00
Kevin Hester
13199f13c2 reeneable simulator in CI builds 2021-05-23 17:02:47 +08:00
Kevin Hester
7f2bbcd95e fix debug spam for api calls (possibly corrupting protocol) 2021-05-23 12:07:28 +08:00
Kevin Hester
68cb62ab23 auto probe for pinelora devices 2021-05-23 12:00:54 +08:00
Kevin Hester
5a3ff137f9 Cope with missing portuino hardware 2021-05-23 11:46:57 +08:00
michelepagot
0206e65152 fix device-install.bat about star usage 2021-05-23 02:33:15 +02:00
michelepagot
b16004dcdf .bat porting of install and update scripts 2021-05-23 01:46:31 +02:00
Kevin Hester
844189671f work queue TODO 2021-05-12 09:02:27 +08:00
Kevin Hester
e582615eda Merge pull request #800 from geeksville/pinelora
Pinelora
2021-05-11 10:59:04 +08:00
Kevin Hester
7f51517961 better support for heltec 2021-05-11 09:44:41 +08:00
Kevin Hester
2e832774a2 provide short versions to android 2021-05-09 10:57:12 +08:00
Kevin Hester
7475e3c105 give more margin for heltec no battery voltage 2021-05-09 10:31:42 +08:00
Kevin Hester
80e4bc6289 fix nrf52 build 2021-05-03 15:58:35 +08:00
Kevin Hester
19ee911022 turn off simulator build for now, because (ugh) it is accidentally looking for gpiod hardware 2021-05-03 15:54:26 +08:00
Kevin Hester
cb4d5d580a add gpiod libs 2021-05-03 15:51:33 +08:00
Kevin Hester
7b3d59569e Merge remote-tracking branch 'root/master' into pinelora 2021-05-03 15:46:26 +08:00
Kevin Hester
3bc0aaabe4 disable platformio caching for now 2021-05-03 15:46:13 +08:00
Kevin Hester
2418fee444 Merge pull request #799 from geeksville/pinelora
Pinelora
2021-05-03 15:42:21 +08:00
Kevin Hester
b56c5df6e1 1.2.30 2021-05-03 15:38:14 +08:00
Kevin Hester
bc76c79e1e oops my latest change busted android connection detection 2021-05-03 15:37:37 +08:00
Kevin Hester
d179bda728 serious bug: connection to phones not being properly tracked 2021-05-03 14:46:30 +08:00
Kevin Hester
e60ef655cb fix serious bug! plugin was incorrectly stopping packet processing 2021-05-03 10:53:24 +08:00
Kevin Hester
c15204fed1 better debug output 2021-05-03 10:53:06 +08:00
Kevin Hester
1f2dc82035 don't cache platformio for now 2021-05-03 10:36:44 +08:00
Kevin Hester
218d841511 use short version string on bootscreen 2021-05-03 09:50:06 +08:00
Kevin Hester
f40c6f21d4 fix portduino rtc 2021-05-03 09:30:03 +08:00
Kevin Hester
6dc4471bec fix serious bug! don't send NO-RESPONSE NAKs for messages sent by local node 2021-05-03 08:45:32 +08:00
Kevin Hester
4c1b7d4840 pinelora WIP 2021-05-01 11:27:37 +08:00
Kevin Hester
8ec73e653b apparently regen-docs is removed now ;-) 2021-05-01 11:26:36 +08:00
Kevin Hester
babc1b3613 include file/lineno in critical error logs 2021-04-29 09:52:15 +08:00
Kevin Hester
c27d479a9f t-echo: add hwmodel 2021-04-29 09:51:10 +08:00
Kevin Hester
14224088aa don't checkin workspace files 2021-04-28 15:33:08 +08:00
Kevin Hester
b95baadb9a fix USB power detection for analog battery sensors (t-echo and possibly heltec/t-lora32) 2021-04-28 15:30:02 +08:00
Kevin Hester
c940d22a98 t-echo: enable nrfupload 2021-04-28 15:25:54 +08:00
Kevin Hester
28b7bd347a Fix nrf52 USB (don't call delay() in loop() if connected via usb) 2021-04-28 15:11:55 +08:00
Kevin Hester
a42bb80cf4 pinelora wip 2021-04-28 14:47:29 +08:00
Kevin Hester
2a9b2d3b29 official name for t-echo board 2021-04-27 10:21:54 +08:00
Kevin Hester
9c94a324e5 use real gpios for pinelora 2021-04-27 10:04:02 +08:00
Sacha Weatherstone
f07f3ae94b Merge pull request #798 from kylegordon/patch-1
Fix Development Documents link
2021-04-26 23:22:12 +10:00
Kyle Gordon
b6c2cd6caa Fix Development Documents link 2021-04-26 13:47:21 +01:00
Kevin Hester
a66ad8a9d9 pinelora WIP 2021-04-22 17:48:20 +08:00
Kevin Hester
8e3281a658 pinelora WIP 2021-04-22 14:28:56 +08:00
Kevin Hester
6e27856daa pinelora WIP 2021-04-22 08:49:05 +08:00
Kevin Hester
ce2d603def Merge pull request #796 from geeksville/codespacedev
Codespacedev
2021-04-21 21:14:41 +08:00
Kevin Hester
fa00e21f49 make github codespaces work 2021-04-21 13:13:38 +00:00
Kevin Hester
c4878671e3 add codespace support 2021-04-21 18:00:34 +08:00
Kevin Hester
57ef3b499f look for v1 versions only 2021-04-17 09:28:36 +08:00
Kevin Hester
6c956591f8 disambig github action names 2021-04-16 15:31:53 +08:00
Kevin Hester
640cc82103 1.2.29 get ready for automated releases 2021-04-16 15:29:33 +08:00
Kevin Hester
531600f5ab remove ci setup 2021-04-16 15:05:12 +08:00
Kevin Hester
dc7f715acd make CI create tags 2021-04-16 15:03:38 +08:00
Kevin Hester
b0013e77d1 Merge remote-tracking branch 'root/master' into rak 2021-04-16 14:20:20 +08:00
Kevin Hester
99828d9b73 Don't use caches when making release builds 2021-04-16 14:19:53 +08:00
Kevin Hester
2a40718258 Merge pull request #793 from geeksville/rak
Rak
2021-04-16 14:02:13 +08:00
Kevin Hester
1ceeb1637a ugh - github composite actions are broken 2021-04-16 13:53:26 +08:00
Kevin Hester
ccd87911a6 move shared actions 2021-04-16 13:39:43 +08:00
Kevin Hester
e17374080f Add a release build workflow 2021-04-16 13:37:00 +08:00
Kevin Hester
c5bb62202d keep prebuilds for all commits for 30 days 2021-04-16 12:46:21 +08:00
Kevin Hester
c5e0ca5c02 fix error seen on virgin machines 2021-04-16 12:34:07 +08:00
Kevin Hester
4c75ac31fb Merge remote-tracking branch 'root/master' into rak 2021-04-16 12:24:06 +08:00
Kevin Hester
0a6d88a2d0 add not complete WIP for wizcore4600 2021-04-16 12:23:38 +08:00
Kevin Hester
49c6256270 test adding artifacts 2021-04-16 12:23:09 +08:00
Kevin Hester
68349f88b0 add placeholder index.html to avoid breaking device build (spiffs error) 2021-04-16 12:16:43 +08:00
Kevin Hester
cf2d9d24ac Merge pull request #792 from geeksville/rak
Fix integration test found by CI! verstr field was too short
2021-04-16 12:04:02 +08:00
Kevin Hester
405f7e0caa Fix integration test found by CI! verstr field was too short 2021-04-16 11:51:04 +08:00
Kevin Hester
568032cbc7 add missing module 2021-04-16 11:04:03 +08:00
Kevin Hester
d8bae61e3c more CI tests (there will be a bunch of these nop commits) 2021-04-16 11:01:44 +08:00
Kevin Hester
361556a6a7 use sha in build filenames 2021-04-16 10:59:46 +08:00
Kevin Hester
50f739bacf ci changes 2021-04-16 10:41:54 +08:00
Kevin Hester
35a9c23bb6 Merge remote-tracking branch 'root/master' into rak 2021-04-16 10:36:13 +08:00
Kevin Hester
1b1431f9ad include SHA in version strings 2021-04-16 10:35:10 +08:00
Kevin Hester
9d5d022670 Merge pull request #790 from geeksville/rak
improve github actions
2021-04-16 09:54:12 +08:00
Kevin Hester
c795b70b6c my private TODOs for this project 2021-04-16 09:49:18 +08:00
Kevin Hester
5c06c961b9 Merge remote-tracking branch 'root/master' into rak 2021-04-16 09:48:34 +08:00
Kevin Hester
69fc8a263d Merge pull request #789 from sachaw/master
Remove docs, moved to main repo
2021-04-16 09:44:38 +08:00
Kevin Hester
2ae6a4f46c improve github actions 2021-04-16 09:41:33 +08:00
Sacha Weatherstone
48fe68050b Remove docs, moved to main repo 2021-04-15 17:24:28 +10:00
Kevin Hester
7a86d150a3 Delete CNAME 2021-04-15 14:59:24 +08:00
Kevin Hester
5e85e6b7d2 Create CNAME 2021-04-15 13:21:55 +08:00
Kevin Hester
d22f2501b6 Delete CNAME 2021-04-15 13:19:07 +08:00
Kevin Hester
680eb18015 Create CNAME 2021-04-15 13:16:31 +08:00
Kevin Hester
4e33de780d Delete CNAME 2021-04-15 13:16:23 +08:00
Kevin Hester
89d6046ccc Create CNAME 2021-04-15 13:15:02 +08:00
Kevin Hester
d51b8bbe06 Delete CNAME 2021-04-15 13:11:21 +08:00
Kevin Hester
0d5c5046ee Merge pull request #788 from geeksville/rak
Add beginnings of RAK4600 and update to latest nrf52 arduino sources
2021-04-15 12:31:25 +08:00
Kevin Hester
7d3115bb9b 1.2.28 2021-04-15 12:30:46 +08:00
Kevin Hester
3156bb43c0 Merge remote-tracking branch 'root/master' into rak 2021-04-15 11:46:36 +08:00
Kevin Hester
ec18efbe7e Add beginnings of RAK4600 and update to latest nrf52 arduino sources 2021-04-15 11:45:58 +08:00
Kevin Hester
b517b63be4 Merge pull request #786 from geeksville/rak
Rak mostly finished
2021-04-12 13:46:56 +08:00
Kevin Hester
558571a23e Merge remote-tracking branch 'root/master' into rak 2021-04-12 13:40:38 +08:00
Kevin Hester
f1376406fa Add RAK4631 to build 2021-04-12 13:39:45 +08:00
Kevin Hester
55b38a7b02 RAK4631 is almost feature complete 2021-04-12 13:25:55 +08:00
Kevin Hester
7224782d23 rak4631: gps now works 2021-04-11 15:17:56 +08:00
Kevin Hester
f7d199a3be rak4631: kinda runs 2021-04-11 13:58:48 +08:00
Kevin Hester
bfdc05154b fix redundant segger init 2021-04-11 13:53:18 +08:00
Kevin Hester
f9a58b9dd1 lower brownout threshold to 1.7V 2021-04-11 13:52:39 +08:00
Kevin Hester
328b24537f rak4631: builds but WIP 2021-04-11 13:33:27 +08:00
Kevin Hester
f97f02660e Merge pull request #784 from geeksville/mqtt
mqtt fixes
2021-04-11 10:05:48 +08:00
Kevin Hester
b4396da333 Merge remote-tracking branch 'root/master' into mqtt 2021-04-11 09:57:34 +08:00
Kevin Hester
a43a04986d document peer_info 2021-04-11 09:24:36 +08:00
Kevin Hester
73384c5ac6 mqtt: don't downlink messages from us. 2021-04-11 09:23:34 +08:00
Kevin Hester
bc1726bbdb Merge pull request #783 from geeksville/mqtt
Mqtt
2021-04-10 12:36:03 +08:00
Kevin Hester
6d0a359ecf 1.2.25 2021-04-10 12:35:38 +08:00
Kevin Hester
63a10b9bf8 Merge remote-tracking branch 'root/master' into mqtt 2021-04-10 12:02:05 +08:00
Kevin Hester
992fae77ff Merge pull request #782 from timgunter/more_trivial_updates_to_device_flash_scripts
More trivial updates to device flash scripts
2021-04-10 12:01:56 +08:00
Kevin Hester
a39ba30a70 mqtt: fix downlink check 2021-04-10 11:57:20 +08:00
Kevin Hester
5e87ee338d add is_licensed for ham users 2021-04-10 11:39:13 +08:00
Tim Gunter
ce5d57d250 Allow device-*.sh file to flash to be specified without '-f' 2021-04-09 20:02:25 -07:00
Tim Gunter
bae1d7a894 Default interpreter to "python" if "python3" doesn't exist 2021-04-09 20:01:12 -07:00
Kevin Hester
e71758457b use production mqtt server 2021-04-10 10:55:56 +08:00
Kevin Hester
5dfd387b21 use real MQTT server DNS name 2021-04-09 16:56:28 +08:00
Kevin Hester
50ec03229f Merge pull request #780 from geeksville/mqtt
1.2.23 - fix gpio access
2021-04-06 11:09:03 +08:00
Kevin Hester
4bfbb33a42 1.2.23 2021-04-06 11:00:03 +08:00
Kevin Hester
57bf4073c5 Merge remote-tracking branch 'root/master' into mqtt 2021-04-06 10:58:01 +08:00
Kevin Hester
cbfd80f893 fix #779. Add basic GPIO documentation 2021-04-06 10:56:23 +08:00
Kevin Hester
cec905914c Fix GPIO service and cleanup response handling 2021-04-06 10:34:23 +08:00
Jm Casler
4382caad88 Update RangeTestPlugin.md 2021-04-05 19:25:53 -07:00
Kevin Hester
c0cfd0bb41 remove dead code 2021-04-05 16:27:52 +08:00
Kevin Hester
276526005b run-both should target tbeams 2021-04-05 16:27:44 +08:00
Kevin Hester
4a556099dc Merge pull request #778 from geeksville/mqtt
Add basics of MQTT (disabled by default)
2021-04-05 16:22:19 +08:00
Kevin Hester
7abc3534c4 fix build for !wifi devices 2021-04-05 13:00:56 +08:00
Kevin Hester
65914fad07 Merge remote-tracking branch 'root/master' into mqtt 2021-04-05 12:21:52 +08:00
Kevin Hester
63c976d4f1 update docs 2021-04-05 12:11:07 +08:00
Kevin Hester
7f5ab472b9 mqtt: downlink now works 2021-04-05 09:38:00 +08:00
Kevin Hester
a845406a19 cleanup packet encrypt/descrypt 2021-04-05 09:24:00 +08:00
Kevin Hester
8ef36bcc9c note about security 2021-04-05 08:56:11 +08:00
Kevin Hester
3cd64bb8b5 allow passing even encrypted packets through the plugins 2021-04-05 08:44:47 +08:00
Kevin Hester
50a69d77e6 mqtt: begin subscription support 2021-04-05 08:42:52 +08:00
Kevin Hester
55b8314a2a mqtt: only publish uplink_enabled channels 2021-04-05 07:57:06 +08:00
Kevin Hester
e84edc676f mqtt: automatically start or stop as neede & attempt reconnect 2021-04-05 07:53:07 +08:00
Kevin Hester
d19af8b83d mqtt: send packets after they are encrypted 2021-04-04 09:20:37 +08:00
Kevin Hester
638cec7f25 we now send packets to mqtt server 2021-04-03 22:27:06 +08:00
Kevin Hester
f3f09f0dcf MQTT WIP 2021-04-03 16:06:40 +08:00
Kevin Hester
8890ca759d fix nodeid 2021-04-03 15:04:03 +08:00
Kevin Hester
139da372e7 fix warning 2021-04-03 14:56:46 +08:00
Kevin Hester
dcf64dfacd MQTT at least talks to server, works in native and esp32 2021-04-03 14:54:10 +08:00
Kevin Hester
2acde3333c todo updates 2021-04-03 10:40:56 +08:00
Kevin Hester
75281e8c97 Merge pull request #777 from geeksville/dev1.2
Dev1.2
2021-04-02 13:54:20 +08:00
Kevin Hester
8d47e4f3e0 1.2.20 2021-04-02 13:44:53 +08:00
Kevin Hester
92124e1224 Merge remote-tracking branch 'root/master' into dev1.2 2021-04-02 11:13:01 +08:00
Kevin Hester
c798c0032c add frequency_offset 2021-04-02 09:14:12 +08:00
Kevin Hester
2c5ea03b74 fix VFS creation bug in native. fix heap corruption in Fsm free 2021-04-01 20:32:12 +08:00
Kevin Hester
9d452ebf29 add WIP notes about running github actions locally... 2021-04-01 14:12:02 +08:00
Kevin Hester
8a20155214 simplify build 2021-04-01 14:05:27 +08:00
Kevin Hester
6a872b6ac2 remove unused lib from CI build 2021-04-01 13:46:30 +08:00
Kevin Hester
52d61acc23 Merge pull request #776 from geeksville/dev1.2
Dev1.2
2021-03-31 16:49:45 +08:00
Kevin Hester
2594ea0c2c test fix for CI tool 2021-03-31 16:28:16 +08:00
Kevin Hester
9623be1484 fix CI build script typo 2021-03-31 12:08:48 +08:00
Kevin Hester
d810ce0c1e add more time for sim startup 2021-03-31 11:26:19 +08:00
Kevin Hester
efd39c0f49 someone made a boo-boo adding "serial_disabled", caused a nasty NPE 2021-03-31 11:26:00 +08:00
Kevin Hester
5f45a10db5 fix sign comparsion 2021-03-31 11:14:55 +08:00
Kevin Hester
5f948c09fe update libs to fix CI build, thanks @meehow! 2021-03-31 11:05:43 +08:00
Kevin Hester
22f3efd083 update proto 2021-03-31 09:15:41 +08:00
Kevin Hester
88716fc352 Merge remote-tracking branch 'root/master' into dev1.2 2021-03-31 09:14:43 +08:00
Kevin Hester
5c1d8b5bb0 todo updates 2021-03-31 09:13:41 +08:00
Kevin Hester
b68397a911 fix simradio init to work more like real radios 2021-03-30 23:39:51 +08:00
Kevin Hester
5fdcb72d46 cleanup applyModemConfig based on porduino testing, share with sim 2021-03-30 23:34:13 +08:00
Kevin Hester
b70a359fe8 leave phone timeout off a bit longer 2021-03-30 23:11:56 +08:00
Kevin Hester
a9c8564524 fix millisecond unsigned rollover errors found via portduino 2021-03-30 23:11:33 +08:00
Jm Casler
b527e0d447 Merge pull request #774 from mc-hamster/master
Update of #638 - Redid protobuf generation
2021-03-29 17:34:39 -07:00
Jm
d8669f860a Update fo #638 - Redid protobuf generation 2021-03-29 17:33:37 -07:00
Jm Casler
78f104c6de Merge pull request #773 from mc-hamster/master
Fix for #638 - Add option to disable serial interface
2021-03-29 17:12:21 -07:00
Jm
2f8e663f03 Add serial_disabled for #638 2021-03-29 17:08:56 -07:00
Jm Casler
7f7b07ce9d Merge pull request #82 from meshtastic/master
update from master
2021-03-29 17:04:57 -07:00
Kevin Hester
cdb4756d9d fix native build 2021-03-29 20:56:02 +08:00
Kevin Hester
385e291f51 Merge pull request #771 from geeksville/dev1.2
Dev1.2
2021-03-28 12:24:14 +08:00
Kevin Hester
7e60078791 1.2.17 2021-03-28 12:19:49 +08:00
Kevin Hester
073eecd147 Merge remote-tracking branch 'root/master' into dev1.2 2021-03-28 12:16:50 +08:00
Kevin Hester
525fe9b96c dramatically speed up message RX in some cases (we were sleeping much too long) 2021-03-28 12:16:37 +08:00
Kevin Hester
c7f411fc7c remove unused Preferences code (cc @mc-hamster for review)
(noticed because of a compiler warning)
2021-03-28 12:07:43 +08:00
Kevin Hester
fc96500329 fix unused prefs field 2021-03-28 12:06:16 +08:00
Kevin Hester
4e87c4411c fix serious nak bug reported by @havealoha and @luxoon 2021-03-28 11:44:19 +08:00
Kevin Hester
9eb9c473db add note about credit! 2021-03-28 11:43:28 +08:00
Kevin Hester
bfd147062f Merge pull request #761 from geeksville/dev1.2
Dev1.2
2021-03-27 17:19:50 +08:00
Kevin Hester
890ec7bdb2 doc update 2021-03-27 17:19:15 +08:00
Kevin Hester
76269b397f Merge remote-tracking branch 'root/master' into dev1.2
# Conflicts:
#	src/esp32/main-esp32.cpp
#	src/mesh/generated/deviceonly.pb.h
#	src/mesh/generated/mesh.pb.h
2021-03-27 16:44:42 +08:00
Jm Casler
9fb6b1718f Merge pull request #770 from mc-hamster/master
#669 - Add restart counter
2021-03-27 01:30:28 -07:00
Jm
57c82988e2 #669 - Add restart counter 2021-03-27 01:20:07 -07:00
Kevin Hester
1e3b037fea populate position.time for broadcast positions 2021-03-27 16:17:01 +08:00
Jm Casler
1e7808991d Merge pull request #81 from meshtastic/master
update from master
2021-03-27 01:00:57 -07:00
Jm
4f4cdf4f9e #669 Add restart counter 2021-03-27 01:00:27 -07:00
Kevin Hester
78f2c656d0 fix nrf52 builds 2021-03-27 11:21:43 +08:00
Kevin Hester
37ec969f96 Merge remote-tracking branch 'root/master' into dev1.2
# Conflicts:
#	src/mesh/NodeDB.cpp
2021-03-27 11:10:47 +08:00
Jm Casler
f1a6693bb7 Merge pull request #768 from IZ1IVA/patch-1
Update device-update.sh
2021-03-26 19:54:49 -07:00
Kevin Hester
8ffd5a1d4f add reboot message 2021-03-27 10:19:59 +08:00
IZ1IVA
29eb5e8327 Update device-update.sh
Please have a look at https://github.com/meshtastic/Meshtastic-device/issues/760
2021-03-26 14:49:27 +01:00
Jm Casler
c175c21189 Merge pull request #767 from mc-hamster/master
Fix bad merge
2021-03-25 19:37:15 -07:00
Jm
fc2862bd16 Fix bad merge 2021-03-25 19:36:37 -07:00
Jm Casler
c9f814a9a7 Merge pull request #80 from meshtastic/master
Merge pull request #766 from mc-hamster/master
2021-03-25 19:33:35 -07:00
Jm Casler
92d2d3960b Merge pull request #766 from mc-hamster/master
#758 Report elevation while in range test
2021-03-25 19:32:22 -07:00
Jm Casler
7872cb050d Merge branch 'master' into master 2021-03-25 19:32:13 -07:00
Jm
89029311c1 Update NodeDB.cpp 2021-03-25 19:28:15 -07:00
Jm
f6f586decb Remove my code that doesn't work with channels 2021-03-25 19:27:46 -07:00
Jm
471c06b169 #758 Report elevation while in range test 2021-03-25 19:25:20 -07:00
Jm
040bb1d1e0 Add a "Development Mode" for our plugins 2021-03-25 19:24:36 -07:00
Jm
bbaf5946f0 Update StoreForwardPlugin.cpp 2021-03-25 19:22:46 -07:00
Jm Casler
5286f23c9a Merge pull request #764 from meehow/android-captive-portal
captive portal for Android devices
2021-03-25 19:10:10 -07:00
Kevin Hester
7e9e33d462 fix has_gps reporting to phones 2021-03-26 09:30:33 +08:00
Kevin Hester
04225f7bc2 change! time of last packet rx in node->last_heard instead of node->position.time 2021-03-26 09:30:15 +08:00
Kevin Hester
dd0f1b2704 Merge remote-tracking branch 'root/master' into dev1.2 2021-03-26 08:57:47 +08:00
Kevin Hester
669807524e Merge pull request #763 from IZ1IVA/patch-6
Update device-install.sh
2021-03-26 08:54:03 +08:00
Michał Adamski
97a5405293 captive portal for Android devices 2021-03-25 21:49:06 +01:00
IZ1IVA
f298c7d053 Update device-install.sh
Please have a look at https://github.com/meshtastic/Meshtastic-device/issues/760
2021-03-25 10:43:25 +01:00
Kevin Hester
a59f5344de Merge remote-tracking branch 'root/master' into dev1.2 2021-03-25 09:18:44 +08:00
Kevin Hester
13cfce48fa cleanly disable bluetooth while serial API is in use (and only then) 2021-03-25 08:54:43 +08:00
Kevin Hester
0261c243e0 PhoneAPIs shouldn't register for messages until they have clients 2021-03-25 07:51:54 +08:00
Kevin Hester
ab325d6d2c Merge branch 'dev1.2' of https://github.com/geeksville/Meshtastic-esp32 into dev1.2 2021-03-25 06:15:36 +08:00
Kevin Hester
b20930c111 move streamapi into a thread, saves power and increases responsiveness 2021-03-25 06:15:15 +08:00
Kevin Hester
770788d0a4 Merge pull request #759 from geeksville/dev1.2
update altitude in nodedb for received altitudes (reported by @iz1kga)
2021-03-24 19:25:48 +08:00
Kevin Hester
d02f615cad Merge branch 'master' into dev1.2 2021-03-24 19:25:40 +08:00
Kevin Hester
e17fe7e075 update altitude in nodedb for received altitudes (reported by @iz1kga) 2021-03-24 19:24:33 +08:00
Kevin Hester
286686137f Merge pull request #757 from geeksville/dev1.2
getting ready for 1.2.13
2021-03-24 13:34:57 +08:00
Kevin Hester
77c1112fe8 Merge remote-tracking branch 'root/master' into dev1.2 2021-03-24 13:28:21 +08:00
Kevin Hester
2d4ba357f7 Merge pull request #755 from vfurman-gh/master
Push RSSI to the phone
2021-03-24 13:28:01 +08:00
Kevin Hester
455d0f8d66 1.2.13 2021-03-24 13:27:18 +08:00
Kevin Hester
5b0e7c6e82 fix has_preferences init 2021-03-24 13:25:21 +08:00
Kevin Hester
78c665abb9 properly discard messages with fromradio queue is full (Rather than blocking forever) 2021-03-24 13:25:10 +08:00
Kevin Hester
9a86d52d00 Merge remote-tracking branch 'root/master' into dev1.2 2021-03-24 12:01:38 +08:00
Kevin Hester
c5973f9a55 @mc-hamster it is VERY important to not accidentally turn this in in master
;-)
2021-03-24 11:41:14 +08:00
Kevin Hester
eb684aac03 tested OTA is_router 2021-03-23 14:54:56 +08:00
Kevin Hester
7b4f8fb6d6 Fix firmware OTA update while is_router 2021-03-23 14:44:50 +08:00
Vadim Furman
8065dbb2b7 Merge remote-tracking branch 'origin/master' 2021-03-22 21:40:30 -07:00
Vadim Furman
049e791382 Updated proto 2021-03-22 21:36:24 -07:00
Kevin Hester
4fb8552563 Merge pull request #756 from geeksville/dev1.2
Dev1.2
2021-03-23 12:18:56 +08:00
Kevin Hester
90576f44d8 Merge remote-tracking branch 'root/master' into dev1.2
# Conflicts:
#	proto
2021-03-23 12:17:46 +08:00
Kevin Hester
9e0a2964a4 move channel docs into git 2021-03-23 12:16:23 +08:00
Kevin Hester
49b16fdf0c fix channel !authorized check 2021-03-23 12:07:04 +08:00
Kevin Hester
1fcec8ce3b always fix up channel list, even if we just did factory reset 2021-03-23 11:54:53 +08:00
Kevin Hester
d32386a027 Return errors for unauthorized requests or out of bound channel nums 2021-03-23 11:44:51 +08:00
Vadim Furman
9b57d28c7d Merge remote-tracking branch 'origin/master' 2021-03-22 19:41:23 -07:00
Vadim Furman
b9fd726c14 Push RSSI to the phone 2021-03-22 19:39:49 -07:00
Kevin Hester
f165418b18 Merge pull request #751 from timgunter/set_device_install_python
Add option to set python interpreter used for device-install.sh scripts
2021-03-22 10:48:07 +08:00
Jm Casler
e193f63687 Update StoreForwardPlugin.cpp 2021-03-21 19:46:02 -07:00
Jm Casler
1eb37dded8 partial work for S&F 2021-03-21 19:45:35 -07:00
Tim Gunter
13889124c1 Add option to set python interpreter used for device-install.sh and device-update.sh 2021-03-21 18:29:20 -07:00
Jm Casler
9005aaa14e Merge pull request #750 from mc-hamster/master
Update nightly build script
2021-03-21 10:00:39 -07:00
Jm Casler
df4e325e43 Merge branch 'master' of https://github.com/mc-hamster/Meshtastic-device 2021-03-21 09:42:57 -07:00
Jm Casler
4ebc07b691 Update nightly build to use the same release build archive for the nightly 2021-03-21 09:42:55 -07:00
Jm Casler
79a8d023ca Merge pull request #744 from mc-hamster/master
Update serial plugin, update range test doc and add support for tlora 1.3
2021-03-21 07:54:13 -07:00
Jm Casler
330d83e7c3 Merge pull request #78 from meshtastic/master
Update from head
2021-03-21 07:51:45 -07:00
Jm Casler
a74384f3f5 Update airtime.h to add override 2021-03-21 07:44:08 -07:00
Jm Casler
da732c291f Update build-all for tlora_v1_3 2021-03-21 07:43:55 -07:00
Kevin Hester
648d9dd19f Merge pull request #749 from geeksville/dev1.2
Dev1.2
2021-03-21 18:59:30 +08:00
Kevin Hester
e9faf657df move GPS_RX_PIN for the TLORA_V2_1_16 from 36 to 15 2021-03-21 18:58:43 +08:00
Jm Casler
103ffde025 Fixes for build of tlora_v1_3 2021-03-20 20:47:48 -07:00
Jm Casler
baeb002245 Fix small bug in range test plugin.
packetSequence was an unsigned int but i was using %d. oops
2021-03-20 00:38:53 -07:00
Jm
0ce7a3f0ec Update to how S&F reserves space on PSRAM 2021-03-19 23:43:06 -07:00
Jm Casler
0befad82a7 Merge branch 'master' into master 2021-03-19 23:38:42 -07:00
Jm
b357d8ae5b Update RangeTestPlugin.md 2021-03-19 23:35:46 -07:00
Jm
dd9beff9a5 Script to publish nightly builds. 2021-03-19 23:34:36 -07:00
Kevin Hester
d652664126 TODO updates 2021-03-20 13:35:27 +08:00
Kevin Hester
4666c12547 change android-too-old webpage to be less scary 2021-03-20 13:13:39 +08:00
Kevin Hester
2b74260e2b only show time on OLED if we have a valid UTC clock 2021-03-20 10:22:06 +08:00
Kevin Hester
620d336e55 Merge pull request #747 from vfurman-gh/master
Removed SX1262_USE_DIO3_FOR_TCXO
2021-03-20 10:01:42 +08:00
Kevin Hester
e845a3388b Merge branch 'master' into master 2021-03-20 10:01:35 +08:00
Vadim Furman
a25235dc03 Merge remote-tracking branch 'origin/master' 2021-03-19 18:50:30 -07:00
Vadim Furman
d3cbc8ea78 WIRE_INTERFACES_COUNT -> NO_WIRE 2021-03-19 18:46:11 -07:00
Vadim Furman
b6e197371d Removed SX1262_USE_DIO3_FOR_TCXO 2021-03-19 18:30:00 -07:00
Kevin Hester
5cc3ff16a3 Merge pull request #740 from vfurman-gh/master
Port to isp4520-based board
2021-03-20 09:01:06 +08:00
Vadim Furman
d93d5d2e37 Revert clock update for Net quality clocks 2021-03-19 17:21:08 -07:00
Vadim Furman
7491af8ad7 Merge remote-tracking branch 'origin/master' 2021-03-19 17:07:16 -07:00
Kevin Hester
fce95431e6 Merge pull request #746 from geeksville/dev1.2
fixing bugs for the sat release
2021-03-19 23:47:12 +08:00
Kevin Hester
591a07c0fe 1.2.11 2021-03-19 23:41:28 +08:00
Kevin Hester
c410f2d151 fix tlora 1.6 build 2021-03-19 23:40:41 +08:00
Kevin Hester
9502fa62e6 todo updates 2021-03-19 23:40:24 +08:00
Kevin Hester
2a6480ec48 update release test scripts 2021-03-19 23:40:04 +08:00
Kevin Hester
7c5ab885be geeksville todo 2021-03-19 15:24:24 +08:00
Kevin Hester
21cfb151a8 specify clang for c++ formatting conventions 2021-03-19 15:24:05 +08:00
Kevin Hester
84505b1717 Merge remote-tracking branch 'root/master' into portduino 2021-03-19 15:22:56 +08:00
Kevin Hester
d735e3006e Merge pull request #745 from geeksville/portduino
add CI integration test using meshtastic-native
2021-03-18 19:59:27 +08:00
Kevin Hester
af5d82dbde Merge remote-tracking branch 'root/master' into portduino 2021-03-18 19:49:13 +08:00
Kevin Hester
a97072eca0 add first integration test for CI 2021-03-18 19:48:06 +08:00
Kevin Hester
cef6e248e7 add newline 2021-03-18 19:40:00 +08:00
Kevin Hester
b4c379f5fc add sim exit cmd 2021-03-18 19:09:31 +08:00
Jm
3bb1206b9c Update RangeTestPlugin.md 2021-03-17 22:47:19 -07:00
Jm
002532401d #743 - Stub out for "mode 10" - NMEA string. 2021-03-17 21:52:30 -07:00
Jm Casler
8957c5892f Merge pull request #77 from meshtastic/master
update from head
2021-03-17 21:08:50 -07:00
Jm
1b8f41d353 Partial work on s&f 2021-03-17 21:03:11 -07:00
Vadim Furman
0c51cc3738 Fix hardware model 2021-03-17 10:56:45 -07:00
Vadim Furman
2b9a8f0822 Merge remote-tracking branch 'origin/master' 2021-03-17 10:49:04 -07:00
Vadim Furman
ddcfff3b59 Fixed compilation on nrf52 and brownout code 2021-03-17 10:44:42 -07:00
Kevin Hester
449a3959b0 Merge pull request #742 from geeksville/portduino
wifi now works on portduino
2021-03-17 20:43:47 +08:00
Kevin Hester
719a0c485b Merge remote-tracking branch 'root/master' into portduino 2021-03-17 20:30:41 +08:00
Kevin Hester
a4bbdc443f Merge pull request #739 from geeksville/dev
Dev
2021-03-17 20:30:25 +08:00
Kevin Hester
999afdf05e wifi now works on portduino 2021-03-17 20:29:27 +08:00
Kevin Hester
f492f6deb6 progress on Wifi in portduino 2021-03-15 19:59:31 +08:00
Kevin Hester
60f7ec8998 setup for intellij 2021-03-15 13:55:08 +08:00
Kevin Hester
469d0ade72 remove old intellij defs 2021-03-15 13:49:21 +08:00
Kevin Hester
1f33b03c30 turn off broken genieblocks_lora build 2021-03-15 13:43:22 +08:00
Kevin Hester
351be2f327 change portduino so it has a higher chance of building on OS-X and windows 2021-03-15 13:09:52 +08:00
Kevin Hester
3f401e8cac Merge branch 'dev' into portduino
# Conflicts:
#	.vscode/settings.json
2021-03-15 12:09:07 +08:00
Vadim Furman
b20b21c553 pitches.h no more 2021-03-14 20:46:58 -07:00
Vadim Furman
c62863b1dc Merge from origin 2021-03-14 19:42:57 -07:00
Vadim Furman
8505a0f260 Chargeing... 2021-03-14 19:17:28 -07:00
Vadim Furman
98d878cdfe Port to lora_isp4520 board 2021-03-14 19:00:20 -07:00
Jm Casler
6730731652 Merge pull request #76 from meshtastic/master
Update from head
2021-03-14 11:32:38 -07:00
Kevin Hester
27c35f69aa Fix flash flippy-flop error after commandline update (thanks @Stephen304) 2021-03-14 12:41:31 +08:00
Kevin Hester
53671283ae change hw_model_deprecated to intentionally break old apps 2021-03-14 10:57:26 +08:00
Kevin Hester
d9fc7b32c3 move hw_model into User 2021-03-14 10:48:20 +08:00
Kevin Hester
9a03536e3d Use enums for hw_model per @sachaw idea. 2021-03-14 10:37:32 +08:00
Kevin Hester
efebb8bb0b remove country from rom support 2021-03-14 10:13:28 +08:00
Kevin Hester
3bd1ae0be4 Merge remote-tracking branch 'root/master' into dev 2021-03-13 14:11:31 +08:00
Kevin Hester
a07291d904 cleanup external notification plugin 2021-03-13 13:32:23 +08:00
Kevin Hester
c0ac457cad lockdown plugins that touch hardware 2021-03-13 13:14:27 +08:00
Kevin Hester
6813a31895 fix hop limit defaults for android 2021-03-13 09:27:44 +08:00
Kevin Hester
8f5251583f Merge pull request #738 from geeksville/eink
Eink
2021-03-13 09:00:57 +08:00
Kevin Hester
c2122a6859 Merge remote-tracking branch 'root/master' into eink 2021-03-13 08:55:06 +08:00
Kevin Hester
6dd65adebd 1.2.10 2021-03-13 08:54:02 +08:00
Kevin Hester
c227143b53 @mc-hamster, I think storeandforward was accidentally wrong (no worries though) 2021-03-13 08:41:50 +08:00
Kevin Hester
cdd696c1ff todo updates 2021-03-13 08:30:07 +08:00
Kevin Hester
3e6817cd18 fix board reboot due to forwarding packets we don't have keys for 2021-03-13 08:29:58 +08:00
Kevin Hester
a5ed607261 fix memory corruption in storeandforward 2021-03-13 08:29:32 +08:00
Kevin Hester
7118200885 Merge pull request #737 from geeksville/eink
Eink
2021-03-12 20:47:48 +08:00
Kevin Hester
b7f9064f0d turn off linux on CI for now 2021-03-12 20:42:22 +08:00
Kevin Hester
5dc5bce1b2 cleanup memtest 2021-03-12 20:41:18 +08:00
Kevin Hester
bc7fef1d1a 1.2.9 2021-03-12 20:22:45 +08:00
Kevin Hester
1908d131ca turn on access control for admin plugin, only allow remote access over special channel 2021-03-12 20:22:40 +08:00
Kevin Hester
8cd2a00a25 fix nasty bug 2021-03-12 15:47:00 +08:00
Kevin Hester
c097852ab0 SERIOUS BUG: we've been discarding devicestate when we should not 2021-03-12 15:45:28 +08:00
Kevin Hester
b02212009a progress on remote settings 2021-03-12 14:10:36 +08:00
Kevin Hester
9d1971f0fa Merge remote-tracking branch 'root/master' into eink 2021-03-11 18:54:08 +08:00
Kevin Hester
2d6261703a fix null pointer exception in storeandforwardplugin. if null the vtable is busted
cc @mc-hamster.  In some cases storeForwardPluginRadio can be null ;-)

~/development/meshtastic/meshtastic-esp32$ bin/exception_decoder.py -e .pio/build/tbeam/firmware.elf ex
stack:
0x401db467: StoreForwardPluginRadio::sendPayload(unsigned int, bool) at /home/kevinh/development/meshtastic/meshtastic-esp32/src/plugins/esp32/StoreForwardPlugin.cpp:235
0x400e7cbd: StoreForwardPlugin::runOnce() at /home/kevinh/development/meshtastic/meshtastic-esp32/src/plugins/esp32/StoreForwardPlugin.cpp:225
0x400d4cca: concurrency::OSThread::run() at /home/kevinh/development/meshtastic/meshtastic-esp32/src/concurrency/OSThread.cpp:45
0x400f015d: ThreadController::runOrDelay() at /home/kevinh/development/meshtastic/meshtastic-esp32/.pio/libdeps/tbeam/Thread/ThreadController.cpp:153
0x400da070: loop() at /home/kevinh/development/meshtastic/meshtastic-esp32/src/main.cpp:621
0x400ff709: loopTask(void*) at /home/kevinh/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:19

Signed-off-by: Kevin Hester <kevinh@geeksville.com>
2021-03-11 18:53:17 +08:00
Kevin Hester
a97c2ae6eb minimize radioconfig file writes 2021-03-11 18:29:47 +08:00
Kevin Hester
76e2c39c63 completed moving prefs to new files 2021-03-11 17:54:16 +08:00
Kevin Hester
ab9fe42f58 wip - move channels 2021-03-11 13:02:00 +08:00
Jm Casler
9d78ce6193 Merge pull request #75 from meshtastic/master
update from head
2021-03-10 19:29:08 -08:00
Kevin Hester
959b540c02 begin restricting admin ops to the admin channel 2021-03-11 10:01:57 +08:00
Kevin Hester
68781492ad don't block on segger console 2021-03-11 10:00:08 +08:00
Kevin Hester
590e147186 todo updates 2021-03-11 09:59:54 +08:00
Kevin Hester
0b358674ff Merge pull request #736 from geeksville/eink
Eink
2021-03-10 15:59:32 +08:00
Kevin Hester
0df01f2586 Merge remote-tracking branch 'root/master' into eink 2021-03-10 15:30:51 +08:00
Kevin Hester
ca23665463 Merge pull request #735 from meshtastic/sachaw-patch-1
Update main.yml
2021-03-10 15:30:40 +08:00
Kevin Hester
f55ac8e9c9 turn off (buggy) custom_fields in tinygps, and used fixed version of lib 2021-03-10 15:29:25 +08:00
Kevin Hester
6e37fe6343 turn radio back on 2021-03-10 15:24:00 +08:00
Kevin Hester
217bd934d7 fix GPS fixme wrt deletion 2021-03-10 15:21:54 +08:00
Kevin Hester
58715f454c add consolePrintf for C style code 2021-03-10 15:21:30 +08:00
Kevin Hester
772f2a15ff check more error codes 2021-03-09 16:45:40 +08:00
Kevin Hester
5b0d8381b9 fxi log formatting 2021-03-09 15:07:26 +08:00
Kevin Hester
d841d86bbc brownout detect 2021-03-09 15:07:16 +08:00
Kevin Hester
ecaae87b79 make screen optional 2021-03-09 15:07:02 +08:00
Kevin Hester
5835abbcf6 fix eink leds 2021-03-09 15:06:28 +08:00
Sacha Weatherstone
2f7c2a2aea Update main.yml 2021-03-09 16:16:41 +11:00
Kevin Hester
87ec7b09aa add crude check for brownout 2021-03-08 18:12:21 +08:00
Kevin Hester
f8ec072093 make debug console stall until host has downloaded 2021-03-08 17:10:48 +08:00
Kevin Hester
781d2f0ad6 fix warnings 2021-03-08 17:09:35 +08:00
Kevin Hester
7bbd2c0e80 make textmessageplugin optional 2021-03-08 15:30:08 +08:00
Jm Casler
77bac11d82 Merge pull request #74 from meshtastic/master
Update from head
2021-03-07 23:25:52 -08:00
Jm Casler
315cfe4f2d Merge branch 'master' into master 2021-03-07 23:25:43 -08:00
Kevin Hester
707ed75138 fix warnings found in nrf52 build 2021-03-08 15:20:43 +08:00
Kevin Hester
c0e180759d improve debugging on cortex m 2021-03-08 15:20:29 +08:00
Kevin Hester
6ceb423033 TODO update 2021-03-08 12:03:04 +08:00
Kevin Hester
96c4286e7d Merge pull request #733 from geeksville/dev1.2
1.2.6
2021-03-07 10:00:00 +08:00
Kevin Hester
f320ecbde8 1.2.6 2021-03-07 09:51:51 +08:00
Kevin Hester
d014ae0bff fix ls_sleeps communication to device clients 2021-03-07 09:51:17 +08:00
Kevin Hester
12a7934ca1 add RU 2021-03-07 09:34:35 +08:00
Kevin Hester
64bc791e48 fix docs 2021-03-07 09:34:29 +08:00
Kevin Hester
1f33506962 Add RU region 2021-03-06 21:10:36 +08:00
Kevin Hester
ba9a94d026 fix is_low_power detection 2021-03-06 18:00:20 +08:00
Kevin Hester
6f13966d19 fix missing acks for broadcasts 2021-03-06 17:48:35 +08:00
Kevin Hester
96cfad4e57 less logspam 2021-03-06 14:52:26 +08:00
Kevin Hester
a26ebb1b69 Merge pull request #732 from geeksville/dev1.2
Dev1.2 - fix lora message rx
2021-03-06 14:31:59 +08:00
Kevin Hester
7a764efc10 1.2.5 2021-03-06 14:30:53 +08:00
Kevin Hester
49b1f4c5af oops - fix failed text message rx 2021-03-06 14:21:20 +08:00
Kevin Hester
fbe56531d2 Merge remote-tracking branch 'root/master' into dev1.2 2021-03-06 11:20:08 +08:00
Kevin Hester
aa6b29a4b5 fix from address on naks 2021-03-06 11:19:52 +08:00
Kevin Hester
c88b9732eb REALLY IMPORTANT: fix bug with retransmissions not happening 2021-03-06 11:13:33 +08:00
Kevin Hester
2c29e8b179 make nodeinfo & position plugins optional 2021-03-06 10:36:30 +08:00
Kevin Hester
d2d6b8e12f fix log formatting 2021-03-06 10:27:48 +08:00
Kevin Hester
badfaa8545 make error message clearer for packets that are too big 2021-03-06 10:27:31 +08:00
Kevin Hester
c5b67d821d Merge pull request #730 from geeksville/dev1.2
1.2.4
2021-03-05 13:46:18 +08:00
Kevin Hester
63bf7a29f3 Merge branch 'master' into dev1.2 2021-03-05 13:46:10 +08:00
Kevin Hester
845dd1f9e3 1.2.4 2021-03-05 12:39:39 +08:00
Kevin Hester
c9c44a934d don't generate acks for locally sourced msgs 2021-03-05 12:39:31 +08:00
Kevin Hester
2f6981a27f Merge pull request #729 from geeksville/dev1.2
important fixes for 1.2
2021-03-05 12:07:27 +08:00
Kevin Hester
8739469db3 oops typo 2021-03-05 11:49:37 +08:00
Kevin Hester
0c0c0babba combine acks works 2021-03-05 11:44:45 +08:00
Kevin Hester
950b32232f don't send messages the phone sent us back towards the phone 2021-03-05 10:19:27 +08:00
Kevin Hester
2f6034b067 update todos 2021-03-04 22:10:09 +08:00
Kevin Hester
159f7622e4 Merge pull request #724 from crossan007/improvements_to_env_plugin
Improvements to Environmental Measurement Plugin
2021-03-04 22:00:25 +08:00
Kevin Hester
2cc2fa906a Merge branch 'master' into improvements_to_env_plugin 2021-03-04 20:06:27 +08:00
Kevin Hester
249390a75e Merge pull request #727 from geeksville/dev1.2
Dev1.2
2021-03-04 11:41:44 +08:00
Kevin Hester
189cf7ea5e Merge remote-tracking branch 'root/master' into dev1.2 2021-03-04 11:32:34 +08:00
Kevin Hester
56fe211466 1.2.1 2021-03-04 11:29:55 +08:00
Kevin Hester
955d03acb1 fix symbol conflict with new nrf52 libs 2021-03-04 11:28:50 +08:00
Charles Crossan
1b71a0f436 refactor ENV to single multi-inheritance class with cleaner user preferences
Fix merge issues

don't log when drawing blank frames

remove useless logging

re-comment stuff

fix comment

unused var
2021-03-03 20:30:20 -05:00
Charles Crossan
2af9e1431e Improvements to EnvironmentalMeasurementPlugin
Instead of holding onto only the last measurement, hold onto a copy of the last MeshPacket containing a measurement

This will make it easier to display the last time received

make DHT sensor reads more reliable

user preference for Farenheit vs Celsius
2021-03-03 08:23:03 -05:00
Jm
ee961d01ed Merge remote-tracking branch 'origin/master' 2021-03-02 20:50:13 -08:00
Jm Casler
a3343bc1af Revert "Merge pull request #73 from meshtastic/master"
This reverts commit ee04d57a7f.
2021-03-02 20:48:34 -08:00
Jm Casler
ee04d57a7f Merge pull request #73 from meshtastic/master
pulling 1.2 into my fork
2021-03-02 20:46:21 -08:00
Kevin Hester
076251e6a8 todo cleanup 2021-03-03 11:49:09 +08:00
Kevin Hester
fdb3cee3f2 Merge pull request #725 from geeksville/dev1.2
release to devs
2021-03-03 11:47:17 +08:00
Kevin Hester
92e05bc438 release to devs 2021-03-03 11:46:09 +08:00
Kevin Hester
69de2a047f Merge pull request #706 from geeksville/dev1.2
merging 1.2 soon!
2021-03-03 11:23:40 +08:00
Kevin Hester
05c458225f Merge remote-tracking branch 'root/master' into dev1.2 2021-03-02 15:46:16 +08:00
Kevin Hester
866125f2ab fix release script for universal builds 2021-03-02 15:37:56 +08:00
Kevin Hester
d0263e4fa3 Merge branch 'dev' into dev1.2 2021-03-02 15:16:28 +08:00
Kevin Hester
e884ace0ab show build name 2021-03-02 15:16:22 +08:00
Kevin Hester
2ac4106004 add play store link 2021-03-02 12:53:23 +08:00
Kevin Hester
59a63e4aea Merge pull request #721 from geeksville/dev
add (editable) android warning landing page
2021-03-02 12:47:19 +08:00
Kevin Hester
fbdf1f19f0 add (editable) android warning landing page 2021-03-02 12:46:19 +08:00
Kevin Hester
082101f99f wire compat 2021-03-02 12:44:48 +08:00
Kevin Hester
f6761d637f proto update 2021-03-02 11:46:00 +08:00
Jm
2cf704abe0 Crashes after 7 seconds. 2021-02-28 19:35:00 -08:00
Kevin Hester
ef612d0b58 Merge remote-tracking branch 'root/master' into dev1.2
# Conflicts:
#	src/plugins/Plugins.cpp
#	version.properties
2021-03-01 10:26:16 +08:00
Kevin Hester
43673c0598 Merge pull request #719 from geeksville/dev
1.1.50
2021-03-01 09:21:42 +08:00
Kevin Hester
9b45749bf0 1.1.50 2021-03-01 08:33:01 +08:00
Jm Casler
f22243a209 Merge pull request #716 from apt105/master
Add files via upload
2021-02-28 12:30:18 -08:00
Jm
ef32ac5cd4 Update rangetest docs with api example 2021-02-28 11:55:54 -08:00
Jm Casler
52d85c9a41 Partial work from laptop -- non-routers can send a heartbeat 2021-02-27 22:34:53 -08:00
Kevin Hester
a51c08bfb1 todo updated 2021-02-27 14:42:07 +08:00
Kevin Hester
fb47c3a03d move channel and settings protos 2021-02-27 13:17:18 +08:00
Adrian
3b8f5ea099 Add files via upload 2021-02-27 02:01:51 +00:00
Kevin Hester
63e0b53054 1 index channel index 2021-02-27 09:17:58 +08:00
Kevin Hester
989f52494d clean up ack packets 2021-02-26 20:36:22 +08:00
Kevin Hester
0307e4161e get settings message works 2021-02-26 20:10:41 +08:00
Kevin Hester
c7c8b34adf impl get channels/get radio remote api 2021-02-26 15:34:00 +08:00
Jm Casler
1faf6c99db Merge pull request #712 from mc-hamster/master
Update how airtime report gathers data, update stable storeandforward build code
2021-02-25 08:25:42 -08:00
Jm
5f041ea7e9 Update Plugins.cpp 2021-02-25 08:14:07 -08:00
Jm Casler
14271be816 Rename src/plugins/StoreForwardPlugin.h to src/plugins/esp32/StoreForwardPlugin.h 2021-02-25 08:12:57 -08:00
Jm Casler
30d600040b Rename src/plugins/StoreForwardPlugin.cpp to src/plugins/esp32/StoreForwardPlugin.cpp 2021-02-25 08:12:30 -08:00
Jm Casler
10dd2337fc Merge branch 'master' into master 2021-02-25 08:04:41 -08:00
Kevin Hester
5ae4edf8fd move admin out of core proto 2021-02-25 20:36:37 +08:00
Kevin Hester
d3df6d3749 Merge pull request #711 from geeksville/dev
fixes for 1.1.49
2021-02-25 20:04:05 +08:00
Kevin Hester
8ba43e1745 merge latest from master 2021-02-25 20:02:32 +08:00
Kevin Hester
cedd87001d Merge branch 'dev' into dev1.2 2021-02-25 19:49:50 +08:00
Kevin Hester
afc901ddbe fix build. platformio isn't smart enough to git pull latest without
specifying a tag/commit/etc (I haven't tried specifying a branch?)

Without specifying the hash, the build breaks for anyone who already had
a repo (the CI build doesn't see this because it always pulls from scratch)

cc @crossan007 & @mc-hamster
2021-02-25 19:49:34 +08:00
Kevin Hester
e4eb7ab589 Merge branch 'dev' into dev1.2
# Conflicts:
#	proto
#	src/mesh/generated/deviceonly.pb.h
#	src/mesh/generated/mesh.pb.h
#	src/plugins/esp32/EnvironmentalMeasurementPlugin.cpp
2021-02-25 19:44:08 +08:00
Kevin Hester
b052928af2 Merge remote-tracking branch 'root/master' into dev 2021-02-25 19:33:06 +08:00
Kevin Hester
a3b1c4608e Merge pull request #713 from Eninspace/patch-2
Update README.md
2021-02-25 18:28:05 +08:00
Niko
204c42234c Update README.md
Added line break
2021-02-25 13:12:47 +03:00
Jm Casler
0fe046b92d Merge pull request #72 from meshtastic/master
Update from head
2021-02-24 20:27:58 -08:00
Jm
fd6842cb5b Partial Work, stable build. 2021-02-24 20:27:21 -08:00
Jm Casler
4f40128bbe Merge pull request #705 from crossan007/AddEnvironmentMessage
Changes to Environmental Measurement App
2021-02-24 20:26:44 -08:00
Jm Casler
3d4580c03e Merge branch 'master' into AddEnvironmentMessage 2021-02-24 20:20:23 -08:00
Kevin Hester
66638655a5 Merge branch 'dev' into dev1.2
# Conflicts:
#	src/mesh/NodeDB.cpp
2021-02-25 08:56:36 +08:00
Kevin Hester
2d214df76f Merge remote-tracking branch 'root/master' into dev 2021-02-25 08:52:26 +08:00
Kevin Hester
8f1cd33d14 Merge pull request #709 from Eninspace/patch-1
Update README.md
2021-02-25 08:51:47 +08:00
Kevin Hester
b2c47a7dea fix #710. nodes disappearing from map. thanks @DylanHoen for noticing! 2021-02-25 08:50:46 +08:00
Niko
5f3f62ed46 Update README.md
Added Russian community group link
2021-02-24 13:45:21 +03:00
Charles Crossan
bfdad7d4d5 Merge branch 'master' into AddEnvironmentMessage 2021-02-23 20:23:13 -05:00
Kevin Hester
577336d2df oh well - github actions defeated me 2021-02-23 17:16:12 +08:00
Kevin Hester
245638a1d4 get more parallism in CI build 2021-02-23 17:07:38 +08:00
Kevin Hester
ada05a1374 fix linux 2021-02-23 16:56:28 +08:00
Kevin Hester
4b07f9e160 todo update 2021-02-23 14:45:02 +08:00
Kevin Hester
f8d8dc25c0 properly route messages to phone again 2021-02-23 14:35:34 +08:00
Jm
256ba8fa1b partial work, untested 2021-02-22 20:07:19 -08:00
Kevin Hester
aa8b86c6b2 multichannel send/rx kinda works 2021-02-23 11:43:30 +08:00
Kevin Hester
ae6b7e7259 multichannel code is done! (only basic testing completed though) 2021-02-23 10:45:03 +08:00
Kevin Hester
2761c85564 clean up the crypto api 2021-02-23 10:10:35 +08:00
Charles Crossan
ec41c11e58 initialize the last measurement values to something obviously "unread" 2021-02-22 21:00:41 -05:00
Charles Crossan
3a91da5e52 remove UI render comment log spam 2021-02-22 21:00:05 -05:00
Charles Crossan
690b843678 add missing newline 2021-02-22 20:52:10 -05:00
Charles Crossan
3f1ada29ac support independently enabling/disabling the on-device screen and actual measurement 2021-02-22 20:47:35 -05:00
Charles Crossan
0c9df6ccbd disable the app by default 2021-02-22 20:33:42 -05:00
Charles Crossan
b62b01fe7c consume the additional details from OLEDDisplayUiState to handle transitions to/from plugin screens better
It's still a bit janky, but should work

https://github.com/meshtastic/esp8266-oled-ssd1306/pull/2
2021-02-22 20:18:36 -05:00
Charles Crossan
efaf669479 update Environmental Measurement plugin to use radio config prefs 2021-02-22 19:50:51 -05:00
Kevin Hester
94cd96cfde begin multichannel hash impl 2021-02-22 12:57:26 +08:00
Kevin Hester
923ecc9d8a fix printf warnings 2021-02-22 12:57:03 +08:00
Jm Casler
d5cb7ebf3b check in partial work. 2021-02-21 20:15:31 -08:00
Kevin Hester
d6c2e9063a 1.2 channel cleanup 2021-02-22 11:16:38 +08:00
Kevin Hester
3088fe3f91 Stay up-to-date wrt master (cc @mc-hamster)
# Conflicts:
#	src/plugins/Plugins.cpp
#	src/plugins/RangeTestPlugin.cpp
#	src/plugins/StoreForwardPlugin.cpp
2021-02-22 10:39:46 +08:00
Kevin Hester
d4781280b7 update protos 2021-02-22 10:29:27 +08:00
Kevin Hester
008187caa4 1.2 wip - psk work 2021-02-22 10:26:11 +08:00
Charles Crossan
6dffaae72e fix typo 2021-02-21 16:49:35 -05:00
Charles Crossan
ae76ce4024 Implement interface for plugins to have custom UI Frames 2021-02-21 16:46:46 -05:00
Charles Crossan
087945d7cb udpate protobufs 2021-02-21 12:05:23 -05:00
Charles Crossan
fc72d16bcb Disable the plugin by default 2021-02-21 11:48:32 -05:00
Charles Crossan
5817afd4ac fix port number for ENVIRONMENTAL_MEASUREMENT_APP 2021-02-21 11:42:03 -05:00
Charles Crossan
765a6fcc62 Display received measurements in logs and on screen 2021-02-21 11:39:45 -05:00
Charles Crossan
0b20c46b79 standardize log line beginnings 2021-02-21 11:39:20 -05:00
Jm Casler
c6864417c6 Merge pull request #646 from crossan007/AddEnvironmentMessage
Add Environmental Measurement Plugin
2021-02-21 08:31:13 -08:00
Charles Crossan
27f74382aa Fix CI build for non-esp32 devices 2021-02-21 11:09:58 -05:00
Charles Crossan
77961e8e93 Un-derp testing details 2021-02-21 11:00:58 -05:00
Charles Crossan
3c564796e0 2021-02-21 10:55:33 -05:00
Jm
a4e5c7224f Add sawNodeReport to storeforwardplugin 2021-02-20 23:53:53 -08:00
Jm
7ffe601743 Changes to how airtime noise is gathered. 2021-02-20 23:53:17 -08:00
Kevin Hester
c6091338ab admin ops 2021-02-21 14:03:44 +08:00
Kevin Hester
99467cd874 1.2 WIP at least doesn't crash 2021-02-21 12:59:47 +08:00
Kevin Hester
587102f6bc fix android lint warning 2021-02-21 11:36:34 +08:00
Jm Casler
f41d79d586 Merge pull request #703 from mc-hamster/master
#701, #697 - Bug fix and update to debug output.
2021-02-20 00:53:07 -08:00
Jm Casler
fc5030ff7b Merge branch 'master' into master 2021-02-20 00:46:03 -08:00
Jm
ca40cb4be3 Update RangeTestPlugin.cpp 2021-02-20 00:43:56 -08:00
Jm
e4141df0e9 #697 GPIO 12 is an odd pin. 2021-02-20 00:34:25 -08:00
Jm
c690f81574 #697 Disable internal pullup on this board. 2021-02-19 18:19:14 -08:00
Jm
47b942ca00 #697 - Fixed button selection for tlora v2 1.6 2021-02-19 17:46:15 -08:00
Jm
621313d63c #701 - Add system up time to debug output 2021-02-19 16:58:52 -08:00
Jm Casler
d361935c09 Merge pull request #699 from crossan007/fix-exception-decoder
Fix exception decoder output
2021-02-19 16:46:46 -08:00
Charles Crossan
a2bea87332 Fix exception decoder output 2021-02-19 19:24:18 -05:00
Jm
13b8c140b4 Update StoreForwardPlugin.md 2021-02-18 21:47:16 -08:00
Kevin Hester
69a11e7375 WIP phone api changes for dev1.2 2021-02-17 19:04:41 +08:00
Kevin Hester
60a01567d9 remove region specific builds 2021-02-17 19:01:20 +08:00
Kevin Hester
f064e56dc9 fix esp32 build for dev1.2 2021-02-17 16:17:46 +08:00
Kevin Hester
42ae27973e WIP 1.2 move routing into plugin 2021-02-17 13:06:23 +08:00
Jm Casler
f6e2695a4d Merge pull request #695 from mc-hamster/master
Range test plugin done-enough
2021-02-16 18:54:42 -08:00
Jm
e840465ef3 fix for failed builds on nrf and linux 2021-02-16 18:46:16 -08:00
Jm Casler
f24e8e5f5c Rename src/plugins/RangeTestPlugin.h to src/plugins/esp32/RangeTestPlugin.h 2021-02-16 18:36:58 -08:00
Jm Casler
6376ab51f1 Moving to plugins/esp32 2021-02-16 18:36:30 -08:00
Jm Casler
bd29d78a29 Update StoreForwardPlugin.md 2021-02-16 18:24:37 -08:00
Jm Casler
b35cd76854 Update StoreForwardPlugin.md 2021-02-16 18:19:24 -08:00
Kevin Hester
205282c4bc show hwvendor at boot 2021-02-17 10:08:33 +08:00
Jm
a4fd74b58e Update Plugins.cpp 2021-02-16 18:07:02 -08:00
Jm Casler
25072f0637 Merge branch 'master' into master 2021-02-16 17:44:17 -08:00
Jm
937955b36d Updating range test and storeforward. 2021-02-16 17:42:46 -08:00
Jm
2e8867eda6 Merge branch 'master' of https://github.com/mc-hamster/Meshtastic-device 2021-02-16 17:42:25 -08:00
Jm Casler
bd399a134b Merge pull request #693 from geoffreyheller/tlora-v2116-tx-pin-fix
Fix for non-working tx pin
2021-02-16 12:31:09 -08:00
Kevin Hester
45caf394f0 WIP multichannel support 2021-02-16 15:41:52 +08:00
Jm Casler
d67e2187d0 Update RangeTestPlugin.md 2021-02-15 21:17:06 -08:00
geoffreyheller
c8584d576a Fix for non-working tx pin 2021-02-15 19:33:35 -08:00
Jm Casler
418a12e75f Merge pull request #692 from crossan007/add_set_channel
add handleSetChannel
2021-02-15 18:49:29 -08:00
Charles Crossan
05d237ee84 add handleSetChannel 2021-02-15 21:02:30 -05:00
Jm
9a044f31a3 Tweak to the startup condition of the range test plugin. 2021-02-15 09:11:28 -08:00
Jm
8320754b98 Added recommended settings as a sender 2021-02-14 21:45:26 -08:00
Jm
703ce2e292 Keep device from sleeping while transmitting in range test plugin. 2021-02-14 21:34:47 -08:00
Jm
c9353ebee3 Update RangeTestPlugin.md 2021-02-14 21:24:41 -08:00
Jm Casler
9601868e0f Merge pull request #71 from mc-hamster/RangeTestPlugin
Merge pull request #69 from mc-hamster/master
2021-02-14 20:18:41 -08:00
Jm
fea2228b16 Update RangeTestPlugin.md 2021-02-14 20:17:16 -08:00
Jm
7d4ce483c5 Update RangeTestPlugin.md 2021-02-14 20:16:29 -08:00
Jm
e6605e5ac8 Store Forward can see All(?) rx packets! 2021-02-14 20:13:52 -08:00
Jm Casler
2472d6fd1b Merge pull request #70 from meshtastic/master
pull from main
2021-02-14 18:40:38 -08:00
Jm
3311146aba Turning storeforward back on for @geeksville 2021-02-14 16:19:06 -08:00
Jm Casler
793528b057 Merge pull request #69 from mc-hamster/master
#671 Range test plugin
2021-02-14 16:18:36 -08:00
Jm
b8adaf6fbe #671 Range test plugin 2021-02-14 16:17:40 -08:00
Jm
24329a26de Framework for storeforward 2021-02-14 14:01:08 -08:00
Jm
f1a65f9d0e Update to store and forward. Don't merge this to main! 2021-02-14 13:31:11 -08:00
Jm
ae46b3df32 Update StoreForwardPlugin.md 2021-02-14 11:10:56 -08:00
Jm
d5c1e3c6e0 Update StoreForwardPlugin.md 2021-02-14 11:00:11 -08:00
Jm
a95f612452 Update StoreForwardPlugin.md 2021-02-14 10:56:08 -08:00
Jm Casler
3201d1c3bc #668 Partial work for store & forward 2021-02-14 08:44:49 -08:00
Kevin Hester
2b10a03178 Merge pull request #690 from geeksville/dev
oops - 1.1.47 had bad bug
2021-02-14 15:26:00 +08:00
Kevin Hester
80fb7e4ab8 Merge remote-tracking branch 'root/master' into dev 2021-02-14 15:15:28 +08:00
Kevin Hester
7c1ddd9447 1.1.48 2021-02-14 15:13:58 +08:00
Kevin Hester
c55074f7fe oops: we should crash if we >MAX_THREADS, also raise max threads 2021-02-14 15:06:49 +08:00
Jm Casler
36643cf5f5 #671 range test plugin documentation
#671 range test plugin documentation
2021-02-13 22:40:04 -08:00
Jm Casler
92a62d93ef #671 Rangetest - This just needs to be tested. 2021-02-13 22:21:01 -08:00
Kevin Hester
450e877cfb fix #661 - create $archivedir 2021-02-14 14:14:50 +08:00
Kevin Hester
c0fbfccf43 Merge pull request #689 from geeksville/dev
Dev
2021-02-14 13:48:39 +08:00
Kevin Hester
51ccc3aa9e 1.1.47 2021-02-14 12:28:27 +08:00
Kevin Hester
e35f137986 clean up nodeinfo broadcasts and move into plugin 2021-02-14 12:27:10 +08:00
Kevin Hester
71c35304d6 delay position plugin start until 60 secs after first boot 2021-02-14 12:26:51 +08:00
Kevin Hester
c1733a4ac6 Merge remote-tracking branch 'root/master' into dev 2021-02-14 12:07:11 +08:00
Kevin Hester
66a7e8eab9 oops - we were never sending 'fixed' gps positions to other nodes 2021-02-14 12:02:24 +08:00
Kevin Hester
a872231f8a clean up position broadcasts, send them even if we don't have gps lock 2021-02-14 11:57:48 +08:00
Kevin Hester
52ec4d511c oops - we weren't properly stripping timestamps from new style positions 2021-02-14 11:37:32 +08:00
Jm Casler
aa7fb86798 Merge pull request #687 from sachaw/master
Fix report formatting
2021-02-13 14:02:12 -08:00
Sacha Weatherstone
875eeb699c Fix report formatting 2021-02-13 19:51:31 +11:00
Jm Casler
b239b4dc57 Merge pull request #686 from mc-hamster/master
Finished and partial work
2021-02-12 19:07:13 -08:00
Jm
19db5ba421 Merge branch 'master' of https://github.com/mc-hamster/Meshtastic-device 2021-02-12 18:53:08 -08:00
Jm
e225af28dc Disable plugins 2021-02-12 18:52:31 -08:00
Jm Casler
eecf89a9c0 Merge pull request #68 from meshtastic/master
from main to my fork
2021-02-12 18:49:39 -08:00
Jm
c9b1ee532d Update deviceonly.pb.h 2021-02-12 18:49:24 -08:00
Jm
8c27baae84 Update platformio.ini 2021-02-12 18:48:18 -08:00
Kevin Hester
8c225a3c65 disable lora while updating, show "Updating" on oled screen 2021-02-12 13:48:12 +08:00
Kevin Hester
da03490310 Merge branch 'dev' into portduino 2021-02-10 16:20:29 +08:00
Kevin Hester
aedca25fa8 Merge branch 'dev' into portduino 2021-02-10 15:51:34 +08:00
Jm
b29bcbbd41 #682 Exposing the actual radio center frequency to /static/report 2021-02-09 21:59:00 -08:00
Jm
ca8a0ca8d2 update rangetest 2021-02-07 19:20:29 -08:00
Jm
cb541d75a9 Update radio-settings.md with note of coverage. 2021-02-07 13:19:52 -08:00
Jm Casler
4ee01acb40 Change where the location information is taken from. 2021-02-07 09:31:29 -08:00
Jm
d678c48884 work on rangetestplugin and storeforwardplugin
done for the night.
2021-02-06 23:29:18 -08:00
Jm
9f9f02fc6f Reverting platform.ini back to the way it was. 2021-02-06 21:38:54 -08:00
Jm Casler
abf135abce Merge pull request #66 from meshtastic/master
mc-hamster/meshtastic-device <- meshtastic/meshtastic-device
2021-02-06 19:56:44 -08:00
Kevin Hester
c25efac0c1 portduino wip 2021-02-07 09:17:46 +08:00
Jm
22af1b551a Add note about antenna gain. 2021-02-06 10:06:20 -08:00
Jm
c696d226b2 Merge branch 'master' of https://github.com/mc-hamster/Meshtastic-device 2021-02-06 10:04:13 -08:00
Jm
9035a06b4a Add link budget to radio-settings.md 2021-02-06 10:02:23 -08:00
Jm Casler
056940a4ad Documentation 2021-02-06 09:13:49 -08:00
Jm
82db1f1db6 Merge branch 'master' of https://github.com/mc-hamster/Meshtastic-device 2021-02-03 08:10:15 -08:00
Jm
f46059ec4c update to range test plugin 2021-02-03 08:10:13 -08:00
Jm
0c71de4e59 Update for rangetest plugin 2021-02-03 08:09:59 -08:00
Jm Casler
0fa654e53a update radio-settings.md 2021-02-03 07:01:35 -08:00
Jm Casler
45c17659cc radio-settings.md - add note about TCXO stability 2021-02-03 01:04:23 -08:00
Jm Casler
b901f8d9ae Update to radio-settings.md 2021-02-03 00:15:41 -08:00
Jm Casler
9c60a7966f Update radio-settings.md 2021-02-03 00:01:52 -08:00
Jm Casler
6d66a53f8d Another update to radio-settings.md 2021-02-02 23:59:34 -08:00
Jm Casler
324627482a Update radio-settings.md 2021-02-02 23:57:25 -08:00
Jm Casler
0c6c189028 Update to radio-settings.md 2021-02-02 23:01:05 -08:00
Jm Casler
8a68ae0d04 Update radio-settings.md 2021-02-02 22:47:16 -08:00
Jm Casler
5661e5dad6 Update radio-settings.md 2021-02-02 22:43:24 -08:00
Jm
e9affb50d2 #674 add support for lora32 v1.3 2021-02-02 17:34:50 -08:00
Jm Casler
c00173dbd2 partial work 2021-01-31 18:20:08 -08:00
Jm Casler
e8c6fccd63 #671 Range Test Plugin
Initial work for Range Test Plugin
2021-01-31 09:12:36 -08:00
Jm Casler
487b8c6e9e #668 Initial work for Store & Forward Plugin 2021-01-31 09:12:01 -08:00
Jm
b2481d1450 Merge branch 'master' of https://github.com/mc-hamster/Meshtastic-device 2021-01-30 19:42:08 -08:00
Jm
242bcc8353 Update documentation location to the main mesthastic repo 2021-01-30 09:52:21 -08:00
287 changed files with 10501 additions and 61353 deletions

11
.devcontainer/Dockerfile Normal file
View File

@@ -0,0 +1,11 @@
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.162.0/containers/ubuntu/.devcontainer/base.Dockerfile
# [Choice] Ubuntu version: bionic, focal
ARG VARIANT="focal"
FROM mcr.microsoft.com/vscode/devcontainers/base:0-${VARIANT}
# [Optional] Uncomment this section to install additional OS packages.
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install python3-distutils python3-pip
RUN pip3 install platformio meshtastic adafruit-nrfutil
RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v3.15.8/protoc-3.15.8-linux-x86_64.zip -O /tmp/protoc.zip && cd /tmp && unzip protoc.zip && chmod a+x bin/protoc && cp bin/protoc /usr/local/bin

View File

@@ -0,0 +1,32 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.162.0/containers/ubuntu
{
"name": "Ubuntu",
"build": {
"dockerfile": "Dockerfile",
// Update 'VARIANT' to pick an Ubuntu version: focal, bionic
"args": { "VARIANT": "focal" }
},
// Set *default* container specific settings.json values on container create.
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"platformio.platformio-ide",
"xaver.clang-format"
],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "uname -a",
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode",
"postCreateCommand": "git submodule update --init"
}

39
.github/actions/initbuild/action.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
name: 'Common init'
# WARNING due to https://github.com/actions/runner/issues/646
# this code can't work - must copy and paste into workflows for now because 'uses' is not supported
runs:
using: "composite"
steps:
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: 3.x
- name: Cache python libs
uses: actions/cache@v1
id: cache-pip # needed in if test
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip
- name: Upgrade python tools
# We actually want to run this every time
# if: steps.cache-pip.outputs.cache-hit != 'true'
run: |
python -m pip install --upgrade pip
pip install -U platformio meshtastic adafruit-nrfutil
# Don't cache for now because I want to be lazy with portuino updates githashes
# - name: Cache platformio
# uses: actions/cache@v1
# id: cache-platformio # needed in if test
# with:
# path: ~/.platformio
# key: ${{ runner.os }}-platformio
- name: Upgrade platformio
run: |
pio upgrade

View File

@@ -7,7 +7,7 @@
is appreciated." This will allow other devs to potentially save you time by not accidentially duplicating work etc...
- Please do not check in files that don't have real changes
- Please do not reformat lines that you didn't have to change the code on
- We recommend using the [Visual Studio Code](https://platformio.org/install/ide?install=vscode) editor,
- We recommend using the [Visual Studio Code](https://platformio.org/install/ide?install=vscode) editor and the 'clang-format' extension,
because automatically follows our indentation rules and it's auto reformatting will not cause spurious changes to lines.
- If your PR fixes a bug, mention "fixes #bugnum" somewhere in your pull request description.
- If your other co-developers have comments on your PR please tweak as needed.

View File

@@ -1,36 +1,93 @@
name: Continuous Integration
on:
- push
- pull_request
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
main:
name: Main
# setup:
# runs-on: ubuntu-latest
# steps:
# - name: Startup
# run: echo "No action setup currently needed, skipping..."
ci-build:
# needs: setup
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Checkout submodules
uses: textbook/git-checkout-submodule-action@master
- name: Setup Python
uses: actions/setup-python@master
with:
python-version: 3.x
- name: Install Platform IO
run: |
python -m pip install --upgrade pip
pip install -U platformio
- name: Install extra python tools
run: |
pip install -U adafruit-nrfutil
- name: Install libs needed for linux build
run: |
sudo apt install -y libpsocksxx-dev
- name: Build for tbeam
run: platformio run -e tbeam
- name: Build for heltec
run: platformio run -e heltec
- name: Build for lora-relay-v1
run: platformio run -e lora-relay-v1
- name: Build for linux
run: platformio run -e linux
- name: Checkout code
uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: 3.x
- name: Cache python libs
uses: actions/cache@v1
id: cache-pip # needed in if test
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip
#- name: Install linux apt packages
# run: |
# sudo apt-get install -y libgpiod-dev
- name: Upgrade python tools
# We actually want to run this every time
# if: steps.cache-pip.outputs.cache-hit != 'true'
run: |
python -m pip install --upgrade pip
pip install -U platformio meshtastic adafruit-nrfutil
# - name: Cache platformio
# uses: actions/cache@v1
# id: cache-platformio # needed in if test
# with:
# path: ~/.platformio
# key: ${{ runner.os }}-platformio
- name: Upgrade platformio
run: |
pio upgrade
# We now run integration test before other build steps (to quickly see runtime failures)
- name: Build for native
run: platformio run -e native
- name: Integration test
run: |
.pio/build/native/program &
sleep 20 # 5 seconds was not enough
echo "Simulator started, launching python test..."
python3 -c 'from meshtastic.test import testSimulator; testSimulator()'
# - name: Build for tbeam
# run: platformio run -e tbeam
# - name: Build for heltec
# run: platformio run -e heltec
# - name: Build for wisblock RAK4631
# run: platformio run -e rak4631
- name: Build everything
run: bin/build-all.sh
- name: Store binaries as an artifact
uses: actions/upload-artifact@v2
with:
name: built
path: release/archive/firmware-*.zip
retention-days: 30
- name: Store debugging elf files as an artifact
uses: actions/upload-artifact@v2
with:
name: debug-elfs
path: release/archive/elfs-*.zip
retention-days: 7

90
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,90 @@
name: Make Release
on:
# Can optionally take parameters from the github UI, more info here https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/#:~:text=You%20can%20now%20create%20workflows,the%20workflow%20is%20run%20on.
# workflow_dispatch:
# inputs:
# Only want to be run if a new tag starting with v is pushed.
push:
branches:
- "!*"
tags:
- "v1*"
jobs:
release-build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
submodules: 'recursive'
# get github branch and tag names as ${{ steps.branch_name.outputs.SOURCE_TAG }}
- name: Branch name
id: branch_name
run: |
echo ::set-output name=SOURCE_NAME::${GITHUB_REF#refs/*/}
echo ::set-output name=SOURCE_BRANCH::${GITHUB_REF#refs/heads/}
echo ::set-output name=SOURCE_TAG::${GITHUB_REF#refs/tags/}
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: 3.x
# Note: we don't use caches on release builds because we don't want to accidentally not have a virgin build machine
- name: Upgrade python tools
# We actually want to run this every time
# if: steps.cache-pip.outputs.cache-hit != 'true'
run: |
python -m pip install --upgrade pip
pip install -U platformio meshtastic adafruit-nrfutil
- name: Upgrade platformio
run: |
pio upgrade
# Will be available in steps.version.outputs.version
- name: Get version string
run: echo "::set-output name=version::$(./bin/buildinfo.py long)"
id: version
- name: Build everything
run: bin/build-all.sh
- name: Create release
uses: actions/create-release@v1
id: create_release
with:
draft: true
prerelease: true
release_name: ${{ steps.version.outputs.version }} alpha
tag_name: ${{ steps.branch_name.outputs.SOURCE_TAG }}
# was ${{ github.ref }}
body: |
Autogenerated by github action, developer should edit as required before publishing...
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Add bins to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: release/archive/firmware-${{ steps.version.outputs.version }}.zip
asset_name: firmware-${{ steps.version.outputs.version }}.zip
asset_content_type: application/zip
- name: Add debug elfs to release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: release/archive/elfs-${{ steps.version.outputs.version }}.zip
asset_name: debug-elfs-${{ steps.version.outputs.version }}.zip
asset_content_type: application/zip

6
.gitignore vendored
View File

@@ -9,13 +9,17 @@ main/credentials.h
!.vscode/extensions.json
*.code-workspace
.idea/workspace.xml
.DS_Store
Thumbs.db
.autotools
.built
.context
.cproject
.idea/*
.vagrant
nanopb*
flash.uf2
cmake-build*
__pycache__

7
.idea/codeStyles/Project.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<clangFormatSettings>
<option name="ENABLED" value="true" />
</clangFormatSettings>
</code_scheme>
</component>

5
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View File

@@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

2
.idea/meshtastic-esp32.iml generated Normal file
View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<module classpath="CMake" type="CPP_MODULE" version="4" />

4
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
</project>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/meshtastic-esp32.iml" filepath="$PROJECT_DIR$/.idea/meshtastic-esp32.iml" />
</modules>
</component>
</project>

9
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
<mapping directory="$PROJECT_DIR$/design" vcs="Git" />
<mapping directory="$PROJECT_DIR$/proto" vcs="Git" />
<mapping directory="$PROJECT_DIR$/sdk-nrfxlib" vcs="Git" />
</component>
</project>

View File

@@ -2,6 +2,7 @@
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"platformio.platformio-ide"
"platformio.platformio-ide",
"xaver.clang-format"
]
}

11
.vscode/settings.json vendored
View File

@@ -68,5 +68,14 @@
"protobufs",
"wifi"
],
"C_Cpp.dimInactiveRegions": true
"C_Cpp.dimInactiveRegions": true,
"cmake.configureOnOpen": true,
"protoc": {
"compile_on_save": false,
"compile_all_path": "/home/kevinh/development/meshtastic/meshtastic-esp32/proto",
"options": [
"--java_out=/tmp",
"-I=/home/kevinh/development/meshtastic/meshtastic-esp32/proto"
]
}
}

36
CMakeLists.txt Normal file
View File

@@ -0,0 +1,36 @@
# !!! WARNING !!! AUTO-GENERATED FILE, PLEASE DO NOT MODIFY IT AND USE
# https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags
#
# If you need to override existing CMake configuration or add extra,
# please create `CMakeListsUser.txt` in the root of project.
# The `CMakeListsUser.txt` will not be overwritten by PlatformIO.
cmake_minimum_required(VERSION 3.13)
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_C_COMPILER_WORKS 1)
set(CMAKE_CXX_COMPILER_WORKS 1)
project("meshtastic-esp32" C CXX)
include(CMakeListsPrivate.txt)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/CMakeListsUser.txt)
include(CMakeListsUser.txt)
endif()
include_directories("$ENV{HOME}/.platformio/packages/framework-portduino")
include_directories("/usr/include")
add_custom_target(
Production ALL
COMMAND platformio -c clion run "$<$<NOT:$<CONFIG:All>>:-e${CMAKE_BUILD_TYPE}>"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_custom_target(
Debug ALL
COMMAND platformio -c clion run --target debug "$<$<NOT:$<CONFIG:All>>:-e${CMAKE_BUILD_TYPE}>"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_executable(Z_DUMMY_TARGET ${SRC_LIST})

2041
CMakeListsPrivate.txt Normal file

File diff suppressed because it is too large Load Diff

214
README.md
View File

@@ -1,213 +1,5 @@
# Meshtastic-device
[![Open in Visual Studio Code](https://open.vscode.dev/badges/open-in-vscode.svg)](https://open.vscode.dev/meshtastic/Meshtastic-device)
## This repository contains the device firmware used in the [Meshtastic](https://meshtastic.org) project.
This is the device side code for the [meshtastic.org](https://www.meshtastic.org) project.
![Continuous Integration](https://github.com/meshtastic/Meshtastic-esp32/workflows/Continuous%20Integration/badge.svg)
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 is currently in beta-testing - if you have questions please [join our discussion forum](https://meshtastic.discourse.group/).
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.
- TTGO T-Beam (usually the recommended choice)
- [T-Beam V1.1 w/ NEO-6M - special Meshtastic version](https://www.aliexpress.com/item/4001178678568.html) (Includes built-in OLED display and they have **preinstalled** the meshtastic software)
- [T-Beam V1.1 w/ NEO-M8N](https://www.aliexpress.com/item/33047631119.html) (slightly better GPS)
- [T-Beam V1.1 w/ NEO-M8N /w SX1262](https://www.aliexpress.com/item/4001287221970.html) (slightly better GPS + LoRa)
- board labels "TTGO T22_V1.1 20191212"
- [T-Beam V0.7 w/ NEO-6M](https://www.aliexpress.com/item/4000574335430.html) (will work but **you must use the tbeam0.7 firmware ** - but the T-Beam V1.0 or later are better!)
- board labels "TTGO T22_V07 20180711"
- 3D printable cases
- [T-Beam V0](https://www.thingiverse.com/thing:3773717) (GPS and LoRa antenna misaligned if GPS placed as pictured)
- [T-Beam V1 (SMA-antenna)](https://www.thingiverse.com/thing:3830711)
- [T-Beam V1 (SMA-antenna)](https://www.thingiverse.com/thing:4677388) (Mounting option for larger GPS antenna but LoRa antenna enclosed)
- [T-Beam V1 (IPEX-antenna)](https://www.thingiverse.com/thing:4587297) (GPS and LoRa antenna misaligned if GPS placed as pictured)
- [T-Beam V1 (IPEX-antenna)](https://www.thingiverse.com/thing:4589651)
- [T-Beam V1 (IPEX-antenna)](https://www.thingiverse.com/thing:4619981) (GPS and LoRa antenna misaligned if GPS placed as pictured)
- Laser-cut cases
- [T-Beam V1 (SMA-antenna)](https://www.thingiverse.com/thing:4552771)
- [TTGO LORA32](https://www.aliexpress.com/item/4000211331316.html) - No GPS
- version 2.1
- board labels "TTGO T3_V1.6 20180606"
- 3D printable case
- [TTGO LORA32 v1](https://www.thingiverse.com/thing:3385109)
- [Heltec LoRa 32](https://heltec.org/project/wifi-lora-32/) - No GPS
- [Official Heltec case](https://www.aliexpress.com/item/4001050707951.html)
- [3D Printable case](https://www.thingiverse.com/thing:3125854)
Note: The GPS and LoRa stock antennas should be placed in a way, that the GPS antenna faces the sky and the LoRa antenna radiates 360 degrees horizontally. For better GPS reception you might want to [upgrade the GPS antenna](https://meshtastic.discourse.group/t/the-importance-of-gps-antennas-and-request-to-3d-case-documentation-people/1505) and to properly align the antennas you might want to upgrade to a LoRa antenna that can be adjusted to radiate into the right directions.
**Make sure to get the frequency for your country**
- US/JP/AU/NZ/CA - 915MHz
- CN - 470MHz
- EU - 868MHz, 433MHz
- full list of LoRa frequencies per region is available [here](https://www.thethingsnetwork.org/docs/lorawan/frequencies-by-country.html)
Getting a version that includes a screen is optional, but highly recommended.
## Firmware Installation
Prebuilt binaries for the supported radios are available in our [releases](https://github.com/meshtastic/Meshtastic-esp32/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.
Be **very careful** to install the correct load for your board. In particular the popular 'T-BEAM' radio from TTGO is not called 'TTGO-Lora' (that is a different board). So don't install the 'TTGO-Lora' build on a TBEAM, it won't work correctly.
Please post comments on our [group chat](https://meshtastic.discourse.group/) if you have problems or successes.
### Installing from a GUI - Windows and Mac
1. Download and unzip the latest Meshtastic firmware [release](https://github.com/meshtastic/Meshtastic-esp32/releases).
2. Download [ESPHome Flasher](https://github.com/esphome/esphome-flasher/releases) (either x86-32bit Windows or x64-64 bit Windows).
3. Connect your radio to your USB port and open ESPHome Flasher.
4. If your board is not showing under Serial Port then you likely need to install the drivers for the CP210X serial chip. In Windows you can check by searching “Device Manager” and ensuring the device is shown under “Ports”.
5. If there is an error, download the drivers [here](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers), then unzip and run the Installer application.
6. In ESPHome Flasher, refresh the serial ports and select your board.
7. Browse to the previously downloaded firmware and select the correct firmware based on the board type, country and frequency.
8. Select Flash ESP.
9. Once complete, “Done! Flashing is complete!” will be shown.
10. Debug messages sent from the Meshtastic device can be viewed with a terminal program such as [PuTTY](https://www.putty.org/) (Windows only). Within PuTTY, click “Serial”, enter the “Serial line” com port (can be found at step 4), enter “Speed” as 921600, then click “Open”.
### Installing from a commandline
These instructions currently require a few commmand lines, but it should be pretty straightforward.
1. Install "pip". Pip is the python package manager we use to get the esptool installer app. Instructions [here](https://www.makeuseof.com/tag/install-pip-for-python/). If you are using OS-X, see these [special instructions](docs/software/install-OSX.md).
2. Run "pip install --upgrade esptool" to get esptool installed on your machine.
3. Connect your radio to your USB port.
4. 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...
```
5. cd into the directory where the release zip file was expanded.
6. Install the correct firmware for your board with `device-install.sh -f firmware-_board_-_country_.bin`.
- Example: `./device-install.sh -f firmware-HELTEC-US-0.0.3.bin`.
7. To update run `device-update.sh -f firmware-_board_-_country_.bin`
- Example: `./device-update.sh -f 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_-_version_.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...
```
7. The board will boot and show the Meshtastic logo.
8. 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 companion (optional) Meshtastic Android app is [here](https://play.google.com/store/apps/details?id=com.geeksville.mesh&referrer=utm_source%3Dgithub-dev-readme). You can also download it on Google Play.
# Python API
We offer a [python API](https://github.com/meshtastic/Meshtastic-python) that makes it easy to use these devices to provide mesh networking for your custom projects.
# Development
We'd love to have you join us on this merry little project. Please see our [development documents](./docs/software/sw-design.md) and [join us in our discussion forum](https://meshtastic.discourse.group/).
# 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: Lots of improvements
- @spattinson: Fixed interrupt handling for the AXP192 part
# IMPORTANT DISCLAIMERS AND FAQ
For a listing of currently missing features and a FAQ click [here](docs/faq.md).
Copyright 2019 Geeksville Industries, LLC. GPL V3 Licensed.
For developer information and specific building instructions, please see the [developer doccumentation](https://meshtastic.org/docs/developers)

View File

@@ -2,17 +2,15 @@
set -e
VERSION=`bin/buildinfo.py`
VERSION=`bin/buildinfo.py long`
SHORT_VERSION=`bin/buildinfo.py short`
COUNTRIES="US EU433 EU865 CN JP ANZ KR"
#COUNTRIES=US
#COUNTRIES=CN
BOARDS_ESP32="tlora-v2 tlora-v1 tlora-v2-1-1.6 tbeam heltec tbeam0.7"
BOARDS_ESP32="tlora-v2 tlora-v1 tlora_v1_3 tlora-v2-1-1.6 tbeam heltec-v2.0 heltec-v2.1 tbeam0.7"
#BOARDS_ESP32=tbeam
# FIXME note nrf52840dk build is for some reason only generating a BIN file but not a HEX file nrf52840dk-geeksville is fine
BOARDS_NRF52="lora-relay-v1"
BOARDS_NRF52="rak4631 t-echo"
#BOARDS_NRF52=""
OUTDIR=release/latest
@@ -21,33 +19,24 @@ ARCHIVEDIR=release/archive
rm -f $OUTDIR/firmware*
mkdir -p $OUTDIR/bins
rm -r $OUTDIR/bins/*
mkdir -p $OUTDIR/bins $ARCHIVEDIR
rm -r $OUTDIR/bins/* || true
mkdir -p $OUTDIR/bins/universal $OUTDIR/elfs/universal
# build the named environment and copy the bins to the release directory
function do_build() {
BOARD=$1
COUNTRY=$2
isNrf=$3
echo "Building $COUNTRY for $BOARD with $PLATFORMIO_BUILD_FLAGS"
echo "Building for $BOARD with $PLATFORMIO_BUILD_FLAGS"
rm -f .pio/build/$BOARD/firmware.*
# The shell vars the build tool expects to find
export APP_VERSION=$VERSION
# Are we building a universal/regionless rom?
if [ "x$COUNTRY" != "x" ]
then
export HW_VERSION="1.0-$COUNTRY"
export COUNTRY
basename=firmware-$BOARD-$COUNTRY-$VERSION
else
export HW_VERSION="1.0"
unset COUNTRY
basename=universal/firmware-$BOARD-$VERSION
fi
export HW_VERSION="1.0"
basename=universal/firmware-$BOARD-$VERSION
pio run --environment $BOARD # -v
SRCELF=.pio/build/$BOARD/firmware.elf
@@ -69,10 +58,6 @@ function do_boards() {
declare boards=$1
declare isNrf=$2
for board in $boards; do
for country in $COUNTRIES; do
do_build $board $country "$isNrf"
done
# Build universal
do_build $board "" "$isNrf"
done
@@ -92,7 +77,7 @@ pio run --environment tbeam -t buildfs
cp .pio/build/tbeam/spiffs.bin $OUTDIR/bins/universal/spiffs-$VERSION.bin
# keep the bins in archive also
cp $OUTDIR/bins/firmware* $OUTDIR/bins/universal/spiffs* $OUTDIR/elfs/firmware* $OUTDIR/bins/universal/firmware* $OUTDIR/elfs/universal/firmware* $ARCHIVEDIR
cp $OUTDIR/bins/universal/spiffs* $OUTDIR/bins/universal/firmware* $OUTDIR/elfs/universal/firmware* $ARCHIVEDIR
echo Updating android bins $OUTDIR/forandroid
rm -rf $OUTDIR/forandroid
@@ -107,12 +92,16 @@ release. It is used by the android app for forcing software updates. Do not ed
Generated by bin/buildall.sh -->
<resources>
<string name="cur_firmware_version">$VERSION</string>
<string name="cur_firmware_version" translatable="false">$VERSION</string>
<string name="short_firmware_version" translatable="false">$SHORT_VERSION</string>
</resources>
XML
echo Generating $ARCHIVEDIR/firmware-$VERSION.zip
rm -f $ARCHIVEDIR/firmware-$VERSION.zip
zip --junk-paths $ARCHIVEDIR/firmware-$VERSION.zip $ARCHIVEDIR/spiffs-$VERSION.bin $OUTDIR/bins/firmware-*-$VERSION.* images/system-info.bin bin/device-install.sh bin/device-update.sh
zip --junk-paths $ARCHIVEDIR/firmware-$VERSION.zip $ARCHIVEDIR/spiffs-$VERSION.bin $OUTDIR/bins/universal/firmware-*-$VERSION.* images/system-info.bin bin/device-install.* bin/device-update.*
echo Generating $ARCHIVEDIR/elfs-$VERSION.zip
rm -f $ARCHIVEDIR/elfs-$VERSION.zip
zip --junk-paths $ARCHIVEDIR/elfs-$VERSION.zip $OUTDIR/elfs/universal/firmware-*-$VERSION.*
echo BUILT ALL

38
bin/build-nightly.sh Executable file
View File

@@ -0,0 +1,38 @@
#!/bin/bash
source ~/.bashrc
# Meshtastic Nightly Build Script.
# McHamster (jm@casler.org)
#
# This is the script that is used for the nightly build server.
#
# It's probably not useful for most people, but you may want to run your own
# nightly builds.
#
# The last line of ~/.bashrc contains an inclusion of platformio in the path.
# Without this, the build script won't run from the crontab:
#
# export PATH="$HOME/.platformio/penv/bin:$PATH"
#
# The crontab contains:
# 0 2 * * * cd ~/meshtastic/github/meshtastic && source "~/.bashrc"; ./build-nightly.sh > ~/cronout.txt 2> ~/cronout.txt
cd Meshtastic-device
git pull
bin/build-all.sh
date_stamp=$(date +'%Y-%m-%d')
cd ..
# TODO: Archive the same binaries used by the build-all script.
#zip -r meshtastic_device_nightly_${date_stamp} Meshtastic-device/release/latest/bins
cp Meshtastic-device/release/archive/`ls -t ./Meshtastic-device/release/archive/| head -1` meshtastic_device_nightly_${date_stamp}.zip
# Copy the file to the webserver
scp meshtastic_device_nightly_${date_stamp}.zip jm@10.11.12.20:/volume1/web/meshtastic/nightly_builds/
# Delete the local copy
rm meshtastic_device_nightly_${date_stamp}.zip

View File

@@ -1,11 +1,9 @@
#!/usr/bin/env python3
import configparser
import sys
from readprops import readProps
config = configparser.RawConfigParser()
config.read('version.properties')
version = dict(config.items('VERSION'))
verStr = "{}.{}.{}".format(version["major"], version["minor"], version["build"])
print(f"{verStr}")
verObj = readProps('version.properties')
propName = sys.argv[1]
print(f"{verObj[propName]}")

42
bin/device-install.bat Normal file
View File

@@ -0,0 +1,42 @@
@ECHO OFF
set PYTHON=python
goto GETOPTS
:HELP
echo Usage: %~nx0 [-h] [-p ESPTOOL_PORT] [-P PYTHON] [-f FILENAME^|FILENAME]
echo Flash image file to device, but first erasing and writing system information
echo.
echo -h Display this help and exit
echo -p ESPTOOL_PORT Set the environment variable for ESPTOOL_PORT. If not set, ESPTOOL iterates all ports (Dangerrous).
echo -P PYTHON Specify alternate python interpreter to use to invoke esptool. (Default: %PYTHON%)
echo -f FILENAME The .bin file to flash. Custom to your device type and region.
goto EOF
:GETOPTS
if /I "%1"=="-h" goto HELP
if /I "%1"=="--help" goto HELP
if /I "%1"=="-F" set "FILENAME=%2" & SHIFT
if /I "%1"=="-p" set ESPTOOL_PORT=%2 & SHIFT
if /I "%1"=="-P" set PYTHON=%2 & SHIFT
SHIFT
IF NOT "__%1__"=="____" goto GETOPTS
IF "__%FILENAME%__" == "____" (
echo "Missing FILENAME"
goto HELP
)
IF EXIST %FILENAME% (
echo Trying to flash update %FILENAME%, but first erasing and writing system information"
%PYTHON% -m esptool --baud 921600 erase_flash
%PYTHON% -m esptool --baud 921600 write_flash 0x1000 system-info.bin
for %%f in (spiffs-*.bin) do (
%PYTHON% -m esptool --baud 921600 write_flash 0x00390000 %%f
)
%PYTHON% -m esptool --baud 921600 write_flash 0x10000 %FILENAME%
) else (
echo "Invalid file: %FILENAME%"
goto HELP
)
:EOF

View File

@@ -1,21 +1,24 @@
#!/bin/sh
PYTHON=${PYTHON:-$(which python3 python|head -n 1)}
set -e
# Usage info
show_help() {
cat << EOF
Usage: ${0##*/} [-h] [-p ESPTOOL_PORT] [-f FILENAME]
Usage: $(basename $0) [-h] [-p ESPTOOL_PORT] [-P PYTHON] [-f FILENAME|FILENAME]
Flash image file to device, but first erasing and writing system information"
-h Display this help and exit
-p ESPTOOL_PORT Set the environment variable for ESPTOOL_PORT. If not set, ESPTOOL iterates all ports (Dangerrous).
-f FILENAME The .bin file to flash. Custom to your device type and region.
-P PYTHON Specify alternate python interpreter to use to invoke esptool. (Default: "$PYTHON")
-f FILENAME The .bin file to flash. Custom to your device type and region.
EOF
}
while getopts ":h:p:f:" opt; do
while getopts ":hp:P:f:" opt; do
case "${opt}" in
h)
show_help
@@ -23,6 +26,8 @@ while getopts ":h:p:f:" opt; do
;;
p) export ESPTOOL_PORT=${OPTARG}
;;
P) PYTHON=${OPTARG}
;;
f) FILENAME=${OPTARG}
;;
*)
@@ -34,12 +39,17 @@ while getopts ":h:p:f:" opt; do
done
shift "$((OPTIND-1))"
[ -z "$FILENAME" -a -n "$1" ] && {
FILENAME=$1
shift
}
if [ -f "${FILENAME}" ]; then
echo "Trying to flash ${FILENAME}, but first erasing and writing system information"
esptool.py --baud 921600 erase_flash
esptool.py --baud 921600 write_flash 0x1000 system-info.bin
esptool.py --baud 921600 write_flash 0x00390000 spiffs-*.bin
esptool.py --baud 921600 write_flash 0x10000 ${FILENAME}
$PYTHON -m esptool --baud 921600 erase_flash
$PYTHON -m esptool --baud 921600 write_flash 0x1000 system-info.bin
$PYTHON -m esptool --baud 921600 write_flash 0x00390000 spiffs-*.bin
$PYTHON -m esptool --baud 921600 write_flash 0x10000 ${FILENAME}
else
echo "Invalid file: ${FILENAME}"
show_help

39
bin/device-update.bat Normal file
View File

@@ -0,0 +1,39 @@
@ECHO OFF
set PYTHON=python
goto GETOPTS
:HELP
echo Usage: %~nx0 [-h] [-p ESPTOOL_PORT] [-P PYTHON] [-f FILENAME^|FILENAME]
echo Flash image file to device, leave existing system intact.
echo.
echo -h Display this help and exit
echo -p ESPTOOL_PORT Set the environment variable for ESPTOOL_PORT. If not set, ESPTOOL iterates all ports (Dangerrous).
echo -P PYTHON Specify alternate python interpreter to use to invoke esptool. (Default: %PYTHON%)
echo -f FILENAME The .bin file to flash. Custom to your device type and region.
goto EOF
:GETOPTS
if /I "%1"=="-h" goto HELP
if /I "%1"=="--help" goto HELP
if /I "%1"=="-F" set "FILENAME=%2" & SHIFT
if /I "%1"=="-p" set ESPTOOL_PORT=%2 & SHIFT
if /I "%1"=="-P" set PYTHON=%2 & SHIFT
SHIFT
IF NOT "__%1__"=="____" goto GETOPTS
IF "__%FILENAME%__" == "____" (
echo "Missing FILENAME"
goto HELP
)
IF EXIST %FILENAME% (
echo Trying to flash update %FILENAME%
%PYTHON% -m esptool --baud 921600 write_flash 0x10000 %FILENAME%
echo Erasing the otadata partition, which will turn off flash flippy-flop and force the first image to be used
%PYTHON% -m esptool --baud 921600 erase_region 0xe000 0x2000
) else (
echo "Invalid file: %FILENAME%"
goto HELP
)
:EOF

View File

@@ -1,19 +1,22 @@
#!/bin/sh
PYTHON=${PYTHON:-$(which python3 python|head -n 1)}
# Usage info
show_help() {
cat << EOF
Usage: ${0##*/} [-h] [-p ESPTOOL_PORT] -f FILENAME
Usage: $(basename $0) [-h] [-p ESPTOOL_PORT] [-P PYTHON] [-f FILENAME|FILENAME]
Flash image file to device, leave existing system intact."
-h Display this help and exit
-p ESPTOOL_PORT Set the environment variable for ESPTOOL_PORT. If not set, ESPTOOL iterates all ports (Dangerrous).
-f FILENAME The .bin file to flash. Custom to your device type and region.
-P PYTHON Specify alternate python interpreter to use to invoke esptool. (Default: "$PYTHON")
-f FILENAME The .bin file to flash. Custom to your device type and region.
EOF
}
while getopts ":h:p:f:" opt; do
while getopts ":hp:P:f:" opt; do
case "${opt}" in
h)
show_help
@@ -21,6 +24,8 @@ while getopts ":h:p:f:" opt; do
;;
p) export ESPTOOL_PORT=${OPTARG}
;;
P) PYTHON=${OPTARG}
;;
f) FILENAME=${OPTARG}
;;
*)
@@ -32,9 +37,16 @@ while getopts ":h:p:f:" opt; do
done
shift "$((OPTIND-1))"
[ -z "$FILENAME" -a -n "$1" ] && {
FILENAME=$1
shift
}
if [ -f "${FILENAME}" ]; then
echo "Trying to flash update ${FILENAME}."
esptool.py --baud 921600 write_flash 0x10000 ${FILENAME}
$PYTHON -m esptool --baud 921600 write_flash 0x10000 ${FILENAME}
echo "Erasing the otadata partition, which will turn off flash flippy-flop and force the first image to be used"
$PYTHON -m esptool --baud 921600 erase_region 0xe000 0x2000
else
echo "Invalid file: ${FILENAME}"
show_help

View File

@@ -241,7 +241,7 @@ def print_addr(name, value, resolver):
def print_stack_full(lines, resolver):
print("stack:")
for line in lines:
print(line.offset + ":")
print(str(line.offset) + ":")
for content in line.content:
print(" " + resolver.resolve_stack_addr(content))

View File

@@ -6,6 +6,8 @@ BOOTDIR=/home/kevinh/development/meshtastic/Adafruit_nRF52_Bootloader
nrfjprog --eraseall -f nrf52
# to get tool run "sudo apt-get install srecord"
# this generates an intel hex file that can be programmed into a NRF52 to tell the adafruit bootloader that the current app image is valid
# Bootloader settings are at BOOTLOADER_SETTINGS (rw) : ORIGIN = 0xFF000, LENGTH = 0x1000
# first 4 bytes should be 0x01 to indicate valid app image
@@ -14,7 +16,7 @@ echo "01 00 00 00 00 00 00 00" | xxd -r -p - >/tmp/bootconf.bin
srec_cat /tmp/bootconf.bin -binary -offset 0xff000 -output /tmp/bootconf.hex -intel
echo Generating merged hex file
mergehex -m $BOOTDIR/_build/build-ttgo_eink/ttgo_eink_bootloader-0.3.2-125-gf38f8f4-dirty_s140_6.1.1.hex .pio/build/eink/firmware.hex /tmp/bootconf.hex -o ttgo_eink_full.hex
mergehex -m $BOOTDIR/_build/build-ttgo_eink/ttgo_eink_bootloader-0.3.2-213-gf67f592-dirty_s140_6.1.1.hex .pio/build/eink/firmware.hex /tmp/bootconf.hex -o ttgo_eink_full.hex
echo Telling bootloader app region is valid and telling CPU to run
nrfjprog --program ttgo_eink_full.hex -f nrf52 --reset

3
bin/mqtt-listen.sh Executable file
View File

@@ -0,0 +1,3 @@
mosquitto_sub -h mqtt.meshtastic.org -v -t \$SYS/\# -t msh/+/stat/\# -t msh/+/json/\#
# mosquitto_sub -h test.mosquitto.org -v -t mesh/\# -F "%j"

1
bin/mqtt-send-status.sh Executable file
View File

@@ -0,0 +1 @@
mosquitto_pub -h mqtt.meshtastic.org -u meshdev -P large4cats -t msh/1/stat/FakeNode -m online -d

3
bin/native-gdbserver.sh Executable file
View File

@@ -0,0 +1,3 @@
set -e
pio run --environment native
gdbserver --once localhost:2345 .pio/build/native/program "$@"

3
bin/native-run.sh Executable file
View File

@@ -0,0 +1,3 @@
set -e
pio run --environment native
.pio/build/native/program "$@"

View File

@@ -1,3 +1,3 @@
JLinkGDBServerCLExe -if SWD -select USB -port 2331 -device NRF52840_XXAA
JLinkGDBServerCLExe -if SWD -select USB -port 2331 -device NRF52840_XXAA -SuppressInfoUpdateFW -DisableAutoUpdateFW -rtos GDBServer/RTOSPlugin_FreeRTOS

View File

@@ -1,16 +1,20 @@
import subprocess
import configparser
import traceback
import sys
from readprops import readProps
Import("projenv")
import configparser
prefsLoc = projenv["PROJECT_DIR"] + "/version.properties"
config = configparser.RawConfigParser()
config.read(prefsLoc)
version = dict(config.items('VERSION'))
verStr = "{}.{}.{}".format(version["major"], version["minor"], version["build"])
print("Using meshtastic platform-custom.py, firmare version " + verStr)
verObj = readProps(prefsLoc)
print("Using meshtastic platform-custom.py, firmare version " + verObj['long'])
# print("path is" + ','.join(sys.path))
# General options that are passed to the C and C++ compilers
projenv.Append(CCFLAGS=[
"-DAPP_VERSION=" + verStr
])
"-DAPP_VERSION=" + verObj['long'],
"-DAPP_VERSION_SHORT=" + verObj['short']
])

3
bin/program-1.0-tbeam.sh Executable file
View File

@@ -0,0 +1,3 @@
esptool.py --baud 921600 write_flash 0x10000 release/archive/old/firmware-tbeam-EU865-1.0.0.bin
echo "Erasing the otadata partition, which will turn off flash flippy-flop and force the first image to be used"
esptool.py --baud 921600 erase_region 0xe000 0x2000

1
bin/program-1.1-tbeam.sh Executable file
View File

@@ -0,0 +1 @@
esptool.py --baud 921600 write_flash 0x10000 release/archive/old/firmware-tbeam-1.1.50.bin

View File

@@ -2,5 +2,7 @@
set -e
VERSION=`bin/buildinfo.py`
FILENAME=release/latest/bins/universal/firmware-tbeam-$VERSION.bin
esptool.py --baud 921600 write_flash 0x10000 release/latest/bins/firmware-tbeam-US-$VERSION.bin
echo Installing $FILENAME
esptool.py --baud 921600 write_flash 0x10000 $FILENAME

11
bin/promote-release.sh Executable file
View File

@@ -0,0 +1,11 @@
set -e
echo "This script is only for developers who are publishing new builds on github. Most users don't need it"
VERSION=`bin/buildinfo.py long`
# Must have a V prefix to trigger github
git tag "v${VERSION}"
git push root "v${VERSION}" # push the tag
echo "Tag ${VERSION} pushed to github, github actions should now be building the draft release. If it seems good, click to publish it"

37
bin/readprops.py Normal file
View File

@@ -0,0 +1,37 @@
import subprocess
import configparser
import traceback
import sys
def readProps(prefsLoc):
"""Read the version of our project as a string"""
config = configparser.RawConfigParser()
config.read(prefsLoc)
version = dict(config.items('VERSION'))
verObj = dict(short = "{}.{}.{}".format(version["major"], version["minor"], version["build"]),
long = "unset")
# Try to find current build SHA if if the workspace is clean. This could fail if git is not installed
try:
sha = subprocess.check_output(
['git', 'rev-parse', '--short', 'HEAD']).decode("utf-8").strip()
isDirty = subprocess.check_output(
['git', 'diff', 'HEAD']).decode("utf-8").strip()
suffix = sha
if isDirty:
# short for 'dirty', we want to keep our verstrings source for protobuf reasons
suffix = sha + "-d"
verObj['long'] = "{}.{}.{}.{}".format(
version["major"], version["minor"], version["build"], suffix)
except:
# print("Unexpected error:", sys.exc_info()[0])
# traceback.print_exc()
verObj['long'] = verObj['short']
# print("firmare version " + verStr)
return verObj
# print("path is" + ','.join(sys.path))

View File

@@ -10,6 +10,6 @@ echo "prebuilt binaries for your computer into nanopb-0.4.4"
cd proto
../nanopb-0.4.4/generator-bin/protoc --nanopb_out=-v:../src/mesh/generated -I=../proto *.proto
echo "Regenerating protobuf documentation - if you see an error message"
echo "you can ignore it unless doing a new protobuf release to github."
bin/regen-docs.sh
#echo "Regenerating protobuf documentation - if you see an error message"
#echo "you can ignore it unless doing a new protobuf release to github."
#bin/regen-docs.sh

13
bin/run-both.sh Executable file
View File

@@ -0,0 +1,13 @@
set -e
TARG=tbeam
pio run -e $TARG
echo uploading to usb1
pio run --upload-port /dev/ttyUSB1 -t upload -e $TARG &
echo uploading to usb0
pio run --upload-port /dev/ttyUSB0 -t upload -e $TARG &
wait

9
bin/test-simulator.sh Executable file
View File

@@ -0,0 +1,9 @@
set -e
echo "Starting simulator"
.pio/build/native/program &
sleep 20 # 5 seconds was not enough
echo "Simulator started, launching python test..."
python3 -c 'from meshtastic.test import testSimulator; testSimulator()'

View File

@@ -1,4 +1,8 @@
set -e
echo "Converting to uf2 for NRF52 Adafruit bootloader"
bin/uf2conv.py .pio/build/lora-relay-v2/firmware.hex -f 0xADA52840
# cp flash.uf2 /media/kevinh/FTH*BOOT/
echo "building for t-echo"
pio run --environment t-echo
echo "Converting to uf2 for NRF52 Adafruit bootloader - double tap on the reset button to force bootloader entry"
bin/uf2conv.py .pio/build/t-echo/firmware.hex -f 0xADA52840
cp flash.uf2 /media/kevinh/FTH*BOOT/

5
bin/upload-to-rak4631.sh Executable file
View File

@@ -0,0 +1,5 @@
set -e
echo "Converting to uf2 for NRF52 Adafruit bootloader"
bin/uf2conv.py .pio/build/rak4631/firmware.hex -f 0xADA52840
cp flash.uf2 /media/kevinh/FTH*BOOT/

48
boards/lora_isp4520.json Normal file
View File

@@ -0,0 +1,48 @@
{
"build": {
"arduino": {
"ldscript": "nrf52832_s132_v6.ld"
},
"core": "nRF5",
"cpu": "cortex-m4",
"extra_flags": "-DNRF52832_XXAA -DNRF52",
"f_cpu": "64000000L",
"mcu": "nrf52832",
"variant": "lora_isp4520",
"bsp": {
"name": "adafruit"
},
"softdevice": {
"sd_flags": "-DS132",
"sd_name": "s132",
"sd_version": "6.1.1",
"sd_fwid": "0x00B7"
}
},
"connectivity": [
"bluetooth"
],
"debug": {
"jlink_device": "nRF52832_xxAA",
"svd_path": "nrf52.svd"
},
"frameworks": [
"arduino"
],
"name": "lora ISP4520",
"upload": {
"maximum_ram_size": 65536,
"maximum_size": 524288,
"require_upload_port": true,
"speed": 115200,
"protocol": "nrfutil",
"protocols": [
"jlink",
"nrfjprog",
"nrfutil",
"stlink"
]
},
"url": "",
"vendor": "PsiSoft"
}

View File

@@ -15,7 +15,7 @@
],
"usb_product": "TTGO_eink",
"mcu": "nrf52840",
"variant": "eink",
"variant": "t-echo",
"variants_dir": "variants",
"bsp": {
"name": "adafruit"
@@ -44,17 +44,20 @@
"arduino"
],
"name": "TTGO eink (Adafruit BSP)",
"upload": {
"maximum_ram_size": 248832,
"maximum_size": 815104,
"require_upload_port": true,
"speed": 115200,
"protocol": "jlink",
"protocols": [
"jlink",
"nrfjprog",
"stlink"
]
"upload": {
"maximum_ram_size": 248832,
"maximum_size": 815104,
"speed": 115200,
"protocol": "nrfutil",
"protocols": [
"jlink",
"nrfjprog",
"nrfutil",
"stlink"
],
"use_1200bps_touch": true,
"require_upload_port": true,
"wait_for_upload_port": true
},
"url": "FIXME",
"vendor": "TTGO"

View File

@@ -0,0 +1,71 @@
{
"build": {
"arduino": {
"ldscript": "nrf52832_s132_v6.ld"
},
"core": "nRF5",
"cpu": "cortex-m4",
"extra_flags": "-DNRF52832_XXAA -DNRF52",
"f_cpu": "64000000L",
"hwids": [
[
"0x239A",
"0x8029"
],
[
"0x239A",
"0x0029"
],
[
"0x239A",
"0x002A"
],
[
"0x239A",
"0x802A"
]
],
"usb_product": "Feather nRF52832 Express",
"mcu": "nrf52832",
"variant": "WisCore_RAK4600_Board",
"bsp": {
"name": "adafruit"
},
"softdevice": {
"sd_flags": "-DS132",
"sd_name": "s132",
"sd_version": "6.1.1",
"sd_fwid": "0x00B7"
},
"zephyr": {
"variant": "nrf52_adafruit_feather"
}
},
"connectivity": [
"bluetooth"
],
"debug": {
"jlink_device": "nRF52832_xxAA",
"svd_path": "nrf52.svd"
},
"frameworks": [
"arduino",
"zephyr"
],
"name": "Adafruit Bluefruit nRF52832 Feather",
"upload": {
"maximum_ram_size": 65536,
"maximum_size": 524288,
"require_upload_port": true,
"speed": 115200,
"protocol": "nrfutil",
"protocols": [
"jlink",
"nrfjprog",
"nrfutil",
"stlink"
]
},
"url": "https://www.adafruit.com/product/3406",
"vendor": "Adafruit"
}

View File

@@ -0,0 +1,72 @@
{
"build": {
"arduino": {
"ldscript": "nrf52840_s140_v6.ld"
},
"core": "nRF5",
"cpu": "cortex-m4",
"extra_flags": "-DARDUINO_NRF52840_FEATHER -DNRF52840_XXAA",
"f_cpu": "64000000L",
"hwids": [
[
"0x239A",
"0x8029"
],
[
"0x239A",
"0x0029"
],
[
"0x239A",
"0x002A"
],
[
"0x239A",
"0x802A"
]
],
"usb_product": "WisCore RAK4631 Board",
"mcu": "nrf52840",
"variant": "WisCore_RAK4631_Board",
"bsp": {
"name": "adafruit"
},
"softdevice": {
"sd_flags": "-DS140",
"sd_name": "s140",
"sd_version": "6.1.1",
"sd_fwid": "0x00B6"
},
"bootloader": {
"settings_addr": "0xFF000"
}
},
"connectivity": [
"bluetooth"
],
"debug": {
"jlink_device": "nRF52840_xxAA",
"svd_path": "nrf52840.svd"
},
"frameworks": [
"arduino"
],
"name": "WisCore RAK4631 Board",
"upload": {
"maximum_ram_size": 248832,
"maximum_size": 815104,
"speed": 115200,
"protocol": "nrfutil",
"protocols": [
"jlink",
"nrfjprog",
"nrfutil",
"stlink"
],
"use_1200bps_touch": true,
"require_upload_port": true,
"wait_for_upload_port": true
},
"url": "https://www.rakwireless.com",
"vendor": "RAKwireless"
}

View File

@@ -1,43 +0,0 @@
var meshtasticClient;
var connectionOne;
// Important: the connect action must be called from a user interaction (e.g. button press), otherwise the browsers won't allow the connect
function connect() {
// Create new connection
var httpconn = new meshtasticjs.IHTTPConnection();
// Set connection params
let sslActive;
if (window.location.protocol === 'https:') {
sslActive = true;
} else {
sslActive = false;
}
let deviceIp = window.location.hostname; // Your devices IP here
// Add event listeners that get called when a new packet is received / state of device changes
httpconn.addEventListener('fromRadio', function (packet) { console.log(packet) });
// Connect to the device async, then send a text message
httpconn.connect(deviceIp, sslActive)
.then(result => {
alert('device has been configured')
// This gets called when the connection has been established
// -> send a message over the mesh network. If no recipient node is provided, it gets sent as a broadcast
return httpconn.sendText('meshtastic is awesome');
})
.then(result => {
// This gets called when the message has been sucessfully sent
console.log('Message sent!');
})
.catch(error => { console.log(error); });
}

View File

@@ -1,18 +1 @@
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<title></title>
<script src="/static/meshtastic.js"></script>
<script src="/static/basic.js"></script>
</head>
<body>
<button id="connect_button" onclick="connect()">Connect to Meshtastic device</button>
</body>
</html>
not yet supported - soon will be included in build

Binary file not shown.

View File

@@ -1,9 +0,0 @@
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.geeksville.mesh",
"sha256_cert_fingerprints":
["D0:05:E7:8B:D2:1B:FA:94:56:1D:6B:90:EB:53:07:1A:74:4F:D9:C2:6F:13:87:6A:D9:17:4F:C2:59:48:02:9D", "42:17:52:DC:57:40:38:B5:6B:86:61:1C:2F:47:DB:2B:0F:A2:EA:59:E1:18:9C:AA:90:8D:37:D6:CD:40:0E:BB", "A9:3B:45:65:68:C1:75:DB:08:00:A0:9F:06:77:7F:89:2D:81:24:32:AD:B8:A3:DF:73:BC:3E:7F:06:C8:0C:6D"]
}
}]

View File

@@ -1 +0,0 @@
www.meshtastic.org

View File

@@ -1,96 +0,0 @@
# What is Meshtastic?
Meshtastic® is a project that lets you use
inexpensive (\$30 ish) GPS radios as an extensible, long battery life, secure, 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.
Note: Questions after reading this? See our new [forum](https://meshtastic.discourse.group/).
## Uses
- Outdoor sports where cellular coverage is limited. (Hiking, Skiing, Boating, Paragliding, Gliders etc..)
- Applications where closed source GPS communicators just won't cut it (it is easy to add features for glider pilots etc...)
- Secure long-range communication within groups without depending on cellular providers
- Finding your lost kids ;-)
- Through our [python API](https://pypi.org/project/meshtastic/) use these inexpensive radios to easily add mesh networking to your own projects.
[![Youtube video demo](desk-video-screenshot.png)](https://www.youtube.com/watch?v=WlNbMbVZlHI "Meshtastic early demo")
## Features
Not all of these features are fully implemented yet - see **important** disclaimers below. But they should be in by the time we decide to call this project beta (three months?)
- Very long battery life (should be about eight days with the beta software)
- Built in GPS and [LoRa](https://en.wikipedia.org/wiki/LoRa) radio, but we manage the radio automatically for you
- Long range - a few miles per node but each node will forward packets as needed
- Secure - channels are encrypted by AES256 (But see important disclaimers below wrt this feature)
- Shows direction and distance to all members of your channel
- Directed or broadcast text messages for channel members
- Open and extensible codebase supporting multiple hardware vendors - no lock in to one vendor
- Communication API for bluetooth devices (such as our Android app) to use the mesh. An iOS application is in the works. And [Meshtastic-python](https://pypi.org/project/meshtastic/) provides access from desktop computers.
- Very easy sharing of private secured channels. Just share a special link or QR code with friends and they can join your encrypted mesh
This project is currently in beta testing but it is fairly stable and feature complete - if you have questions please [join our discussion forum](https://meshtastic.discourse.group/).
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 [forum](https://meshtastic.discourse.group/).
### Beginner's Guide
For an detailed walk-through aimed at beginners, we recommend [meshtastic.letstalkthis.com](https://meshtastic.letstalkthis.com/).
### Related Groups
Telegram group for **Italy**-based users [t.me/meshtastic_italia](http://t.me/meshtastic_italia) (Italian language, unofficial).
# Updates
Note: Updates are happening almost daily, only major updates are listed below. For more details see our forum.
- 09/14/2020 - 1.0.0 Now with over 1700 android users, over 2000 nodes and translated into 15 languages. This project will always be a "beta" experiment, but now quite usable. We are currently selecting 1.1 features in our discussion forum.
- 06/24/2020 - 0.7.x Now with over 1000 android users, over 600 people using the radios and translated into 22 languages. Fairly stable and we are working through bugs to get to 1.0.
- 06/04/2020 - 0.6.7 Beta releases of both the application and the device code are released. Features are fairly solid now with a sizable number of users.
- 04/28/2020 - 0.6.0 [Python API](https://pypi.org/project/meshtastic/) released. Makes it easy to use meshtastic devices as "zero config / just works" mesh transport adapters for other projects.
- 04/20/2020 - 0.4.3 Pretty solid now both for the android app and the device code. Many people have donated translations and code. Probably going to call it a beta soon.
- 03/03/2020 - 0.0.9 of the Android app and device code is released. Still an alpha but fairly functional.
- 02/25/2020 - 0.0.4 of the Android app is released. This is a very early alpha, see below to join the alpha-testers group.
- 02/23/2020 - 0.0.4 release. Still very bleeding edge but much closer to the final power management, a charged T-BEAM should run for many days with this load. If you'd like to try it, we'd love your feedback. Click [here](https://github.com/meshtastic/Meshtastic-esp32/blob/master/README.md) for instructions.
- 02/20/2020 - Our first alpha release (0.0.3) of the radio software is ready brave early people.
## Meshtastic Android app
Our Android application is available here:
[![Download at https://play.google.com/store/apps/details?id=com.geeksville.mesh](https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png)](https://play.google.com/store/apps/details?id=com.geeksville.mesh&referrer=utm_source%3Dgithub-homepage)
The link above will return older more stable releases. We would prefer if you join our alpha-test group, because the application is rapidly improving. Three steps to opt-in to the alpha- test:
1. Join [this Google group](https://groups.google.com/forum/#!forum/meshtastic-alpha-testers) with the account you use in Google Play.
2. Go to this [URL](https://play.google.com/apps/testing/com.geeksville.mesh) to opt-in to the alpha test.
3. If you encounter any problems or have questions, post in our [forum](https://meshtastic.discourse.group/) and we'll help.
If you'd like to help with development, the source code is [on github](https://github.com/meshtastic/Meshtastic-Android).
The app is also distributed for Amazon Fire devices via the Amazon appstore: [![Amazon appstore link](https://raw.githubusercontent.com/meshtastic/Meshtastic-device/master/images/amazon-fire-button.png)](https://www.amazon.com/Geeksville-Industries-Meshtastic/dp/B08CY9394Q)
## Supported hardware
We currently support two brands of radios. The [TTGO T-Beam](https://www.aliexpress.com/item/4001178678568.html) and the [Heltec LoRa 32](https://heltec.org/project/wifi-lora-32/). Most people should buy the T-Beam and a 18650 battery (total cost less than \$35). Also, the version of the T-Beam we link to is shipped with Meshtastic **preinstalled** by TTGO, so you don't have to install it yourself.
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.
Instructions for installing prebuilt firmware can be found [here](https://github.com/meshtastic/Meshtastic-esp32/blob/master/README.md).
For a nice looking cases:
- 3D printable cases
1. TTGO T-Beam V0 see this [design](https://www.thingiverse.com/thing:3773717) by [bsiege](https://www.thingiverse.com/bsiege).
2. TTGO T_Beam V1 (SMA) see this [design](https://www.thingiverse.com/thing:3830711) by [rwanrooy](https://www.thingiverse.com/rwanrooy) or this [remix](https://www.thingiverse.com/thing:3949330) by [8ung](https://www.thingiverse.com/8ung)
3. TTGO T_Beam V1 (IPEX) see this [design](https://www.thingiverse.com/thing:4587297) by [drewsed](https://www.thingiverse.com/drewsed)
4. Heltec Lora32 see this [design](https://www.thingiverse.com/thing:3125854) by [ornotermes](https://www.thingiverse.com/ornotermes).
- Laser-cut cases
1. TTGO T_Beam V1 (SMA) see this [design](https://www.thingiverse.com/thing:4552771) by [jefish](https://www.thingiverse.com/jefish)
# IMPORTANT DISCLAIMERS AND FAQ
For a listing of currently missing features and a FAQ click [here](faq.md).

View File

@@ -1,8 +0,0 @@
| Vendor | Product line | Version | Board labels | Notes | URL |
|---|---|---|---|---|---|
| TTGO | T-Beam | 0.7 | T22_V07 20180711 | LoRa 433/470MHz *OR* LoRa 868/915MHz , <br/>GPS ublox NEO-6M , <br/>battery holder for Li-Ion 18650 | [buy](https://www.aliexpress.com/item/4000574335430.html) |
| TTGO | T-Beam | 1.0 | | | [buy](https://www.aliexpress.com/item/4001178678568.html) |
| TTGO | T-Beam | 1.1 | T22_V11 20191212 | LoRa 433/470MHz *OR* LoRa 868/915MHz *OR* LoRa 923MHz , <br/>GPS ublox NEO-M8N , <br/>battery holder for Li-Ion 18650 | [buy](https://www.aliexpress.com/item/4001178678568.html) |
| TTGO | Lora32 | 2.0 | *missing* | LoRa 433/470MHz *OR* LoRa 868/915MHz , <br/>OLED SSD1306 , <br/>SD card holder | [buy](https://www.aliexpress.com/item/4000211331316.html) |
| TTGO | Lora32 | 2.1 | T3_V1.6 20180606 | LoRa 32 (V2) , <br/>SD card holder | [buy](https://www.aliexpress.com/item/4000119208093.html) |
| Heltec | Lora 32 | V2 | V2 | LoRa 433/470MHz *OR* LoRa 868/915MHz | [buy](https://heltec.org/project/wifi-lora-32/) |

View File

@@ -1,8 +0,0 @@
theme: jekyll-theme-cayman
title: Meshtastic
description: An opensource hiking, pilot, skiing, secure GPS mesh communicator
google_analytics: G-DRZ5H5EXHV
include: [".well-known"]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 533 KiB

View File

@@ -1,10 +0,0 @@
If you'd like to edit this website and test it locally:
Not yet implemented:
Per https://help.github.com/en/github/working-with-github-pages/testing-your-github-pages-site-locally-with-jekyll
* follow instructions here: https://jekyllrb.com/docs/installation/ubuntu/
* run "run-locally.sh"
* view webpages at localhost:4000
The template seems to come from here: https://github.com/pages-themes/cayman

View File

@@ -1,34 +0,0 @@
# Disclaimers
This project is still pretty young but moving at a pretty good pace. Not all features are fully implemented in the current alpha builds.
Most of these problems should be solved by the beta release (within three months):
- We don't make these devices and they haven't been tested by UL or the FCC. If you use them you are experimenting and we can't promise they won't burn your house down ;-)
- The encryption implementation is good but see this list of [caveats](software/crypto.md#summary-of-strengthsweaknesses-of-our-current-implementation) to determine risks you might face.
- A number of (straightforward) software work items have to be completed before battery life matches our measurements, currently battery life is about three days. Join us on chat if you want the spreadsheet of power measurements/calculations.
- The Android API needs to be documented better
- No one has written an iOS app yet. But some good souls [are talking about it](https://github.com/meshtastic/Meshtastic-esp32/issues/14) ;-)
For more details see the [device software TODO](https://github.com/meshtastic/Meshtastic-esp32/blob/master/docs/software/TODO.md) or the [Android app TODO](https://github.com/meshtastic/Meshtastic-Android/blob/master/TODO.md).
# FAQ
If you have a question missing from this faq, please [ask in our discussion forum](https://meshtastic.discourse.group/). And if you are feeling extra generous send in a pull-request for this faq.md with whatever we answered ;-).
## Q: Which of the various supported radios should I buy?
Basically you just need the radio + (optional but recommended) battery. The TBEAM is usually better because it has gps and huge battery socket. The Heltec is basically the same hardware but without the GPS (the phone provides position data to the radio in that case, so the behavior is similar - but it does burn some battery in the phone). Also the battery for the Heltec can be smaller.
In addition to Aliexpress, (banggood.com) usually has stock and faster shipping, or Amazon. If buying a TBEAM, make sure to buy a version that includes the OLED screen - this project doesn't absolutely require the screen, but we use it if is installed.
@claesg has added links to various 3D printable cases, you can see them at (www.meshtastic.org).
## Q: Do you have plans to commercialize this project
Nope. though if some other person/group wanted to use this software and a more customized device we think that would be awesome (as long as they obey the GPL license).
## Q: Does this project use patented algorithms?
(Kindly borrowed from the geeks at [ffmpeg](http://ffmpeg.org/legal.html))
We do not know, we are not lawyers so we are not qualified to answer this. Also we have never read patents to implement any part of this, so even if we were qualified we could not answer it as we do not know what is patented. Furthermore the sheer number of software patents makes it impossible to read them all so no one (lawyer or not) could answer such a question with a definite no. We are merely geeks experimenting on a fun and free project.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,35 +0,0 @@
# Notes on @BigCorvus boards
## Board version 1.1
variant name lora_relay_v1
### Remaining TODOs
- power hold for the ST7735
- look at example sketch
- turn on xmit boost
## Recommendations for future boards
@BigCorvus your board is **really** nice. Here's some ideas for the future:
- make the SWDIO header more standard (the small ARM 2x5 micro footprint?) or at least througholes so it is easy to solder a header
## How to program bootloader
Download from here: https://github.com/adafruit/Adafruit_nRF52_Bootloader/releases
```
nrfjprog -f nrf52 --eraseall
Erasing user available code and UICR flash areas.
Applying system reset.
nrfjprog -f nrf52 --program feather_nrf52840_express_bootloader-0.3.2_s140_6.1.1.hex
Parsing hex file.
Reading flash area to program to guarantee it is erased.
Checking that the area to write is not protected.
Programming device.
```
Then reboot the board, if all went well it now shows up as a mountable filesystem on your USB bus.

View File

@@ -1,6 +0,0 @@
https://heltec-automation-docs.readthedocs.io/en/latest/cubecell/index.html
https://github.com/HelTecAutomation/ASR650x-Arduino?utm_source=platformio.org&utm_medium=docs
* Either portfreertos or make not theaded versions of Lock, WorkerThread, Queue (probably the latter).

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 417 KiB

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,11 +0,0 @@
# Meshtastic privacy policy
We don't collect any personal identifying information.
If you have opted-in to analytics (thank you - that helps us know what things we need to improve), we'll receive anonymized information about user behavior. i.e. which screens you used in the app etc... We never
capture usernames, the contents of your texts or your location.
This is an open-source project run by hobbyists and we try to be completely transparent. If you have questions on this policy, please file [a github issue](https://github.com/meshtastic/meshtastic-esp32/issues) and we'll reply/clarify/correct.
Keep being awesome!

View File

@@ -1,41 +0,0 @@
# Radio settings
We use the same channel maps as LoRaWAN (though this is not LoRaWAN).
![freq table](/images/LoRa-Frequency-Bands.jpg)
See [this site](https://www.rfwireless-world.com/Tutorials/LoRa-channels-list.html) for more information.
## LoRaWAN Europe Frequency Band
The maximum power allowed is +14dBm ERP (Effective Radiated Power, see [this site](https://en.wikipedia.org/wiki/Effective_radiated_power) for more information).
### 433 MHz
There are eight channels defined with a 0.2 MHz gap between them.
Channel zero starts at 433.175 MHz
### 870 MHz
There are eight channels defined with a 0.3 MHz gap between them.
Channel zero starts at 865.20 MHz
## LoRaWAN for North America
LoRaWAN defines 64, 125 kHz channels from 902.3 to 914.9 MHz increments.
The maximum output power for North America is +30 dBm ERP.
The band is from 902 to 928 MHz. It mentions channel number and its respective channel frequency. All the 13 channels are separated by 2.16 MHz with respect to the adjacent channels.
Channel zero starts at 903.08 MHz center frequency.
## Data-rates
Various data-rates are selectable when configuring a channel and are inversely proportional to the theoretical range of the devices:
| Channel setting | Data-rate |
|----------------------------|----------------------|
| Short range (but fast) | 21.875 kbps |
| Medium range (but fast) | 5.469 kbps |
| Long range (but slower) | 0.275 kbps |
| Very long range (but slow) | 0.183 kbps (default) |

View File

@@ -1,178 +0,0 @@
# Geeksville's current work queue
You probably don't care about this section - skip to the next one.
eink:
* new battery level sensing
* measure current draw
* DONE: fix backlight
* USB is busted because of power enable mode?
* OHH BME280! THAT IS GREAT!
* make new screen work, ask for datasheet
* say I think you could ship this
* leds seem busted
* usb doesn't stay connected
* check GPS works
* check GPS fast locking
* send email about variants & faster flash programming - https://github.com/geeksville/Meshtastic-esp32/commit/f110225173a77326aac029321cdb6491bfa640f6
* send PR for bootloader
* fix nrf52 time/date
* send new master bin file
* send email about low power mode problems
* support new flash chip in appload, possibly use low power mode
* swbug! stuck busy tx occurred!
For app cleanup:
* use structured logging to kep logs in ram. Also send logs as packets to api clients
* DONE writeup nice python options docs (common cases, link to protobuf docs)
* have android app link to user manual
* DONE only do wantReplies once per packet type, if we change network settings force it again
* update positions and nodeinfos based on packets we just merely witness on the mesh. via isPromsciousPort bool, remove sniffing
* DONE make device build always have a valid version
* DONE do fixed position bug https://github.com/meshtastic/Meshtastic-device/issues/536
* DONE check build guide
* DONE write devapi user guide
* DONE update android code: https://developer.android.com/topic/libraries/view-binding/migration
* DONE test GPIO watch
* DONE set --set-chan-fast, --set-chan-default
* writeup docs on gpio
* DONE make python ping command
* DONE make hello world example service
* DONE have python tool check max packet size before sending to device
* DONE if request was sent reliably, send reply reliably
* DONE require a recent python api to talk to these new device loads
* DONE require a recent android app to talk to these new device loads
* DONE fix handleIncomingPosition
* DONE move want_replies handling into plugins
* DONE on android for received positions handle either old or new positions / user messages
* DONE on android side send old or new positions as needed / user messages
* DONE test python side handle new position/user messages
* DONE make a gpio example. --gpiowrb 4 1, --gpiord 0x444, --gpiowatch 0x3ff
* DONE fix position sending to use new plugin
* DONE Add SinglePortNumPlugin - as the new most useful baseclass
* DONE move positions into regular data packets (use new app framework)
* DONE move user info into regular data packets (use new app framework)
* DONE test that positions, text messages and user info still work
* DONE test that position, text messages and user info work properly with new android app and old device code
* DONE do UDP tunnel
* DONE fix the RTC drift bug
* move python ping functionality into device, reply with rxsnr info
* use channels for gpio security https://github.com/meshtastic/Meshtastic-device/issues/104
* MeshPackets for sending should be reference counted so that API clients would have the option of checking sent status (would allow removing the nasty 30 sec timer in gpio watch sending)
For high speed/lots of devices/short range tasks:
- When guessing numhops for sending: if I've heard from many local (0 hop neighbors) decrease hopcount by 2 rather than 1.
This should nicely help 'router' nodes do the right thing when long range, or if there are many local nodes for short range.
- fix timeouts/delays to be based on packet length at current radio settings
* update faq with antennas https://meshtastic.discourse.group/t/range-test-ideas-requested/738/2
* update faq on recommended android version and phones
* add help link inside the app, reference a page on the wiki
* turn on amazon reviews support
* add a tablet layout (with map next to messages) in the android app
# Old docs to merge
MESH RADIO PROTOCOL
Old TODO notes on the mesh radio protocol, merge into real docs someday...
for each named group we have a pre-shared key known by all group members and
wrapped around the device. you can only be in one group at a time (FIXME?!) To
join the group we read a qr code with the preshared key and ParamsCodeEnum. that
gets sent via bluetooth to the device. ParamsCodeEnum maps to a set of various
radio params (regulatory region, center freq, SF, bandwidth, bitrate, power
etc...) so all members of the mesh can have their radios set the same way.
once in that group, we can talk between 254 node numbers.
to get our node number (and announce our presence in the channel) we pick a
random node number and broadcast as that node with WANT-NODENUM(my globally
unique name). If anyone on the channel has seen someone _else_ using that name
within the last 24 hrs(?) they reply with DENY-NODENUM. Note: we might receive
multiple denies. Note: this allows others to speak up for some other node that
might be saving battery right now. Any time we hear from another node (for any
message type), we add that node number to the unpickable list. To dramatically
decrease the odds a node number we request is already used by someone. If no one
denies within TBD seconds, we assume that we have that node number. As long as
we keep talking to folks at least once every 24 hrs, others should remember we
have it.
Once we have a node number we can broadcast POSITION-UPDATE(my globally unique
name, lat, lon, alt, amt battery remaining). All receivers will use this to a)
update the mapping of who is at what node nums, b) the time of last rx, c)
position. If we haven't heard from that node in a while we reply to that node
(only) with our current POSITION_UPDATE state - so that node (presumably just
rejoined the network) can build a map of all participants.
We will periodically broadcast POSITION-UPDATE as needed based on distance moved
or a periodic minimum heartbeat.
If user wants to send a text they can SEND_TEXT(dest user, short text message).
Dest user is a node number, or 0xff for broadcast.
# Medium priority
Items to complete before 1.0.
# Post 1.0 ideas
- finish DSR for unicast
- check fcc rules on duty cycle. we might not need to freq hop. https://www.sunfiretesting.com/LoRa-FCC-Certification-Guide/ . Might need to add enforcement for europe though.
- make a no bluetooth configured yet screen - include this screen in the loop if the user hasn't yet paired
- if radio params change fundamentally, discard the nodedb
- re-enable the bluetooth battery level service on the T-BEAM
- provide generalized (but slow) internet message forwarding service if one of our nodes has internet connectivity (MQTT) [ Not a requirement but a personal interest ]
# Low priority ideas
Items after the first final candidate release.
- implement nimble battery level service
- Nimble implement device info service remaining fields (hw version etc)
- Turn on RPA addresses for the device side in Nimble
- Try to teardown less of the Nimble protocol stack across sleep
- dynamic frequency scaling could save a lot of power on ESP32, but it seems to corrupt uart (even with ref_tick set correctly)
- Change back to using a fixed sized MemoryPool rather than MemoryDynamic (see bug #149)
- scan to find channels with low background noise? (Use CAD mode of the RF95 to automatically find low noise channels)
- If the phone doesn't read fromradio mailbox within X seconds, assume the phone is gone and we can stop queing location msgs
for it (because it will redownload the nodedb when it comes back)
- add frequency hopping, dependent on the gps time, make the switch moment far from the time anyone is going to be transmitting
- assign every "channel" a random shared 8 bit sync word (per 4.2.13.6 of datasheet) - use that word to filter packets before even checking CRC. This will ensure our CPU will only wake for packets on our "channel"
- the BLE stack is leaking about 200 bytes each time we go to light sleep
- use fuse bits to store the board type and region. So one load can be used on all boards
- Don't store position packets in the to phone fifo if we are disconnected. The phone will get that info for 'free' when it
fetches the fresh nodedb.
- Use the RFM95 sequencer to stay in idle mode most of the time, then automatically go to receive mode and automatically go from transmit to receive mode. See 4.2.8.2 of manual.
- Use fixed32 for node IDs, packetIDs, successid, failid, and lat/lon - will require all nodes to be updated, but make messages slightly smaller.
- add "store and forward" support for messages, or move to the DB sync model. This would allow messages to be eventually delivered even if nodes are out of contact at the moment.
- use variable length Strings in protobufs (instead of current fixed buffers). This would save lots of RAM
- use BLEDevice::setPower to lower our BLE transmit power - extra range doesn't help us, it costs amps and it increases snoopability
- make a HAM build: just a new frequency list, a bool to say 'never do encryption' and use hte callsign as that node's unique id. -from Girts
- don't forward redundant pings or ping responses to the phone, it just wastes phone battery
- don't send location packets if we haven't moved significantly
- scrub default radio config settings for bandwidth/range/speed
- show radio and gps signal strength as an image
- only BLE advertise for a short time after the screen is on and button pressed - to save power and prevent people for sniffing for our BT app.
- make mesh aware network timing state machine (sync wake windows to gps time) - this can save LOTS of battery
- split out the software update utility so other projects can use it. Have the appload specify the URL for downloads.
- read the PMU battery fault indicators and blink/led/warn user on screen
- discard very old nodedb records (> 1wk)
- handle millis() rollover in GPS.getTime - otherwise we will break after 50 days
- report esp32 device code bugs back to the mothership via android
- change BLE bonding to something more secure. see comment by pSecurity->setAuthenticationMode(ESP_LE_AUTH_BOND)
Changes related to wifi support on ESP32:
- iram space: https://esp32.com/viewtopic.php?t=8460
- set https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/external-ram.html spi ram bss
- figure out if iram or bluetooth classic caused ble problems
- post bug on esp32-arduino with BLE bug findings
# Spinoff project ideas
- an open source version of https://www.burnair.ch/skynet/
- a paragliding app like http://airwhere.co.uk/
- How do avalanche beacons work? Could this do that as well? possibly by using beacon mode feature of the RF95?

View File

@@ -1,14 +0,0 @@
# ANT protocol notes
SD340 terms are reasonable for NRF52
https://www.thisisant.com/developer/components/nrf52832#tab_protocol_stacks_tab
Profiles to implement:
tracker
https://www.thisisant.com/developer/ant-plus/device-profiles/#4365_tab
ebike
https://www.thisisant.com/developer/ant-plus/device-profiles/#527_tab
no profile for messaging?

View File

@@ -1,58 +0,0 @@
# Build instructions
This project uses the simple PlatformIO build system. PlatformIO is an extension to Microsoft VSCode. Workflows from building from the GUI or from the commandline are listed below.
If you encounter any problems, please post a question in [our forum](meshtastic.discourse.group). And when you learn a fix, update these instructions for the next person (i.e. edit this file and send in a [pull-request](https://opensource.com/article/19/7/create-pull-request-github) which we will eagerly merge).
## GUI
1. Purchase a suitable [radio](https://github.com/meshtastic/Meshtastic-device/wiki/Hardware-Information).
2. Install [Python](https://www.python.org/downloads/).
3. Install [Git](https://git-scm.com/downloads).
4. Reboot your computer.
5. Install [PlatformIO](https://platformio.org/platformio-ide).
6. Click the PlatformIO icon on the side bar. ![platformio icon](https://user-images.githubusercontent.com/47490997/89482668-77c7ea00-d7ee-11ea-8785-5faf8ff99800.png)
7. Under `Quick Access, Miscellaneous, Clone Git Project` enter the URL of the Meshtastic repo found [here](https://github.com/meshtastic/Meshtastic-device). ![image](https://user-images.githubusercontent.com/47490997/89483047-4c91ca80-d7ef-11ea-91f4-1d53d4e8acd9.png)
8. Select a file location to save the repo.
9. Once loaded, open the `platformio.ini` file.
10. 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).
11. 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`.
12. 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.
## Command Line
1. Purchase a suitable [radio](https://github.com/meshtastic/Meshtastic-device/wiki/Hardware-Information).
2. Install [PlatformIO](https://platformio.org/platformio-ide)
3. Download this git repo and cd into it:
```
git clone https://github.com/meshtastic/Meshtastic-device.git
cd Meshtastic-device
```
4. Run `git submodule update --init --recursive` to pull in dependencies this project needs.
5. If you are outside the USA, run "export COUNTRY=EU865" (or whatever) to set the correct frequency range for your country. Options are provided for `EU433`, `EU865`, `CN`, `JP` and `US` (default). Pull-requests eagerly accepted for other countries.
6. Plug the radio into your USB port
7. Type `pio run --environment XXX -t upload` (This command will fetch dependencies, build the project and install it on the board via USB). For XXX, use the board type you have (either `tlora-v2, tlora-v1, tlora-v2-1-1.6, tbeam, heltec, tbeam0.7`).
8. Platform IO also installs a very nice VisualStudio Code based IDE, see their [tutorial](https://docs.platformio.org/en/latest/tutorials/espressif32/arduino_debugging_unit_testing.html) if you'd like to use it.
## Decoding stack traces
### Option 1
If you get a crash, you can decode the addresses from the `Backtrace:` line:
1. Save the `Backtrace: 0x....` line to a file, e.g., `backtrace.txt`.
2. Run `bin/exception_decoder.py backtrace.txt` (this uses symbols from the
last `firmware.elf`, so you must be running the same binary that's still in
your `.pio/build` directory).
### Option 2
You can run the exception decoder to monitor the serial output and decode backtraces in real time.
1. From within PlatformIO, open a new terminal.
2. At the the terminal, enter:
`pio device monitor --port /dev/cu.SLAB_USBtoUART -f esp32_exception_decoder`
Replace the value of port with the location of your serial port.

View File

@@ -1,51 +0,0 @@
# Encryption in Meshtastic
Cryptography is tricky, so we've tried to 'simply' apply standard crypto solutions to our implementation. However,
the project developers are not cryptography experts. Therefore we ask two things:
- If you are a cryptography expert, please review these notes and our questions below. Can you help us by reviewing our
notes below and offering advice? We will happily give as much or as little credit as you wish ;-).
- Consider our existing solution 'alpha' and probably fairly secure against a not particularly aggressive adversary
(but we can't yet make a more confident statement).
## Summary of strengths/weaknesses of our current implementation
Based on comments from reviewers (see below), here's some tips for usage of these radios. So you can know the level of protection offered:
* It is pretty likely that the AES256 security is implemented 'correctly' and an observer will not be able to decode your messages.
* Warning: If an attacker is able to get one of the radios in their posession, they could either a) extract the channel key from that device or b) use that radio to listen to new communications.
* Warning: If an attacker is able to get the "Channel QR code/URL" that you share with others - that attacker could then be able to read any messages sent on the channel (either tomorrow or in the past - if they kept a raw copy of those broadcast packets)
Possible future areas of work (if there is enough interest - post in our [forum](https://meshtastic.discourse.group) if you want this):
1. Optionally requiring users to provide a PIN to regain access to the mesh. This could be based on: intentionally locking the device, time since last use, or any member could force all members to reauthenticate,
2. Until a device reauthenticates, any other access via BLE or USB would be blocked (this would protect against attackers who are not prepared to write custom software to extract and reverse engineer meshtastic flash memory)
3. Turning on read-back protection in the device fuse-bits (this would extend protection in #2 to block all but **extremely** advanced attacks involving chip disassembly)
4. Time limiting keys used for message transmission and automatically cycling them on a schedule. This would protect past messages from being decoded even if an attacker learns the current key.
### Notes for reviewers
If you are reviewing our implementation, this is a brief statement of our method.
- We do all crypto at the SubPacket (payload) level only, so that all meshtastic nodes will route for others - even those channels which are encrypted with a different key.
- Mostly based on reading [Wikipedia](<https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Counter_(CTR)>) and using the modes the ESP32 provides support for in hardware.
- We use AES256-CTR as a stream cypher (with zero padding on the last BLOCK) because it is well supported with hardware acceleration.
- Our AES key is 128 or 256 bits, shared as part of the 'Channel' specification.
- The node number concatenated with the packet number is used as the NONCE. This nonce will be stored in flash in the device and should essentially never repeat. If the user makes a new 'Channel' (i.e. picking a new random 256 bit key), the packet number will start at zero.
- The packet number is sent in cleartext with each packet. The node number can be derived from the "from" field of each packet. (Cleartext is acceptable because it merely provides IV for each encryption run)
- Each 16 byte BLOCK for a packet has an incrementing COUNTER. COUNTER starts at zero for the first block of each packet.
- The IV for each block is constructed by concatenating the NONCE as the upper 96 bits of the IV and the COUNTER as the bottom 32 bits. Since our packets are small counter portion will really never be higher than 32 (five bits).
## Comments from reviewer #1
This reviewer is a cryptography professional, but would like to remain anonymous. We thank them for their comments ;-):
I'm assuming that meshtastic is being used to hike in places where someone capable is trying to break it - like you were going to walk around DefCon using these. I spent about an hour reviewing the encryption, and have the following notes:
* The write-up isn't quite as clear as the code.
* The code is using AES-CTR mode correctly to ensure confidentiality.
* The comment for initNonce really covers the necessary information.
* I think the bigger encryption question is "what does the encryption need to do"? As it stands, an attacker who has yet to capture any of the devices cannot reasonably capture text or location data. An attacker who captures any device in the channel/mesh can read everything going to that device, everything stored on that device, and any other communication within the channel that they captured in encrypted form. If that capability basically matches your expectations, it is suitable for whatever adventures this was intended for, then, based on information publicly available or widely disclosed, the encryption is good. If those properties are distressing (like, device history is deliberately limited and you don't want a device captured today to endanger the information sent over the channel yesterday) we could talk about ways to achieve that (most likely synchronizing time and replacing the key with its own SHA256 every X hours, and ensuring the old key is not retained unnecessarily).
* Two other things to keep in mind are that AES-CTR does not itself provide authenticity (e.g. an attacker can flip bits in replaying data and scramble the resulting plaintext), and that the current scheme gives some hints about transmission in the size. So, if you worry about an adversary deliberately messing-up messages or knowing the length of a text message, it looks like those might be possible.
I'm guessing that the network behaves somewhat like a store-and-forward network - or, at least, that the goal is to avoid establishing a two-way connection to transmit data. I'm afraid I haven't worked with mesh networks much, but remember studying them briefly in school about ten years ago.

Some files were not shown because too many files have changed in this diff Show More