BeBoB Firmware Tool

Short help:

Usage: ffado-bridgeco-downloader [OPTION...] OPERATION [ARGUMENTS]
bridgeco-downloader -- firmware downloader application for BridgeCo devices

OPERATION: GUID display
           GUID setguid NEW_GUID
           GUID firmware FILE
           GUID cne FILE
           GUID bcd FILE

  -b, --noboot               Do no start bootloader (bootloader is already
                             running)
  -f, --force                Force firmware download
  -p, --port=PORT            Set port
  -v, --verbose=level        Produce verbose output
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

Report bugs to <ffado-devel@lists.sf.net>.

Disclamer

Messing with firmware can be a dangerous thing. It can seriously damage your device. By using this tool you acknowledge that you're working at own risk.

Listing Devices

To use the tool, first connect a BeBoB device, and then run:

ffado-bridgeco-downloader

This will display a list of devices on the bus:

$ ffado-bridgeco-downloader
Node id        GUID                  Vendor - Model
0              0x00130e0100010265    'Focusrite' - 'Saffire'
1              0x314fc00036de6850    'Linux - ohci1394 ' - ''
no message buffer overruns

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 0x00130e0100010265. Then display the device info:

ffado-bridgeco-downloader GUID display

This results in:

$ ffado-bridgeco-downloader 0x00130e0100010265 display
87075340408:  (configrom.cpp)[ 581] printConfigRom: Config ROM
87075340516:  (configrom.cpp)[ 582] printConfigRom:     Current Node Id:        0
87075340526:  (configrom.cpp)[ 583] printConfigRom:     GUID:                   0x00130E0100010265
87075340542:  (configrom.cpp)[ 584] printConfigRom:     Vendor Name:            Focusrite
87075340553:  (configrom.cpp)[ 585] printConfigRom:     Model Name:             Saffire
87075340562:  (configrom.cpp)[ 586] printConfigRom:     Node Vendor ID:         0x00130e
87075340572:  (configrom.cpp)[ 587] printConfigRom:     Model Id:               0x00000000
87075340580:  (configrom.cpp)[ 588] printConfigRom:     Unit Specifier ID:      0x00a02d
87075340598:  (configrom.cpp)[ 589] printConfigRom:     Unit version:           0x00010001
87075340608:  (configrom.cpp)[ 590] printConfigRom:     ISO resource manager:   0
87075340617:  (configrom.cpp)[ 591] printConfigRom:     Cycle master capable:   1
87075340625:  (configrom.cpp)[ 592] printConfigRom:     Bus manager capable:    1
87075340633:  (configrom.cpp)[ 593] printConfigRom:     Cycle clock accuracy:   100
87075340642:  (configrom.cpp)[ 594] printConfigRom:     Max rec:                8 (max asy payload: 512 bytes)
Info Registers
        Manufactors Id:         bridgeCo
        Protocol Version:       0x00000001
        Bootloader Version:     0x00000000
        GUID:                   0x00130e0100010265
        Hardware Model ID:      0x00000002
        Hardware Revision:      0x00000001
        Software Date:          14.12.2006, 16:50:00
        Software Id:            0x00000000
        Software Version:       0x02021d24
        Base Address:           0x20080000
        Max. Image Len:         0x00180000
        Bootloader Date:        17.05.2005, 14:19:34
        Debugger Id:            0x00000000
        Debugger Version:       0x00000000
no message buffer overruns

Uploading firmware

Aquiring the firmware file

Focusrite firmwares can be downloaded here: http://mail.focusrite.com/beta/

Look for a file marked "This is the BCD file for use with 3rd party firmware tools." that corresponds to your device.

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 0x00130e0100010265

Then upload the files:

ffado-bridgeco-downloader GUID firmware FILENAME

Where you replace FILENAME with the filename of the firmware.

Example for a Focusrite Saffire:

$ ffado-bridgeco-downloader 0x00130e0100010265 firmware focusrite/BeBob_Saffire\ 02.02.7460.bcd
86426863684:  (configrom.cpp)[ 581] printConfigRom: Config ROM
86426863804:  (configrom.cpp)[ 582] printConfigRom:     Current Node Id:        0
86426863813:  (configrom.cpp)[ 583] printConfigRom:     GUID:                   0x00130E0100010265
86426863829:  (configrom.cpp)[ 584] printConfigRom:     Vendor Name:            Focusrite
86426863839:  (configrom.cpp)[ 585] printConfigRom:     Model Name:             Saffire
86426863848:  (configrom.cpp)[ 586] printConfigRom:     Node Vendor ID:         0x00130e
86426863856:  (configrom.cpp)[ 587] printConfigRom:     Model Id:               0x00000000
86426863865:  (configrom.cpp)[ 588] printConfigRom:     Unit Specifier ID:      0x00a02d
86426863881:  (configrom.cpp)[ 589] printConfigRom:     Unit version:           0x00010001
86426863891:  (configrom.cpp)[ 590] printConfigRom:     ISO resource manager:   0
86426863899:  (configrom.cpp)[ 591] printConfigRom:     Cycle master capable:   1
86426863907:  (configrom.cpp)[ 592] printConfigRom:     Bus manager capable:    1
86426863914:  (configrom.cpp)[ 593] printConfigRom:     Cycle clock accuracy:   100
86426863923:  (configrom.cpp)[ 594] printConfigRom:     Max rec:                8 (max asy payload: 512 bytes)
Info Registers
        Manufactors Id:         bridgeCo
        Protocol Version:       0x00000001
        Bootloader Version:     0x00000000
        GUID:                   0x00130e0100010265
        Hardware Model ID:      0x00000002
        Hardware Revision:      0x00000001
        Software Date:          14.12.2006, 16:50:00
        Software Id:            0x00000000
        Software Version:       0x02021d24
        Base Address:           0x20080000
        Max. Image Len:         0x00180000
        Bootloader Date:        17.05.2005, 14:19:34
        Debugger Id:            0x00000000
        Debugger Version:       0x00000000
parse BCD file
check firmware device compatibility... ok
prepare for download (start bootloader)
..x..........
start downloading protocol for application image
wait until flash erasing has terminated
..............................
   1188840/1188840 bytes downloaded
wait for transaction completion
..........
download protocol successfuly completed
start downloading protocol for CnE
wait until flash erasing has terminated
86498052371: Debug (bebob_dl_mgr.cpp)[ 513] downloadObject: downloadObject: CRC match
..............................
      4632/4632 bytes downloaded
wait for transaction completion
..........
download protocol successfuly completed
setting CnE to factory default settings
86538070853: Debug (bebob_dl_mgr.cpp)[ 513] downloadObject: downloadObject: CRC match
.....
start application
Firmware download was successful
no message buffer overruns

Displaying firmware file info

To display firmware file information use:

ffado-bridgeco-downloader GUID bcd FILENAME
$ ffado-bridgeco-downloader 0x00130e0100010265 bcd focusrite/BeBob_Saffire\ 02.02.7460.bcd
86951628521:  (configrom.cpp)[ 581] printConfigRom: Config ROM
86951628622:  (configrom.cpp)[ 582] printConfigRom:     Current Node Id:        0
86951628631:  (configrom.cpp)[ 583] printConfigRom:     GUID:                   0x00130E0100010265
86951628646:  (configrom.cpp)[ 584] printConfigRom:     Vendor Name:            Focusrite
86951628656:  (configrom.cpp)[ 585] printConfigRom:     Model Name:             Saffire
86951628665:  (configrom.cpp)[ 586] printConfigRom:     Node Vendor ID:         0x00130e
86951628674:  (configrom.cpp)[ 587] printConfigRom:     Model Id:               0x00000000
86951628682:  (configrom.cpp)[ 588] printConfigRom:     Unit Specifier ID:      0x00a02d
86951628698:  (configrom.cpp)[ 589] printConfigRom:     Unit version:           0x00010001
86951628707:  (configrom.cpp)[ 590] printConfigRom:     ISO resource manager:   0
86951628715:  (configrom.cpp)[ 591] printConfigRom:     Cycle master capable:   1
86951628723:  (configrom.cpp)[ 592] printConfigRom:     Bus manager capable:    1
86951628731:  (configrom.cpp)[ 593] printConfigRom:     Cycle clock accuracy:   100
86951628740:  (configrom.cpp)[ 594] printConfigRom:     Max rec:                8 (max asy payload: 512 bytes)
Info Registers
        Manufactors Id:         bridgeCo
        Protocol Version:       0x00000001
        Bootloader Version:     0x00000000
        GUID:                   0x00130e0100010265
        Hardware Model ID:      0x00000002
        Hardware Revision:      0x00000001
        Software Date:          14.12.2006, 16:50:00
        Software Id:            0x00000000
        Software Version:       0x02021d24
        Base Address:           0x20080000
        Max. Image Len:         0x00180000
        Bootloader Date:        17.05.2005, 14:19:34
        Debugger Id:            0x00000000
        Debugger Version:       0x00000000
BCD Info
        BCD File Version        0
        Software Date:          14.12.2006, 16:50:00
        Software Version:       0x02021d24
        Software Id:            0x00000000
        Hardware ID:            0x00000002
        Vendor OUI:             0x0000130e
        Image Offset:           0x00000074
        Image Base Address:     0x20080000
        Image Length:           0x001223e8
        Image CRC:              0x62b9e2c3
        CNE Length:             0x00001218
        CNE Offset:             0x0012245c
        CNE CRC:                0x2deedfbe
no message buffer overruns