TTGO Lora 1.3 support

Thanks for your help!

I just flashed firmware-tlora-v1-EU433-1.1.48.bin successfully, but I still only have a blinking red LED.

Also meshtastic --info ends with “Exception: Timed out waiting for connection completion”.

I have the feeling that I am using a wrong firmware for this board. I found this thread that might address the same issue, but I’m not sure…

system-info file did you flash that as well

Uhm… not actively. That file is sitting in the same folder as the firmware file I am flashing, but I haven’t done anything with it yet, just

python -m esptool --baud 921600 write_flash 0x10000 firmware-tlora-v1-EU433-1.1.48.bin

and that did it all for all of my other boards (T-Beam and LORA 32 v2.1) with their corresponding firmware file.

esptool --baud 921600 erase_flash
esptool --baud 921600 write_flash 0x1000 firmware-tlora-v1-EU433-1.1.48.bin
esptool --baud 921600 write_flash 0x00390000 spiffs-*.bin
esptool --baud 921600 write_flash 0x10000 system-info.bin

make sure your files names are correct do not just copy paste this

also you can use my meshtastic-pygui

install with:
python -m pip install --upgrade meshtastic-pygui

run with 
python -m meshtastic_pygui
1 Like

Still only the red blinking LED, after

  • python -m esptool --baud 921600 erase_flash
  • python -m esptool --baud 921600 write_flash 0x1000 firmware-tlora-v1-EU433-1.1.48.bin
  • python -m esptool --baud 921600 write_flash 0x00390000 spiffs-*.bin
  • python -m esptool --baud 921600 write_flash 0x10000 system-info.bin
    but all commands were successful with no errors

Also installed the meshtastic-pygui, it looks nice, will definitely try it out!

Still no difference, tried 1.1.6 and 1.1.6 - blinking red LED :confused:

Seems like it might just not be supported yet. Still thanks for looking into it with me :slight_smile:

Flashing was successful and without errors, as with my other attempts, but no display output, no connection and only the flashing red LED.

firmware-1.1.5 % python -m esptool --baud 921600 write_flash 0x10000 firmware-tlora-v1-EU433-1.1.5.bin
esptool.py v3.0
Found 3 serial ports
Serial port /dev/cu.usbserial-0001
Connecting…
Detecting chip type… ESP32
Chip is ESP32-D0WDQ6-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 26MHz
MAC: c4:4f:33:7f:6f:89
Uploading stub…
Running stub…
Stub running…
Changing baud rate to 921600
Changed.
Configuring flash size…
Compressed 1199136 bytes to 700380…
Wrote 1199136 bytes (700380 compressed) at 0x00010000 in 14.3 seconds (effective 670.2 kbit/s)…
Hash of data verified.

Leaving…
Hard resetting via RTS pin…

I did erase flash before and I also tried flashing the system-info.bin afterwards as zebus suggested.

II found this information on the product website maybe they will be useful to understand what is wrong.
We may wait for an answer from @geeksville for more information, there are compatibility problems for sure.

Edit:

Product Description:

The 433MHz antenna must be used in conjunction with the IPEX interface (if the antenna is not connected, it may damage the LoRa chip)
Lithium battery charging and discharging circuit, when the battery is full, the blue LED will stop working. When using, pay attention to the positive and negative of the battery, otherwise it will be damaged.
Using the IO port touch screen touch signal input, you need to add the 100nF pull-down capacitor at this pin!

Example:

This product is a SX1278 chip based on ESP32 WIFI increased OLED, namely LoRa remote modem, 433MHz frequency, high sensitivity is about -148dBm, +20dBm output power, high reliability, long transmission distance.
The onboard 16 Mt bytes (128 Mt bit), Wi-Fi antenna, 0.96 inch blue OLED display, lithium battery charging circuit, CP2102 interface and USB serial chip, the perfect support for development environment, can be used for program verification and product development is very simple and fast.
Operating voltage: 3.3V to 7V
Operating temperature range: -40 degrees C to +90 degrees C
Support for Sniffer, Station, softAP, and Wi-Fi Direct modes
Data rates: 150 Mbps@11n HT40, 72 Mbps@11n HT20, 54 Mbps@11g, 11 Mbps@11b
Transmit power: 19.5 dBm@11b, 16.5 dBm@11g, 15.5 dBm@11n
Receiver sensitivity up to -98 dBm
UDP sustained throughput of 135 Mbps

Pin reference description:

Test details:

Note:This product does not include the battery.

Package included:

2 x ESP32 OLED
2 x Line
4 x pin
2 x 433m Spring Antenna

For example One:

(1) LoRaSender
#include
#include
#include
// GPIO5 – SX1278’s SCK
// GPIO19 – SX1278’s MISO
// GPIO27 – SX1278’s MOSI
// GPIO18 – SX1278’s CS
// GPIO14 – SX1278’s RESET
// GPIO26 – SX1278’s IRQ(Interrupt Request)

#define SS 18
#define RST 14
#define DI0 26
#define BAND 433E6
int counter = 0;

void setup() {
pinMode(25,OUTPUT); //Send success, LED will bright 1 second

Serial.begin(115200);
while (!Serial); //If just the the basic function, must connect to a computer

SPI.begin(5,19,27,18);
LoRa.setPins(SS,RST,DI0);
// Serial.println(“LoRa Sender”);

if (!LoRa.begin(BAND)) {
Serial.println(“Starting LoRa failed!”);
while (1);
}
Serial.println(“LoRa Initial OK!”);
}

void loop() {
Serial.print("Sending packet: ");
Serial.println(counter);

// send packet
LoRa.beginPacket();
LoRa.print("hello ");
LoRa.print(counter);
LoRa.endPacket();

counter++;
digitalWrite(25, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(25, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second

delay(3000);
}

For example Two
(2)LoRaReceiver
#include
#include

// GPIO5 – SX1278’s SCK
// GPIO19 – SX1278’s MISO
// GPIO27 – SX1278’s MOSI
// GPIO18 – SX1278’s CS
// GPIO14 – SX1278’s RESET
// GPIO26 – SX1278’s IRQ(Interrupt Request)

#define SS 18
#define RST 14
#define DI0 26
#define BAND 433E6

void setup() {
Serial.begin(115200);
while (!Serial); //if just the the basic function, must connect to a computer
delay(1000);

Serial.println(“LoRa Receiver”);

SPI.begin(5,19,27,18);
LoRa.setPins(SS,RST,DI0);

if (!LoRa.begin(BAND)) {
Serial.println(“Starting LoRa failed!”);
while (1);
}
}

void loop() {
// try to parse packet
int packetSize = LoRa.parsePacket();
if (packetSize) {
// received a packet
Serial.print(“Received packet '”);

// read packet
while (LoRa.available()) {
Serial.print((char)LoRa.read());
}

// print RSSI of packet
Serial.print("’ with RSSI ");
Serial.println(LoRa.packetRssi());
}
}

For example three
(3)LoRaReceiverCallback
#include
#include

// GPIO5 – SX1278’s SCK
// GPIO19 – SX1278’s MISO
// GPIO27 – SX1278’s MOSI
// GPIO18 – SX1278’s CS
// GPIO14 – SX1278’s RESET
// GPIO26 – SX1278’s IRQ(Interrupt Request)

#define SS 18
#define RST 14
#define DI0 26
#define BAND 433E6

void setup() {
Serial.begin(115200);
while (!Serial); //if just the the basic function, must connect to a computer

SPI.begin(5,19,27,18);
LoRa.setPins(SS,RST,DI0);

Serial.println(“LoRa Receiver Callback”);

if (!LoRa.begin(BAND)) {
Serial.println(“Starting LoRa failed!”);
while (1);
}

// register the receive callback
LoRa.onReceive(onReceive);

// put the radio into receive mode
LoRa.receive();
}

void loop() {
// do nothing
}

void onReceive(int packetSize) {
// received a packet
Serial.print(“Received packet '”);

// read packet
for (int i = 0; i < packetSize; i++) {
Serial.print((char)LoRa.read());
}

// print RSSI of packet
Serial.print("’ with RSSI ");
Serial.println(LoRa.packetRssi());
}
?
For example four
#include // Only needed for 1.6.5 and earlier
#include “SSD1306.h” // alias for #include "SSD1306Wire.h"
#include “images.h”

//OLED pins to ESP32 0.96OLEDGPIOs via this connecthin:
//OLED_SDA – GPIO4
//OLED_SCL – GPIO15
//OLED_RST – GPIO16

SSD1306 display(0x3c, 4, 15);

#define DEMO_DURATION 3000
typedef void (*Demo)(void);
int demoMode = 0;
int counter = 1;

void setup() {
pinMode(16,OUTPUT);
digitalWrite(16, LOW); // set GPIO16 low to reset OLED
delay(50);
digitalWrite(16, HIGH); // while OLED is running, must set GPIO16 in high

Serial.begin(115200);
Serial.println();
Serial.println();

// Initialising the UI will init the display too.
display.init();

display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);

}

void drawFontFaceDemo() {
// Font Demo1
// create more fonts at http://oleddisplay.squix.ch/
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_10);
display.drawString(0, 0, “Hello world”);
display.setFont(ArialMT_Plain_16);
display.drawString(0, 10, “Hello world”);
display.setFont(ArialMT_Plain_24);
display.drawString(0, 26, “Hello world”);
}

void drawTextFlowDemo() {
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawStringMaxWidth(0, 0, 128,
“Lorem ipsumn dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore.” );
}

void drawTextAlignmentDemo() {
// Text alignment demo
display.setFont(ArialMT_Plain_10);

// The coordinates define the left starting point of the text
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 10, “Left aligned (0,10)”);

// The coordinates define the center of the text
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(64, 22, “Center aligned (64,22)”);

// The coordinates define the right end of the text
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(128, 33, “Right aligned (128,33)”);
}

void drawRectDemo() {
// Draw a pixel at given position
for (int i = 0; i < 10; i++) {
display.setPixel(i, i);
display.setPixel(10 - i, i);
}
display.drawRect(12, 12, 20, 20);

// Fill the rectangle
display.fillRect(14, 14, 17, 17);

// Draw a line horizontally
display.drawHorizontalLine(0, 40, 20);

// Draw a line horizontally
display.drawVerticalLine(40, 0, 20);
}

void drawCircleDemo() {
for (int i=1; i < 8; i++) {
display.setColor(WHITE);
display.drawCircle(32, 32, i3);
if (i % 2 == 0) {
display.setColor(BLACK);
}
display.fillCircle(96, 32, 32 - i
3);
}
}
void drawProgressBarDemo() {
int progress = (counter / 5) % 100;
// draw the progress bar
display.drawProgressBar(0, 32, 120, 10, progress);

// draw the percentage as String
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(64, 15, String(progress) + “%”);
}

void drawImageDemo() {
// see http://blog.squix.org/2015/05/esp8266-nodemcu-how-to-create-xbm.html
// on how to create xbm files
display.drawXbm(34, 14, WiFi_Logo_width, WiFi_Logo_height, WiFi_Logo_bits);
}

Demo demos[] = {drawFontFaceDemo, drawTextFlowDemo, drawTextAlignmentDemo, drawRectDemo, drawCircleDemo, drawProgressBarDemo, drawImageDemo};
int demoLength = (sizeof(demos) / sizeof(Demo));
long timeSinceLastModeSwitch = 0;

void loop() {
// clear the display
display.clear();
// draw the current demo method
demosdemoMode;

display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(10, 128, String(millis()));
// write the buffer to the display
display.display();

if (millis() - timeSinceLastModeSwitch > DEMO_DURATION) {
demoMode = (demoMode + 1) % demoLength;
timeSinceLastModeSwitch = millis();
}
counter++;
delay(10);
}

That is very kind of you, but that much effort shouldn’t be just for the board that I got - it would be great, but luckily I have other boards working that I can play with :wink:

Great :relieved:
I think @geeksville will find a solution anyway
Maybe we have to wait a bit :hourglass_flowing_sand:

Hey @Arne ,

Try out this firmware binary:

http://www.casler.org/temp/mt/tlora_v1_3-firmware.bin.zip

It should work but it’s the first time I’ve added support for a board I didn’t have in hand. If I hear from you that it does work, I’ll include it in both the nightly and the upcoming release builds.

If it doesn’t work, please let me know what doesn’t work and share the first hundred or so lines from the debug output of your device. That’ll help track down the problem.

3 Likes

Hi @mc-hamster and @geeksville ,

thanks for helping!

I downloaded the firmware from your link and successfully flashed it (after erasing the flash before):

python -m esptool --baud 921600 write_flash 0x10000 firmware.bin
esptool.py v3.0
Found 3 serial ports
Serial port /dev/cu.usbserial-0001
Connecting…
Detecting chip type… ESP32
Chip is ESP32-D0WDQ6-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 26MHz
MAC: c4:4f:33:7f:6f:89
Uploading stub…
Running stub…
Stub running…
Changing baud rate to 921600
Changed.
Configuring flash size…
Compressed 1579520 bytes to 925485…
Wrote 1579520 bytes (925485 compressed) at 0x00010000 in 18.9 seconds (effective 670.2 kbit/s)…
Hash of data verified.

Leaving…
Hard resetting via RTS pin…

but the LED is still flashing red and there is no output on the display.

I started a serial monitor from my arduino IDE (115200 Baud) and get this output over and over again:

rst:0x1 (POWERON_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
ets Jul 29 2019 12:21:46

I don’t know about the baud, if I try

screen /dev/cu.usbserial-0001 921600

the output is only weird signs.

hmm - did you flash the other stuff as well? i.e. the components written when you run our device-install.sh script?

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}
1 Like

The firmware @mc-hamster provided

only contained a firmware.bin, so I only flashed that one.

Should I flash the other files from the latest release (1.2.11)?

Yes (if you haven’t previously flashed them)

I did that and it worked! Also did the pairing with the phone :slight_smile:

This is the log from the serial monitor (I hope there is nothing privacy sensitive in there…)

https://pastebin.com/QntVNHnt

1 Like

Now I also send a message successfully from lora v1.3 to lora v2.1 :smiley:

1 Like

Good job @mc-hamster, @Arne and @anothercarolina.

2 Likes

Woohoo! Glad it worked!

I’ll integrate it with the actual build system and will reply here when that’s done. Once that’s in, you’ll be able to use the regular published firmware like everyone else.

Cheers!

2 Likes

It’s going to be part of the next released firmware and is also now in the latest nightly. The nightlies are probably going to be more stable than the one file I sent you the other day. That one had some development cruft since it came from my private branch.

http://www.casler.org/meshtastic/nightly_builds/

3 Likes