User space configuration tool for RME HDSPe MADI / AES / RayDAT / AIO and AIO Pro cards driven by the snd-hdspe driver.

hdspeconf

User space configuration tool for RME HDSPe MADI / AES / RayDAT / AIO and AIO Pro cards, driven by the snd-hdspe driver.

Building hdspeconf

  • Prerequisites: hdspeconf builds upon ALSA lib and wxWidgets. On ubuntu,

    apt-get install libasound2-dev wx3.0-headers libwxgtk3.0-dev

The GUI panels were designed with wxGlade. You do not need wxGlade as long as you do not need or want to update the panel designs. If you do, make sure to use wxGlade version 1.0.0 or later. Older versions of wxGlade (such as the stock version on Ubuntu 20.04) will not work.

  • Clone the hdspeconf repository to your local disk. cd to the clone folder. Type

    make depend
    make
    

This will build the hdspeconf executable in your repository clone folder.

Installation

  • Copy hdspeconf and dialog-warning.png to a folder of your choice, e.g. ~/bin. Add that folder to your $PATH.

Usage

  • cd to your repository clone folder, or make sure hdspeconf is in a folder in your $PATH, and type

    hdspeconf

on the command line, or make a desktop launcher for it and double click that. There are no command line arguments (yet, at this time).

  • If you have a supported RME HDSPe card on your system, and the snd-hdspe driver is running, a panel comes up with configuration options and settings for your card(s). If either condition is not fulfilled, hdspeconf will tell you as well.

When multiple cards, or TCO module, are present on the system, the drop-down chooser on top of the panel allows to choose the card to configure.

Card configuration and screen shots

Status

  • RME HDSPe AIO Pro cards, TCO, Word Clock module and audio I/O extension boards are fully supported.
  • RME HDSPe AIO, MADI, AES and RayDAT configuration panels TODO.
  • Developed and tested only on Ubuntu Studio 20.04 so far.

Acknowledgements

  • Thanks to RME for providing the necessary information and code for developing the driver.
  • Thanks to Amptec Belgium for hardware support.

License and (No) Warranty

See LICENSE.

Author

Philippe Bekaert, October 2021.

Similar Resources

A framework for implementing block device drivers in user space

BDUS is a Linux 4.0+ framework for developing block devices in user space. More specifically, it enables you to implement block device drivers as regu

Dec 13, 2022

A collection of user-space Linux kernel specific guided fuzzers based on LKL

kBdysch kBdysch is a collection of fast Linux kernel specific fuzzing harnesses supposed to be run in userspace in a guided fuzzing manner. It was des

Nov 25, 2022

Cloud Native Data Plane (CNDP) is a collection of user space libraries to accelerate packet processing for cloud applications.

CNDP - Cloud Native Data Plane Overview Cloud Native Data Plane (CNDP) is a collection of userspace libraries for accelerating packet processing for c

Dec 28, 2022

Selective user space swap (kubernetes swap / kubeswap)

Selective user space swap (kubernetes swap / kubeswap)

BigMaac 🍔 🍟 ( Big Malloc Access And Calloc ) because sometimes a happy meal is not big enough BigMaac can be used in userspace (e.g. inside Kubernet

Dec 9, 2022

Gauss Stylization - Interactive tool for normal driven stylization

Interactive tool for normal driven stylization. A set of preferred normals can be chosen arbitrarily from the Gauss sphere, including semi-discrete sets to model preference for cylinder- or cone-like shapes.

Dec 6, 2022

6D - Pose Annotation Tool (6D-PAT) - is a tool that allows the user to load a set of images and also a set of 3D models and annotate where in the 2D image the 3D object ist placed.

6D - Pose Annotation Tool (6D-PAT) - is a tool that allows the user to load a set of images and also a set of 3D models and annotate where in the 2D image the 3D object ist placed.

6D - Pose Annotation Tool (6D-PAT) For detiled explanations checkout the WikiPage. What is it? With 6D-PAT you can create 6D annotations on images for

Nov 20, 2022

IDA Pro key checker tool

IDA Key Checker IDA Pro (6.x-7.x) key checker tool Usage A list of available options can be retrieved using: ida_key_checker --help Arguments: Option

Dec 26, 2022

OffensivePH - use old Process Hacker driver to bypass several user-mode access controls

offensiveph OffensivePH is a post-exploitation tool that utilizes an old Process Hacker driver to bypass several user-mode access controls. Usage Comp

Dec 29, 2022

A user-mode emulator for the mhyprot2.sys driver

A user-mode emulator for the mhyprot2.sys driver

mhynot2 Cheating is bad, but I think requiring a kernel driver to play a (mostly) single-player game is worse. mhynot2 is a hook DLL which hooks into

Dec 28, 2022
Comments
  • compile problems on debian 11

    compile problems on debian 11

    Hi,

    I'm trying to compile hdspeconf on Debian 11 and I'm gettings some errors.

    For the packages required I'm running:

    sudo apt install libasound2-dev wx3.0-headers libwxgtk3.0-gtk3-dev
    

    Then when trying to compile i get alot of errors in the linker stage which points to linker not finding libpng and libcairo for some reason.

    If I then modify Makefile to read

    LDFLAGS=-lasound `wx-config --libs` `pkg-config --libs libpng cairo-xlib`
    

    then everything compiles ok and I get the hdspeconf binary.

    But when running the hdspeconf binary I get a new errors:

    ./hdspeconf: /usr/local/lib/x86_64-linux-gnu/libpng16.so.16: no version information available (required by /lib/x86_64-linux-gnu/libwx_gtk3u_core-3.0.so.0)
    ./hdspeconf: symbol lookup error: /lib/x86_64-linux-gnu/libgdk-3.so.0: undefined symbol: cairo_xlib_surface_create_for_bitmap
    

    Any ideas on what I'm doing wrong?

    Thanks a lot!

  • hdspeconf terminates with

    hdspeconf terminates with "Caught unhandled unknown exception; terminating"

    I just tried to use the snd-hdspe/hdspeconf on my new AES card. Unfortunately after playing around with hdspeconf, it reproducible terminates with "Caught unhandled unknown exception; terminating". Any hint how to debug?

    [  740.268947] snd_hdspe 0000:01:00.0: snd_hdspe_put(status_polling,10) with get() ...
    [  740.268951] snd_hdspe 0000:01:00.0: ... val = 10, oldval = 0, changed = 1, put rc = 1.
    [  740.268956] snd_hdspe 0000:01:00.0: snd_hdspe_put(status_polling,10) with get() ...
    [  740.268957] snd_hdspe 0000:01:00.0: ... val = 10, oldval = 10, changed = 0, put rc = 0.
    [  740.268961] snd_hdspe 0000:01:00.0: hdspe_control_get(aes_ds_mode) ...
    [  740.268963] snd_hdspe 0000:01:00.0: ... = 0.
    [  740.268966] snd_hdspe 0000:01:00.0: hdspe_control_get(aes_qs_mode) ...
    [  740.268967] snd_hdspe 0000:01:00.0: ... = 0.
    [  740.268969] snd_hdspe 0000:01:00.0: hdspe_control_get(aes_pro) ...
    [  740.268970] snd_hdspe 0000:01:00.0: ... = 1.
    [  740.268973] snd_hdspe 0000:01:00.0: hdspe_control_get(aes_emp) ...
    [  740.268973] snd_hdspe 0000:01:00.0: ... = 0.
    [  740.268976] snd_hdspe 0000:01:00.0: hdspe_control_get(aes_dolby) ...
    [  740.268977] snd_hdspe 0000:01:00.0: ... = 0.
    [  740.268980] snd_hdspe 0000:01:00.0: hdspe_control_get(aes_sswclk) ...
    [  740.268980] snd_hdspe 0000:01:00.0: ... = 0.
    [  740.268983] snd_hdspe 0000:01:00.0: hdspe_control_get(aes_clr_tms) ...
    [  740.268984] snd_hdspe 0000:01:00.0: ... = 0.
    [  740.269003] snd_hdspe 0000:01:00.0: hdspe_status_work: polling timeout expired.
    [  740.269030] snd_hdspe 0000:01:00.0: snd_hdspe_put(status_polling,10) with get() ...
    [  740.269032] snd_hdspe 0000:01:00.0: ... val = 10, oldval = 0, changed = 1, put rc = 1.
    [  740.367672] snd_hdspe 0000:01:00.0: hdspe_status_work: polling timeout expired.
    

    asound.state

    state.HDSPe24056447 {
    	control.1 {
    		iface CARD
    		name 'Card Revision'
    		value 240
    		comment {
    			access read
    			type INTEGER
    			count 1
    			range '0 - 0 (step 1)'
    		}
    	}
    	control.2 {
    		iface CARD
    		name 'Firmware Build'
    		value 201
    		comment {
    			access read
    			type INTEGER
    			count 1
    			range '0 - 0 (step 1)'
    		}
    	}
    	control.3 {
    		iface CARD
    		name Serial
    		value 24056447
    		comment {
    			access read
    			type INTEGER
    			count 1
    			range '0 - 0 (step 1)'
    		}
    	}
    	control.4 {
    		iface CARD
    		name 'TCO Present'
    		value false
    		comment {
    			access read
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.5 {
    		iface CARD
    		name 'Capture PID'
    		value 2262
    		comment {
    			access 'read volatile'
    			type INTEGER
    			count 1
    			range '0 - 0 (step 1)'
    		}
    	}
    	control.6 {
    		iface CARD
    		name 'Playback PID'
    		value 2262
    		comment {
    			access 'read volatile'
    			type INTEGER
    			count 1
    			range '0 - 0 (step 1)'
    		}
    	}
    	control.7 {
    		iface CARD
    		name Running
    		value true
    		comment {
    			access 'read volatile'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.8 {
    		iface CARD
    		name 'Buffer Size'
    		value 128
    		comment {
    			access 'read volatile'
    			type INTEGER
    			count 1
    			range '32 - 8192 (step 1)'
    		}
    	}
    	control.9 {
    		iface CARD
    		name 'Status Polling'
    		value 0
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '0 - 250 (step 1)'
    		}
    	}
    	control.10 {
    		iface HWDEP
    		name 'Raw Sample Rate'
    		value.0 110069313433624
    		value.1 2293110695
    		comment {
    			access 'read volatile'
    			type INTEGER64
    			count 2
    			range '0 - 0'
    		}
    	}
    	control.11 {
    		iface HWDEP
    		name DDS
    		value 2293110696
    		comment {
    			access 'read write'
    			type INTEGER
    			count 1
    			range '2126943254 - 4076641238'
    		}
    	}
    	control.12 {
    		iface CARD
    		name 'Internal Frequency'
    		value '48 KHz'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 '32 KHz'
    			item.1 '44.1 KHz'
    			item.2 '48 KHz'
    			item.3 '64 KHz'
    			item.4 '88.2 KHz'
    			item.5 '96 KHz'
    			item.6 '128 KHz'
    			item.7 '176.4 KHz'
    			item.8 '192 KHz'
    		}
    	}
    	control.13 {
    		iface CARD
    		name 'Current AutoSync Reference'
    		value Intern
    		comment {
    			access 'read volatile'
    			type ENUMERATED
    			count 1
    			item.0 WordClk
    			item.1 AES1
    			item.2 AES2
    			item.3 AES3
    			item.4 AES4
    			item.5 AES5
    			item.6 AES6
    			item.7 AES7
    			item.8 AES8
    			item.9 TCO
    			item.10 SyncIn
    			item.11 Intern
    		}
    	}
    	control.14 {
    		iface CARD
    		name 'Clock Mode'
    		value AutoSync
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 AutoSync
    			item.1 Master
    		}
    	}
    	control.15 {
    		iface CARD
    		name 'Preferred AutoSync Reference'
    		value AES1
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 WordClk
    			item.1 AES1
    			item.2 AES2
    			item.3 AES3
    			item.4 AES4
    			item.5 AES5
    			item.6 AES6
    			item.7 AES7
    			item.8 AES8
    			item.9 TCO
    			item.10 SyncIn
    		}
    	}
    	control.16 {
    		iface CARD
    		name 'AutoSync Status'
    		value.0 'No Lock'
    		value.1 'No Lock'
    		value.2 'No Lock'
    		value.3 'No Lock'
    		value.4 'No Lock'
    		value.5 'No Lock'
    		value.6 'No Lock'
    		value.7 'No Lock'
    		value.8 'No Lock'
    		value.9 N/A
    		value.10 'No Lock'
    		comment {
    			access 'read volatile'
    			type ENUMERATED
    			count 11
    			item.0 'No Lock'
    			item.1 Lock
    			item.2 Sync
    			item.3 N/A
    		}
    	}
    	control.17 {
    		iface CARD
    		name 'AutoSync Frequency'
    		value.0 ''
    		value.1 ''
    		value.2 ''
    		value.3 ''
    		value.4 ''
    		value.5 ''
    		value.6 ''
    		value.7 ''
    		value.8 ''
    		value.9 ''
    		value.10 ''
    		comment {
    			access 'read volatile'
    			type ENUMERATED
    			count 11
    			item.0 ''
    			item.1 '32 KHz'
    			item.2 '44.1 KHz'
    			item.3 '48 KHz'
    			item.4 '64 KHz'
    			item.5 '88.2 KHz'
    			item.6 '96 KHz'
    			item.7 '128 KHz'
    			item.8 '176.4 KHz'
    			item.9 '192 KHz'
    		}
    	}
    	control.18 {
    		iface CARD
    		name 'Double Speed Mode'
    		value 'Single Wire'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 'Single Wire'
    			item.1 'Double Wire'
    		}
    	}
    	control.19 {
    		iface CARD
    		name 'Quad Speed Mode'
    		value 'Single Wire'
    		comment {
    			access 'read write'
    			type ENUMERATED
    			count 1
    			item.0 'Single Wire'
    			item.1 'Double Wire'
    			item.2 'Quad Wire'
    		}
    	}
    	control.20 {
    		iface CARD
    		name Professional
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.21 {
    		iface CARD
    		name Emphasis
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.22 {
    		iface CARD
    		name 'Non Audio'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.23 {
    		iface CARD
    		name 'Line Out'
    		value true
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.24 {
    		iface CARD
    		name 'Single Speed WordClk Out'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.25 {
    		iface CARD
    		name 'Clear TMS'
    		value false
    		comment {
    			access 'read write'
    			type BOOLEAN
    			count 1
    		}
    	}
    	control.26 {
    		iface HWDEP
    		name Mixer
    		value.0 0
    		value.1 0
    		value.2 0
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 3
    			range '0 - 65535 (step 1)'
    		}
    	}
    	control.27 {
    		iface MIXER
    		name Chn
    		index 1
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.28 {
    		iface MIXER
    		name Chn
    		index 2
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.29 {
    		iface MIXER
    		name Chn
    		index 3
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.30 {
    		iface MIXER
    		name Chn
    		index 4
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.31 {
    		iface MIXER
    		name Chn
    		index 5
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.32 {
    		iface MIXER
    		name Chn
    		index 6
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.33 {
    		iface MIXER
    		name Chn
    		index 7
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.34 {
    		iface MIXER
    		name Chn
    		index 8
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.35 {
    		iface MIXER
    		name Chn
    		index 9
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.36 {
    		iface MIXER
    		name Chn
    		index 10
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.37 {
    		iface MIXER
    		name Chn
    		index 11
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.38 {
    		iface MIXER
    		name Chn
    		index 12
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.39 {
    		iface MIXER
    		name Chn
    		index 13
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.40 {
    		iface MIXER
    		name Chn
    		index 14
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.41 {
    		iface MIXER
    		name Chn
    		index 15
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    	control.42 {
    		iface MIXER
    		name Chn
    		index 16
    		value 64
    		comment {
    			access 'read write volatile'
    			type INTEGER
    			count 1
    			range '0 - 64 (step 1)'
    		}
    	}
    }
    
JeVois-Pro People Counter : Implement people counter on JeVois-Pro Deep Learning Smart Camera
JeVois-Pro People Counter : Implement  people counter  on JeVois-Pro Deep Learning Smart Camera

JeVois-Pro People Counter Refer to the OpenCV People Counter article to implement a people counter on the JeVois-Pro Deep Learning Smart Camera. First

Nov 10, 2021
Project Etnaviv is an open source user-space driver for the Vivante GCxxx series of embedded GPUs.

Introduction Project Etnaviv is an open source user-space driver for the Vivante GCxxx series of embedded GPUs. This repository contains reverse-engin

Oct 29, 2022
Device configuration for the Redmi Note 10 Pro / Max

Device configuration for the Redmi Note 10 Pro / Pro Max Copyright (C) 2021 ArrowOS The Redmi Note 10 Pro / Pro Max (sweet) is a mid-range smartphone

Dec 16, 2022
QMK Configuration for Anne Pro (v1)
QMK Configuration for Anne Pro (v1)

Anne Pro QMK firmware port for the Anne Pro 60% keyboard produced by Obins. This firmware is not created or supported by the creator of this keyboard!

Nov 15, 2021
Pipet - c++ library for building lightweight processing pipeline at compile-time for string obfuscation, aes ciphering or whatever you want

Pipet Pipet is a lightweight c++17 headers-only library than can be used to build simple processing pipelines at compile time. Features Compile-time p

Dec 12, 2022
This is for interfacing rasberry-pi's (2 cards) with an arduino for sending raw data to form the close loop system to avoid motor heating by acting on a given temperature.

This is for interfacing rasberry-pi's (2 cards) with an arduino for sending raw data to form the close loop system to avoid motor heating by acting on a given temperature. Interface is explained through a master slave approach and client server approach. another camera is used with OPEN-CV platform to interface and collect data aswell.

Oct 25, 2021
Loads a signed kernel driver which allows you to map any driver to kernel mode without any traces of the signed / mapped driver.
Loads a signed kernel driver which allows you to map any driver to kernel mode without any traces of the signed / mapped driver.

CosMapper Loads a signed kernel driver (signed with leaked cert) which allows you to map any driver to kernel mode without any traces of the signed /

Jan 2, 2023
VEX v5 Pro program that records driver movements and plays them back during the autonomous period.

Autonomous Recorder This code was written for team 5588R, but it can be easily modified to work with your team's robot. Notes Code isn't fully finishe

Jun 21, 2022
Sc0710 - Linux driver for the Elgato 4k60 Pro Mk.2

sc0710 Linux driver for the Elgato 4k60 Pro Mk.2 This is a reverse engineering project. The goal is to bring support for the Elgato 4k60 card to the l

Dec 28, 2022
our supper awesome kernel and user space system

osakauss our super awesome kernel and user space system memory layout The kernel is loaded at 0x00100000. kmalloc initially uses 'placement' allocatio

Aug 26, 2021