A Homebrew SDR Sound card Using The PCM2904

Because of the limitations of sound cards typically integrated into laptop motherboards, part of my setup for playing with Software Defined Radio (SDR) and audio DSP is an M-Audio Transit USB sound card. I chose this card based upon previous experience and recommendations from others but I’ve never been completely satisfied with using it. The quality is good but I was really looking for something smaller that could be easily integrated into other projects. After looking for a while I realized I wasn’t going to find anything commercially so I began looking around to see what I could come up with myself.

My requirements were pretty straightforward:

  1. At least 16 bit samples, stereo input/output,
  2. USB interface,
  3. While not really a requirement, I was more interested in its ability to digitize than playback.

Eventually I ran across the Texas Instrument PCM2904, which is (from their description) a “…single-chip USB stereo audio codec with USB-compliant full-speed protocol controller…” (It was a lot easier to find this once I realized these chips are referred to as audio CODECs.) To put it into English, this is a sound card on a chip, providing stereo input and output with an integrated USB interface. Sampling frequencies of 8, 11.025, 16, 22.05, 32, 44.1, and 48 kHz are supported and on Windows it’s recognized as a generic USB audio device.

Using the reference design from the data sheet it was easy to put together a printed circuit board that fired up the first time (more a tribute to TI’s reference design than my skill in designing PCBs). A screenshot of WinRad using the interface with an Elektor SDR receiver over the Memorial Day weekend is shown below.


I’m not showing a schematic for the board since that’s available in the PCM2904 data sheet. However, once I do some more testing I’ll make the board design available on BatchPCB for those who are interested. I’m especially interested in figuring out what’s up with that mess in the middle of the spectrum. I suspect it comes from the radio rather than the sound card interface since I saw the same thing with the Elektor receiver using the M-Audio Transit board.

Finally, as I use this board I’m realizing there’s a lot here I’m not really taking advantage of. I’m more interested in digitizing the audio than playing it back (I can do playbacks using the integrated sound card) so the circuitry related to playback can go. At that point with some redesign the board’s size is approaching that of a thumb drive, and along with a receiver design like the Softrock it’s looking practical to put together a “receiver on a stick”, which is the ultimate goal of this exercise.

Update: For a simpler example putting this together using stripboard and discrete components go here.


  1. I recently ran into an issue with using the PCM2904 for SDR applications. It is described in the errata for the chip: http://www.ti.com/lit/er/slaz036a/slaz036a.pdf (Section 2.2: Inter-channel Phase Difference). SDRs that output I/Q signals (such as the SoftRock) will not work correctly unless this delay is compensated in the software.

    I believe TI recommends PCM2906B for new designs, as this issue (and some others) are fixed as explained here: http://www.ti.com/lit/ml/slel056/slel056.pdf

    • joesugar

      I’ve noticed this and seen it mentioned by others. I got the impression it’s a common problem, to the point where, as you noted, some software has the ability to compensate built in. Using HDSDR I fix it be setting a 1 sample delay in one of the channels on the Channel Skew Adjustment Panel (can’t remember if it’s the left or right off the top of my head). I wasn’t aware it had been fixed in the ‘2906. Thanks for the information.


  1. Homebrew Sound card Followup « Computer/Electronics Workbench
DuWayne's Place

Computers, Electronics, and Amateur Radio from KC3XM

QRP HomeBuilder - QRPHB -

Computers, Electronics, and Amateur Radio from KC3XM

Open Emitter

Computers, Electronics, and Amateur Radio from KC3XM

Ripples in the Ether

Emanations from Amateur Radio Station NT7S

m0xpd's 'Shack Nasties'

Computers, Electronics, and Amateur Radio from KC3XM

%d bloggers like this: