Which USB Asynch does iFi use? AMR's of course!
We have been asked more than once or twice "Like most Audiophiles, I like to know where the Asynch code is coming from. It's silly not to touch on that in the documentation...".
We thought it was quite clear.....it is our own code of course!
Using someone else's off the shelf solution is great if you want a turnkey solution that you pay a small licence fee per unit shipped and can live with certain limitations such as only being able to use one vendor's DAC chips. Along with the XMOS and ESS reference designs, you just plug them together and you have an all singing and dancing USB DAC.
During the development of the DP-777 we evaluated many USB Solutions (including ones then still in Beta). We found that no "off the shelf" solution that quite suited our needs and requirements.
It should be noted that the fundamentals for Asynchonous USB Audio are part of the USB Specification (under USB Audio Class), so in principle anyone with enough time and a fast enough CPU/MCU/PIC/FPGA can write their own Asynchronous USB Firmware for such a device, according to USB Audio Class documentation. The first commercially available solution for this was Gordon Rankin's "Streamlength" which has become very popular indeed. However since then, many solutions have become available, including the open source USB Widget.
We do have our own software team (in addition to the electronic and industrial/mechanical design teams) so we decided to build our own on the XMOS foundation. As a result we were able to greatly customise the XMOS Firmware in the iDSD nano. The fact that the AMR DP-777 and iFi iDAC worked with iPhone/iPAD + Camera Kit when no-one elses USB products did is also owing to us writing our own software (and being Apple "Made For iPhone" Licencee).
Writing our own code allowed us to use the DAC Chip we wanted to use, with DSD and DSD128 and with 352.8/384KHz PCM which is not possible using any of the off the shelf solutions in circulation (they all tend to work only with ESS DAC Chips) but need an extra external DSP Chip or FPGA. Doing this seems a waste if you already have paid for a RISC CPU that manages 500 Million Instructions Per Second [MIPS] (for reference, this is the same as a late 1990's PowerPC Chip or Pentium Pro at 200MHz), plus if you can program that FPGA or DSP Chip - you might as well program the XMOS CPU.
So that is what we do. Who's Async Code do we use? AMR's of course, nothing else does what we need.