Duet 0.6 randomly reboots
-
Looks like it's hit an assertion failure within LWIP and it's trying to print a debug message to USB. If you attach a PC running YAT or Pronterface to the USB port, you will probably see a message on it when this situation occurs, and it probably won't reboot. Take precautions against USB ground loops (see the wiki page about them) when using a USB connection.
[Note for me when I look into this: looks like mdns_responder populate_record.constprop.11 is calling pbuf_cat with one of the args being null. It could be that the pbuf allocation in populate_record failed.]
-
I've looked into this further. The MDNS responder in lwip version 1 is contributed code and is not up to the standard of the main lwip code. In particular, in multiple places fails to do any error handling when it fails to allocate a buffer. This is producing the assertion failure.
I looked to see if there are any updates to lwip 1 to address this, but I didn't find any. In lwip 2 it looks like the MDNS responder has been completely rewritten, and it is part of the core code. So there are no MDNS fixes that I can back-port to lwip 1.
Ideally the network code for the legacy Duets would be changed to use lwip 2 instead of lwip 1, but that would be a large undertaking. So I'm not going to do that because I have lots of Duet 2 and Duet 3 work to do, and I don't receive any remuneration for working on code for the legacy Duets. Unless someone else wants to take that project on, or to add the missing error handling to the mdns source code, I think the best thing to do is to disable mdns. This would mean that you have to use the IP address in your browser, instead of local names such as "Duet.local".
-
I don't use MDNS any way since I have a small local network for my "lab". How do I disable it though?
I will try the USB output to see if I get anything.Thanks!
-
Also I totally understand it is pointless for you to spend so much time integrating lwip 2 for the old hardware. I hope disabling the mDNS works. Otherwise I will try to go to an older FW version. Is the integration of mDNS a recent addition? I wonder why I didn't have this problem in the older firmware.
-
Well after some effort I got the following error in Pronterface. For some reason that didn't come up every time the printer rebooted.
Assertion "(h != NULL) && (t != NULL) (programmer violates API)" failed at line 752 in ../src/Duet/Lwip/lwip/src/core/pbuf.c
-
That's exactly the message I expected so it confirms my diagnosis. I'll disable MDNS support in the next build.
-
Thank you David. Your help is much appreciated!
I hoped there was an easy way to disable mDNS and not affect every future build for the early duets.
I have been contemplating on upgrading my Ormerod 1 to a newer Duet but I don't think my old and not so reliable in terms of print quality/success Ormerod 1 is worth the extra money. I already have changed everything else including the aluminum parts and your dual-nozzle Z sensor.
I wish you have you have a great new year's eve!
-
@dc42 said in Duet 0.6 randomly reboots:
I'll disable MDNS support in the next build.
Hello David, hope all is well!
Any update on that?
Regards,
Achilles -
You can try the 2.03 early beta build at https://www.dropbox.com/s/ozuw60nflckpq6c/RepRapFirmware.bin?dl=0 if you like, but it's untested so exercise caution!
-
Thank you, will cautiously proceed and let you know!
-
I included a Duet 086/06 build in the 2.03beta1 release too.