ASUS XONAR SE - spdif coax mod

Do you think it is manageable to get spdif coax otput from this card?

As far as I know, the signal is spdif coax - with some small opto-electronics and resistors, just before the toslink ouput.

I think of soldering some shielded cable, dril the bracket and mount a bnc connector, isolated from the bracket.
BNC in order to get the standard output impedance, if possible.
 
i bought this converter on local online shop so no need to hassle with long delivery and customs. there are many variations which you can try, i have another converter which provide spdif trasnformer but no difference since my dac already have spdif input transformer

Pcm2704 Usb Dac To Spdif
H73bad438159844c7998d17f9ebb4dce9C.png


i wanted to buy below more sophisticated kit, but still lazy to order expensive item when my $3 converter just works flawlessly

XMOS XU208 Asynchronous USB coaxial fiber output IIS+0.1pm Warming crystal | eBay
s-l1600.jpg



ARMATURE HECATE LT USB Interface SPDIF XMOS Xcore 208 Asynchronous TCXO (DIY Version) - Audiophonics
armature-hecate-inpage1.jpg
 
There might be an easierway eventually...

The motherboard has realtek ALC 887 codec chip, supporting spdif.

Haven't read the full specs yet, but I might try to get spdif ot of leg 42 (going through resistor divider and decoupling cap).
The output level for spdif coax is 0.5v, +-0.1v.

I just wonder where to get the ground from and try it:
1. The PC enclosure? (easier, but probably it has different potential, directly connected to mains earth)
2. The nearest to the chip header with a ground line? (I guess the front panel audio header or smth else)
3. Some other option?

Regards

Not sure if there is a need to enable spdif (chip select/ embedded soft/ different driver)
Code:
SPDIFO, pin 48, First SPDIF Output
Output has 12mA@75Ω driving capability
VOH=DVDD, VOL=DVSS
 

Attachments

  • ALC887-pinout.PNG
    ALC887-pinout.PNG
    77.1 KB · Views: 268
Last edited:
Found some PC bracket, to make the connector.
I will fit a bnc connector, insulated from chassis.
The output circuitry from the specs, attached.

There is a note about chip gnd/ dgnd layout. I gues it applies for the spdif out gnd as well....

Anyone done this hack? Getting spdif out of capable (by specs) codec chip and deliberately crippled motherboard?

P.s. I see no point to use usb -> spdif converter, then going spdif -> dac. The converter costs half the motherboard or more 😀. If this ALC887 mobo hack is not working, better change motherboard or find some roper pci-e card.

Using usb should be: usb(xmos/whatever) -> DAC.
No redundant conversions whatsoever.

The benefit from usb -> spdif over mobo codec ->spdif might be if it transports the digital audio unaltered.
Realtek ALC seems to use 48kHz internal clock, still supporting 44.1, 48, 96, 196kHz 16/24 bit.
Not sure if audio resampling is going on, since spdif is isochronous - start and end bits.
 

Attachments

  • Screenshot_20210523-102338.png
    Screenshot_20210523-102338.png
    136.8 KB · Views: 199
  • Screenshot_20210523-100859.png
    Screenshot_20210523-100859.png
    167.8 KB · Views: 219
  • Screenshot_20210523-093720~3.png
    Screenshot_20210523-093720~3.png
    113.1 KB · Views: 120
Last edited:
Even worse - If the realtek codec has preloaded firmware with the options enabled/ disabled.

Can't tell if these alc*** chips have firmware. Just read in the specs the getter/ setter 'verbs' (methods/ functions) and parameters - there is a spdif-out enable param.

I guess these parameters are used by the driver software.

Another issue might be if my motherboard does not allow proper installation of other driver version.

There are for sure spdif capable drivers for these codecs.
 
Last edited:
Intel HDA is a complex specification. Regular codecs do not have firmware inside, the driver configures them at initialization. Typically the initial configuration is burnt in bios where the generic Intel HDA driver reads it from.

I use linux because it gives me full access to my hardware. My board BIOS reported:

Code:
root@precision:/sys/class/sound/hwC1D0# cat init_pin_configs 
0x11 0x02214040
0x12 0x01014010
0x13 0x991301f0
0x14 0x02a19020
0x15 0x01813030
0x16 0x413301f0
0x17 0x41a601f0
0x1a 0x41f301f0
0x1b 0x414501f0
0x1c 0x413301f0

which the linux Intel HDA driver converted to:

Code:
[  132.209080] snd_hda_codec_analog hdaudioC1D0: autoconfig for AD1984A: line_outs=1 (0x12/0x0/0x0/0x0/0x0) type:line
[  132.209083] snd_hda_codec_analog hdaudioC1D0:    speaker_outs=1 (0x13/0x0/0x0/0x0/0x0)
[  132.209084] snd_hda_codec_analog hdaudioC1D0:    hp_outs=1 (0x11/0x0/0x0/0x0/0x0)
[  132.209086] snd_hda_codec_analog hdaudioC1D0:    mono: mono_out=0x0
[  132.209087] snd_hda_codec_analog hdaudioC1D0:    inputs:
[  132.209089] snd_hda_codec_analog hdaudioC1D0:      Mic=0x14
[  132.209090] snd_hda_codec_analog hdaudioC1D0:      Line=0x15

Now I can reconfigure parameters/routes of the codec with utility hdajackretask [How To] Turn Headphone Jack to a Microphone Jack in Ubuntu - OMG! Ubuntu!

I have to enable "show unconnected pins" because my board does not output SPDIF by default. My Intel HDA codec is https://www.analog.com/media/en/technical-documentation/obsolete-data-sheets/AD1984.pdf . The SPDIF-OUT pin 48 is controlled by node ID 1b (page 16). So I retask the codec to enable this pin.

The log detects the change:

Code:
[ 1814.233002] snd_hda_codec_analog hdaudioC1D0: autoconfig for AD1984A: line_outs=1 (0x13/0x0/0x0/0x0/0x0) type:speaker
[ 1814.233004] snd_hda_codec_analog hdaudioC1D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[ 1814.233006] snd_hda_codec_analog hdaudioC1D0:    hp_outs=2 (0x12/0x11/0x0/0x0/0x0)
[ 1814.233007] snd_hda_codec_analog hdaudioC1D0:    mono: mono_out=0x0
[ 1814.233009] snd_hda_codec_analog hdaudioC1D0:    dig-out=0x1b/0x0
[ 1814.233010] snd_hda_codec_analog hdaudioC1D0:    inputs:
[ 1814.233012] snd_hda_codec_analog hdaudioC1D0:      Mic=0x14
[ 1814.233013] snd_hda_codec_analog hdaudioC1D0:      Line=0x15

SPDIF output device hw:Intel,1 appears:

Code:
card 1: Intel [HDA Intel], device 0: AD1984A Analog [AD1984A Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Intel [HDA Intel], device 1: AD1984A Digital [AD1984A Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Intel [HDA Intel], device 2: AD1984A Alt Analog [AD1984A Alt Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

And corresponding SPDIF control elements for adjusting SPDIF stream preamble become available:

Code:
numid=61,iface=MIXER,name='IEC958 Default PCM Playback Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
numid=57,iface=MIXER,name='IEC958 Playback Con Mask'
  ; type=IEC958,access=r-------,values=1
  : values=[AES0=0x0f AES1=0xff AES2=0x00 AES3=0x00]
numid=58,iface=MIXER,name='IEC958 Playback Pro Mask'
  ; type=IEC958,access=r-------,values=1
  : values=[AES0=0x0f AES1=0x00 AES2=0x00 AES3=0x00]
numid=59,iface=MIXER,name='IEC958 Playback Default'
  ; type=IEC958,access=rw------,values=1
  : values=[AES0=0x04 AES1=0x00 AES2=0x00 AES3=0x00]
numid=60,iface=MIXER,name='IEC958 Playback Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off

I see the SPDIF playback switch is off, I would enable it (e.g. in graphical alsamixer). Now the pin 48 of my codec would very likely output SPDIF signal if I played something to the linux alsa device hw:Intel,1. I will not solder a wire to that pin on my motherboard to hook an oscilloscope though 🙂

Windows may have a similar utility to hdajackretask but I very much doubt it.
 

Attachments

  • retask.png
    retask.png
    57.4 KB · Views: 92
Wow..
So probably the spdif pin does not output by the current motherboard defaults

After doing all that retask/ remap, u still have all factory settings hardcoded in bios?

And hda jack retask overrides settings at
/after the OS starts?

In general I dont want to switch OS. If the factory settings are hardcoded in bios and overriden via the linux os in runtime, have to look for windows hacks.
I think there are similar tools that might do.

Thank you for the insight 🙂
 
So probably the spdif pin does not output by the current motherboard defaults

If your MB has no physical SPDIF output, your windows driver (also reading the defaults configured by the MB vendor into its bios tables) should not offer it. It would be confusing for users if it did. BTW bios HDA configs contain LOTS of bugs (that's why the linux driver (and thus likely the windows driver too) contains LOTS of hard-coded quirks for individual MB models) but that is a different story...

After doing all that retask/ remap, u still have all factory settings hardcoded in bios?

Yes, hdajackretask stores the changes into its linux filesystem and the snd-hda-intel driver loads these overriding values at linux boot. I doubt it is possible to overwrite the hardcoded values in bios so that your windows driver could load the changed config.


I think there are similar tools that might do.
Well, good luck finding one 🙂 The generic Intel HDA driver written by MS would have to support re-configuration from a third-party software.
 
Last edited: