Website and documentation source for the Meshtastic project.
For complete instructions on setting up your development environment and for building and running the project locally, please refer to our Local Development Guide.
Meshtastic device firmware
Home Page: https://meshtastic.org
License: GNU General Public License v3.0
Website and documentation source for the Meshtastic project.
For complete instructions on setting up your development environment and for building and running the project locally, please refer to our Local Development Guide.
After pairing, in the setting I see the radio. When I select other menu items it just sends the radio into a boot loop.
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5828
entry 0x400806ac
booted, wake cause 0 (boot count 1), reset_reason=reset
I2C device found at address 0x3c
ssd1306 display found
done
Meshtastic swver=0.2.0, hwver=1.0-US
Turning on screen
Read RTC time as 29 (cur millis 89) valid=0
ERROR: No bidirectional GPS found, hoping that it still might work
Loading saved preferences
Warn: devicestate is old, discarding
NODENUM=0x4, dbsize=1
Starting meshradio init...
IRQ flag mask 0x0
Set radio: name=Default. config=3, ch=6, txpower=23
sending owner !246f28978300/Unknown 8300/?00
Update DB node 0x4 for variant 4, rx_time=0
old user !246f28978300/Unknown 8300/?00
updating changed=0 user !246f28978300/Unknown 8300/?00
immedate send on mesh (txGood=0,rxGood=0,rxBad=0)
Screen: Started...
showing standard frames
Transition powerFSM transition=boot timeout, from=BOOT to=ON
Setting bluetooth enable=1
Pre BT: 194964 heap size
Starting bluetooth
*** Mesh service:
onAuthenticationComplete -> success size: 12
showing standard frames
Trigger powerFSM 9
Error: can't encode protobuf unterminated string
assertion "0" failed: file "src/mesh-pb-constants.cpp", line 17, function: size_t pb_encode_to_bytes(uint8_t*, size_t, const pb_msgdesc_t*, const void*)
abort() was called at PC 0x400fea63 on core 0
Backtrace: 0x4009271c:0x3ffe2070 0x4009294d:0x3ffe2090 0x400fea63:0x3ffe20b0 0x400d577e:0x3ffe20e0 0x400d314a:0x3ffe2120 0x400d31db:0x3ffe2170 0x400d31f2:0x3ffe2190 0x400dcda1:0x3ffe21b0 0x400e1135:0x3ffe2460 0x400df911:0x3ffe2480 0x400dfd0d:0x3ffe24d0 0x400df361:0x3ffe24f0 0x400ddcbd:0x3ffe2550 0x4011dca1:0x3ffe2570 0x40117d52:0x3ffe25b0 0x4008ee31:0x3ffe25e0
Rebooting...
after an eight 8hr stress test one of the nodes entered this reboot loop:
updating changed=0 user !2462abdddf38/Unknown df38/?38
Deleting old broadcast record 0
Deleting old broadcast record 0
Deleting old broadcast record 0
Adding broadcast record for fr=0x38,to=0xff,id=60
Sending packet via interface fr=0x38,to=0xff,id=60
immediate send on mesh fr=0x38,to=0xff,id=60
(txGood=1018,rxGood=794,rxBad=0)
Deleting old broadcast record 0
Found existing broadcast record for fr=0x38,to=0xff,id=60
Ignoring incoming floodmsg, because we've already seen it
fix type 3
Notifying observers of received packet fr=0xb4,to=0x38,id=214
Trigger powerFSM 3
Ignoring incoming time, because we have a GPS
Forwarding to phone, from=0xb4, rx_time=1587236495
Update DB node 0xb4, rx_time=1587236495
old user !246f28b200b4/bob/b
updating changed=0 user !246f28b200b4/bob/b
NOTE: tophone queue is full, discarding oldest
Adding broadcast record for fr=0xb4,to=0xff,id=215
Rebroadcasting received floodmsg to neighbors fr=0xb4,to=0xff,id=215
Sending packet via interface fr=0xb4,to=0xff,id=215
immediate send on mesh fr=0xb4,to=0xff,id=215
(txGood=1019,rxGood=797,rxBad=0)
Notifying observers of received packet fr=0xb4,to=0xff,id=215
Trigger powerFSM 3
Ignoring incoming time, because we have a GPS
Received broadcast Owner from 0xb4, replying with our owner
sending owner !2462abdddf38/Unknown df38/?38
Update DB node 0x38, rx_time=1587236498
old user !2462abdddf38/Unknown df38/?38
updating changed=0 user !2462abdddf38/Unknown df38/?38
Sending packet via interface fr=0x38,to=0xb4,id=61
enquing packet for send from=0x38, to=0xb4
Forwarding to phone, from=0xb4, rx_time=1587236498
Update DB node 0xb4, rx_time=1587236498
old user !246f28b200b4/bob/b
updating changed=0 user !246f28b200b4/bob/b
NOTE: tophone queue is full, discarding oldest
Screen: Joined: bob
fix type 3
fix type 3
new gps pos lat=37.521061, lon=-122.309048, alt=189
got gps notify
Sending position to mesh
Update DB node 0x38, rx_time=1587236515
Providing time to mesh 1587236515
Deleting old broadcast record 0
Deleting old broadcast record 0
Adding broadcast record for fr=0x38,to=0xff,id=62
Sending packet via interface fr=0x38,to=0xff,id=62
immediate send on mesh fr=0x38,to=0xff,id=62
(txGood=1021,rxGood=797,rxBad=0)
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/queue.c:1446 (xQueueGenericReceive)- assert failed!
abort() was called at PC 0x4009105f on core 1
Backtrace: 0x40094cb4:0x3ffbe7e0 0x40094ee5:0x3ffbe800 0x4009105f:0x3ffbe820 0x400e7da1:0x3ffbe860 0x400d8c70:0x3ffbe880 0x400d690d:0x3ffbe8a0 0x400d6a91:0x3ffbe8c0 0x400d6d55:0x3ffbe8e0 0x400d63d1:0x3ffbe900 0x40081307:0x3ffbe940 0x4008137d:0x3ffbe960 0x40087d85:0x3ffbe980 0x4000bfed:0x3ffdc040 0x40092545:0x3ffdc050 0x400919f8:0x3ffdc070 0x400e6f9e:0x3ffdc0a0 0x400e73b7:0x3ffdc0d0 0x400d88b1:0x3ffdc0f0 0x400d890d:0x3ffdc110 0x400d8a3d:0x3ffdc130 0x400dbf4c:0x3ffdc150 0x400dc643:0x3ffdc170 0x400d84b7:0x3ffdc1a0 0x400d56c0:0x3ffdc1c0 0x400d3f5e:0x3ffdc1e0 0x400d3f37:0x3ffdc210 0x400d5be9:0x3ffdc240 0x400e8b31:0x3ffdc270 0x400913c9:0x3ffdc290
Rebooting...
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5828
entry 0x400806ac
booted, wake cause 0 (boot count 1), reset_reason=reset
I2C device found at address 0x34
axp192 PMU found
I2C device found at address 0x3c
ssd1306 display found
done
Meshtastic swver=0.0.0, hwver=1.0 - US
Turning on screen
chip id detect 0x3
Detect CHIP :AXP192
OUTPUT Register 0x5f
AXP192 Begin PASS
DCDC1: ENABLE
DCDC2: ENABLE
LDO2: ENABLE
LDO3: ENABLE
DCDC3: ENABLE
Exten: ENABLE
----------------------------------------
DCDC1: ENABLE
DCDC2: ENABLE
LDO2: ENABLE
LDO3: ENABLE
DCDC3: ENABLE
Exten: ENABLE
SRC REG:0xc4
Charging enable is enable
Charging target-voltage : 0x2
end when the charge current is lower than 10% of the set value
Charge current : 700.00 mA
Guru Meditation Error: Core 1 panic'ed (Interrupt wdt timeout on CPU1)
Core 1 register dump:
PC : 0x40081369 PS : 0x00050034 A0 : 0x40087d88 A1 : 0x3ffbe960
A2 : 0x00000015 A3 : 0x3ffd2db4 A4 : 0x00000000 A5 : 0x04000000
A6 : 0x00000004 A7 : 0x3ffbb130 A8 : 0x00000001 A9 : 0x00000020
A10 : 0x00000020 A11 : 0x00000000 A12 : 0x800948fb A13 : 0x3ffdc020
A14 : 0x3ffb9a20 A15 : 0xbaad5678 SAR : 0x00000015 EXCCAUSE: 0x00000006
EXCVADDR: 0x00000000 LBEG : 0x400029ac LEND : 0x400029cb LCOUNT : 0x00000000
Core 1 was running in ISR context:
EPC1 : 0x4000bff0 EPC2 : 0x00000000 EPC3 : 0x00000000 EPC4 : 0x40081369
Backtrace: 0x40081369:0x3ffbe960 0x40087d85:0x3ffbe980 0x4000bfed:0x3ffdc070 0x40092545:0x3ffdc080 0x400ebe77:0x3ffdc0a0 0x400ebecd:0x3ffdc0e0 0x400e65ed:0x3ffdc110 0x400e6699:0x3ffdc140 0x400d593e:0x3ffdc160 0x400d5a40:0x3ffdc180 0x400e8b1f:0x3ffdc1c0 0x400913c9:0x3ffdc1e0
Core 0 register dump:
PC : 0x4019cf5e PS : 0x00060134 A0 : 0x800eb539 A1 : 0x3ffbc700
A2 : 0x00000000 A3 : 0x00000001 A4 : 0x00000000 A5 : 0x00000001
A6 : 0x00060320 A7 : 0x00000000 A8 : 0x800ea75a A9 : 0x3ffbc6d0
A10 : 0x00000000 A11 : 0x00000001 A12 : 0x800915dc A13 : 0x3ffbd5e0
A14 : 0x00000000 A15 : 0x3ffbc400 SAR : 0x00000000 EXCCAUSE: 0x00000006
EXCVADDR: 0x00000000 LBEG : 0x00000000 LEND : 0x00000000 LCOUNT : 0x00000000
Backtrace: 0x4019cf5e:0x3ffbc700 0x400eb536:0x3ffbc720 0x40092bbd:0x3ffbc740 0x400913c9:0x3ffbc760
Rebooting...
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5828
entry 0x400806ac
booted, wake cause 0 (boot count 1), reset_reason=reset
I2C device found at address 0x34
axp192 PMU found
I2C device found at address 0x3c
ssd1306 display found
done
Meshtastic swver=0.0.0, hwver=1.0 - US
Turning on screen
chip id detect 0x3
Detect CHIP :AXP192
OUTPUT Register 0x5f
AXP192 Begin PASS
DCDC1: ENABLE
DCDC2: ENABLE
LDO2: ENABLE
LDO3: ENABLE
DCDC3: ENABLE
Exten: ENABLE
----------------------------------------
DCDC1: ENABLE
DCDC2: ENABLE
LDO2: ENABLE
LDO3: ENABLE
DCDC3: ENABLE
Exten: ENABLE
SRC REG:0xc4
Charging enable is enable
Charging target-voltage : 0x2
end when the charge current is lower than 10% of the set value
Charge current : 700.00 mA
Guru Meditation Error: Core 1 panic'ed (Interrupt wdt timeout on CPU1)
Core 1 register dump:
PC : 0x40081369 PS : 0x00050034 A0 : 0x40087d88 A1 : 0x3ffbe960
A2 : 0x00000015 A3 : 0x3ffd2db4 A4 : 0x00000000 A5 : 0x04000000
A6 : 0x00000004 A7 : 0x3ffbb130 A8 : 0x00000001 A9 : 0x00000020
A10 : 0x00000020 A11 : 0x00000000 A12 : 0x800948fb A13 : 0x3ffdc020
A14 : 0x3ffb9a20 A15 : 0xbaad5678 SAR : 0x00000015 EXCCAUSE: 0x00000006
EXCVADDR: 0x00000000 LBEG : 0x400029ac LEND : 0x400029cb LCOUNT : 0x00000000
Core 1 was running in ISR context:
EPC1 : 0x4000bff0 EPC2 : 0x00000000 EPC3 : 0x00000000 EPC4 : 0x40081369
Backtrace: 0x40081369:0x3ffbe960 0x40087d85:0x3ffbe980 0x4000bfed:0x3ffdc070 0x40092545:0x3ffdc080 0x400ebe77:0x3ffdc0a0 0x400ebecd:0x3ffdc0e0 0x400e65ed:0x3ffdc110 0x400e6699:0x3ffdc140 0x400d593e:0x3ffdc160 0x400d5a40:0x3ffdc180 0x400e8b1f:0x3ffdc1c0 0x400913c9:0x3ffdc1e0
Core 0 register dump:
PC : 0x4019cf5e PS : 0x00060134 A0 : 0x800eb539 A1 : 0x3ffbc700
A2 : 0x00000000 A3 : 0x00000001 A4 : 0x00000000 A5 : 0x00000001
A6 : 0x00060320 A7 : 0x00000000 A8 : 0x800ea75a A9 : 0x3ffbc6d0
A10 : 0x00000000 A11 : 0x00000001 A12 : 0x800915dc A13 : 0x3ffbd5e0
A14 : 0x00000000 A15 : 0x3ffbc400 SAR : 0x00000000 EXCCAUSE: 0x00000006
EXCVADDR: 0x00000000 LBEG : 0x00000000 LEND : 0x00000000 LCOUNT : 0x00000000
Backtrace: 0x4019cf5e:0x3ffbc700 0x400eb536:0x3ffbc720 0x40092bbd:0x3ffbc740 0x400913c9:0x3ffbc760
Rebooting...
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5828
entry 0x400806ac
booted, wake cause 0 (boot count 1), reset_reason=reset
I2C device found at address 0x34
axp192 PMU found
I2C device found at address 0x3c
ssd1306 display found
done
Meshtastic swver=0.0.0, hwver=1.0 - US
Turning on screen
chip id detect 0x3
Detect CHIP :AXP192
OUTPUT Register 0x5f
AXP192 Begin PASS
DCDC1: ENABLE
DCDC2: ENABLE
LDO2: ENABLE
LDO3: ENABLE
DCDC3: ENABLE
Exten: ENABLE
----------------------------------------
DCDC1: ENABLE
DCDC2: ENABLE
LDO2: ENABLE
LDO3: ENABLE
DCDC3: ENABLE
and instructions on where to buy, how to solder in screen if it didn't come with one.
move some of this contents from README.
per comment from @girtsf
From @claesg
TTGO T-BEAN stuck in boot loop.
Yesterday it was running fine (on 0.1.0) and this morning it was dead. I connected it to arduino ide and the serial monitor and noticed that it was looping:
kโธฎโธฎ)Setting GPS power=0
ets Jun 8 2016 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
booted, wake cause 4 (boot count 6)
I2C device found at address 0x34
axp192 PMU found
I2C device found at address 0x3c
ssd1306 display found
done
chip id detect 0x3
Detect CHIP :AXP192
OUTPUT Register 0x57
AXP192 Begin PASS
DCDC1: ENABLE
DCDC2: ENABLE
LDO2: ENABLE
LDO3: DISABLE
DCDC3: ENABLE
Exten: ENABLE
DCDC1: ENABLE
DCDC2: ENABLE
LDO2: ENABLE
LDO3: ENABLE
DCDC3: ENABLE
Exten: ENABLE
SRC REG:0xc4
Charging enable is enable
Charging target-voltage : 0x2
end when the charge current is lower than 10% of the set value
Charge current : 700.00 mA
enable [0x40]val:0xdc
enable [0x41]val:0xff
Meshtastic swver=0.1.0, hwver=1.0-EU
Read RTC time as 21 (cur millis 1503) valid=0
Screen: Started...
Loading saved preferences
NODENUM=0xa0, dbsize=1
Starting meshradio init...
IRQ flag mask 0x0
Set radio: name=. config=0, ch=0, txpower=0
Trigger powerFSM 6
Transition powerFSM transition=Boot, from=DARK to=ON
Setting bluetooth enable=1
Pre BT: 187784 heap size
Starting bluetooth
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
booted, wake cause 4 (boot count 7)
I2C device found at address 0x34
axp192 PMU found
I2C device found at address 0x3c
ssd1306 display found
done
chip id detect 0x3
Detect CHIP :AXP192
OUTPUT Register 0x57
AXP192 Begin PASS
DCDC1: ENABLE
DCDC2: ENABLE
LDO2: ENABLE
LDO3: DISABLE
DCDC3: ENABLE
Exten: ENABLE
DCDC1: ENABLE
DCDC2: ENABLE
LDO2: ENABLE
LDO3: ENABLE
DCDC3: ENABLE
Exten: ENABLE
SRC REG:0xc4
Charging enable is enable
Charging target-voltage : 0x2
end when the charge current is lower than 10% of the set value
Charge current : 700.00 mA
enable [0x40]val:0xdc
enable [0x41]val:0xff
Meshtastic swver=0.1.0, hwver=1.0-EU
Read RTC time as 25 (cur millis 1503) valid=0
Screen: Started...
Loading saved preferences
NODENUM=0xa0, dbsize=1
Starting meshradio init...
IRQ flag mask 0x0
Set radio: name=. config=0, ch=0, txpower=0
Trigger powerFSM 6
Transition powerFSM transition=Boot, from=DARK to=ON
Setting bluetooth enable=1
Pre BT: 187784 heap size
Starting bluetooth
Setting bluetooth enable=0
I tried to reflash meshtastic but it did not help. I had to flash 'wifi scan' example from the ide which it accepted and it was working. I then flashed meshtastic and this time it is working as expected. Maybe the log above can tell what happened?
Sorry about the strange formatting.
To be honest, I highly recommend this function that can support modularity. For example, if you only need SMS, then the interface reminds you that you can only use this, and I hope that the APP of this software can be modified, like the chat room, let The interface is better-looking, and can have the same interface as ordinary mobile phone text messages. It can also support the switch between Bluetooth and WIFI connection instead of flashing the firmware through the computer, because it is too troublesome. Secondly, such a Mesh device hopes to pass WIFI. Support multi-person connection, and multiple people share one device.
I highly recommend that it can be used to support more boards, so that it can pass through different boards and different loRa boards, so that it is easier to DIY! For example, this esp32 Espressif and sx1278 (An Xinxin Ra02)
I really hope that everyone can adopt it and act! At the same time, I also hope it will succeed
From a radio enthusiast
V 0.1.6
I added:
https://github.com/mikalhart/TinyGPSPlus.git
Line 70 platformio.ini
Now seeing location in debug monitor!
I see a great potential that this project focused on open source communication can successfully apply for funding (https://nlnet.nl/foundation/can_do.html). Look also on the themes https://nlnet.nl/themes/ and the project NLnet is supporting; https://nlnet.nl/project/current.html
theory, it is the flash partitioning.
I think I have a pretty good theory on what is wrong with programming your device (I just reproed it on a similar device of mine). Some kind soul reported that the HELTEC image works fine on the TTGO LoRa32, but I think that somewhat depends on luck because I think TTGO and Heltec partition their flash somewhat differently. I'll need to make a small script to let you program your device reliably. I'll do that tonight.
per good feedback from @cyclomies:
The simplicity of the app, including the other parts of this project as well, is greate. The ability to communicate with all channel users are nice, and all hikers can start using the app with minimal knowledge of the system.
There could be these logical ways to send text messages between users:
a chat for one to all mesh users (default cryptography)
one to one text messages (whoever on the mesh, default cryptography)
public rooms within the mesh (all users can join and use the room, default cryptography)
private rooms for one to many (selected users, private PSK)
unencrypted room for everyone to send emergency messages (totally unencrypted, whoever on the MHz band can open the plain modulation)
Private rooms could be using a different PSK, but the same mesh network settings.
Rooms can be problematic, as they might increase amount of packets. If there are a lot of users within the rooms, unicast messages might become as dense as broadcast messages on the mesh (as almost all messages has to be sent to several nodes).
What about renaming channel to network settings or similar, to empathize the differences between chat rooms, the physical networking settings, and mesh settings? Settings should still be easily set up (working defaults).
I haven't read the source code, but I'm wondering if and how does the system works without a gateway, and in that case, how do you intend to do mesh networking ?
as mentioned by @girtsf. making a bug to remind me.
How hard would it be to add support for the https://github.com/LilyGO/TTGO-LORA-V1 in addition to Heltec board that you already support?
$36 for a pair of them and they have a nice 3d-printed case
https://www.aliexpress.com/item/32842155838.html
version 0.1.8 -It was happening on previous version too, this time about ten minutes after flashing. I dont know if its always the same node. I will check this time it was my node ending 44.
canSleep, mode=3, isRx=0, txEmpty=0, txGood=4
canSleep, mode=3, isRx=0, txEmpty=0, txGood=4
canSleep, mode=3, isRx=0, txEmpty=0, txGood=4
Trigger powerFSM 9
Transition powerFSM transition=Contact from phone, from=DARK to=DARK
pbread from ea9f3f82-8dc4-4733-9452-1f6da28892a2 returns 30 bytes
canSleep, mode=3, isRx=0, txEmpty=0, txGood=4
canSleep, mode=3, isRx=0, txEmpty=0, txGood=4
canSleep, mode=3, isRx=0, txEmpty=0, txGood=4
canSleep, mode=3, isRx=0, txEmpty=0, txGood=4
canSleep, mode=3, isRx=0, txEmpty=0, txGood=4
canSleep, mode=3, isRx=0, txEmpty=0, txGood=4
previously I didn't see the message in the middle, its usually just the other lines scrolling very quickly. Cannot get screen to turn on or anything happening by pressing the button. Blue led is off, have to press RST button then it works again. I am tending to leave my units on all they time, this problem usually arise some minutes after boot. I will see if I can capture the preceeding message by running the terminal through tee, or make it log to file.
canSleep, mode=3, isRx=0, txEmpty=0, txGood=168
canSleep, mode=3, isRx=0, txEmpty=0, txGood=168
canSleep, mode=3, isRx=0, txEmpty=0, txGood=168
canSleep, mode=3, isRx=0, txEmpty=0, txGood=168
canSleep, mode=3, isRx=0, txEmpty=0, txGood=168
canSleep, mode=3, isRx=0, txEmpty=0, txGood=168
canSleep, mode=3, isRx=0, txEmpty=0, txGood=168
canSleep, mode=3, isRx=0, txEmpty=0, txGood=168
canSleep, mode=3, isRx=0, txEmpty=0, txGood=168
NOTE! Recording critical error 2, address=0
Setting bluetooth enable=0
Shutdown BT: 170596 heap size
Exit light sleep gpio: btn=0, rf95=1
wakeCause 7
Trigger powerFSM 2
Transition powerFSM transition=Wake timer, from=LS to=DARK
Looking for GPS lock
Setting bluetooth enable=1
Pre BT: 170596 heap size
Starting bluetooth
*** Mesh service:
fix type 3
ERROR! Bug! Tx packet took too long to send, forcing radio into rx mode
NOTE! Recording critical error 1, address=0
sending owner !246f28b200b4/bob/b
Update DB node 0xb4, rx_time=1587178505
old user !246f28b200b4/bob/b
updating changed=0 user !246f28b200b4/bob/b
Deleting old broadcast record 0
Adding broadcast record for fr=0xb4,to=0xff,id=194
Sending packet via interface fr=0xb4,to=0xff,id=194
immediate send on mesh fr=0xb4,to=0xff,id=194
(txGood=168,rxGood=141,rxBad=2)
pmu irq!
Battery fully charged
fix type 3
new gps pos lat=37.521136, lon=-122.309262, alt=115
got gps notify
Sending position to mesh
Update DB node 0xb4, rx_time=1587178514
Providing time to mesh 1587178514
Deleting old broadcast record 0
Adding broadcast record for fr=0xb4,to=0xff,id=195
Sending packet via interface fr=0xb4,to=0xff,id=195
enquing packet for send from=0xb4, to=0xff
No radio was able to send packet, discarding...
pmu irq!
Battery start charging
pmu irq!
Battery fully charged
ERROR! Bug! Tx packet took too long to send, forcing radio into rx mode
NOTE! Recording critical error 1, address=0
pmu irq!
Battery start charging
fix type 3
pmu irq!
Battery fully charged
fix type 3
new gps pos lat=37.521136, lon=-122.309262, alt=115
got gps notify
Sending position to mesh
Update DB node 0xb4, rx_time=1587178554
Providing time to mesh 1587178554
Deleting old broadcast record 0
Adding broadcast record for fr=0xb4,to=0xff,id=196
Sending packet via interface fr=0xb4,to=0xff,id=196
immediate send on mesh fr=0xb4,to=0xff,id=196
(txGood=168,rxGood=141,rxBad=2)
pmu irq!
Battery start charging
pmu irq!
Battery fully charged
sending owner !246f28b200b4/bob/b
Update DB node 0xb4, rx_time=1587178565
old user !246f28b200b4/bob/b
updating changed=0 user !246f28b200b4/bob/b
Deleting old broadcast record 0
Adding broadcast record for fr=0xb4,to=0xff,id=197
Sending packet via interface fr=0xb4,to=0xff,id=197
enquing packet for send from=0xb4, to=0xff
No radio was able to send packet, discarding...
pmu irq!
Battery start charging
doc/video ideas:
It would be awesome if someone wants to make these happen!
(Based on discussion with @SensorsIot)
Using both a (reasonably new) Motorola Moto G7 with Android 9, and a (super old) HTC One M7 with Android 4.4.
I tap "pair" on the phone, then sometimes get no response at all, other times get a prompt on the phone for a passkey, but get no key displayed on the device or serial port.
Also noticed the "signal xx seconds ago" display often resets to 0 at the instant you tap "pair".
In chat @girtsf asked (wrt the python API library/tool he's developing):
what would be the tradeoffs for grouping most things into a single bluetooth characteristic and having a top-level proto with a oneof?
Yah, some of this is an accident of history. That was my original implementation - you can see some notes here in the inline docs for ToRadio and FromRadio:
https://github.com/meshtastic/Meshtastic-protobufs/blob/master/mesh.proto#L440
But I switched relatively early to the sixish ble characteristics you see there currently. There were two reasons (which kinda made since then but less so now):
With multiple characteristics I didn't need to build a state machine on the device side to provide complex behavior for when the phone reads FromRadio. i.e. I woudn't need to go "the phone has sent WantNodes to me, so I should send one node from the DB at a time until done with that and then go back to providing received messages from the mesh. In fact, thinking now about it I'm not sure such a statemachine is needed on the device side, it might be better to just pass through any RX mesh packets we have and only if none are waiting, send the node db records? (then let the phone be smart enough to not process those messages until it has a nodedb (which it needs to intelligently provide those messages to higher application layers)
I initially didn't have a working phone app (or trusted/working device bluetooth code), so it was super handy for me to be able to use a tool like NRFConnect to do initial debugging of the device side (and that tool doesn't understand protobufs).
Now that things are a bit more mature, I think it might be a super good idea to go back to just having only the two FromRadio and ToRadio characteristics. This could be done incrementally without breaking the android app by:
At startup read from FromRadio until you get back an empty packet. From then on just subscribe to NOTIFY ble messages for FromRadio. (This is similar to the android app)
Don't implement/use any of the other characteristics.
Uncomment the extra lines you see commented out in FromRadio and ToRadio. You'll also need to add a couple of other Protobufs in that 'API' for things like 'WantConfig', 'WantMyNodeInfo' etc... Change the device code that handles ToRadio writes to properly handle these new operations. Either you can do this, or if you don't feel comfortable yet mucking with that device code tell me you want me to do it.
Finish your python API using just these two characteristics. (Separately I'll change the android app to only use these two characteristics)
Delete the 4ish unneeded characteristics from the docs and the device code.
(cc @jeksys because useful and relevant to you)
The bootscreen does not appear on some ssd1306 screens. All the other screens work. Almost certainly due to i2c crap when coming up from cold boot.
Getting battery percentage isn't trivial. We could look into calculating it from the voltage, or doing coulomb counting by polling axp192 current/voltage registers.
Based on a comment from @claesg that he got the TBEAM load working with this: https://www.banggood.com/LILYGO-TTGO-LORA32-868Mhz-SX1276-ESP32-Oled-Display-bluetooth-WIFI-Lora-Development-Module-Board-p-1248652.html?cur_warehouse=UK
We should probably change the way we set the flag in NodeDB.cpp:
myNodeInfo.has_gps = true;
based on board type. But really, we should always set that flag based on "have we ever successfully talked to the GPS" - this should be done from GPS.cpp if the encode() routine ever returns true.
This would allow proper reporting of that flag to phones based on what we dynamically discovered to actually be connected on our board. This is important, because if the phone sees that flag as false, it assumes the local device doesn't have a GPS so the phone spends battery to periodically use the android GPS to send location data for the current node.
So we can get information from the field to see if there are errors occuring that we don't know about.
This would be done by calling recordCriticalError() from setup() based on reading the reset error reason. Preferably with the address of the fault also.
New power meter allowed me to see it is only about 4ma for the screen (much lower than worst case datasheet value). So we should increase the length of the ON power management state and decrease the length of the DARK state. Possibly keep the screen on for a few mins any time a message arrives.
Interesting...
I just went to purchase a TBEAM unit from your link to Ali Express. Selected the 915mHz unit. Received this message:
"Unable to ship to the US".
Not sure if its COVID-related or another issue. Might be good to find multiple sources of these products if possible.
Due to AXP192 interrupt not firing we have to keep polling the battery state.
Even if you are set to EU433, I think this is legacy from the old method of selecting hardware and band in configuration.h
It may be a good idea to display which band and hardware is selected in boot messages and on the screen in case someone flashed the wrong firmware. All the sx1276/7/8/9 are advertised to operate over a wide frequency range, I assume that they may operate suboptimally outside of the intended frequency, though its not clear from what I seen scanning semtech datasheet.
I think, many people need a router version. With ethernet cable.
Increase network and comunicating from/to internet
For example tox, matrix, wire <-> to lora
https://github.com/Xinyuan-LilyGo/TTGO-LoRa-Series
https://www.aliexpress.com/item/32915894264.html?spm=2114.12010612.8148356.6.2f4c3615hn7e2j
and i can't find the bt pairing code ,0000 and 1234 are both wrong.
I've got this on both nodes, I did a git pull yesterday, and built myself - I notice there are a few commits since the last release zip, its in MeshService.cpp:204 which is handleFromRadio();
Here is stack and decode from both, they are very similar, it could also be some external library/framework though,:
scott@n550jk:~/pio/Meshtastic-esp32$ bin/exception_decoder.py -p ESP32 -e .pio/build/tbeam/firmware.elf /tmp/crash1
stack:
0x400d39d5: MeshService::loop() at /home/scott/pio/Meshtastic-esp32/src/MeshService.cpp:204
0x400d5ff3: loop() at /home/scott/pio/Meshtastic-esp32/src/main.cpp:319
0x400e799d: loopTask(void*) at /home/scott/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:19
0x400913c9: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c:355 (discriminator 1)
scott@n550jk:~/pio/Meshtastic-esp32$ bin/exception_decoder.py -p ESP32 -e .pio/build/tbeam/firmware.elf /tmp/crash2
stack:
0x400d39d5: MeshService::loop() at /home/scott/pio/Meshtastic-esp32/src/MeshService.cpp:204
0x400d5ff3: loop() at /home/scott/pio/Meshtastic-esp32/src/main.cpp:319
0x400e799d: loopTask(void*) at /home/scott/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:19
0x400913c9: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c:355 (discriminator 1)
scott@n550jk:~/pio/Meshtastic-esp32$ cat /tmp/crash1 /tmp/crash2
Guru Meditation Error: Core 1 panic'ed (InstrFetchProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x3ffe9300 PS : 0x00060330 A0 : 0x800d39d8 A1 : 0x3ffd8ce0
A2 : 0x3ffc54c0 A3 : 0x3ffe7d08 A4 : 0x00000005 A5 : 0x00000000
A6 : 0x00000000 A7 : 0x3ffd6e00 A8 : 0x800d39c4 A9 : 0x3ffd8cb0
A10 : 0x3ffe91d8 A11 : 0x00000005 A12 : 0x00000000 A13 : 0x00000020
A14 : 0x00060920 A15 : 0x00000000 SAR : 0x00000004 EXCCAUSE: 0x00000014
EXCVADDR: 0x3ffe9300 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0xffffffff
Backtrace: 0x3ffe9300:0x3ffd8ce0 0x400d39d5:0x3ffd8d00 0x400d5ff3:0x3ffd8d20 0x400e799d:0x3ffd8d50 0x400913c9:0x3ffd8d70
Guru Meditation Error: Core 1 panic'ed (InstrFetchProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x3ffe9238 PS : 0x00060330 A0 : 0x800d39d8 A1 : 0x3ffd8ce0
A2 : 0x3ffc54c0 A3 : 0x3ffe8bf4 A4 : 0x00000005 A5 : 0x00000000
A6 : 0x00000000 A7 : 0x3ffd6e00 A8 : 0x800d39c4 A9 : 0x3ffd8cb0
A10 : 0x3ffe9238 A11 : 0x00000005 A12 : 0x00000001 A13 : 0x0000001c
A14 : 0x3ffc52c8 A15 : 0x3ffd8c7c SAR : 0x0000000e EXCCAUSE: 0x00000014
EXCVADDR: 0x3ffe9238 LBEG : 0x4000c46c LEND : 0x4000c477 LCOUNT : 0x00000000
Backtrace: 0x3ffe9238:0x3ffd8ce0 0x400d39d5:0x3ffd8d00 0x400d5ff3:0x3ffd8d20 0x400e799d:0x3ffd8d50 0x400913c9:0x3ffd8d70
scott@n550jk:~/pio/Meshtastic-esp32$
I triggered it again a few times both nodes had canSleep, mode=4, isRx=0, txEmpty=1, txGood=3
repeating on the debug output and I woke them both up with button press, and one node had similar crash addresses to the above when sending packet to the node - maybe related to new receive collision avoidance? Apologies if this is expected, or due to my environment, I know you are doing a lot of great work and the normal release mechanism is via the zipfile. I thought I would add this in case you hadn't seen it.
Just looking around I see two files that are symlinks outside the repo.
mesh.options -> ../MeshUtil/app/src/main/proto/mesh.options
mesh.proto -> ../MeshUtil/app/src/main/proto/mesh.proto
Are these important for the build?
I have bought a Heltec Lora in November 2017 and just had it laying around,
never done anything with it.
After discovering Meshtastic I decided to give it a try, but apparently my bootloader was too old:
my display never went lit up or displayed the meshtastic logo.
After a bit of debugging I executed
make bootloader-flash
from another, recent esp project.
After this flashed the bootloader, I flashed the Heltec bin again, and now the device is working.
Just a heads up, that you might want to add this to the troubleshooting section.
(that field on the GUI is currently a placeholder)
From @peoplesdriver. I'll reply to this bug with some comments.
I'm trying to use this board, but I can't see the pairing code on the screen as is a lot smaller
I tried .7 and .8 alpha release and the TTGO V1 will not pair with the phone or tablets. Shows the pin code on he screen.
This is a short user story, so that we don't forget this idea and do it sometime post beta. It would need a fair amount of user testing and feedback and proceed in stages.
Stage 1: User falls and hurts their ankle, they long press on the button. The device prompts "release and press three more times to call for help." After the user presses three times the device enters emergency mode.
While in emergency mode all the normal features work the same, but a location packet with the "I need help" bit is also broadcast to the entire mesh every 5 minutes.
When another node receives this packet the screen lights up (showing direction and distance and help) and led flashes. The associated phone (if connected) will chime with a notification. Presumably this will prompt the users friends who are on this same channel to ask what's up. One of those users takes responsiblity for messaging the injured person and calling 911 as needed/possible.
After discussing stage 1 with other users/devs and implementing stage one we get feedback on utility (by this point we will probably have a couple of hundred users of the beta - and real data on how these devices are working for users on hikes etc).
If Stage 1 goes well, Stage 2: Add noonlight support to the app. In this case the flow would be as above except any of the members who have cell coverage would be offered the option to "Report this problem to 911", then the user would be asked to double confirm. Then we'd use the API to put in a call giving the gps coords of the person who had the accident but the contact information of the person who is acting as their agent for talking to 911. The noonlight service would then call/text the person who reported the accident and get more info, tripple confirm this is a real emergency etc... and contact first responders.
This user story was prompted because I was contacted by a product manager for Noonlight. After a useful email conversation between the two of us I decided to capture this as an issue, so that we can work for this after the beta release.
Hi! I'm really excited to give this a go, but just want to check something before flashing.
In the UK, the use of 433MHz is also permitted, but this isn't listed in the documentation here. Given that my hardware is compatible with this band, would Meshtastic work out of the box, or would additional changes to the code need to be made to support this?
Thanks!
To make sure they don't program the wrong load type for their board.
Interesting project. I thought I could use it for my next video. I have many LoRa boards. Unfortunately not the ones you support. For example, I have a few of those: https://www.aliexpress.com/item/4000438284523.html or those: https://www.aliexpress.com/item/32825749403.html .
When I upload the .bin file according to your instruction, the Heltec only reboots. If I upload your platformIO project to a T-beam without a display, at least I see that it runs in Serial.
I would like to get a description of the different pins to change and maybe to switch GPS off if not available. Then maybe I could add the boards I own.
See here: (reported by @eriktheV-king)
https://meshtastic.discourse.group/t/bin-v0-2-3-on-ttgo-t-beamv1-0/101/2
Great logs! I think the problem is "critical error 2". I'm currently working on finishing the next (major) android app update but I'll look into this tomorrow. I'm converting into a bug so we don't forget.
Is possible add Polish language to project?
(and for web page)
Now exist many system to translate over webpage
The TTGO T-BEAM device does not come with a screen by default. Pairing currently displays a PIN on the device screen and then asks you to type it into the phone. We should set the right bluetooth flag when pairing to fall back to some simpler pairing mechanism if a screen does not exist.
I tried to build a version for the beam and got these errors:
Building in release mode
Compiling .pio\build\tbeam\src\rf95\CustomRF95.cpp.o
Compiling .pio\build\tbeam\src\rf95\RH_RF95.cpp.o
Compiling .pio\build\tbeam\src\sleep.cpp.o
Generating partitions .pio\build\tbeam\partitions.bin
Compiling .pio\build\tbeam\lib9b7\Wire\Wire.cpp.o
Compiling .pio\build\tbeam\libf31\SPI\SPI.cpp.o
Compiling .pio\build\tbeam\lib178\ESP8266_SSD1306\OLEDDisplay.cpp.o
Compiling .pio\build\tbeam\lib178\ESP8266_SSD1306\OLEDDisplayUi.cpp.o
Compiling .pio\build\tbeam\lib01c\CRC32_ID1202\CRC32.cpp.o
src\rf95\CustomRF95.cpp: In member function 'virtual void CustomRF95::loop()':
src\rf95\CustomRF95.cpp:191:5: error: 'loop' is not a member of 'RH_RF95'
RH_RF95::loop();
^
Compiling .pio\build\tbeam\libea2\arduino-fsm\Fsm.cpp.o
src\rf95\RH_RF95.cpp: In member function 'virtual bool RH_RF95::init()':
src\rf95\RH_RF95.cpp:114:28: error: 'enableInterrupt' was not declared in this scope
return enableInterrupt();
^
src\rf95\RH_RF95.cpp: At global scope:
src\rf95\RH_RF95.cpp:117:31: error: no 'bool RH_RF95::enableInterrupt()' member function declared in class 'RH_RF95'
bool RH_RF95::enableInterrupt()
^
src\rf95\RH_RF95.cpp:136:50: error: no 'void RH_RF95::disableInterrupt()' member function declared in class 'RH_RF95'
void RH_INTERRUPT_ATTR RH_RF95::disableInterrupt()
^
src\rf95\RH_RF95.cpp:159:55: error: no 'void RH_RF95::handleInterruptLevel0()' member function declared in class 'RH_RF95'
void RH_INTERRUPT_ATTR RH_RF95::handleInterruptLevel0()
^
src\rf95\RH_RF95.cpp: In member function 'virtual void RH_RF95::handleInterrupt()':
src\rf95\RH_RF95.cpp:246:21: error: 'enableInterrupt' was not declared in this scope
enableInterrupt(); // Let ISR run again
^
src\rf95\RH_RF95.cpp: At global scope:
src\rf95\RH_RF95.cpp:249:20: error: no 'void RH_RF95::loop()' member function declared in class 'RH_RF95'
void RH_RF95::loop()
^
src\rf95\RH_RF95.cpp: In static member function 'static void RH_RF95::isr0()':
src\rf95\RH_RF95.cpp:263:33: error: 'class RH_RF95' has no member named 'handleInterruptLevel0'
_deviceForInterrupt[0]->handleInterruptLevel0();
^
src\rf95\RH_RF95.cpp: In static member function 'static void RH_RF95::isr1()':
src\rf95\RH_RF95.cpp:268:33: error: 'class RH_RF95' has no member named 'handleInterruptLevel0'
_deviceForInterrupt[1]->handleInterruptLevel0();
^
src\rf95\RH_RF95.cpp: In static member function 'static void RH_RF95::isr2()':
src\rf95\RH_RF95.cpp:273:33: error: 'class RH_RF95' has no member named 'handleInterruptLevel0'
_deviceForInterrupt[2]->handleInterruptLevel0();
When the user presses the button we currently ask all nodes for an update. Instead of calling sendNetworkPing(BROADCAST) we should be calling it with the ID of the node that the user is currently displaying in the display.
Fix this by adding a getDisplayedNode() function to Screen. That function should return null if we are not looking at a node, otherwise it should return the node we are watching. in PowerFSM onEnter() if that node is null do nothing, otherwise send the ping only to that node.
Reminded of this in meshtastic/Meshtastic-Android#4. ESP32 bluetooth gets funky while the device is getting unpluged from USB power. If that happens, better to just shut the CPU down cleanly.
TTGO LORA32 V1
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5828
entry 0x400806ac
booted, wake cause 0 (boot count 1), reset_reason=reset
No I2C devices found
Meshtastic swver=0.2.0, hwver=1.0-US
Read RTC time as 173 (cur millis 42) valid=0
ERROR: No bidirectional GPS found, hoping that it still might work
Loading saved preferences
Warn: devicestate is old, discarding
NODENUM=0x4, dbsize=1
Starting meshradio init...
IRQ flag mask 0x0
Set radio: name=Default. config=3, ch=6, txpower=23
sending owner !246f28978300/Unknown 8300/?00
Update DB node 0x4 for variant 4, rx_time=0
old user !246f28978300/Unknown 8300/?00
updating changed=0 user !246f28978300/Unknown 8300/?00
immedate send on mesh (txGood=0,rxGood=0,rxBad=0)
Screen: Started...
showing standard frames
Transition powerFSM transition=boot timeout, from=BOOT to=ON
Setting bluetooth enable=1
Pre BT: 197256 heap size
Starting bluetooth
*** Mesh service:
Turning on screen
**Guru Meditation Error: Core 1 panic'ed (StoreProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x4000c46c PS : 0x00060330 A0 : 0x800d8b40 A1 : 0x3ffd90b0
A2 : 0x00000000 A3 : 0x00000000 A4 : 0x00000400 A5 : 0x00000000
A6 : 0x0000003a A7 : 0x00000040 A8 : 0x00000000 A9 : 0x00000000
A10 : 0x00000000 A11 : 0x00000001 A12 : 0x00000050 A13 : 0x00000000
A14 : 0x00000000 A15 : 0x00000000 SAR : 0x0000000a EXCCAUSE: 0x0000001d
EXCVADDR: 0x00000000 LBEG : 0x4000c46c LEND : 0x4000c477 LCOUNT : 0x0000003f
Backtrace: 0x4000c46c:0x3ffd90b0 0x400d8b3d:0x3ffd90c0 0x400d93f8:0x3ffd90e0 0x400d949d:0x3ffd9100 0x400d6613:0x3ffd9130 0x400d4a33:0x3ffd9160 0x400d55a7:0x3ffd9190 0x400e5945:0x3ffd91c0 0x4008ee31:0x3ffd91e0**
rebooting
Possibly explains bluetooth issues some have had
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.