Clavia Dmi Ab USB Devices Driver
23 July 2017
Bit DMI SW Version 2.3.2.0 13.51 MB bit Play HD SW Version 2.0.0.0 125.22 MB. AMD Rolls Out Its First 2021 Graphics Driver - Get Radeon 21.1.1 Intel Adds Support for Iris Xe Max Graphics (DG1) - Get Version 27.20.100.9168 The New RTX 461.09 Graphics Driver Adds Support for NVIDIA’s A40 GPU. Clavia USB Driver v3.02.4 Setup.zip Download for Windows Clavia USB Driver v3.0x Installation Instructions.pdf The installer will run on Windows XP, Vista and Windows 7/8/10 and will automatically determine if you use a 32- or 64-bit system. Real time data processing at the source is required for edge computing with reduced latency for Internet of Things (IoT) and 5G networks as they use cloud.
Show Your Working is a brand new segment where I write up things I have attempted to fix in open source software. Sometimes it's interesting to debug a problem yourself from first principles, even if the codebase is huge and you don't know anything going in. I will try and explain my thought process as I venture out into the weeds armed only with a butter knife.
The software
PulseAudio is the software audio mixer for most desktop Linux distributions. Let's not mince words; PulseAudio has an awful reputation, mostly earned from the botched rollout by Ubuntu and other distributions back in 2008. Long-time Linux users remember these as the dark years where games were unplayable, and everything was punctuated by a loud crackling from the constant buffer underruns. The most egregious problems were caused by the aforementioned shonky buffering, plus a reliance on timing-related ALSA features which had never been used/tested properly for many sound drivers. It didn't help that barely any applications had direct support for the PulseAudio API; there were compatibility shims for ALSA/OSS applications, but they were a crapshoot at best.
But that was a decade ago! We've moved from version 0.9 to version 11.1, a metric ass-ton of effort has gone into making the mixer first rate, most Linux sound libraries are fully Pulse compatible, etc. etc. Surely everything is perfect now, right?
The problem
Ahahahaha not quite. Five years ago PulseAudio added a feature called 'flat volumes'; wherein by default, every per-application volume control is welded in some byzantine way to the master volume control. Completely ignoring that, you know, everyone assumed that per-application volume controls actually meant PER-APPLICATION, and quite a lot of apps had a knack for setting the volume to 100% on startup (or just at random intervals)! Cue newly-deafened users coming out in droves to complain, and package maintainers grumping about one more non-upstream setting they'll have to override.
Anyway. Disabling flat volumes reverts things back to per-application volumes scaled (post-fader) by an independent master volume, and all is right in the land once again. As of... recently? Disabling flat-volumes in /etc/pulse/daemon.conf stopped working on my system.
The preparation
The only software we need installed for tracking this down is the Git VCS and the standard Linux command line tools, plus whatever build dependencies PulseAudio has. Start by grabbing the PulseAudio source code of the release we know is bad.
The diagnosis
Let's track down what went wrong. We know one thing for sure: the name of the config switch which is meant to fix this ('flat-volumes'). Let's find where it's used.
If I had to pick the single most important tool for troubleshooting something you've never seen before, it would be grep. It does two things extremely well: search a bunch of files or piped input for a text/regex match, and adjust the amount of context you get back for the findings. grepping is the de-facto method to scrub through a ton of source code quickly to establish causality; the chain of events linking the thing we change (i.e. the config file) to the expected action (i.e. the volume adjusting as it damn well should).
Now we follow the trail of breadcrumbs and zero in on the code path which does the useful work. We can see above that the 'flat-volumes' config parser sets a variable called flat_volumes, so we search for that.
Okay, the only plased where flat_volumes is used to drive a decision is in src/pulseaudio/sink.c and src/pulseaudio/source.c. We'll focus in on sink.c as 'sink' is PulseAudioese for 'sound output'.
We can see that in terms of honouring the setting, nothing has changed. Enabling flat volume is always overridden by what the user has set, and the actual state is stored in a variable flags with the bitflag name PA_SINK_FLAT_VOLUME. Guess what we're searching for next???
Now THIS is a great example of why you want to grep as much source code as possible. We could have continued our investigation just in sink.c, but searching everywhere revealed something super useful! Namely src/pulsecore/cli-text.c; there is a command line thing somewhere which prints if PA_SINK_FLAT_VOLUME is set or not. This just potentially saved us having to make a debug build to find this out.
A little bit of poking around revealed that the string is printed when you invoke pacmd list-sinks (not pactl list sinks! that of course produces output that's near identical, but missing the one thing we want.), so we did that.
Okay well there's the problem; the sink I'm using (JACK to my Scarlett box) has FLAT_VOLUME enabled. But why. Whyyyyyyyyy. I mean I told it not to!
No getting around it, we need to have a look at the program while it's running. Let's make a test build.
There's now a freshly built pulseaudio executable in the src directory. Except it's not, it's some libtool shell spew that passes enough lies to the built copy (in .libs) to make it run. Which is a problem, because you can't run gdb against shell spew.
Because they're not all heartless bastards, the libtool developers made a wrapper for the wrapper which allows pass-through execution. Before we start the session, make sure PulseAudio isn't set to autospawn, kill the current daemom, and then fire up the debugger.
Smashing. All of the functions we want to test are in shared libraries, which we can only see after execution starts, so lets breakpoint immediately after starting.
We'll start by adding a breakpoint in enable_flat_volume() and seeing what's going down there.
Let's do a backtrace to see where the method got called from.
The default behaviour seems to be to enable flat volumes if the sink identifies itself as having decibel-based volume control? I... you know what I won't even pretend to understand why. So what happened to the config file? Isn't it meant to override this?
I knew it! You betrayed me, config parser!
Okay mea culpa time. I stupidly thought it would load /etc/pulse/daemon.conf first, which has the line 'flat-volumes = no' in it, then any changes made in the local config file (~/.pulse/daemon.conf) would override those base settings. We can see the truth by reading the code for pa_open_config_file; what ACTUALLY happens is that PulseAudio only reads the first config file it can find (first it tries the path in environment variable PULSE_CONFIG, then ~/.pulse/daemon.conf, then /etc/pulse/daemon.conf).
So because I had a near-empty ~/.pulse/daemon.conf which didn't define flat-volumes, the flat-volumes setting was forced on. I don't even know where the file came from, it has a last-modified date of two days ago. Urghhhh.
The solution
Remove ~/.pulse/daemon.conf. Restart PulseAudio.
Info:
Model: Clavia USB DriverVendor: Clavia
Version: 3.02.4, v.3.0.2.0, v.1.0.0.1
Operating system: Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10
Bits: 32-bit (x86), 64-bit (x64)
Driver Date: 2015-08-07
Size: 0.3 mb
Driver description
Download driver Clavia USB Driver version 3.02.4, v.3.0.2.0, v.1.0.0.1 for Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 32-bit (x86), 64-bit (x64).Screenshot of files
Installation screenshots Clavia USB Driver
Clavia Dmi Ab Usb Devices Driver Adapter
File Name
Clavia Dmi Ab USB Devices Driver
Clavia_USB_Driver_v3.02.4_Setup.zip - (0.3 mb) v.3.02.4 - 07.08.2015
Clavia Dmi Ab Usb Devices Drivers
drv_Clavia_USB.zip - manual install (0.09 mb) v.3.0.2.0 - 06.08.2015