OpenWareLab

Documentation for the OWL family of devices.

View the Project on GitHub antisvin/OpenWareLab

Axowl FAQ

Can you actually breed avians and amphibians?

At least it’s worth trying! Axowl is a port of OWL/OpenWare firmware to Axoloti hardware. Axocontrol support is included.

What if I don’t have an Axocontrol? How about my own frankenboard?

Axowl bootloader should be usable with a bare Axoloti board. A copy of Axowl firmware with simplified version of UI could be made to use it with only MIDI control. The same is true about custom controller boards.

Is it an official firmware supported by Johannes Taelman or Rebel Technology?

It is not, so use at your own risk.

Which peripherals from Axoloti are supported?

Everything works!

Upstream OWL firmware doesn’t support it, but conveniently its resources API is abstract enough to use SD card instead of flash as a fallback option. This means that patches would be compatible with upstream firmware.

Currently resources can be accessed only from C++ or from FAUST using its soundfiles API.

SD card must be formatted in FAT32 (exFAT is not supported) and contain OWL/storage/ directory that would be used for loading files. So loading a resource named foo.wav would read the file from OWL/storage/foo.wav unless resource with foo.wav name is found on flash.

Restart is required if you don’t insert card when device boots or remove it later. In addition to that, it’s not recommended to keep a card that uses resources in the first patch slot as that seems to cause occasional firmware hangs if SD card is not inserted.

USB device on OWL is configured as a composite audio + MIDI device. USB audio is generating 2 channels that contain patch output and 2 channels that are sent to patch input.

USB host in OWL currently doesn’t handle reconnect correctly, this issue is waiting to be resolved in upstream firmware.

How much flash and memory can my patches use?

Bootloader uses 64 kb of flash. Firmware takes next 320 kb. Remaining 640 kb are available for user patches and resources.

As for memory, firmware uses first 48kb of SRAM. Patch code is loaded to SRAM and can use up to 144 kb of SRAM, unused memory would be available as dynamically allocated memory when patch runs along with 64 kb CCMRAM and 8 Mb of SDRAM.

How can I run it?

  1. Install the OWL bootloader (MidiBoot-Axoloti.bin file) in DFU mode. DFU mode is entered by pressing the tiny S1 switch when device is booting. After that you can use dfu-util or WebDFU to flash bootloader binary to address 0x08000000

  2. After flashing bootloader and rebooting you should be able to see a new USB MIDI device name named OWL-BOOT

  3. Flash firmware by playing MIDI SySex file (Axoloti.syx). Specific utility to play MIDI depends on OS used (i.e. amidi on Linux), but you can use official Rebel Technology flash page in Chromium-based browsers.

  4. Wait for device LED to stop flashing (firmware flashing generally takes 5-10 seconds)

  5. It’s recommended to erase patch storage, especially if you’re flashing Axowl for the first time. This can be done using OpenWare tool.

If all went well, you should end up with a working firmware after rebooting Axoloti. MIDI USB device name would change to OWL-AXOLOTI

DFU is not working!

STM32F4 bootloader is not fully compliant to DFU standard and that confuses some versions of dfu-util and other clients. The error message typically tries to tell you that it can’t get memory map from device. It’s recommended to use newer version of dfu-util that resolves that.

An alternative solution is to use original Axoloti patcher. It’s possible to replace the firmware/build/axoloti.bin with Axowl bootloader and it would happily flash it.

Where can I get binaries?

In github repo

MidiBoot-Axoloti-*.bin is the bootloader file. There’s also a sysex version which can be used to flash bootloader when firmware is running.

Axoloti-*.syx is firmware binary converted to SySex format.

How can I build Axowl from source?

You will need to use the following branches from Github:

This firmware sucks, how can I uninstall it?

There’s nothing preventing you from going flashing original Axoloti bootloader in DFU mode and then the old firmware

How do I build patches?

You can use the upstream OwlProgram repo to build patches locally or do it online in the web patcher page. Existing patch binaries in web patcher are expected to work as is, however note that there’s no guarantee that patch was written with exactly the same controls in mind (i.e. could require more inputs or generate CV outputs).

OWL docs fully apply and should be used as a reference for writing patches.

How are patches controlled?

OWL firmware supports using up to 40 parameters. The following mappings to hardware are used on Axoloti with Axocontrol:

This is the full list of parameter names and MIDI info.

How does patch selection in Axowl UI work?

Switches S1/S2 are used for selecting patches. There are 2 ways to do it:

  1. A single click loads previous or next patch when button is released

  2. Keeping a button pressed and clicking the opposite button allows you to select previous/next patch that only gets loaded when first button is released. You can press the second button multiple times, thus you can skip patches instead of loading them one by one.

When you’re in this patch selection mode, LEDs are used to display currently selected patch number as binary numbers. Patch number is displayed with most significant bit on the left (LED for button 4). For example patch number 3 is displayed as two unlit LEDs followed by 2 lit LEDs.

I have more questions!

This port should be discussed on Axoloti forum in Axowl announcement thread.

Questions about writing patches (unrelated to Axowl) can be asked on RebelTech forum (and might be answered already, use the search function).

Changelog

See upstream info

V22.0

Initial release

V22.2