• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Okto DAC8 update with DSP

has mac updater been released yet?
Hi Guys,
the DAC8PRODSP7 freeware firmware upgrade for DAC8PRO is now available in a mature version v1.61
it is based 100% on the v1.60 and brings all the DSP capabilities already discussed and a new feature to spread volume across DSP and DAC giving unique possibility to minimize side effect of potential saturation. The new pdf documentation is available on avdsp_dac8 GitHub and this is explained page 28.

Those interested in testing or migrating to this firmware can contact me on avdspproject at gmail dot com saying few words on their project and setup.
Thanks!
fabriceo
 
Hi Guys,
the DAC8PRODSP7 freeware firmware upgrade for DAC8PRO is now available in a mature version v1.61
it is based 100% on the v1.60 and brings all the DSP capabilities already discussed and a new feature to spread volume across DSP and DAC giving unique possibility to minimize side effect of potential saturation. The new pdf documentation is available on avdsp_dac8 GitHub and this is explained page 28.

Those interested in testing or migrating to this firmware can contact me on avdspproject at gmail dot com saying few words on their project and setup.
Thanks!
fabriceo

Thanks again Fabrice!

To all others, I successfully flashed DAC8PRODSP7 1.61 using xmosusb on a mac today, all good so far. I haven't yet played around with the new volume control stuff, but it is extremely cool!

Michael
 
Hi Guys,
the DAC8PRODSP7 freeware firmware upgrade for DAC8PRO is now available in a mature version v1.61
it is based 100% on the v1.60 and brings all the DSP capabilities already discussed and a new feature to spread volume across DSP and DAC giving unique possibility to minimize side effect of potential saturation. The new pdf documentation is available on avdsp_dac8 GitHub and this is explained page 28.

Those interested in testing or migrating to this firmware can contact me on avdspproject at gmail dot com saying few words on their project and setup.
Thanks!
fabriceo
I am looking for a particular feature not offered on the original FW: Can the front panel volume control knob adjust the level of the AES-EBU output (along with the level of the analog outputs).
 
I am looking for a particular feature not offered on the original FW: Can the front panel volume control knob adjust the level of the AES-EBU output (along with the level of the analog outputs).

In FW 1.5 this is the behavior, I assume it was kept in FW 1.6. There is a blurb about it in the manual.

1722888223099.png


Michael
 
has mac updater been released yet?
Hi goryu, on macOS we have problem with Sonoma, probably due to the new security settings related to accessories connection, because the process needs 3 reboot of the usb device and their is obviously a conflict with standard libusb library and Sonoma new behavior. so far I can't solve this...
on other osx earlier version the xmosusb utility (latest version on avdsp_dac8/usbtools github) is working well as tested by mdsimon2 on Monterey, and myself on an old iMac with High Sierra. the syntax in a shell window is simply ./xmosusb --xmosload firmware.bin
hope this helps.
 
Are there any issues with US customs if you purchase one of these. Does Okto handle this or do you have to deal with US customs.
I had minimal issues with US Customs when I bought mine. I might have had to pay some duty (can't recall), but, if I did, it wasn't much. Everything went fairly smoothly (unlike the A16 Realiser).
 
Hi goryu, on macOS we have problem with Sonoma, probably due to the new security settings related to accessories connection, because the process needs 3 reboot of the usb device and their is obviously a conflict with standard libusb library and Sonoma new behavior. so far I can't solve this...
on other osx earlier version the xmosusb utility (latest version on avdsp_dac8/usbtools github) is working well as tested by mdsimon2 on Monterey, and myself on an old iMac with High Sierra. the syntax in a shell window is simply ./xmosusb --xmosload firmware.bin
hope this helps.
Hi There
finally, using latest libusb 1.0.27 and compiling for arm architecture and tuning a little bit timing after reboot comes to a success. Okto Research is now having the Mac OS updater for final end-user tests, for x86 (up to Ventura) and arm64 for Sonoma machines.
Based on this finding, I have also uploaded the new version of xmosusb utility for arm64 in the avdsp_dac8/usbtool GitHub.
 
Hi There
some of you are questioning how to use the DSP capabilities in the DAC8PRO.
Reading the whole documentation might be cumbersome.
here is the approach in a nutshell.

A program must be created on a host computer with a text editor. no friendly graphical user interface!
Then it is compiled as a small binary file with a utility called dspcreate
Then It is loaded in DAC8PRO with utility called xmosusb
Once tested and tuned with a tool like REW, it can be saved into one of the 4 permanent memory locations and can be selected later in the Filter menu.

Each program is made of 3 sections:
constants, labels, and up to 7 cpu-core micro programs.

here is an example for a 2 way crossover:
fc = 300 #defines a constant for a cutoff frequency, here 300hz
delayhigh = 10 / 343 * 10000 #defines a constant of 291 micro second as our treble driver is ahead of the woofer by 10cm here.

lopass LPLR4( fc ) PEAK( 80, 0.7, -2db) #defines a label lopass representing a section of 3 biquads with a Linkwitz Rilley 4th order low pass, cutoff frequency at -6db defined by fc (300hz), and a PEQ centered at 80hz with a Q=2 and a reduction of 2db.

hipass HPLR4( fc ) PEAK( 800, 2, -3db) HS2( 10000, 1, +4db) #defines a label hipass representing a section of 4 biquads with the complementary high pass Linkwitz Riley at 300hz, a PEQ at 800hz, Q=2, gain=-3db, and an High Shelf second order at 10khz with Q=1 and gain = 4db.

now we define the inputs and output as constants to make program easier to understand (hopefully!):
these one are related to flow coming from and going to usb host computer (player or REW)
usbleft = 16; usbright = 17; rew1 = 24; rew2 = 25; rew3 = 26

these ones are related to the physical dac outputs that will be connected to amplifier
leftheadset = 0; rightheadset = 1; leftlow = 2; lefthigh = 4; rightlow = 3; righthigh = 5;

the following program now implements the DSP flow in one cpu-core for each channel:
core #1 in charge of left channels only
input usbleft
output leftheadset, rew1 #this instruction provides a basic feedback reference for REW on usb-in channel 1 and put the signal without changes to the dac output 0 connected to the headphone connector
biquad lopass
output leftlow, rew2
input usbleft
biquad hipass
delayus delayhigh
output lefthigh, rew3

a second core is required for doing almost the same thing on the right channel, but we don't need the new feedback as the result would be the same:

core #2 in charge of right channels only
input usbright
output rightheadset
biquad lopass
output rightlow
input usbright
biquad hipass
delayus delayhigh
output righthigh
end

as simple and flexible as that...
to compile this program, use the following command:
dspcreate -dspformat 2 -dsptext thisfile.txt -binfile test.bin

It require 224 words for the DSP code , including biquad coefficients pre-computed for all frequencies between 44k and 192k,
and 192 words of data for the 2 delay lines, so less than 2% of the memory available.

with these two following commands:
xmosusb --dspload test.bin
xmosusb --dacstatus
DSP Core 1: load = 270
DSP Core 2: load = 237
DSP max load = 270 / 549 = 49%fs

we can see that the number of instructions required is 270 for core #1 and 237 for core #2
which is compatible up to 192khz as we have 549 instructions max available per core at 192khz.

Hope this helps understanding it.
Fabriceo
 

Attachments

  • basic2waycrossover.txt
    3.5 KB · Views: 36
Last edited:
now some of you will notice that the High Shelf filter for the treble driver will generate an excess gain of potentially 4db. Also if you listen some music program with special recordings (like a highly distorted signal looking like a square wave...) the linkwitz rilley filters may also bring some excess gain (max 6db in this example) and the signal at the end of each biquad instruction might be above 0dbFS...

The way to solve this is just to replace the output instructions sending the signal to the 4 drivers by the recently introduced outputvolsat and to configure the DAC volume channel 3,4,5,6 so that they integrate DSP volume reduction.
Now if you listen at a reasonable volume and below -8db in this example, you will never notice any effect of the potential saturation. And if you push the volume above -8db, the DSP will reduce it automatically, as needed.

here we go
 
@fabriceo Thx for bringing this additional capability to the Okto DAC. Do you think there is enough CPU horsepower to implement an upsampling filter via this framework? For example, something like SoX to upsample all context to 192kHz with a linear phase filter. Thx.
 
@fabriceo Thx for bringing this additional capability to the Okto DAC. Do you think there is enough CPU horsepower to implement an upsampling filter via this framework? For example, something like SoX to upsample all context to 192kHz with a linear phase filter. Thx.
Hi Sumitc, thanks for your interest on this.
first , it depends if you want to upsample a stereo stream to 192k and then go with up to 8 channels dsp treatment at 192k (which reduce treatment capacity then), or if you do all dsp say at 96k and then upsample each channels just before putting the value in the dac outputs.

in the first case, we would use the last core still available in the usb tile, before sending to the audio tile;
this is a relatively easy work, and I m planning to implement something like that for improving the actual downsampling mechanism.
basically we have 1000 cpu instructions at each sample (96k) to perform a stereo fir filter and generate 2x2 sample instead of 2x1.
this is ok for a filter of about 100 to 120 taps. maybe more by optimizing the compute as every second sample at the input is zero and this is symmetric coefficients.

The other approach is to use say 96k all way long and then upsample as part of each cpu-core dsp program with a special output instruction that would compute 2 samples before pushing them to the accelerated i2s engine. Then this would require an optimized interpolation (like lagrange or hermite) to take as low instruction as possible like 50 or something per channels. This would reduce the number of instruction for each dsp core but the treatment would be at 96k (or less of course).

both methods are feasible. The second one would be more flexible.
What I m still questioning myself is the benefit of upsampling (apart that it reduces the requirement of the final aliasing filter) and what upsampling method is the best from a signal integrity perspective and to the ears.
This is certainly a long debate for a specific topic :)

for thoughts
 
I know about the debate on the merits of upsampling! In my case, I use HQPlayer extensively and certainly find it very beneficial, particularly when converting PCM to DSD, which I do regularly. In the case of the Okto, this might be less beneficial given we are likely going to be limited with compute. For ex, the number of taps is going to be limited and also DSD conversion may not be possible. In any case, I wanted to see if this might possible. Thx for the response!
 
Hi
I could use some help with updating my DAC 8 Stereo to firmware 1.6. I have a Mac computer and I am having no success in performing the update. I have written to Otto and requested help. Sent them a video. Other than telling me that my video helped see an error in the Mac instructions they have been of absolutely no help. I have written several times and received no response. I am no computer whiz but I am not a complete Luddite either. Unless I am missing something obvious there are not even basic instructions on how to perform the update, i.e., do you connect the computer to any of the USB host inputs on the back of the Mac? I am unable to complete the first step of the install by bringing up a new folder and getting permission. This is without question the most frustrating experience I have ever had with a firmware update on any device I have owned. I am probably missing something obvious but I'll be damned if I can figure it out. Any help is greatly appreciated.
 
Hi Rockerz,
the upgrade process via USB connection to the host computer relies on a standard and quite robust protocol called DFU (even used by Apple on the iPhone...).
the DAC8 products delivered with firmware v1.50 or above are fully compliant with the DFU upgrade utility provided by Okto Research for windows machines, and it requires the V5.68 audio driver to be installed.
if you don't have windows computer or if you have a DAC8 product with a version below 1.50 then the upgrade process requires a specific command line utility delivered by Okto Research and depending on the exact version and operating system there might be some problems. true. but there are solutions for 100% of the customers.

When it comes to Mac OSX systems, the command-line utility also use the USB and DFU protocol and it is adapting its behavior depending on your DAC8 version to ensure a seamless upgrade with multiple reboot of the DAC8.
During tests we realized that the new "accessories security setting" in OSX Sonoma brings complexity to recognize the DAC8 after the first reboot. This is normally solved with the latest utility including libusb v1.0.27 but it might be that you experience some other side effect not yet identified.

I know Okto Research is trying to help their hundreds of customers the best they can, and overall feedback about this upgrade is quite ok.
May I recommend you go trough the detailed instruction provided by Okto research, starting from a clean situation (reboot your computer, remove the accessory security settings, plug the dac8 on usb, start a terminal window, and run the dac8stereo utility).

Hope this helps
 
fabriceo
Thanks very much for taking the time to respond. I have read your response carefully and, honestly, most of it could have been written in Urdu for all I know. As I mentioned I am an audiophile not a computer geek. I have tried to follow the instructions given to the letter. I have tried your suggestion of shutting down, etc and no luck. I cannot get past the first task of enabling permission. All I get when I open the new window and enter the "chmod..." command is " no file exists." I have shown this to Pavel but have not received any instructions on how to make this step work.
While I love the sound of the day, I have never encountered such a complicated update process for a product intended for average consumer use.
Thanks again
 
Hi Rockerz, as an audiophile you did the right choice with DAC8STEREO.
now if you see "no file exists" it means that the dac8stereo utility is not visible in the folder that your Terminal window is showing.
From this first feedback I understand that you are not familiar with the operating system things and I respect this.
Is there any chance you could delegate this procedure to someone around you ?
otherwise, try to solve it : make sure you uncompress the archive file that you have downloaded from Okto website, into a real folder (usually just double clicking on the zip file will create a folder with the zip content in it).
then you need to open a terminal window and go within this folder where is the utility by typing he "cd" command with the path name just after.
Then you should be able to use the chmod and then to launch the utility.

We are a bit of topic :) but let see
fabriceo
 
then you need to open a terminal window and go within this folder where is the utility by typing he "cd" command with the path name just after.

Alternately, once you have a terminal window open drag the uncompressed Okto folder to the terminal window. This will save you the effort of finding the path to the folder and typing it all correctly. Now you are in the proper folder within Terminal app and can proceed with the instructions from Okto/fabriceo starting with chmod command.
 
Galactic thanks to Pavel and Fabriceo for the DSP in my OKTODAC8, I didn’t even mention that!

Thanks to the kind help of fabriceo, I successfully installed the firmware and, using examples on github, implemented DSP filters for a 3-way crossover.
It wasn't difficult. The result is amazing, now my DAC is not tied to the computer and I can listen to music and TV via bluetooth->aes okto input. DSP processing on the DAC side turned out to be better in sound than on the computer.
I'm having fun!

PS
firmware upgrade and filters upload was done via mac os.
 
In FW 1.5 this is the behavior, I assume it was kept in FW 1.6. There is a blurb about it in the manual.

View attachment 384844

Michael
And also master volume control of USB output? Or only via the remote?

On another matter, if one is using passive crossovers for a 3.3 system (three powered subwoofers), and where the L/R and center speakers have 92db/w/m efficiency, with what ouput voltage should one order the DAC 8 Pro?
 
Last edited:
Galactic thanks to Pavel and Fabriceo for the DSP in my OKTODAC8, I didn’t even mention that!

Thanks to the kind help of fabriceo, I successfully installed the firmware and, using examples on github, implemented DSP filters for a 3-way crossover.
It wasn't difficult. The result is amazing, now my DAC is not tied to the computer and I can listen to music and TV via bluetooth->aes okto input. DSP processing on the DAC side turned out to be better in sound than on the computer.
I'm having fun!

PS
firmware upgrade and filters upload was done via mac os.
Thank you Makimov for your kind words , your satisfaction is ou best rewards :)
 
Back
Top Bottom