Super Sixteen firmware update 1.1 - installation support thread

Creator of of the Super Sixteen Sequencer and based in San Francisco. This is a DIY and Finished Good product for Eurorack.

Moderators: Kent, extralifedisco

Post Reply
User avatar
extralifedisco
Common Wiggler
Posts: 88
Joined: Thu Apr 05, 2018 5:03 pm
Location: San Francisco, CA

Super Sixteen firmware update 1.1 - installation support thread

Post by extralifedisco » Mon Mar 08, 2021 6:33 pm

I'm pleased to announce the availability of firmware version 1.1a for the Super Sixteen eurorack module, introducing new generative sequencing mutation modes, sequence chaining, and note name display mode.

The firmware update .hex file is available on my github page as a release:
https://github.com/matthewcieplak/super ... s/tag/1.1a



Installing the firmware update is easy enough, but it does require a USB AVR programmer () here's one for about $8 USD) and the use of the Command Prompt or Terminal on your PC/Mac to run the update. Those of you familiar with Arduino will have no trouble I'm sure, and I've covered the process in probably too much detail in the tutorial video above if you're new to it. You'll need to install either the Arduino IDE or just the bare avrdude CLI utility to run the upload script:

Get the arduino IDE here:
https://www.arduino.cc/en/software​

OR Get avrdude here:
https://www.nongnu.org/avrdude/

Here are the script commands to upload the firmware:
Using Pololu AVR v2:
avrdude -P COM3 -p m328p -c stk500 -U flash:w:firmware.hex
Using Arduino Uno as ISP (you must first upload the ArduinoISP sketch to your uno board) - you may need to use the Arduino to power the module as well, unless your Eurorack PSU has a common ground with your PC.
>avrdude -P COM5 -p m328p -c stk500v1 -b19200 -U flash:w:firmware.hex
As you can see, the difference is that the -P option "COM5" or "COM3" indicates a different serial port. You can figure out which one to use with your programmer by opening the Arduino IDE, clicking on Tools->Port and seeing what ports are available when you plug in your programmer. Additionally you must specify the programmer type with the -c option. Many programmers emulate the stk500, and using an Arduino uno sketch requires using the stk500v1 option and setting the baudrate. Your programmer's manual should contain this information. You can find a complete list of programmer options on the avrdude manual page (scroll down a bit).

Finally, you must specify the path to "firmware.hex." In the above commands, it is assumed that you are in the same directory as the firmware download. You can simply use the "cd" command to change directories into the appropriate folder, or write a longer command specifying the relative path to the firmware, e.g.:
avrdude -P COM5 -p m328p -c arduino -U flash:w:/Users/PC/Downloads/firmware.hex
(leave out the C:/ root prefix on windows)

If you get an error message trying to run avrdude and you have already installed it, you probably don't have that folder included in your PATH. You can follow a tutorial to install it in your PATH, or just specify the full path to the avrdude program. When installed with the Arduino IDE version 1.8.13 on windows 10, here is a typical command to use the complete path:
C:\Users\PC\Downloads>avrdude
'avrdude' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\PC\Downloads>C:\Users\PC\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude 
Usage: avrdude [options]
Options:
  -p <partno>                Required. Specify AVR device.
  -b <baudrate>              Override RS-232 baud rate.
  -[.....]
You can then append the rest of the upload command to that full path and run it as one big command, e.g.
C:\Users\PC\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude  -P COM3 -p m328p -c stk500 -U flash:w:firmware.hex
If you are uploading the firmware via Arduino, below are diagrams to connect the pins properly. You must connect EITHER your eurorack power supply or the 5V and GND pins from your arduino, but not both. I have found my linear eurorack supply (AC wall wart) causes serial comms problems with the Arduino due to a lack of a common ground, but my switchmode supply (Meanwell R65B) works fine.

If you have further issues uploading the firmware, please post a message below explaining what you've tried and what problem you're encountering.
Attachments
tht-connection-diagram-power.jpg
smt-connection-diagram-pover.jpg

msoderberg
Learning to Wiggle
Posts: 2
Joined: Tue Mar 09, 2021 7:05 am

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by msoderberg » Tue Mar 09, 2021 7:31 am

Hi Matthew!

I just tried to update my DIY build to 1.1a using an arduino uno but I don't have access to the new features. I didn't run into any issues during the upgrade and the output of avrdude looked good (writing, reading and verification successful).

Here's what I did:
1. Uploaded the ArduinoISP sketch
2. Connected the cables as shown in the video for the DIY build
3. Powered on the module (display was off)
4. Downloaded the hex file from the release page and executed avrdude:

Code: Select all

 avrdude -P /dev/ttyACM0 -p m328p -c arduino -U flash:w:firmware.hex
5. Removed the cables from the ICSP header and tried to access the new features (shift+16 to access song mode and shift+mutate to access the new modes) but they're not available. Same after power cycling

Any idea what could've gone wrong?

User avatar
extralifedisco
Common Wiggler
Posts: 88
Joined: Thu Apr 05, 2018 5:03 pm
Location: San Francisco, CA

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by extralifedisco » Tue Mar 09, 2021 7:27 pm

msoderberg wrote:
Tue Mar 09, 2021 7:31 am
Hi Matthew!

I just tried to update my DIY build to 1.1a using an arduino uno but I don't have access to the new features. I didn't run into any issues during the upgrade and the output of avrdude looked good (writing, reading and verification successful).

Here's what I did:
1. Uploaded the ArduinoISP sketch
2. Connected the cables as shown in the video for the DIY build
3. Powered on the module (display was off)
4. Downloaded the hex file from the release page and executed avrdude:

Code: Select all

 avrdude -P /dev/ttyACM0 -p m328p -c arduino -U flash:w:firmware.hex
5. Removed the cables from the ICSP header and tried to access the new features (shift+16 to access song mode and shift+mutate to access the new modes) but they're not available. Same after power cycling

Any idea what could've gone wrong?
Hey, thanks for posting this! I think a goofed on the avrdude commands for Arduino as ISP. Looking at the CLI output from the IDE, I believe the the "-c arduino" option is actually for uploading to the Arduino board via the onboard USB interface. When using Arduino as ISP, the correct option is actually "-c stk500v1" (similar to using the pololu). You also must specify the baudrate within the 328p's range, so the full command is:
avrdude -P COM5 -p m328p -c stk500v1 -b19200 -U flash:w:firmware.hex
It does work for me, but it runs much slower than the external programmer does (19200 baud, obviously!). I also found that my AC power supply caused issues where it say "invalid device signature" and couldn't talk to the module unless I powered the module via 5V and GND from the arduino.

Of course, if you ran the previous command, you will have re-programmed your arduino uno with the Super Sixteen firmware, so you'll need to re-upload the Arduino ISP sketch, then run the avrdude command above. Your PSU may work as-is if there's a common ground, or you may need to try powering up via the Arduino. I'll update the top post accordingly.

msoderberg
Learning to Wiggle
Posts: 2
Joined: Tue Mar 09, 2021 7:05 am

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by msoderberg » Wed Mar 10, 2021 4:53 am

Thanks for the update and explanation! Makes sense :)

I tried again with the updated command and it worked flawlessly (I also had to power the module from the Arduino). Looking forward to play around with the new features! I also ran into to the reset behaviour issue, so thanks for getting that fix into this release as well :tu:

darkpolarmusic
Learning to Wiggle
Posts: 2
Joined: Wed Jan 13, 2021 11:14 am

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by darkpolarmusic » Mon Mar 22, 2021 4:34 pm

Hi! I'm on a Mac (M1 with Big Sur) and using an Arduino UNO I had some issues uploading the firmware at first. What made it work was to power the Super Sixteen module from the Arduino UNO (thanks for the tip Matthew!). The avrdude program is also a bit more fiddly to start from command line (terminal) on Mac, but with a standard installation of the Arduino IDE this command worked for me:

Code: Select all

/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C /Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -P /dev/tty.usbserial-DN0519Q8 -p m328p -c stk500v1 -b 19200 -U flash:w:firmware.hex 
Just two things to remember before you start:
  • Your firmware.hex file must be in the same directory/folder you are in when executing the command from
  • Check in the Arduino IDE to see what your USB-serial port is called and replace "/dev/tty.usbserial-DN0519Q8" with the correct name.
Thanks for a great new firmware, let's play!

Texy
Common Wiggler
Posts: 78
Joined: Thu Mar 18, 2021 7:28 am
Location: Newbury, UK

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by Texy » Wed Mar 31, 2021 12:45 pm

Hi,
i received my pcb + panel set today from Thonk with pre-programmed 328P with a label saying it has 1.1 firmware. I assume this is not the same as 1.1a ? I've already pre-programmed a spare 328P with 1.1a in readiness anyway. Once I have all the parts to build the super sixteen I'll initially try the supplied chip anyway, just in case I goofed up the flashing of my spare.#
Texy

User avatar
extralifedisco
Common Wiggler
Posts: 88
Joined: Thu Apr 05, 2018 5:03 pm
Location: San Francisco, CA

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by extralifedisco » Wed Mar 31, 2021 5:10 pm

Texy wrote:
Wed Mar 31, 2021 12:45 pm
Hi,
i received my pcb + panel set today from Thonk with pre-programmed 328P with a label saying it has 1.1 firmware. I assume this is not the same as 1.1a ? I've already pre-programmed a spare 328P with 1.1a in readiness anyway. Once I have all the parts to build the super sixteen I'll initially try the supplied chip anyway, just in case I goofed up the flashing of my spare.#
Texy
I think you're right, 1.1 was a slightly earlier release - 1.1a just added a fix for the reset input behavior when overlapping the clock signal IIRC.

sd_falter
Common Wiggler
Posts: 61
Joined: Wed Apr 04, 2018 1:13 am
Location: Melbourne

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by sd_falter » Wed Apr 07, 2021 2:10 am

How difficult would it be to modify the firmware to optionally output the glide trigs via the clock out? This is such a solid acid line sequencer really want to use an additional gate for accents etc

Not necessarily a feature request I'm happy to have a go at modifying the code and recompiling my own version but mostly enquiring about whether it's easily kludged in by an novice-intermediate Arduino tinkerer before I start cloning the GitHub :)

User avatar
extralifedisco
Common Wiggler
Posts: 88
Joined: Thu Apr 05, 2018 5:03 pm
Location: San Francisco, CA

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by extralifedisco » Wed Apr 07, 2021 3:37 am

sd_falter wrote:
Wed Apr 07, 2021 2:10 am
How difficult would it be to modify the firmware to optionally output the glide trigs via the clock out? This is such a solid acid line sequencer really want to use an additional gate for accents etc

Not necessarily a feature request I'm happy to have a go at modifying the code and recompiling my own version but mostly enquiring about whether it's easily kludged in by an novice-intermediate Arduino tinkerer before I start cloning the GitHub :)
Yeah that shouldn't be too hard. Most of the stuff you'll need is in Sequencer.cpp. Make sure you clone the submodules in /sequencer_app_v2/libs when you clone the repo, that'll get you the libraries. I edit the project in Visual Studio Code with the platformIO plugin for compiling.

You'll probably just want to look for lines with digitalWrite(CLOCK_OUT_PIN) and comment them out to disable the clock function. Then wrap one of those with some conditional logic that looks at
active_sequence.glide_matrix[current_step]
to determine whether or not to change the output.

If you're coming from Arduino, you may not be familiar with object-oriented C++, so keep in mind if you want to get variables or functions across files you'll need to create new getter/setter public methods as functions of the class you want to access, e.g. if you want to add something in Ui.cpp that accesses a variable in Sequencer.cpp, there needs to be a predefined function to access that variable. You may not need to do this, but if you do just have a look in the .h header files and you'll see what I mean, there's a couple getter/setter methods in every class I think.

Good luck!

sd_falter
Common Wiggler
Posts: 61
Joined: Wed Apr 04, 2018 1:13 am
Location: Melbourne

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by sd_falter » Wed Apr 07, 2021 3:45 am

Thanks for the insight! I've had some experience with C++ so have had to navigate header files and OOP concepts in the past.

Cheers, will share any tweaks when I get a chance to get stuck in :)

Texy
Common Wiggler
Posts: 78
Joined: Thu Mar 18, 2021 7:28 am
Location: Newbury, UK

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by Texy » Fri Apr 09, 2021 9:02 am

I've just completed my super 16 build and done a very basic test. This is with the supplied v1.1 code, not the latest v1.1a code.
I had already programmed another spare 328p chip from my spares box and fitted it to the s16. It does run, but it runs very slowly - I think perhaps it is because the flag is set to use the internal clock at 4Mhz, rather than the external 16Mhz clock when I flashed it, as a guess ? I used a USBtiny to do the programming and the following avrdude command :

Code: Select all

avrdude -p m328p -c usbtiny -b19200 -U flash:w:firmware.hex
The flash sequence appears to be successful :

Code: Select all

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "firmware.hex"
avrdude: input file firmware.hex auto detected as Intel Hex
avrdude: writing flash (24626 bytes):

Writing | ################################################## | 100% 33.71s

avrdude: 24626 bytes of flash written
avrdude: verifying flash memory against firmware.hex:
avrdude: load data flash data from input file firmware.hex:
avrdude: input file firmware.hex auto detected as Intel Hex
avrdude: input file firmware.hex contains 24626 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 23.61s

avrdude: verifying ...
avrdude: 24626 bytes of flash verified

avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)

avrdude done.  Thank you.
I am reluctant to update the supplied working chip until I understand why flashing my spare isn't working as expected (and i tried more than one spare m329p).
Texy

User avatar
extralifedisco
Common Wiggler
Posts: 88
Joined: Thu Apr 05, 2018 5:03 pm
Location: San Francisco, CA

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by extralifedisco » Fri Apr 09, 2021 9:01 pm

Texy wrote:
Fri Apr 09, 2021 9:02 am
I've just completed my super 16 build and done a very basic test. This is with the supplied v1.1 code, not the latest v1.1a code.
I had already programmed another spare 328p chip from my spares box and fitted it to the s16. It does run, but it runs very slowly - I think perhaps it is because the flag is set to use the internal clock at 4Mhz, rather than the external 16Mhz clock when I flashed it, as a guess ?
Texy
Good guess! By default the Atmega328p and most chips are configured to use their internal clock, which in this case runs much slower. For a brand new IC, you need to set the fuses on that chip to enable the external 16mHz clock. That command is given in the firmware upload script on the github repo.
avrdude -P COM3 -p m328p -c stk500 -U lfuse:w:0xFF:m -U hfuse:w:0xDE:m -U efuse:w:0x05:m
As you can see, that sets the 3 fuse bytes over the same command/config as the firmware upload. (With the Arduino software, this is done automatically when you run the "Burn bootloader" script to flash a new chip so it can receive programs over USB.)

Texy
Common Wiggler
Posts: 78
Joined: Thu Mar 18, 2021 7:28 am
Location: Newbury, UK

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by Texy » Sat Apr 10, 2021 2:21 am

Doh - how did I miss that. I’ll try again later - many thanks.
Texy

Texy
Common Wiggler
Posts: 78
Joined: Thu Mar 18, 2021 7:28 am
Location: Newbury, UK

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by Texy » Sat Apr 10, 2021 4:50 am

Confirmed now working. For those of you using a tinyusb to program the m329p, the command lines that worked for me are

Code: Select all

avrdude -c usbtiny -p m328p -U lfuse:w:0xFF:m -U hfuse:w:0xDE:m -U efuse:w:0x05:m
avrdude -c usbtiny -p m328p -U flash:w:firmware.hex 
Texy

yodog
Learning to Wiggle
Posts: 28
Joined: Tue Jul 28, 2020 4:50 pm

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by yodog » Thu Jul 29, 2021 11:31 pm

Just wondering, are there plans for future firmware updates?

User avatar
extralifedisco
Common Wiggler
Posts: 88
Joined: Thu Apr 05, 2018 5:03 pm
Location: San Francisco, CA

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by extralifedisco » Thu Aug 12, 2021 8:35 pm

yodog wrote:
Thu Jul 29, 2021 11:31 pm
Just wondering, are there plans for future firmware updates?
Nothing set in stone yet, I'd like to do at least one more to add alternate modes for CV2 output with quantization for pitch CV or interval harmony, or possibly LFO shapes.

My_one_opus
Learning to Wiggle
Posts: 10
Joined: Sat Mar 07, 2020 9:28 am

Re: Super Sixteen firmware update 1.1 - installation support thread

Post by My_one_opus » Fri Aug 13, 2021 1:16 am

extralifedisco wrote:
Thu Aug 12, 2021 8:35 pm
yodog wrote:
Thu Jul 29, 2021 11:31 pm
Just wondering, are there plans for future firmware updates?
Nothing set in stone yet, I'd like to do at least one more to add alternate modes for CV2 output with quantization for pitch CV or interval harmony, or possibly LFO shapes.
Being able to trigger mutations via gate would be a nice feature, maybe using the reset in?

Post Reply

Return to “Extralife Instruments”