Crash when connecting to my home Wifi router



  • Hello!
    I have a brand new Lopy, that was first upgraded to firmware version 0.9.6.b1 and now to version 0.9.7.b1.
    I have an issue with the wifi with both version: it some seconds after a successful connection to my home router.

    from network import WLAN
    >>> wlan = WLAN(mode=WLAN.STA)
    mode : sta(24:0a:c4:00:c0:52)
    >>> wlan.connect('MY_SSID', auth=('WLAN.WPA2', '**************'))
    >>> I (61450) wifi: n:9 0, o:6 0, ap:255 255, sta:9 0, prof:6
    I (62424) wifi: state: 0 -> 2 (b0)
    I (62432) wifi: state: 2 -> 3 (0)
    I (62435) wifi: state: 3 -> 5 (10)
    I (62448) wifi: connected with MY_SSID, channel 9
    
    # wait 10 seconds
    
    Guru Meditation Error of type InstrFetchProhibited occurred on core   0. Exception was unhandled.
    Register dump:
    PC      :  002c002c  PS      :  00060330  A0      :  8012228a  A1      :  3ffdfcf0  
    A2      :  00000001  A3      :  3ffd96f0  A4      :  002c002c  A5      :  00000008  
    A6      :  00000000  A7      :  3ffd33b4  A8      :  8011bf0c  A9      :  00000002  
    A10     :  3ffd96f0  A11     :  00000001  A12     :  3ffd4f30  A13     :  00000000  
    A14     :  3ffdf600  A15     :  3ffd4d14  SAR     :  00000019  EXCCAUSE:  00000014  
    EXCVADDR:  002c002c  LBEG    :  00000000  LEND    :  00000000  LCOUNT  :  00000000  
    Rebooting...
    ets Jun  8 2016 00:22:57
    
    rst:0x3 (SW_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0x00
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:QIO, clock div:2
    load:0x3fff9010,len:8
    load:0x3fff9018,len:812
    ho 0 tail 12 room 4
    load:0x40078000,len:3692
    load:0x4009f000,len:944
    entry 0x4009f1f0
    rtc v134 Oct 20 2016 12:36:18˜øXTAL 40M
    I (887) phy: phy_version: 246, Nov 18 2016, 17:30:07, 0, 0
    
    tcpip_task_hdlxxx : 3ffe800c, prio:18,stack:2048
    frc2_timer_task_hdl:3ffe9a24, prio:22, stack:2048
    I (1028) wifi: pp_task_hdl : 3ffec248, prio:23, stack:8192
    mode : softAP(24:0a:c4:00:c0:53)
    dhcp server start:(ip: 192.168.4.1, mask: 255.255.255.0, gw: 192.168.4.1)
    MicroPython v1.8.6-234-g765f2bc on 2016-12-02; LoPy with ESP32
    Type "help()" for more information.
    >>> 
    >>> 
    

    Version:

    (sysname='LoPy', nodename='LoPy', release='0.9.7.b1', version='v1.8.6-234-g765f2bc on 2016-12-02', machine='LoPy with ESP32')
    

    Any idea ?

    Thanks



  • Same for me, upgraded firmware to 1.0.0.b1 on my LoPy, re-enabled IPv6 on router, happy puppy sinds then. Thank you for quickly fixing Pycom team!



  • Same for me, I updated to version 1.0.0.b1, re-enabled IPV6 on my router, and wifi does not seem to crash anymore.
    I'll do more extensive test this afternoon :)



  • I just loaded New firmware release 1.0.0.b1 on my LoPy and tested my WiFi connection and it worked without crashing. I see that this release included an Update to the latest IDF from Espressif, so I assume this addressed the problem. I glad this is fixed since I had no way to turn off IPv6 on my cable modem.

    Thanks Pycom



  • Now that the bug has been found and fixed upstream, and merged into master, would you dare to take a stab at guessing a reasonable ETA before the upstream is released, and Pycom release a new firmware version? Is that a matter of days, around Christmas, next year, ...?



  • @williamv, @PCA, @JF002, thank you all for your reports :)



  • @abilio @JF002 same result for me. No more crashes if the wifi router IPV6 interface is disabled...



  • @abilio I disabled the IPV6 interface on my router, and indeed, my Lopy does not crash any more.

    I'll leave the IPV6 interface disabled for now, but this is a workaround until it is fixed in the firmware :)



  • good find @abilio !! i changed ipv6 settings on my wireless router Netgear R7000 from 6to4-tunnel to Disabled and have not seen the crash again for the last 30 min ;-)



  • @macfreek, We'll report any progress here. Expect it to be included in the release after a solution is found :)



  • Thanks. From that thread it seems that the culprit was IPv6 router solliciation (as needed for SLAAC, which is often used in conjunction with DHCPv4). It seems I was looking at the correct event, but the wrong packet. My apologies for that. I have not yet reproduced it, but this seems very likely. I will follow the other thread for the upstream bug. Could you report back here once upstream is fixed and a new firmware for the pycom boards is available?



  • It seems that this bug was reported in parallel by another ESP32 user. The suspected cause is an issue with IPV6. If you want to keep track of the issue, see here:

    https://github.com/espressif/esp-idf/issues/133



  • @abilio I hope it will be fixed soon :) Keep us up to date!



  • Yes, I'm an engineer at Pycom, and our team of firmware engineers (lead by Daniel) take turns into fixing bugs. We prioritize them by severity (this one is a severe one).

    Sadly, in this case, we've checked and believe is something related with changes in Espressif's IDF in between 0.9.5 and 0.9.6. We're filling a bug report with them. As soon as we get a response, it will be included in that week's release.

    Thanks everyone for your patience :)



  • FYI, the crash does not occur with firmware 0.9.5.b1, only with 0.9.6.b1 and 0.9.7.b1.

    Just a little help in tracking it down, the following DHCP request packet will NOT crash the micropython board (generated with the dhcping tool):

    22:45:15.298227 IP 172.25.129.170.68 > 255.255.255.255.67: BOOTP/DHCP, Request from f4:5c:89:8d:0b:dd, length 250

    while the following DHCP request DOES crash the micropython board (generated by renewing the IPv4 lease):

    22:43:13.382647 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from f4:5c:89:8d:0b:dd, length 300

    The obvious difference is in the sender IP address, but given the difference in length, there may be more differences.

    Edit: the above packet turned out not to be the cause, but it seems that the likely cause is the SLAAC packet (an ICMPv6 router sollicitation packet), that is often send at the same time as a DHCPv4 request.

    Good luck hunting down this bug, and let us know if we can be of any assistence.



  • hi, same issue here with my new LoPy with 0.9.6.b1a firmware, Netgear R7000 router. Wifi crashes after 1-2-3 minutes. Fixed ip does not make a difference.
    Let me know if you need more info or if i can do any testing to get this resolved.

    MicroPython v1.8.6-40-gd10463e on 2016-11-25; LoPy with ESP32
    Type "help()" for more information.

    I (434227) wifi: n:3 0, o:6 0, ap:255 255, sta:3 0, prof:6
    I (435201) wifi: state: 0 -> 2 (b0)
    I (435204) wifi: state: 2 -> 3 (0)
    I (435208) wifi: state: 3 -> 5 (10)
    I (435231) wifi: connected with xyzssid, channel 3
    Guru Meditation Error of type InstrFetchProhibited occurred on core 0. Exception was unhandled.
    Register dump:
    PC : 002c002c PS : 00060330 A0 : 801252ce A1 : 3ffdf9f0
    A2 : 00000001 A3 : 3ffd96ac A4 : 002c002c A5 : 00000008
    A6 : 00000000 A7 : 3ffd3398 A8 : 8011ef50 A9 : 00000002
    A10 : 3ffd96ac A11 : 00000001 A12 : 3ffd4f14 A13 : 00000000
    A14 : 3ffdf2fc A15 : 3ffd4cf8 SAR : 00000019 EXCCAUSE: 00000014
    EXCVADDR: 002c002c LBEG : 00000000 LEND : 00000000 LCOUNT : 00000000
    Rebooting...
    ets Jun 8 2016 00:22:57

    rst:0x3 (SW_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0x00
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:QIO, clock div:2
    load:0x3fff9010,len:8
    load:0x3fff9018,len:812
    ho 0 tail 12 room 4
    load:0x40078000,len:3692
    load:0x4009f000,len:944
    entry 0x4009f1f0
    rtc v134 Oct 20 2016 12:36:18˜øXTAL 40M
    I (879) phy: phy_version: 246, Nov 18 2016, 17:30:07, 0, 0

    tcpip_task_hdlxxx : 3ffdfba4, prio:18,stack:2048
    frc2_timer_task_hdl:3ffe972c, prio:22, stack:2048
    I (1576) wifi: pp_task_hdl : 3ffebf50, prio:23, stack:8192
    mode : softAP(24:0a:c4:00:92:77)
    dhcp server start:(ip: 192.168.4.1, mask: 255.255.255.0, gw: 192.168.4.1)
    MicroPython v1.8.6-40-gd10463e on 2016-11-25; LoPy with ESP32
    Type "help()" for more information.



  • Hello Abilio,

    This WIFI bug continues the same with firmware 0.9.7.b1 as I reported a week ago for firmware 0.9.6.b1.

    Am I assuming correctly that you are a Pycom engineer?

    Who at Pycom is responsible for correcting firmware bugs?

    What is Pycom's SLA for correcting defects with released firmware?

    Robert Dixey



  • @abilio That URL only shows the text "Unauthorized" for me (though the HTTP code is just 200 instead of 401). As for your PM, I'm afraid my availability today is rather limited. I hope to test it today, but it may be tomorrow. And good guess about the OS preference (despite that I have the nickname for over 20 years).

    Edit: there was a typo in the URL you posted. The correct URL is: https://software.pycom.io/downloads/pycom_update_0.9.5.b1.dmg. I'm going to download it, and test if the problem occurs in that version as well.



  • @macfreek, old versions are still available in the server. https://software.pycom.io/downloads/pycom_firmware_update_0.9.5.b1.dmg will lead you to version 0.9.5.b1 for example. Take into account that for some versions we had to re-release the installer to fix issues, so some of them will be named a bit different. Here the list of those specific cases, for mac: pycom_update_0.9.6.b1a.dmg, pycom_update_0.9.3.b2a.dmg. 0.9.3 also got a b1, pycom_update_0.9.3.b1.dmg.

    Thats for the mac (taking into account your nickname ;) ) in case you want Windows, they are called a bit different (ie: pycom_firmware_update_0.9.5.b1.exe). Linux version is called the same as mac, but the extension is .tar.gz instead of .dmg .

    For other users that might look at this post, please don't downgrade your board unless you want to test something very specific, like in this case.

    Thanks for offering you help in the investigation,

    Abilio



  • @abilio I have only tested 0.9.0 and 0.9.6. I'm happy to test other versions. Where can I download them? So far I only used the full installer but am happy to use OTA, TFTP or serial as soon as I find a howto.


Log in to reply
 

Pycom on Twitter