Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Lars Englund
@larsenglund
160mhz
Lars Englund
@larsenglund
Hmm, after some debugging in ESP8266mDNS.cpp::_parsePacket() I found that it enters an infinite loop trying to add a new answer to answer list (around line 644)
It adds the three first answers to the list without any problem but when the fourth is parsed and ready to be added while (answer->next != 0) { never exits..
Could answer->next have been corruptedhow?
Since every new answer gets intialized to answer->next = 0;...
Myles Eftos
@madpilot
Could be a bad packet that is causing a buffer overflow, stopping the traversal from terminating. Hard to say with out looking at the packet
Lars Englund
@larsenglund
Reading answers RX: REQ, ID:0, Q:0, A:4, NS:0, ADD:0
 4 5f 65 73 70 
found matching service: esp
 4 5f 74 63 70 
 5 6c 6f 63 61 6c 
type: 000c rdlength: 28
0a 65 73 70 5f 44 41 33 35 45 41 04 5f 65 73 70 04 5f 74 63 70 05 6c 6f 63 61 6c 00 
 10 65 73 70 5f 44 41 33 35 45 41 
 4 5f 65 73 70 
found matching service: esp
 4 5f 74 63 70 
 5 6c 6f 63 61 6c 
type: 0010 rdlength: 0

 10 65 73 70 5f 44 41 33 35 45 41 
 4 5f 65 73 70 
found matching service: esp
 4 5f 74 63 70 
 5 6c 6f 63 61 6c 
type: 0021 rdlength: 24
 10 65 73 70 5f 64 61 33 35 65 61 
esp_da35ea
 10 65 73 70 5f 64 61 33 35 65 61 
 5 6c 6f 63 61 6c 
type: 0001 rdlength: 4
All answers parsed, adding to _answers list..
else
It's after this packet the loop starts so it does not look like a buffer overflow
Also I have checked that I have lots of heap space left (>28K)
Lars Englund
@larsenglund
I see now that the problem occurs when _parsePacket has returned after parsing the first three packets and is then called again in MDNSResponder::update() and continues to add a fourth answer to the same answer list.. if that has any significance.. also the next-pointer of the last element in the answer list has changed from 0 to pointing to the last item itself when entering parsePacket the second time (thus causing the infinite loop)
Boggle.. what could be causing the next-pointer to be overwritten between two calls to _parsePacket
I've pasted a sample serial output and the parsePacket that generates it there
Lars Englund
@larsenglund
Crap, It has already been fixed esp8266/Arduino#2347
I really need to switch to using the latest github code.. sorry for spamming with already answered questions..
Lars Englund
@larsenglund
Hmm, after following the instuctions to use the git version on https://github.com/esp8266/Arduino#using-git-version i get fatal error: SoftwareSerial.h: No such file or directory when compiling my code..
Lars Englund
@larsenglund
an-erd
@an-erd
Is there a way to do a OTA update and do some stuff in the loop(), too.
OTA is working fine, the callback functions are called, but I didn't get it working to update the display which is called from the loop().
Me No Dev
@me-no-dev
with current version, no
if we move the TCP part to Async, then yes
an-erd
@an-erd
can I spend some time in the ArduinoOTA.onProgress() function to update the display?
Me No Dev
@me-no-dev
yes
not too much though
an-erd
@an-erd
Ok thanks, I'll try
an-erd
@an-erd
Works pretty good, the OLED display update does not cause any problems! Thanks
Myles Eftos
@madpilot
@me-no-dev Is using async something you are working on at the moment? As I was thinking of looking in to this.
Me No Dev
@me-no-dev
@madpilot my async libs are fine, if that is what you are asking, else I'm working on esp32
James
@WanaGo

Hello
Does anyone have any experience with doing UDP NTP Time stuff with the ESP8266?
I am using the PJRC time library, and based my sketch on the ESP8266 example.
I get the NTP server IP on startup, and it gets the EPOCH time no problem. But the next time to goes to sync (set for 5 minutes, but tried 30 minutes also), it fails.
I enabled the Debug, and I get the following:

connected with ROUTER, channel 11
ip:192.168.178.99,mask:255.255.255.0,gw:192.168.178.1
wifi evt: 0
wifi evt: 3
Connected - 192.168.178.99
Setting Up UDP
scandone
Transmit NTP Request
[hostByName] request IP for: pool.ntp.org
[hostByName] Host: pool.ntp.org IP: 202.6.116.123
pool.ntp.org: 202.6.116.123
Receive NTP Response

And then next time I get:

Transmit NTP Request
[hostByName] request IP for: pool.ntp.org
[hostByName] Host: pool.ntp.org lookup error: -5!
pool.ntp.org: 0.0.0.0

James
@WanaGo
tried DHCP, Static, defining DNS and not defining DNS, results are the same. I cant figure out what is going on.
it uses the exact same code the first attempt as with every other attempt
James
@WanaGo
esp8266/Arduino#3150
That looks to be the same thing
James
@WanaGo
WiFi.hostByName() seems to work once. So I have done this at setup() now, and then saved the IP address globally, and used that each time after that.
Something is wrong though, there is a bug somewhere.
James
@WanaGo
ok no that didnt work either.
James
@WanaGo
been using 2.3.0, tried 2.4.0rc1, same exact thing
Holger Lembke
@holgerlembke
Moin moin!
I try to get LiquidCrystal_I2C to run with es8266. i2cscan shows the pcf8574, but it does not work at all... any hints? any working github repo? thanks!
Holger Lembke
@holgerlembke
ok, self answering service: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library seems to work.
an-erd
@an-erd
I need a way to get multiple WiFi networks running, but to differentiate between private network (at home to use the own MQTT broker 192.168.1.1) or public network (w/o MQTT home network). There is another hotspot pretty close and when I'm at home I don't want to connect to this one. WiFiMulti works fine, but does not have the feature of using different profiles "private" and "public". Before I start working on an extension to WiFiMulti I want to see whether there are appropriate solutions around. Do you know of such a functionality?
brutzler
@brutzler
Hy guys,
just a little question:
I am using a Wemos D1 mini board. Here I need to comunicate serial with an external unit (IR-read/write-head)
Is it uncritical to use the normal TXD0/RXD0? Or should I use the RXD2/TXD2 (using serial swap) to avoid problems during download?
Bert Melis
@bertmelis
I advise you to swap.
brutzler
@brutzler
reason for swaping?
Bert Melis
@bertmelis
I've got a connected device (on Serial0) and when not swapped, I must physically disconnect otherwise it won't flash.
brutzler
@brutzler
ok thx
an-erd
@an-erd
Hi, is there a way to point the timer callback function to a class function. (I found ways to do it with interrupts and with gotIpEventHandler_ = WiFi.onStationModeGotIP(), but this last piece for os_timer_setfn(). Thanks!
brutzler
@brutzler

@bertmelis
back to serial swap:
I have connected my IR-R/W-Unit to TXD2/RXD2 (IO15/IO13).

  #define ITFserial Serial
......
   ITFserial.begin(9600);    
   Serial.swap();

thats IMHO all code I need.
BUT. its not working proper. If I disconnect the TX/RX wires, start the ESP and connect the two wires its working. With fully connected IR-unit, the ESP fails to start, and the IR-TX-LED is always ON.
Something, I do not see?

brutzler
@brutzler
Additional: With connected device on TXD2/RXD2 I am not even able to make serial download :-(
Is GPIO13/15 needed for download or booting?
Bert Melis
@bertmelis
I'll try to figure out my steps tonight...