DATS V3, REW Impedance Measurements, FlexASIO

My DATS is fun to play with, but I hate the application that runs it, and it only runs on Windows. It's easy enough to export an impedance sweep to a text file and draw pretty graphs with REW, though. I am also playing with 3rd-party ASIO control panels, and on a recent fresh Windows install, I got Windows running, added FlexASIO before I installed the DATS software, and something interesting popped up in REW Preferences:

Drivers: ASIO
ASIO Device: FlexASIO

[Control Panel]
Driver Type: Windows WASAPI
Input Device:
Line (USB AUDIO CODEC)
Internal Microphone (Cirrus (AB54))​
Speakers (Cirrus (AB54)) [Loopback]​
Speakers (USB AUDIO CODEC) [Loopback]
Output Device:
Speakers (Cirrus (AB54))​
Speakers (USB AUDIO CODEC)

It looks like if I select the Loopback input device, it only puts sound on the "left" channel, so I can't get Input and Reference Input to lift on the level meter at the same time. If I select the non-Loopback input device, and just set REW preferences like any other stereo interface, the calibration procedure works as expected. I can get a sound card calibration measurement.

Annotation 2024-09-04 132125.png


The V3 (rev H) box has a 1KOhm resistor with lugs built into the nose of the chassis. Is there any hope that I can use this "black box" hardware to take impedance measurements with REW natively? I've already been inside the case before to fix a loose post, and it's pretty dull inside with very compact SMC devices and only a couple of ICs on the board. I'd be happy to break it open again and document anything that I can identify, though.

I do have a Behringer UMC202HD, and it's installed and configured but not attached, so it's not listed in the control panels above.
 
It has been common to take an impedance measurement with nothing more than a 1k resistor. Use a 10 ohm resistor in place of the driver to set your level to 10 of something. Replace the driver and see if your measurement falls into the noise or clips, adjust the level if needed, and voila. Trace this into a *.zma file.

Regardless of how you do it, knowing the basics shows what is required.
 
I would argue that the advantage of DATS is the simplicity, which includes the software interface. If you don't like the interface and already have the UMC202HD then building an impedance jig seems to be the clear solution.
I think the DATS application is OK, in that it does what it says it will do. The problem for me is trying to get a Windows computer spun up to take a handful of measurements. I have lots of machines that can talk to the hardware; two Macs, a Chromebook and a Linux computer, all of which run REW natively. If REW, the application that I'm going to use after I take the readings, can take the readings itself, that seems like a better solution. The UMC202 lives on my desk, not in my toolbox, because it's about 8x the size of the DATS. I tried to build an impedance sweeping bridge for my Apple USB-C ADC/DAC, but it's a little too smart, and only turns on the parts of the device that are connected to a load, so I can't get it to do an "open leads" calibration.

The Intel Mac runs Windows fine, but adds about a dozen extra steps; select new boot device, reboot, try to stop Windows update, start DATS, take sweeps, export files, select new boot device, reboot, start REW, and everything in between. And that's assuming I had the presence of mind to bring the Intel Mac, not the M3 Mac that I actually use all the time. Believe it or not, the DATS application also runs pretty well inside a Wine instance on the Chromebook, but again, that's not on me all the time, and I have reservations about how good the USB interface is on the Chromebook; my Macs both seem pretty resilient.
 
Last edited:
Using conventional methods, all you're measuring is the voltage across the driver against a high source impedance.

Pretty much all software can do that. It won't be called impedance or anything special, just a regular level sweep.. or RTA for that matter, it doesn't matter since the impedance is minimum phase. Different methods will just give you different signal to noise ratio.
 
...Over the entire acoustical AC band with one click. An impedance sweep, like this one, is what I paid $130 for a black box to be able to generate on demand. This is actually six different sweeps that DATS recorded, exported to a numerical text file, and then REW massaged, averaged where appropriate, and rendered in an overlaid fashion. I just wish that I didn't have to use the DATS software to use the DATS hardware.


Missing 6x9 with X3C Total System.jpg
 
I posted similar info on this forum a few years ago:
Thread 'Running DATSv3 natively on macOS using REW'
https://www.diyaudio.com/community/threads/running-datsv3-natively-on-macos-using-rew.381943/

Newer versions of REW have made the calibration steps even easier and more straight forward. I‘d use a lower value resistor (something like 10 ohms) for calibration. Using a good reference resistor to calibrate I’m able to consistently measure cable impedances below 100 milliohms with a bit better than 15 milliohms of resolution/accuracy (confirmed with a fancy meter at work).
One REW feature I really like is the realtime visualization of the input signal, it‘s very helpful to show how ambient noise impacts your speaker impedance measurements.

A while back I bought a reel of metal film resistors for a good price. If anybody is interested send me a PM and I can measure a resistor on my micro-ohm meter and mail it you with the value written on it, I’ll even cover the shipping if it’s in the US.
 
  • Like
Reactions: actualJP
@olen Thank you SO MUCH for this! It's exactly what was hoping for! It may be a while before I try it out, but this thread, that thread, and the 2022 PDF are bookmarked! 😎 I'm very interested in purchasing a resistor, maybe two.

Also, have you looked at the input stage on the V3 very closely? I was toying with a small amplifier, and I couldn't get more than about 3.8V RMS before the DATS software oscilloscope started clipping, at least in REW.
 
DATS are designed to measure small signal parameters of loudspeakers which doesn’t require much drive voltage/power. There are only 16bits so the working range is higher resolution at smaller voltages. For most speakers around 1V you‘re leaving the linear region. Also the DATS functions as a constant current output meaning that the output voltage changes with the load impedance.

With REW you can use any soundcard as an oscilloscope, just be careful because I still remember frying the input of an expensive soundcard when I overdrove it ~20 years ago trying to do something similar.

If you just need a simple cheap oscilloscope I’d see if you can find an old crt scope people often will give them away. If that’s not an option the single channel arduino based ones can at least handle decent voltages (I drove it with 25vrms signal without damaging it - just don't count on them reaching even half of their stated bandwidth.

Send me a PM with your address and I’ll mail you some calibrated resistors at no cost, though it might take me some time to find them in my messy lab.
 
Folks, I'm over the moon. I followed olen's guide on my Windows machine (DATS was already attached, so why not?), "calibrated" R-ref against a more or less random 100w 4-ohm resistor I use for amplifier loading, and I went for broke. No smoke, no fire, so I attached it to a bare driver that's on my desk, and told REW to tell me about it through the DATS interface. Then I pulled up an old impedance measurement from the same speaker using the DATS software calibrated against its own 1k resistor, and...they're quite close enough to be useful. REW even rendered that weird little 6.0-ohm wobble at 1.5KHz that I always thought was DATS being strange. Maybe it's still the DATS hardware being strange, but it's not a difference in the software!

DATS Native REW Calibration, Skar TX-65C Midbass Edit.jpg
 
The wiggle at 1.5kHz is probably a mechanical resonance, that’s pretty low for a cone breakup mode, it could be due to how your driver is resting/mounted. It should be easy enough to retest it so that it’s not resting on the magnet and see if anything changes.
 
actualJP did you manage to get Dats working in linux with REW? i got a similar story that just started.

Over the moon also over here.But some questions linger..and not shure if i'm ready to proceed with this setup.
I’ve opened a bought DATS v3 case few days ago and looked at the board.My Dats is from 2023 (See picture below).It also has the 1000 ohm calibraton resister built in. It's quite different from the one olen has.

Linux Manjaro runs on my laptop.Wine is installed. Wine was used to install the Dats software.Rew linux version 5.31.3 running.

My Dats differs from the v3 showed in the manual (DATSv3 on a Mac) posted on diyaudio by Olen. @olen , Thanks for that! It made me confident to try out the DATS hardware with REW.

There is only one LMV358 opamp) on my version.The 10kΩ series output resistor i can not locate. If someone has a clue how to measure the series output resistance or can point it out on the board I show here, that would be great.

Still earlier in REW witk Dats in/output AUDIO CODECS selected i was able to “make it work” using mainly the same settings olen mentioned in the manual.Not shure if these values should be used for my different version of the dats v3.

For output and input device “CODEC” I was not left with much of a choice, for input and output Default input and Default output could be chosen. Output had 1 other option “PCM” . Tried that also but didn’t change the measurements.

I used these values with the help of olen's manual...exept for the leads value:

In REW with Dats usb AUDIO CODEC chosen..impedance calibration setup:

10kΩ for the Rsense value. (based on the value of output resistor) Don’t know my Dats R value.

Set Rsense = 10kΩ


100kΩ for Rin

10mΩ for Rleads. I used 0.7399 Ohm Messured earlier with dats sofware.

For the reference cal I used a 4.952 ohm resistor.




For the reference cal value i took a precision resistor of 100Ω earlier which seem to work as value and gave simelar results. Later i used the 4.952Ω closer to the minimum impedance speakers as recommended.. It was not a reference resister but measured it with Dats earlier. My cheap multimeter shows same value.

1) REW+Dats vs Dats resisters measurement shows fairly accurate down to 0.2% 0.4%.

2) REW + Dats is more noisy then dats-only. There are ways to improve that. But even like this its usable in my oppinion.

3) In Rew's the impedance peaks (Most clearly the left one) shows 1 ohm higher then what dats is measuring.

Not shure if this is a problematic large difference or not....

I didnt take any free air measurements yet to find T.S parameters. The purpose is to get familiar with this stuf so i measure the speakers in box with crossover for now and later on measure the seperate components of the crossover filters and speakers.This is a stereo system with 2.5 way speaker crossover (effective area both identical woofers 127mm .Upper woofer also plays midrange. ..Speakers got some 20 year old elko's witch i want to replace/upgrade. Coil upgrades are also planned.

Comparison measurements Dats vs REW+Dats, shown here were done at 17.5 celsius.
So finally my questions I hope olen or someone else can answer:

A)
The 10k Ohm and 100k ohm values i entered could be (and probably are)far off for my Dats with REW?? how to know??

B) The Dats v3 manual says that the dats only works with 44.1khz sampling freq. Olen’s manual (DATSv3 on a Mac) uses 48 khz in REW for impedance measuring. Thats ok perhaps, as this only relates to the installed software part of the
Dats?? and does not apply to the Dats hardware??

Today I changed the sampling freq in Rew to 44.1 and did the impedance cal steps again… Should I just have left REW at 48 khz ?? In the main impedance graphs I could only detect small differences at the frequency ends.


D) I would appreciate if someone could look at the differences in the graphs, especially at the first peak, and if they indicate wrong input values in REW for my Dats. All measurements are consistent with very little varations.BIGGEST DEVIATION..Dats vs REW+Dats differ about 1.2db at the first peak.

E) Strangely when I import Dats zma files in REW the info on the zma files show a sampling rate of 48khz in REW. Allways.

pacmd list-sinks shows 44.1khz.

below: 2.5 way speaker impedance measurement including crossover...+ impedance cal
dats= purple
Rew+dats =red 1.1db difference at 28hz The rest of the plot almost identical.

impedance cal setup and measurements Dats vs REW+Dats.png



again rew+dats+ phase
rew+dats -4 db.png

IMG_2240.jpeg

pacmd list-sinks

1 sink(s) available.

* index: 3

name: <alsa_output.usb-BurrBrown_from_Texas_Instruments_USB_AUDIO_CODEC-00.analog-stereo>

driver: <module-alsa-card.c>

flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY

state: SUSPENDED

suspend cause: IDLE

priority: 9049

volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB

balance 0.00

base volume: 65536 / 100% / 0.00 dB

volume steps: 65537

muted: no

current latency: 0.00 ms

max request: 0 KiB

max rewind: 0 KiB

monitor source: 5

sample spec: s16le 2ch 44100Hz ......... still ..imported dats .zma files show as 48 khz in REW.

channel map: front-left,front-right

Stereo

used by: 0

linked by: 0

configured latency: 0.00 ms; range is 8.00 .. 2000.00 ms

card: 3 <alsa_card.usb-BurrBrown_from_Texas_Instruments_USB_AUDIO_CODEC-00>

module: 29

properties:

alsa.resolution_bits = "16"

device.api = "alsa"

device.class = "sound"

alsa.class = "generic"

alsa.subclass = "generic-mix"

alsa.name = "USB Audio"

alsa.id = "USB Audio"

alsa.subdevice = "0"

alsa.subdevice_name = "subdevice #0"

alsa.device = "0"

alsa.card = "0"

alsa.card_name = "USB AUDIO CODEC"

alsa.long_card_name = "BurrBrown from Texas Instruments USB AUDIO CODEC at usb-0000:00:14.0-4, full s"

alsa.driver_name = "snd_usb_audio"

device.bus_path = "pci-0000:00:14.0-usb-0:4:1.0"

sysfs.path = "/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4:1.0/sound/card0"

udev.id = "usb-BurrBrown_from_Texas_Instruments_USB_AUDIO_CODEC-00"

device.bus = "usb"

device.vendor.id = "08bb"

device.vendor.name = "Texas Instruments"

device.product.id = "29c0"

device.product.name = "PCM2900C Audio CODEC"

device.serial = "BurrBrown_from_Texas_Instruments_USB_AUDIO_CODEC"

device.string = "front:0"

device.buffering.buffer_size = "352800"

device.buffering.fragment_size = "176400"

device.access_mode = "mmap+timer"

device.profile.name = "analog-stereo"

device.profile.description = "Analog Stereo"

device.description = "PCM2900C Audio CODEC Analog Stereo"

module-udev-detect.discovered = "1"

device.icon_name = "audio-card-usb"

Thank for reading Hope someone can clear things up a bit. thanks!
 
I have the same rev "J" hardware while the casing says "H" . The circuit seems significantly streamlined compared to rev "H" pcb and does not carry the trimpot. I opened mine because i was wondering why three DATS3 that we have between friends show black+red test cable resistance to be 0.31, 0.53, and 0.74 Ohm, respectively (alligator clips firmly joined). Putting a blob of solder near the white 6-pin connector (across tabs "RED" and "BLK") brings down the resistance display in DATS v 3.1.6 from 0.53 Ohm to 0.47 -- so the root cause seems on the board or in the software. The internal 1k resistor is calibrated to be 1002 Ohm