ether dream

Ether Dream - Developer Manual

NOTE - This page is for the previous Ether Dream 1. Check the current website.



This is a work-in-progress developer-oriented guide to the hardware features and software architecture of the Ether Dream DAC. For setup and usage tips, see the User Guide.


Ether Dream board diagram

Starting at the Ethernet connector on the board and moving counterclockwise, the hardware features and connectors on the board are:


The Ether Dream requires no network configuration. By default, it will attempt to acquire an IP address with DHCP; if no DHCP server is found, it will instead choose a link-local 169.254.x.x address. Once it has an address, it will begin advertising its presence with UDP broadcast packets on port 7654. The playback DLL looks for these broadcasts to find DACs on the network.


Protocol documentation is here.

Drivers are available for Windows and Mac/Linux.


The Ether Dream firmware, available on github, builds on a standard Linux system with the free CodeSourcery ARM toolchain. The README in the repository describes the needed tools.

Firmware Updates

There are three ways of updating the Ether Dream's firmware:
  1. USB

    The Ether Dream board comes with a USB bootloader in the first 16kB of Flash. (Source for the bootloader is in the boot/ directory of the source tree.) This bootloader implements the standard DFU protocol; the dfu-util project provides a PC-side tool.

    The bootloader runs on every power-up, but normally immediately jumps to the main firmware. If the firmware is corrupt or the DAC has been forced into bootloader mode, it will instead run and appear as a USB DFU device. This mode is indicated by the LED next to the USB connector flashing rapidly. There are two ways to force the DAC to run in bootloader mode:

    • Hold P0[18] low during power-on.
    • Send a special USB control request while the normal firmware is running. There is a tool to do this in the source repository.

    The pin to force bootloader mode, P0[18], is located next to a ground pin on the 2x6 expansion header. Connect a jumper across these pins and then apply power to run the bootloader.

    bootloader jumper

    On the host PC, if dfu-util is installed, running "make bl" in the firmware directory will automatically update the firmware of an attached DAC. Either force the DAC into bootloader mode and run "make bl", or "make bl" while the DAC is running its usual firmware; in the latter case, the DAC will be rebooted into bootloader mode and then updated.

  2. Serial

    There is a built-in ROM bootloader on the LPC1758 which runs over UART0, connected to the 1x6 header on the board. It enters if P2[10] is held low when power is applied. When the ROM bootloader is running, both LEDs on the board will be very dimly lit. The lpc21isp tool talks to the DAC in this mode.

    P2[10] on the LPC1758 is connected to RTS on the 6-pin serial header. Running "make flash" in the firmware directory and then applying power to the DAC will update the firmware and USB bootloader over serial.

    This method is somewhat slower than the USB bootloader and so is not generally recommended - it is useful primarily for installing the firmware into a previously-unprogrammed DAC. Also, note that the 6-pin serial header is logic-level; it is 5-volt-tolerant but must not be connected directly to an RS-232 port.

  3. JTAG

    The LPC1758 Flash can be reprogrammed over JTAG with openocd. See the user's manual for the microcontroller and the openocd documentation for details.