Skip to the content
4 layers121.6 × 79.8 mmUsbSound, the printed circuit board in 3D

A custom-made USB sound card for Balanced Audio

Size
121.6 × 79.8 mm
Copper layers
4
Thickness
4.69 mm
Parts
91
Nets
112
Pads
372
Tracks, vias
763, 398
Pours
6
Routed
Yes
KiCad
KiCad 5 (file 20210126)
Created
3 Apr 2021
Updated
8 Apr 2021

Overview

UsbSound is an open-source printed circuit board by SteveSyfuhs, from the SteveSyfuhs/UsbSound repository on GitHub, published under the MIT licence. It is a 4-layer board of 121.6 × 79.8 mm with 91 parts on 112 nets, routed with 763 tracks and 398 vias.

It is built around the STM32F405RGT6, NE5534D and ICL7660N, with the PCM1795DB, USBLC6-2SC6 and B5819W among its other parts. Its parts include 45 capacitors, 20 resistors, 9 ICs, 5 connectors and 4 diodes. It belongs with the audio and music boards and the STM32 boards of this library.

Main components

6

README

README.md

Usb Sound

A custom-made USB sound card for Balanced Audio.

Why?

My current USB DAC isn't great and instead of just buying a new one I thought I'd try and waste some serious engineering hours learning how to build one instead.

What's wrong with the current DAC?

My existing DAC uses the PCM2705 chip to handle both the USB and DAC side of things. It's fine, I guess, but it has some annoying quirks.

First, you have to bolt on an additional chip to do silly things like control the USB descriptors. Absent that you're left with this annoying string with two trailing spaces (probably nulls?). Clearly not the end of the world, but I might as well aim for perfect.

image

Second, the output from the chip is only single-ended so it requires extra effort to make a good differential output. This existing device is using a transformer (two, on per channel) to generate the differential pair, which is great for isolation, but transformers are notorious for distortion at high frequency.

Curiously this device also doesn't produce a great differential output at 1000hz.

image

Channel A (blue) is the positive leg and Channel B (red) is the negative leg. Channel 3 (magenta?) is A+B, which ideally should sum to zero, not ~16mV RMS.

Why are you using X?

To be clear: I really have no idea what I'm doing so my choice of parts or circuit are driven by the last thing I learned about. If there's clearly a better way to do something then please let me know.

Why the STM32F4 Micro?

It happened to be the chip used in Phil's video where learned to use Kicad and it happens to support I2S. It's incredibly powerful for the use case here, and a less powerful device could be used instead. That said, it could make for a useful platform for building out digital filters and stuff.

Why the PCM1795 DAC?

I like the low distortion and noise floor it provides and since I'm starting with a blank canvas why not start with something that's overkill? I can only make it worse.

Note: the audible differences between this and other DACs is ultimately going to be nil so there will be no notable benefit. I'm doing this because I can.

Why the NE5524 Op-Amps?

The PCM1795 uses that as a baseline for the measured circuits so it's a helpful starting place. I will probably switch these out for LM4562's in the near future once I test out the board and do initial measurements to compare against spec. The LM4562s have lower distortion and noise floor, and more interestingly contain two op-amps in the package so I can reduce the circuit footprint.

Again, I can only make things worse.

Why Balanced Audio?

The speakers I'll be driving are studio monitors and they require a balanced XLR connection.

Are you going to support multiple output channels?

Eventually, probably. The micro supports 3 I2S lines, and each I2S line supports two channels out and one in.

Are you going to support audio in?

Maybe. See the output section.

What's the driver story?

Ideally it'll show up as a USB audio device and all major operating systems will just pick it up.

Measurement Methodology

A work in progress. Ideal testing should measure:

  • Noise - Specifically what the device adds to the signal.
  • Distortion - Specifically how the device modifies the signal integrity across the device bandwidth.
  • Flatness - Specifically whether the device has amplified or attenuated voltage across the device bandwidth.

Parts

91
QtyValueFootprintReferences
1010uCapacitor_SMD:C_1206_3216MetricC1, C2, C3, C4, C5, C6, C32, C34, C36, C38
80u1Capacitor_SMD:C_1206_3216MetricC10, C20, C24, C30, C39, C41, C43, C45
4100nCapacitor_SMD:C_1206_3216MetricC12, C13, C14, C15
412pCapacitor_SMD:C_1206_3216MetricC25, C26, C28, C29
422pFCapacitor_SMD:C_1206_3216MetricC19, C27, C40, C44
42700pFCapacitor_SMD:C_1206_3216MetricC7, C23, C33, C42
4820Resistor_SMD:R_1206_3216MetricR6, R13, R16, R19
4NE5534Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.29x3mmU4, U7, U8, U9
30.1uCapacitor_SMD:C_1206_3216MetricC31, C35, C37
327Resistor_SMD:R_1206_3216MetricR9, R10, R11
20Resistor_SMD:R_1206_3216MetricR14, R15
210kResistor_SMD:R_1206_3216MetricR8, R12
210nCapacitor_SMD:C_1206_3216MetricC9, C17
21uCapacitor_SMD:C_1206_3216MetricC8, C16
22k2Resistor_SMD:R_1206_3216MetricR7, R20
22u2Capacitor_SMD:C_1206_3216MetricC21, C22
24k7Resistor_SMD:R_1206_3216MetricR17, R18
2B5819WDiode_SMD:D_SOD-123D1, D2
2RedLED_SMD:LED_1206_3216MetricD3, D4
2SWDConnector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_Vertical_SMDJ1, J5
1100kResistor_SMD:R_1206_3216MetricR4
110uInductor_SMD:L_1206_3216MetricL1
115kResistor_SMD:R_1206_3216MetricR2
116MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1250mAFuse:Fuse_1206_3216MetricF1
1270Resistor_SMD:R_1206_3216MetricR3
136.864MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY2
139nInductor_SMD:L_0402_1005MetricL2
139nInductor_SMD:L_1206_3216MetricL3
147kResistor_SMD:R_1206_3216MetricR1
147uCapacitor_SMD:C_1206_3216MetricC18
14u7Capacitor_SMD:C_1206_3216MetricC11
1600 @ 600MHzInductor_SMD:L_0805_2012MetricFB1
168kResistor_SMD:R_1206_3216MetricR5
1BOOT_SELECTButton_Switch_SMD:SW_SPDT_PCM12SW1
1ICL7660Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.29x3mmU2
1PCM1795DBsymbols:SOP65P780X200-28NU5
1STM32F405RGT6Package_QFP:LQFP-64_10x10mm_P0.5mmU6
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U3
1USB_BConnector_USB:USB_B_Lumberg_2411_02_HorizontalJ2
1XLR_LConnector_Audio:Jack_XLR_Neutrik_NC3MAH_HorizontalJ3
1XLR_RConnector_Audio:Jack_XLR_Neutrik_NC3MAH_HorizontalJ4
1XRP7659Package_SO:TSOP-6_1.65x3.05mm_P0.95mmU1

Similar boards

  • 2 layers50 × 66 mmBluePhil, the printed circuit board in 3D

    BluePhil

    pms67/BluePhil

    STM32-based development board with various sensors.

    106 parts53MIT
  • 4 layers70.8 × 70.8 mmStm32 f4xx minimal, the printed circuit board in 3D

    Stm32 f4xx minimal

    amrithHN/stm32f4xx_minimal_dev

    stm32f4 minimal dev board with few sensors

    79 parts4GPL-3.0
  • 4 layers57 × 52 mmSTM32 based project, the printed circuit board in 3D

    STM32 based project

    majdbiw4200/STM32F405RGT-dev-board

    STM32 + USB + Buck Converter PCB Design

    50 parts3MIT
  • 4 layers60 × 56 mmSTM32F4 Breakout REV2, the printed circuit board in 3D

    STM32F4 Breakout REV2

    alphaseneca/pcb_design_repo

    A repository for storing and documenting the pcb design files.

    63 parts1MIT
  • 4 layers60.7 × 40 mmSTM32F4 REV2, the printed circuit board in 3D

    STM32F4 REV2

    pravinsharma15k-ops/STM32F4-Test-Board

    STM32F405-based test board designed in KiCad 10, with buck converter, USB, SWD, I2C and UART.

    52 parts1
  • 4 layers75 × 60 mmSmart motor controller, the printed circuit board in 3D

    Smart motor controller

    szolotykh/kinisi-motor-controller-board

    Kinisi motor controller board based on STM32F405 microcontroller

    79 parts1MIT
  • 4 layers57.5 × 50.9 mmStm32project, the printed circuit board in 3D

    Stm32project

    Codebreaker000/PCB_DESIGNS

    Contains all PCB designs with Schematics and Board view file's and both pdf's to understand and gerber files and the view and layout of the PCB's.

    50 parts

Questions

How big is the UsbSound PCB?

It measures 121.6 × 79.8 mm and has 4 copper layers, 4.69 mm thick.

What parts does the UsbSound use?

91 parts, built around the STM32F405RGT6, NE5534D, ICL7660N and PCM1795DB. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the UsbSound KiCad files?

From the SteveSyfuhs/UsbSound repository on GitHub, at the commit this page was made from: the board is UsbSound.kicad_pcb and its schematic UsbSound.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the UsbSound design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).