Failed to enter bootload phase - Artemis, macOS Sequoia & M3

Hi folks,

I’m curious if anyone has run into the same problem trying to upload code to the SparkFun Artemis on macOS Sequoia using an M3 MacBook.

I am using a MicroMod Data Logging Carrier board and the Artemis Processor. When I connect via USB C, I can view the device and the output is displayed to Serial Monitor. However, I am unable to upload code. I have tried every combination of pressing the Boot and Reset buttons to no avail.

The Artemis uses the CH340E USB-to-Serial chip, though I’m not entirely sure that’s the problem since I can already view the USB device.

Cheers,
Adam

Artemis SVL Bootloader
Script version 1.7

Phase:	Setup
	Cleared startup blip
Failed to enter bootload phase

Phase:	Setup
	Cleared startup blip
Failed to enter bootload phase

Phase:	Setup
	Cleared startup blip
Failed to enter bootload phase
Target failed to enter bootload mode. Verify the right COM port is selected and that your board has the SVL bootloader.

Thanks, Paul! I’ll give it a try.

The CH34xVCPDriver.dmg driver was installed successfully but it looks like artemis_svl will need to be recompiled with the added code. I seem to recall this having to be done in the past when Apple broke previous versions of everything.

/Users/adam/Library/Arduino15/packages/SparkFun/hardware/apollo3/1.2.3/tools/artemis/macosx/artemis_svl

@paulvha can you remind me if there is an easy way to achieve this?

Cheers,
Adam

# ***********************************************************************************
#
# Main function
#
# ***********************************************************************************
def main():
    try:
        num_tries = 3

        print('\n\nArtemis SVL Bootloader')

        verboseprint("Script version " + SCRIPT_VERSION_MAJOR +
                     "." + SCRIPT_VERSION_MINOR)

        if not os.path.exists(args.binfile):
            print("Bin file {} does not exist.".format(args.binfile))
            exit()

        bl_success = False
        entered_bootloader = False

        for _ in range(num_tries):

            with serial.Serial(args.port, args.baud, timeout=args.timeout) as ser:

                # Toggle RTS to signal Artemis bootloader mode
                ser.rts = False
                ser.rts = True
    
                # startup time for Artemis bootloader   (experimentally determined - 0.095 sec min delay)
                t_su = 0.15

                time.sleep(t_su)        # Allow Artemis to come out of reset

                # Perform baud rate negotiation
                entered_bootloader = phase_setup(ser)

                if(entered_bootloader == True):
                    bl_success = phase_bootload(ser)
                    if(bl_success == True):     # Bootload
                        #print("Bootload complete!")
                        break
                else:
                    verboseprint("Failed to enter bootload phase")

            if(bl_success == True):
                break

        if(entered_bootloader == False):
            print(
                "Target failed to enter bootload mode. Verify the right COM port is selected and that your board has the SVL bootloader.")

    except serial.SerialException:
        phase_serial_port_help()

    exit()

All credits to the people that worked on that topic. As described in the last entry Unable to flash Artemis Thing Plus on macOS Sequoia - #6 by farrell
you need to download and run ‘pyinstaller’ to create a new executable function and copy that the macosx folder you indicated.