Skip to content

joshie/CheckUadAsioLauncher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

UA ASIO Wait Launcher

This project builds a small Windows launcher that waits until a Universal Audio ASIO driver is actually openable, then launches ASIO Link Pro.

It is designed to solve the issue where ASIO Link Pro starts too early at boot or logon, before the Universal Audio device is truly ready.

What it does

On startup, the launcher:

  1. Closes the target program if it is already running.
  2. Polls for a ready UA ASIO driver.
  3. Tries these drivers in order:
    • Universal Audio Thunderbolt
    • Universal Audio USB
  4. If either driver can be opened successfully, it closes the target program one more time just before launch.
  5. Launches ASIO Link Pro.
  6. Exits.

By default, it is hidden and shows no console window.

If you pass --verbose, it will show a console window with debug output.

Default target program

By default, the launcher starts:

C:\Program Files (x86)\ASIOLinkPro\x64\asiolinktool.exe

You can override this with --path.

Build and Publish as a single EXE

To build a standalone single-file executable:

dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true

This produces one main EXE you can use directly.

Where the EXE ends up

After publishing, the executable will be in:

bin\Release\net8.0\win-x64\publish\CheckUadAsioLauncher.exe

That is the EXE you should point Task Scheduler at.

How to test manually

Silent/default

CheckUadAsioLauncher.exe

Verbose

CheckUadAsioLauncher.exe --verbose

If you want to test from Command Prompt or PowerShell before putting it into Task Scheduler, --verbose is helpful so you can watch what it is doing.

Command-line options

--verbose

Shows debug output in a console window.

Example:

CheckUadAsioLauncher.exe --verbose

--timeout <seconds>

Sets how long the launcher will keep trying before giving up.

Default: 180

Example:

CheckUadAsioLauncher.exe --timeout 300

--path "<full path to exe>"

Overrides the default target executable path.

Example:

CheckUadAsioLauncher.exe --path "D:\Apps\ASIOLinkPro\asiolinktool.exe"

Combined example

CheckUadAsioLauncher.exe --timeout 300 --path "D:\Apps\ASIOLinkPro\asiolinktool.exe" --verbose

Exit codes

  • 0 = success, target was launched
  • 1 = timeout or general failure
  • 2 = invalid timeout argument
  • 3 = target executable path not found

Recommended setup for startup

1. Disable ASIO Link Pro auto-start

This is important.

If ASIO Link Pro is configured to start on boot/login by itself, disable that first.

Otherwise, it may launch too early before this launcher gets a chance to control startup timing.

Disable any ASIO Link Pro auto-start behavior you currently have, including:

  • its own startup setting if enabled
  • Startup folder entry
  • existing Task Scheduler entry
  • any other custom launcher you previously made

2. Create a Task Scheduler task

Open Task Scheduler and create a task that runs your published EXE at logon.

Suggested settings

General

  • Name: Start ASIO Link Pro When UA ASIO Is Ready
  • Run only when user is logged on

Triggers

  • New trigger: At log on

Actions

  • Start a program
  • Program/script: point directly to your published EXE, for example:
C:\Path\To\CheckUadAsioLauncher.exe

Optional arguments, for example:

--timeout 300

or:

--timeout 300 --verbose

Conditions / Settings

  • Use whatever you normally prefer
  • Usually no special conditions are needed

Example Task Scheduler action

Program/script

C:\Tools\CheckUadAsioLauncher.exe

Add arguments

--timeout 300

Recommended first Task Scheduler test

For the first few tests, you may want to use:

--verbose

so you can confirm it is:

  • seeing the installed ASIO drivers
  • trying Thunderbolt first
  • falling back to USB if needed
  • launching ASIO Link Pro at the right moment

After you confirm it works, remove --verbose so it runs hidden.

Driver matching behavior

The launcher checks drivers in this order:

  1. Universal Audio Thunderbolt
  2. Universal Audio USB

If Thunderbolt is present but fails to open, it will continue and try USB.

It succeeds if either one can be opened and reports channels.

Target program closing behavior

The launcher closes the target program twice:

  1. once immediately at startup
  2. once again right before launching

This helps if the target process was already running at startup, or if something restarted it during the wait period.

The target process name is derived from the executable path. For the default path, that means it looks for:

asiolinktool.exe

Typical workflow

  1. Log into Windows
  2. Task Scheduler starts the launcher
  3. Launcher waits until UA ASIO is truly openable
  4. Launcher starts ASIO Link Pro
  5. ASIO Link Pro now starts at the correct time, instead of too early

Troubleshooting

Nothing happens

Run manually with:

CheckUadAsioLauncher.exe --verbose

This will show:

  • what ASIO drivers were found
  • whether Thunderbolt or USB matched
  • whether the driver could be opened
  • whether the target EXE path was found

It times out

Try a longer timeout:

CheckUadAsioLauncher.exe --timeout 300 --verbose

It says the target path is missing

Either:

  • move ASIO Link Pro back to the default location, or
  • use --path with the correct full path

It still launches too early

That would mean the ASIO open check is still not strict enough for your system. In that case, the launcher code could be tightened further to require a more specific ASIO initialization step before launch.

Example commands

Default hidden run:

CheckUadAsioLauncher.exe

Verbose with longer timeout:

CheckUadAsioLauncher.exe --timeout 300 --verbose

Custom target path:

CheckUadAsioLauncher.exe --path "D:\Apps\ASIOLinkPro\asiolinktool.exe"

Custom path + timeout + verbose:

CheckUadAsioLauncher.exe --path "D:\Apps\ASIOLinkPro\asiolinktool.exe" --timeout 300 --verbose

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages