RME PCIe AES32

mercenary-audio_2064_20319319

Installing the sound card

Yes, it is supported by Linux, using the driver snd=hdspm

After putting the sound card in the PCIe slot, you can switch on the computer and SPBLinux should recognize it. To confirm, you can use the following command

cat /proc/asound/cards
0 [default        ]: HDSPAES32 - HDSPM MADI
                       RME HDSPM AES32 at 0xe5300000, irq 5

cat /proc/asound/card0/hdspm
RME HDSPM AES32 (Card #1) Rev.e9
IRQ: 5 Registers bus: 0xe5300000 VM: 0xd0820000
--- System ---
IRQ Pending: Audio=0, MIDI0=0, MIDI1=0, IRQcount=15809
HW pointer: id = 0, rawptr = 0 (0->32704) estimated= 0 (bytes)
MIDI FIFO: Out1=0x0, Out2=0x0, In1=0x0, In2=0x0
Register: ctrl1=0x10102dc, status1=0x10000, status2=0x80, timecode=0x3
--- Settings ---
Size (Latency): 4096 samples (2 periods of 16384 bytes)
Line out: on ,   Precise Pointer: off
ClearTrackMarker off, Emphasis off, Dolby off
Sample Clock Source: Autosync
System Clock Mode: Slave
Preferred Sync Reference: Word
System Clock Frequency: 192000
Double speed: Single wire
Quad speed: Single wire
--- Status:
Word: Sync  Frequency: 192000
AES1: Sync  Frequency: 192000
AES2: Sync  Frequency: 192000
AES3: Sync  Frequency: 192000
AES4: Sync  Frequency: 192000
AES5: No Lock  Frequency: 0
AES6: No Lock  Frequency: 0
AES7: No Lock  Frequency: 0
AES8: No Lock  Frequency: 0
AutoSync ref = Word

If you get the above lines, or something similar, then your sound card is installed properly.

Setting up configuration file

The configuration file is placed under the folder named /brutefir/start/hdspaes. To know more about this configuration settings, you can display all the settings using the command

amixer contents

To display to current setting, run the script first than ^C to stop. Type

amixer > /test

Then look for the information under the main directly under /test

One thing to note is that in the pass, the max value for RME sound card is 32768. If you set it at 65535, you are actually adding gain to the incoming signal and you can have the problem of clipping.

To make things simpler, I will attach the contents here


numid=1,iface=HWDEP,name='Mixer'
  ; type=INTEGER,access=rw------,values=3,min=0,max=65535,step=1
  : values=0,0,0
numid=9,iface=MIXER,name='Line Out'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=16,iface=MIXER,name='AES Lock Status',index=1
  ; type=ENUMERATED,access=r-------,values=1,items=3
  ; Item #0 'No Lock'
  ; Item #1 'Lock'
  ; Item #2 'Sync'
  : values=0
numid=17,iface=MIXER,name='AES Lock Status',index=2
  ; type=ENUMERATED,access=r-------,values=1,items=3
  ; Item #0 'No Lock'
  ; Item #1 'Lock'
  ; Item #2 'Sync'
  : values=0
numid=18,iface=MIXER,name='AES Lock Status',index=3
  ; type=ENUMERATED,access=r-------,values=1,items=3
  ; Item #0 'No Lock'
  ; Item #1 'Lock'
  ; Item #2 'Sync'
  : values=0
numid=19,iface=MIXER,name='AES Lock Status',index=4
  ; type=ENUMERATED,access=r-------,values=1,items=3
  ; Item #0 'No Lock'
  ; Item #1 'Lock'
  ; Item #2 'Sync'
  : values=0
numid=20,iface=MIXER,name='AES Lock Status',index=5
  ; type=ENUMERATED,access=r-------,values=1,items=3
  ; Item #0 'No Lock'
  ; Item #1 'Lock'
  ; Item #2 'Sync'
  : values=0
numid=21,iface=MIXER,name='AES Lock Status',index=6
  ; type=ENUMERATED,access=r-------,values=1,items=3
  ; Item #0 'No Lock'
  ; Item #1 'Lock'
  ; Item #2 'Sync'
  : values=0
numid=22,iface=MIXER,name='AES Lock Status',index=7
  ; type=ENUMERATED,access=r-------,values=1,items=3
  ; Item #0 'No Lock'
  ; Item #1 'Lock'
  ; Item #2 'Sync'
  : values=0
numid=23,iface=MIXER,name='AES Lock Status',index=8
  ; type=ENUMERATED,access=r-------,values=1,items=3
  ; Item #0 'No Lock'
  ; Item #1 'Lock'
  ; Item #2 'Sync'
  : values=0
numid=5,iface=MIXER,name='AutoSync Reference'
  ; type=ENUMERATED,access=r-------,values=1,items=10
  ; Item #0 'WordClock'
  ; 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 'None'
  : values=9
numid=24,iface=MIXER,name='Chn',index=1
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=32768
numid=25,iface=MIXER,name='Chn',index=2
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=32768
numid=26,iface=MIXER,name='Chn',index=3
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=32768
numid=27,iface=MIXER,name='Chn',index=4
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=32768
numid=28,iface=MIXER,name='Chn',index=5
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=32768
numid=29,iface=MIXER,name='Chn',index=6
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=32768
numid=30,iface=MIXER,name='Chn',index=7
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=32768
numid=31,iface=MIXER,name='Chn',index=8
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=32768
numid=32,iface=MIXER,name='Chn',index=9
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=33,iface=MIXER,name='Chn',index=10
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=34,iface=MIXER,name='Chn',index=11
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=35,iface=MIXER,name='Chn',index=12
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=36,iface=MIXER,name='Chn',index=13
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=37,iface=MIXER,name='Chn',index=14
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=38,iface=MIXER,name='Chn',index=15
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=39,iface=MIXER,name='Chn',index=16
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=40,iface=MIXER,name='Chn',index=17
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=41,iface=MIXER,name='Chn',index=18
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=42,iface=MIXER,name='Chn',index=19
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=43,iface=MIXER,name='Chn',index=20
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=44,iface=MIXER,name='Chn',index=21
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=45,iface=MIXER,name='Chn',index=22
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=46,iface=MIXER,name='Chn',index=23
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=47,iface=MIXER,name='Chn',index=24
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=48,iface=MIXER,name='Chn',index=25
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=49,iface=MIXER,name='Chn',index=26
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=50,iface=MIXER,name='Chn',index=27
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=51,iface=MIXER,name='Chn',index=28
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=52,iface=MIXER,name='Chn',index=29
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=53,iface=MIXER,name='Chn',index=30
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=54,iface=MIXER,name='Chn',index=31
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=55,iface=MIXER,name='Chn',index=32
  ; type=INTEGER,access=rw------,values=1,min=0,max=65536,step=1
  : values=0
numid=56,iface=MIXER,name='Chn',index=33
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=57,iface=MIXER,name='Chn',index=34
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=58,iface=MIXER,name='Chn',index=35
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=59,iface=MIXER,name='Chn',index=36
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=60,iface=MIXER,name='Chn',index=37
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=61,iface=MIXER,name='Chn',index=38
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=62,iface=MIXER,name='Chn',index=39
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=63,iface=MIXER,name='Chn',index=40
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=64,iface=MIXER,name='Chn',index=41
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=65,iface=MIXER,name='Chn',index=42
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=66,iface=MIXER,name='Chn',index=43
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=67,iface=MIXER,name='Chn',index=44
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=68,iface=MIXER,name='Chn',index=45
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=69,iface=MIXER,name='Chn',index=46
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=70,iface=MIXER,name='Chn',index=47
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=71,iface=MIXER,name='Chn',index=48
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=72,iface=MIXER,name='Chn',index=49
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=73,iface=MIXER,name='Chn',index=50
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=74,iface=MIXER,name='Chn',index=51
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=75,iface=MIXER,name='Chn',index=52
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=76,iface=MIXER,name='Chn',index=53
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=77,iface=MIXER,name='Chn',index=54
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=78,iface=MIXER,name='Chn',index=55
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=79,iface=MIXER,name='Chn',index=56
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=80,iface=MIXER,name='Chn',index=57
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=81,iface=MIXER,name='Chn',index=58
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=82,iface=MIXER,name='Chn',index=59
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=83,iface=MIXER,name='Chn',index=60
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=84,iface=MIXER,name='Chn',index=61
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=85,iface=MIXER,name='Chn',index=62
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=86,iface=MIXER,name='Chn',index=63
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=87,iface=MIXER,name='Chn',index=64
  ; type=INTEGER,access=rw-v----,values=1,min=0,max=65536,step=1
  : values=0
numid=13,iface=MIXER,name='Clear Track Marker'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=14,iface=MIXER,name='Double Speed Wire Mode'
  ; type=ENUMERATED,access=rw------,values=1,items=2
  ; Item #0 'Single'
  ; Item #1 'Double'
  : values=0
numid=10,iface=MIXER,name='Emphasis'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=7,iface=MIXER,name='External Rate'
  ; type=ENUMERATED,access=r-------,values=1,items=10
  ; Item #0 '32000'
  ; Item #1 '44100'
  ; Item #2 '48000'
  ; Item #3 '64000'
  ; Item #4 '88200'
  ; Item #5 '96000'
  ; Item #6 '128000'
  ; Item #7 '176400'
  ; Item #8 '192000'
  ; Item #9 'None'
  : values=9
numid=11,iface=MIXER,name='Non Audio'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
numid=4,iface=MIXER,name='Preferred Sync Reference'
  ; type=ENUMERATED,access=rw------,values=1,items=9
  ; Item #0 'Word'
  ; Item #1 'AES1'
  ; Item #2 'AES2'
  ; Item #3 'AES3'
  ; Item #4 'AES4'
  ; Item #5 'AES5'
  ; Item #6 'AES6'
  ; Item #7 'AES7'
  ; Item #8 'AES8'
  : values=1
numid=12,iface=MIXER,name='Professional'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
numid=15,iface=MIXER,name='Quad Speed Wire Mode'
  ; type=ENUMERATED,access=rw------,values=1,items=3
  ; Item #0 'Single'
  ; Item #1 'Double'
  ; Item #2 'Quad'
  : values=0
numid=2,iface=MIXER,name='Sample Clock Source'
  ; type=ENUMERATED,access=rw------,values=1,items=10
  ; Item #0 'AutoSync'
  ; Item #1 'Internal 32.0 kHz'
  ; Item #2 'Internal 44.1 kHz'
  ; Item #3 'Internal 48.0 kHz'
  ; Item #4 'Internal 64.0 kHz'
  ; Item #5 'Internal 88.2 kHz'
  ; Item #6 'Internal 96.0 kHz'
  ; Item #7 'Internal 128.0 kHz'
  ; Item #8 'Internal 176.4 kHz'
  ; Item #9 'Internal 192.0 kHz'
  : values=2
numid=3,iface=MIXER,name='System Clock Mode'
  ; type=ENUMERATED,access=r-------,values=1,items=2
  ; Item #0 'Master'
  ; Item #1 'Slave'
  : values=0
numid=6,iface=MIXER,name='System Sample Rate'
  ; type=INTEGER,access=r-------,values=1,min=0,max=0,step=0
  : values=44100
numid=8,iface=MIXER,name='Word Clock Lock Status'
  ; type=ENUMERATED,access=r-------,values=1,items=3
  ; Item #0 'No Lock'
  ; Item #1 'Lock'
  ; Item #2 'Sync'
  : values=0

For current configuration file, please see the previous section