Flashing firmware on Mac OS X
-
TL/DR:
Duet 2 WiFi/Ethernet/Maestro, Duet 0.6/0.85, PanelDue- 5th April 2023 update: Schumatech Bossa (GUI version) and bossac (command line version) have been tested working on a M2 MacBook Pro 14" running MacOS Ventura 13.2.1, using a Thunderbolt Docking Station to provide USB A ports. wxWidgets may have been updated using brew (see below), I can't tell! If you get an error/crash when opening Bossa (GUI), follow the instructions below.
- The Shumatech version of Bossa (with the graphical user interface) will only work on Intel-based Apple Macs if you have an up-to-date version of wxWidgets running. You can install/update wxwidgets using brew (see below). (This may be OS version-dependent, see previous point)
- For all Macs, 'bossac' (the command line version, run from Terminal) works without needing to install extra packages. See this post for usage: https://forum.duet3d.com/post/290007
Duet 3 mainboard 6HC or 6XD
- Currently, no macOS version of bossa/bossac will flash the Duet 3 mainboard 6HC or 6XD. For these, use the Windows/Linux/Raspberry Pi version to flash firmware.
- 26th May 2024 update: I successfully flashed a couple of 6HC boards by installing VMware Fusion, then Windows 11 ARM 64-bit ARM, installing the Microsoft Visual C++ Redistributible ARM version (or Bossa complains about a missing dll), then installing the Duet version of Bossa (bossac command line version also worked). This was tested on an M2 MacBook Pro, running macOS Sonoma 14.5. I couldn't install the Duet device drivers, but YAT and Bossa worked fine anyway. If you have an Intel Mac, I suspect installing VMware Fusion and Windows 11 x64 version, and running the Duet version of Bossa will also work.
--
I've seen a couple of people having problems with flashing firmware to Duet 2 Wifi/Ethernet/Maestro on Apple Mac OS X, at least using the GUI version of BOSSA. Should you have inadvertently pressed the 'erase' button on your Duet, or have some other need to flash the firmware, you would probably end up having to do it using a Windows PC [shudder!] to flash the firmware. However, I seem to have got this working on my MacBook Pro (Retina, 15-inch, Late 2013), running macOS Mojave (10.14.5).
First of all, you need to use BOSSA (Windows and Mac only - https://github.com/shumatech/BOSSA/releases), as there's no Mac version of SAM.BA (Windows and Linux only - https://www.microchip.com/DevelopmentTools/ProductDetails/Atmel SAM-BA In-system Programmer). The version of the command line tool 'bossac' that ships with the Arduino IDE supports the SAM3X8E in Duet 0.6/0.85, but not the SAM4E8E of the Duet Wifi/Ethernet, or the SAM4S8C of the Maestro.
However, once you have downloaded the .dmg and copied BOSSA to your applications folder (and allowed it to run in Security settings), it does not work or crashes when launched. This thread shows a common error message: How did the firmware update evaporate from my board?, relevant part:
Application Specific Information: dyld: launch, loading dependent libraries Dyld Error Message: Library not loaded: /usr/local/opt/libpng/lib/libpng16.16.dylib Referenced from: /Applications/BOSSA.app/Contents/MacOS/bossa Reason: image not found
The main problem seems to be that a dependent dynamic library (libpng, libjpeg) has not been included in the current version (BOSSA 1.9.1 at time of writing), and either an old version is bundled with Mac OS X, or it is missing. It may also be that you have installed software that causes an old version of the library to be installed. There's a discussion about the issue here, which also provides the solution: https://github.com/shumatech/BOSSA/issues/76#issuecomment-450497888
To fix this, first install (or update) Brew: https://brew.sh/
Then run 'brew install wxwidgets' which will install compatible versions of libpng/libjpeg/libtiff in /usr/local/opt and will allow the GUI version of BOSSA to launch correctly.I've only tested this in Mojave, but I think it should work with older Mac OS X versions too. If anyone can try this out and see if it works, I'll update the documentation. Unfortunately, I didn't try the command line version of bossac (v1.9.1) before doing this, but that is also working for me without issue. I usually copy 'bossac' into the same folder as the firmware I want to update, cd to that folder in terminal, and run it from there. But having the GUI version working is nice!
Ian
-
So that's why bossa crashes on launch for me now.
-
@droftarts said in Flashing firmware on Mac OS X:
Thank you so much for this. Saved me a massive headache trying to flash my paneldue v3.0 5".
-
With Catalina works too
-
Thank you. This is still an issue for the version I downloaded on 2020-03-20 and tried to run on Catalina (10.15.3).
-
@droftarts said in Flashing firmware on Mac OS X:
Windows PC [shudder!]
I knew I liked you for a reason.
-
@Danal said in Flashing firmware on Mac OS X:
I knew I liked you for a reason.
Aww, you're making me blush!
On topic, I've tried every combination of things to flash Duet 3 on Mac, but have not succeeded. I ended up resorting to a Windows 7 PC (which I do have, just don't like to admit it), where it flashed first time, no problem. I think the Mac version of Bossa is to blame; there's an issue already raised on Github about it, that I added to: https://github.com/shumatech/BOSSA/issues/106
Please try flashing with Mac and post to that issue; perhaps if enough people do, they'll fix it!Ian
-
is it the same if you use the command line version bossac ? only skimmed the thread, but looked to be graphics related in the top post
nvm -
@droftarts I am running macOS Catalina and can not run bossa at all!
This is the message I get.
Process: bossa [47376]
Path: /Applications/BOSSA.app/Contents/MacOS/bossa
Identifier: ShumaTech.BOSSA
Version: 1.0 (1.1)
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: bossa [47376]
User ID: 501Date/Time: 2020-09-19 13:54:36.827 +0400
OS Version: Mac OS X 10.15.6 (19G2021)
Report Version: 12
Anonymous UUID: 0882F234-69BA-C761-E39C-9AFCC0E1E455Time Awake Since Boot: 760000 seconds
System Integrity Protection: enabled
Crashed Thread: 0
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFYTermination Reason: DYLD, [0x1] Library missing
Is there a way to boot the firmware from a sd card?
Or any other way to re-install a new firm ware version on my duet 2 wifi? -
Had the same problem with Mojave. You need to compile Bossa on your MAC.
https://forum.duet3d.com/topic/17556/duet-3-6hc-firmware-upgrade-flash-locked/10?_=1600511547110
-
@Cwitsch said in Flashing firmware on Mac OS X:
Termination Reason: DYLD, [0x1] Library missing
I think it’s the same problem, with the dependent dynamic library (libpng, libjpeg) missing from Bossa. Try the homebrew instructions, though it’s probably not going to flash a Duet 3. Try @MartinNYHC (thanks!) linked, fixed, compiled version, which I’m going to try at the next opportunity, as I’m still on Mojave. I guess it should work on Catalina too?
Ian
-
@droftarts said in Flashing firmware on Mac OS X:
I think it’s the same problem, with the dependent dynamic library (libpng, libjpeg) missing from Bossa.
bossac from the commandline shouldn't need them libraries? might be worth at try if bulding from source isn't an option
-
@droftarts I installed HomeBrew and installed wxwidgets as described, and BOSSA worked after that. I am running Catalina 10.15.7.
-
-
-
-
-
@droftarts
I managed to get Brew onboard but not wxwidgets.Warning: You are using macOS 10.13.
We (and Apple) do not provide support for this old version.
You will encounter build failures with some formulae.
Please create pull requests instead of asking for help on Homebrew's GitHub,
Twitter or any other official channels. You are responsible for resolving
any issues you experience while you are running this
old version. -
@dizzwold You got that message when you installed brew, or when you ran
brew install wxwidgets
? 10.13 is quite old now, but I run 10.14 (also not supported any more) and it works fine on that, so could be just a warning.Ian
-
@droftarts
Okay, I've managed to install wxwidgets, but the Bossac app won't open;
I've also followed the following and restarted in recovery mode, terminal, csrutil disable, reboot;
https://github.com/shumatech/BOSSA/issues/76
Still no success.So I'll have to try the command line in terminal, but the page with the directions to do so only half explains how to do this on a mac;
https://docs.duet3d.com/User_manual/RepRapFirmware/Updating_PanelDue
Once I have the usbmodem port details, what do I type in terminal to flash the paneldue. It only continues this information for windows machines?
I'd be very grateful for some help with guys.
-
I've also just thought of something else.
Could the paneldue be flashed by my connected SBC, or another RPi?
-
@dizzwold yes, you can install Bossa on Raspberry Pi, though only command line works. There are more complete instructions for Mac and RPi command line here: https://docs.duet3d.com/User_manual/RepRapFirmware/Updating_firmware#all-other-duet-boards
I usually copy 'bossac' into the same folder as the firmware I want to update, cd to that folder in terminal, and run it from there. The ‘port’ is the USB port for the PanelDue, usually something like /dev/tty.usbmodem14201. Otherwise the command should look similar to the Windows command. eg
./bossac -e -w -v -b -R -p /dev/tty.usbmodem14201 PanelDueFirmware.bin
Where the flags are:
-e, --erase erase the entire flash starting at the offset
-w, --write write FILE to the flash; accelerated when combined with erase option
-v, --verify verify FILE matches flash contents
-p, --port=PORT use serial PORT to communicate to device; default behavior is to use first serial port
-b, --boot[=BOOL] boot from ROM if BOOL is 0; boot from FLASH if BOOL is 1 [default]; option is ignored on unsupported devices
-R, --reset reset CPU (if supported)You can try using -U (searches for port) rather than specifying the port, but I usually find this doesn't work.
Ian
-
Hi Ian,
Thank you for your guidance.
So to copy bossac to the firmware file is;
$cp bossac /User/Downloads/PanelDueFirmware x x x.binI just tried the following and got the response after typing the above;
./bossac -e -w -v -b -R -p /dev/tty.usbmodemFD131 PanelDueFirmware.bin
-bash: ./bossac: No such file or directory/bossac -e -w -v -b -R -p /dev/tty.usbmodemFD131 PanelDueFirmware.bin
-bash: /bossac: No such file or directorybossac -e -w -v -b -R -p /dev/tty.usbmodemFD131 PanelDueFirmware.bin
Erase flashDone in 1.437 seconds
No such file or directory
Have I now killed the paneldue?
I'd pressed erase earlier.
Dizzwold.
-
Hi Ian,
Thank you again for your help and input.
I figured the above out in the end (or I hope I have).
Here is my example from the terminal. Maybe this will help others.
Mrxxxx's-imac:~ $ bossac -e -w -v -b -R -p /dev/tty.usbmodemFD131 /Users/Mrxxxx/Downloads/PanelDueFirmware-logo-3.4.1-v3-7.0.bin Erase flash Done in 1.302 seconds Write 218036 bytes to flash (426 pages) [==============================] 100% (426/426 pages) Done in 7.088 seconds Verify 218036 bytes of flash [==============================] 100% (426/426 pages) Verify successful Done in 5.581 seconds Set boot flash true Mrxxxx-imac:~ $
Thank you for your help.
One happy smily bunny.