An S/PDIF Sound Card Using The PCM2906

Summary of An S/PDIF Sound Card Using The PCM2906


The article describes upgrading a PCM2904-based USB sound card to include an S/PDIF interface using the PCM2906, a pin-compatible TI chip with S/PDIF support. The author replaced audio jacks with fiber-optic transmitter/receivers connected to the relevant PCM2906 pins, following the simplified reference circuit. Testing involved looping the fiber optic output back to the input, successfully recognized by a Linux laptop as a PCM2906 audio codec, with audio playback confirmed via PulseAudio and VLC. The project addresses ground loop issues by enabling digital optical audio connection.

Parts used in the PCM2906 S/PDIF Sound Card Upgrade:

  • Texas Instruments PCM2906C Audio Codec
  • Fiber-optic transmitter module
  • Fiber-optic receiver module
  • USB interface (from original PCM2904 design)
  • Supporting passive components (resistors, capacitors as per reference design)

When S/PDIF became available in the Teensy Audio Library I thought this might be the solution to ground loop problems I’d been having when interfacing projects to my PC. However, I quickly realized I didn’t have any sound cards with an S/PDIF interface.

In the belief that I’d rather build than buy I decided to update one of my previous projects, a PCM2904 based sound card, to include an S/PDIF interface. The update was a cinch because TI has a pin-for-pin replacement for the PCM2904 (the PCM2906) with an S/PDIF interface. All I had to do was replace the audio jacks with fiber-optic transmitter/receivers connected to the appropriate pins.

The resulting schematic and prototype are shown below. (If you’re interested, the boards are available through OSH Park)

An S PDIF Sound Card Using The PCM2906

There’s not a lot to it. It’s simply the reference circuit from the PCM2906 data sheet with portions I don’t expect to use eliminated.

Testing The Interface

To test the interface I looped the transmitted fiber optic signal back to the receiver. When plugged into my Linux laptop it registered as a Texas Instruments PCM2906C Audio Codec as shown below.

Bus 004 Device 003: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 004: ID 1bcf:2c02 Sunplus Innovation Technology Inc. 
Bus 003 Device 003: ID 413c:3016 Dell Computer Corp. Optical 5-Button Wheel Mouse
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 013: ID 08bb:29c6 Texas Instruments PCM2906C Audio CODEC
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Starting up the PulseAudio Volume Control and playing back a file using VLC, I could see the input and output audio levels varying with the signal from VLC.

If you want to actually hear the looped back audio you can use the PulseAudio loopback module.

For more detail:   An S/PDIF Sound Card Using The PCM2906


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.