= Fireworks Firmware Tool = Short help: {{{ Usage: ./ffado-fireworks-downloader [-g GUID] [-m MAGIC] [-p PORT] [-v LEVEL] [--guid=GUID] [--magic=MAGIC] [--port=PORT] [--verbose=LEVEL] OPERATION [ARGUMENTS] fireworks-downloader -- firmware downloader application for ECHO Fireworks devices OPERATIONS: list Lists devices on the bus display Display information about a device and it's firmware info FILE Display information about the firmware contained in FILE upload FILE Upload the firmware contained in FILE to the device download FILE START_ADDR LEN Download the flash contents from the device to FILE Starts at address START_ADDR and reads LEN quadlets verify FILE Verify that the firmware contained in the device corresponds to the one contained in FILE -g, --guid=GUID GUID of the target device -m, --magic=MAGIC A magic number you have to obtain before this code will work.Specifying it means that you accept the risks that come with this tool. -p, --port=PORT Port to use -v, --verbose=LEVEL Produce verbose output (set level 0-10) }}} == Disclamer == Messing with firmware can be a dangerous thing. It can seriously damage your device. To make sure you are aware of this, the downloader tool does not work unless you specify the correct magic option. This means that you have to add "-m 0x001807198000LL" to the options before the downloader will work. By doing so you acknowledge that you're working at own risk. Otherwise you will get the following error: {{{ 04144000490: (fireworks-downloader.cpp)[ 104] main: Magic number not correct. Please specify the correct magic using the '-m' option. 04144000600: (fireworks-downloader.cpp)[ 105] main: Manipulating firmware can cause your device to magically stop working (a.k.a. 'bricking'). 04144000609: (fireworks-downloader.cpp)[ 106] main: Specifying the magic number indicates that you accept the risks involved 04144000616: (fireworks-downloader.cpp)[ 107] main: with using this tool. The magic number can be found in the source code. }}} == Listing Devices == To use the tool, first connect a fireworks device, and then run (replace XXX with the correct magic): {{{ $ ./ffado-fireworks-downloader -m XXX list }}} This will display a list of devices on the bus: {{{ Node id GUID Vendor - Model 0 0x314fc00036de6850 'Linux - ohci1394 ' - '' 1 0x001486065ba9cc5f 'Echo Digital Audio' - 'AudioFire8' }}} == Displaying device info == Pick the device you want to upload a new firmware to from the list, and get the GUID. In this example the GUID is 0x001486065ba9cc5f. Then display the device info: {{{ ./ffado-fireworks-downloader -m XXX -g 0x001486065ba9cc5f display }}} This results in: {{{ 04306670482: Debug (efc_cmd.cpp)[ 171] showEfcCmd: EFC Length: 6 04306670498: Debug (efc_cmd.cpp)[ 172] showEfcCmd: EFC Header: 04306670506: Debug (efc_cmd.cpp)[ 173] showEfcCmd: Version : 0x00000000 04306670514: Debug (efc_cmd.cpp)[ 174] showEfcCmd: Sequence number : 0x00000002 04306670522: Debug (efc_cmd.cpp)[ 175] showEfcCmd: Category : 0x00000000 04306670530: Debug (efc_cmd.cpp)[ 176] showEfcCmd: Command : 0x00000000 04306670570: Debug (efc_cmd.cpp)[ 177] showEfcCmd: Return Value : 0x00000000 04306670583: Debug (efc_cmds_hardware.cpp)[ 127] showEfcCmd: EFC HW CAPS info: 04306670591: Debug (efc_cmds_hardware.cpp)[ 128] showEfcCmd: Flags : 0x00000011 04306670599: Debug (efc_cmds_hardware.cpp)[ 129] showEfcCmd: GUID : 001486065BA9CC5F 04306670607: Debug (efc_cmds_hardware.cpp)[ 130] showEfcCmd: HwType : 0x00000AF8 04306670615: Debug (efc_cmds_hardware.cpp)[ 131] showEfcCmd: Version : 0 04306670622: Debug (efc_cmds_hardware.cpp)[ 132] showEfcCmd: Vendor : Echo Digital Audio 04306670629: Debug (efc_cmds_hardware.cpp)[ 133] showEfcCmd: Model : AudioFire8 04306670645: Debug (efc_cmds_hardware.cpp)[ 135] showEfcCmd: Supported Clocks : 0x0000000D 04306670653: Debug (efc_cmds_hardware.cpp)[ 136] showEfcCmd: # 1394 Playback : 10 04306670660: Debug (efc_cmds_hardware.cpp)[ 137] showEfcCmd: # 1394 Record : 10 04306670667: Debug (efc_cmds_hardware.cpp)[ 138] showEfcCmd: # Physical out : 10 04306670674: Debug (efc_cmds_hardware.cpp)[ 139] showEfcCmd: # Physical in : 10 04306670681: Debug (efc_cmds_hardware.cpp)[ 142] showEfcCmd: # Output Groups : 2 04306670688: Debug (efc_cmds_hardware.cpp)[ 145] showEfcCmd: Group 0: Type 0x00, count 8 04306670696: Debug (efc_cmds_hardware.cpp)[ 145] showEfcCmd: Group 1: Type 0x01, count 2 04306670713: Debug (efc_cmds_hardware.cpp)[ 147] showEfcCmd: # Input Groups : 2 04306670721: Debug (efc_cmds_hardware.cpp)[ 150] showEfcCmd: Group 0: Type 0x00, count 8 04306670728: Debug (efc_cmds_hardware.cpp)[ 150] showEfcCmd: Group 1: Type 0x01, count 2 04306670736: Debug (efc_cmds_hardware.cpp)[ 152] showEfcCmd: # Midi out : 1 04306670743: Debug (efc_cmds_hardware.cpp)[ 153] showEfcCmd: # Midi in : 1 04306670750: Debug (efc_cmds_hardware.cpp)[ 154] showEfcCmd: Max Sample Rate : 96000 04306670757: Debug (efc_cmds_hardware.cpp)[ 155] showEfcCmd: Min Sample Rate : 32000 04306670764: Debug (efc_cmds_hardware.cpp)[ 156] showEfcCmd: DSP version : 0x04080000 04306670779: Debug (efc_cmds_hardware.cpp)[ 157] showEfcCmd: ARM version : 0x04080000 04306670786: Debug (efc_cmds_hardware.cpp)[ 158] showEfcCmd: # Mix play chann. : 10 04306670793: Debug (efc_cmds_hardware.cpp)[ 159] showEfcCmd: # Mix rec chann. : 10 04306670811: Debug (ffadodevice.cpp)[ 205] showDevice: Attached to port.......: 0 (ohci1394) 04306670821: Debug (ffadodevice.cpp)[ 206] showDevice: Node...................: 1 04306670834: Debug (ffadodevice.cpp)[ 208] showDevice: Vendor name............: Echo Digital Audio 04306670843: Debug (ffadodevice.cpp)[ 210] showDevice: Model name.............: AudioFire8 04306670856: Debug (ffadodevice.cpp)[ 212] showDevice: GUID...................: 001486065ba9cc5f 04306670890: Debug (ffadodevice.cpp)[ 217] showDevice: Assigned ID....: dev? Summary ------- Nr | AddressType | Direction | SubUnitType | SubUnitId | FunctionBlockType | FunctionBlockId | Id | Type |Name ---+-----------------+-----------+-------------+-----------+-------------------+-----------------+------+--------------+------ Connections ----------- digraph avcconnections { } Use "dot -Tps FILENAME.dot -o FILENAME.ps" to generate graph }}} == Uploading firmware == === Aquiring the firmware file === Get the fireworks firmware files for your device. You can get these by running the ECHO driver package for windows under wine. This will extract the audiofire firmware files into your wine drive C. In my case the files can be found here: {{{ ~/.wine/drive_c/Program Files/Echo Digital Audio/AudioFire/ }}} For the AudioFire2 and AudioFire4 the firmware file is: * Fireworks3.dat NOTE: AF8 and AF12 firmware upload is not functional at the moment. For the AudioFire8 the firmware file are: * bootstrap.dat * audiofire8.dat * audiofire8_E.dat * FireworksARM.dat For the AudioFire12 the firmware file are: * bootstrap.dat * audiofire8.dat * audiofire8_E.dat * FireworksARM.dat === Uploading the firmware file(s) === Pick the device you want to upload a new firmware to from the list, and get the GUID. In this example the GUID is 0x001486065ba9cc5f. Then upload the files: {{{ ./ffado-fireworks-downloader -m XXX -g 0x001486065ba9cc5f upload FILENAME }}} Where you replace FILENAME with the filename(s) of the firmware. Note that for the AudioFire8 and AudioFire12 you have to upload multiple files. Please upload them in the order they are listed on this page.