On 30/03/2015 1:22 AM, Scott Lichtsinn wrote:
> I havent really had any firmware bugs to speak of with the MBI firmware, so
> can anyone point one out??
>
These bugs are generally reported in one of several user groups at which point they
are investigated, duplicated/verified, and then if feasible fixed. Some signficant
ones include,
1. MBI firmware has a deep bug which they then didn't identify in a root cause
analysis. Instead they coded a work around for one of the symptoms of the bug.
That work around causes this,
https://groups.google.com/d/msg/makerbot/TwjG3qsq3DY/lsrz3w01oFsJ
Namely, a heater can fail but the firmware will ignore the failure and start
the print anyway with an extruder not to temp. Fixed in Sailfish. MBI has known
of the bug since March 2013 and never fixed it.
2. Since inception, the MBI firmware for MightyBoards has had a bug which, when
printing over USB, can cause Z hold to be lost for a bit during the initial
starting gcode of a print. This was reported last year by someone with a heavier
than normal build platform. Slipping of the Z axis after homing was visible
to the naked eye in his case. The bug does not occur when printing from SD
card OR if you print from USB, cancel that print, and then start a new print
over USB. This bug is fixed in Sailfish 7.7. MBI isn't planning to release
new MightyBoard firmwares and so they won't be fixing this in their branch.
Somewhat ironic since the Cupcake / Thing-o-Matic firmware line from MBI (3.1)
ended with a Z hold bug as well. (But that one was introduced in 3.0 unlike
the one in the MightyBoard firmwares which has been there since inception.)
My guess is that a lot of print failures ascribed to poor leveling can be
attributed to this bug. How many times have we seen this with a new user?
new user: the sample SD card prints work fine, but when I try my own
print it fails and won't stick to the build platform. I've tried leveling
many times and the SD card prints work but not mine? What's up?
community: are you printing over USB or SD card?
new user: USB
community: try SD card
new user: Well, things are going better now. Guess I'll stick to SD card.
And thus the group-think that USB printing is undesirable continues.
3. But, talking about USB, there's a serious flaw in how MBI's firmware handles
USB errors. It doesn't! Back in the Cupcake/Thing-o-Matic days, MBI commented
out the code to generate an error response to a bad command received over USB.
I do not know why they did that and no one at MBI remembered why either. When
they moved to github, they did not port the change history from their prior
source control system. Thus the change commentary was lost.
MBI's RepG, MakerWare, and Desktop send an X3G command over USB. If there's
an error, their firmware sends NO response whatsoever. Not a positive acknowledgement
nor a negative acknowledgement. The desktop software times out waiting for
a response, and then just resends the command again. It will do up to five
resends. If after five resends, there's still no response, then it just moves
on to the next command. It may be that the command it just skipped over
was important (i.e., restore the VREF settings for the digital potentiometers
controlling current to the stepper motors; turn the heaters off; etc.).
Interestingly enough, if it's a printing command all that might happen is a
little defect (unless it's an entire long line): that because the XYZ positions
are always absolute positions and the extruder positions relative. As such,
a lost G1 command has minimal effect. So, the lion's share of commands won't
be harmed much by this. However, this happened more often then you might
realize: RepG if you print over USB actually reports these timeout errors
and folks who have done much USB printing from RepG are used to seeing those
timeout errors from time to time and, since they don't understand what they
mean, don't think much of them. MakerWare and Desktop do not report those
errors....
Now, a case came up and was reported publicly in which near the end of a print
the extruder would go to 290C instead of 0C (off). Turned out to be a case
that could be reproduced while printing over USB from RepG. Jetty did a lot
of spelunking and found the issue to be a deterministic case with USB comms
failure. And, having the firmware report errors when receiving commands over
USB would catch the problem. So, in late Spring of 2013 Sailfish fixed that.
Discussions with MBI left us thinking they would fix it as well in their
firmware, but they never did. We had also found a bug in MakerWare triggered
by the firmware returning error responses. MBI did go ahead and fix that
in MakerWare. (Conveyor to be specific.)
While investigating this bug, we identified two other bugs in the USB
comms code in MBI's firmware and Sailfish by extension. One was fairly
obvious the other subtle and related to how the compiler represented
a specific data type, making access to a state variable unsafe from non-interrupt
level code. (Bytes off of USB are received and processed in interrupt-level
code; but the command loop which then processes assembled X3G commands is
at non-interrupt level.) This/these bugs are fixed as well in Sailfish.
I suspect that with these changes and 2 above, printing over USB is
far more reliable these days. Honestly, however, with some of the electrical
faults of the MightyBoard rev E, I wouldn't leave my laptop electrically
connected to a MightyBoard any longer than I have to. Those boards do
have some failure modes whereby 24V can spill onto ground and those
boards do not isolate the USB ground from the board's ground plane.
4. There's a bug in the SD card library which MBI uses. Sailfish uses that
library as well. The bug was causing an SD card file header to always be
written to before closing an SD card file. ALWAYS. As in even if the file
is just being read. Specifically, the bug was causing the file length
field to be written as well as the file creation time field. Now, if you're
having signalling problems with the
SD card and you're not checking SD writes, then a bad length may be written.
That can cause the file to be truncated or lengthened and have garbage.
The MightyBoard rev E and G both have SD card signal integrity issues.
And MBI's firmware doesn't check the succes/failure of SD writes. (You
can provide a 16bit checksum for the command + data and the SD card
will first validate that the received command + data match that checksum.)
Now folks had often remarked how the dates on SD card files would go
from being correct (when viewed on their desktop) to being 1 Jan 1970
after printing the file. Jetty and I knew of that but it wasn't high
priority on our to-do list. Had we thought about it, we would have
asked, "Why is the printer rewriting part of the file header"? (Actually,
I wasn't too familiar with the intracies of FAT-16 so I was willing
to believe that maybe that was really a last-access time field and so
the bot was rewriting it but since it didn't know the date/time it wrote
the zero-time which is 1-Jan-1970 00:00:00 UTC.)
Then one person -- one of the esteemed moderators of the 3DPToday podcast
and moderator of this here forum -- had
a very reliable case in which an SD card file would print once fine
and all subsequent times incorrectly. He reported it. That enabled us
to do some sleuthing at which point we then discovered the bug in the SD
card library whereby it would ALWAYS rewrite the length field before closing
the file. SD card I/O errors caused by the electrical design problems
with the rev E & G MightyBoards was leading to bad bytes being written
for the file length. We fixed the problem and reported it to MBI as well
as the developer of the SD card library. The developer concurred with
our analysis and fix. MBI just duly noted the bug but never fixed it
in their sources.
5. There's bugs with MBI's processing of G92 gcode commands. As a result,
MBI's firmware doesn't work well with Cura, Slic3r, KISSlicer, and
other RepRap slicers which like to issue a G92 command at the start of
each layer. (Slic3r's mode to tell it to generate Makerbot gcode
is primarily telling it to not generate G92 commands.)
6. Gcode to display messages (e.g., progress messages) on the LCD UI
has bugs and doing this can result in the printer hanging. This is why
early versions of Simplify3D didn't work well with MBI firmware; whereas,
it worked just fine with Sailfish. Sailfish had those bugs fixed. MBI
has never seen fit to fix them. Simplify3D stopped generating those
progress messages (e.g., Homing, Heating, etc.).
7. For Rep 2 and 2X, you can get false heater errors if you use extruder
temps above 240C. This was found in a batch of about five bugs related
to MBI's MightyBoard rev G and H firmware. MBI fixed four of those
bugs when they were reported by Jetty and I. However, they decided
to not fix this one; they didn't think anyone should be printing at
temps above 240C.
8. Probably a dozen or more heater control related bug fixes for issues
most people won't see, but do come up. For example, if during heating
while the extruder heaters are "waiting" and the HBP is heating up,
if a new temp is commanded for one of the "waiting" heaters, then
temperature control can get wonky and not work correctly for that heater.
People printing over USB and decided to change a set point temp from
a UI control panel encountered that one.
Sailfish has many, many other fixes but they fall into the "minor"
category compared to some of the above (e.g., the line count display bug in MBI's build
stats during a running print; better SD card error handling; actually reporting
which heater has failed and not leaving the user to determine which of three
heaters or temp sensors is failing; verifying that the digipots switched to
the commanded setting; RGB LED I2C fixed; not clobbering the x-min, y-min, z-max
endstop ports; etc, etc.)
There's easily a hundred minor fixes
many of which relate to bugs reported publicly which the Sailfish team
actually takes the time to investigate regardless of which firmware the
bug was reported in. MBI, on the otherhand, stopped paying attention to
their own forums shortly after they released the Rep 1. (They were far
more involved in the Cupcake and Thing-o-Matic days.) So, it should come
as no surprise that MBI hasn't been doing much to fix bugs: they haven't
been listening. Jetty and I would talk with them regularly and call them
up when significant bugs were found. But shortly after the Rep 1 came
out, MBI had also developed too much bureaucracy and the developers had
to work on what marketing told them to work on. They apparently
weren't allowed to work on bugs without approval from on high. So, only
a small number of reported bugs were fixed. BTW, their 7.5 release was
just a couple of bug fixes to the dubious "keep heaters on after the print
is finished" option they added. I'm told they added that because Bre
wanted it. It's a feature of dubious value. And their implementation
had a number of bugs; I'm not sure if they fixed them all in their 7.5
release. MBI's unannounced 7.6 release was a minor change intended to
deal with a behavior change in the Rep 2X brought about by manufacturing
changes. The issue is easily addressed by changing the PID tuning which
doesn't require a firmware change to effect.
Dan