You are not logged in.

#1 2023-03-15 03:30:10

DaveBullet
Member
Registered: 2023-03-14
Posts: 10

[SOLVED] USB 8 channel DAC - only 2 channels recognised

Hello,

I have recently purchased a Topping DM7 DAC - USB 8 channel.  I can play 2 channels fine, but the following aplay output, shows only 2 channels are supported:

The topping uses the ESS ES9038PRO chip.  There are no Linux specific drivers AFAIK.
https://www.tpdz.net/productinfo/862560.html

Various system details:

[root@archpc music]# uname -ar
Linux archpc 6.2.6-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 13 Mar 2023 17:02:08 +0000 x86_64 GNU/Linux

DM7 is device 6

[root@archpc music]# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 0d8c:0102 C-Media Electronics, Inc. CM106 Like Sound Device
Bus 001 Device 005: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS578 SATA 6Gb/s
Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
Bus 001 Device 006: ID 152a:8750 Thesycon Systemsoftware & Consulting GmbH DM7
Bus 001 Device 002: ID 03f0:0024 HP, Inc KU-0316 Keyboard
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[root@archpc music]# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 0: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 1: DM7 [DM7], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: PCH [HDA Intel PCH], device 0: ALC3234 Analog [ALC3234 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: ICUSBAUDIO7D [ICUSBAUDIO7D], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

More specific information on hw:1 (the DM7 above)

[root@archpc music]# aplay -v -f S32_LE -c 2 -D hw:1,0 /dev/zero --dump-hw-params
Playing raw data '/dev/zero' : Signed 32 bit Little Endian, Rate 8000 Hz, Stereo
HW Params of device "hw:1,0":
--------------------
ACCESS:  MMAP_INTERLEAVED RW_INTERLEAVED
FORMAT:  S32_LE SPECIAL DSD_U32_BE
SUBFORMAT:  STD
SAMPLE_BITS: 32
FRAME_BITS: 64
CHANNELS: 2
RATE: [44100 192000]
PERIOD_TIME: [125 1000000]
PERIOD_SIZE: [8 192000]
PERIOD_BYTES: [64 1536000]
PERIODS: [2 1024]
BUFFER_TIME: (83 2000000]
BUFFER_SIZE: [16 384000]
BUFFER_BYTES: [128 3072000]
TICK_TIME: ALL
--------------------
Warning: rate is not accurate (requested = 8000Hz, got = 44100Hz)
         please, try the plug plugin
Hardware PCM card 1 'DM7' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 32
  buffer_size  : 22050
  period_size  : 5513
  period_time  : 125011
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 5513
  period_event : 0
  start_threshold  : 22050
  stop_threshold   : 22050
  silence_threshold: 0
  silence_size : 0
  boundary     : 6206523236469964800
  appl_ptr     : 0
  hw_ptr       : 0

As you can see only 2 channels are shown.

I also have a Cheaper 5.1 DAC plugged in via USB - and it recognises > 2 channels. as shown below:

[root@archpc music]# aplay -v -f S16_LE -r 44100 -c 8 -D hw:3,0 /dev/zero --dump-hw-params
Playing raw data '/dev/zero' : Signed 16 bit Little Endian, Rate 44100 Hz, Channels 8
HW Params of device "hw:3,0":
--------------------
ACCESS:  MMAP_INTERLEAVED RW_INTERLEAVED
FORMAT:  S16_LE
SUBFORMAT:  STD
SAMPLE_BITS: 16
FRAME_BITS: [32 128]
CHANNELS: [2 8]
RATE: [44100 96000]
PERIOD_TIME: [1000 1000000]
PERIOD_SIZE: [45 96000]
PERIOD_BYTES: [180 1536000]
PERIODS: [2 1024]
BUFFER_TIME: (937 2000000]
BUFFER_SIZE: [90 192000]
BUFFER_BYTES: [360 3072000]
TICK_TIME: ALL
--------------------
Hardware PCM card 3 'ICUSBAUDIO7D' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 8
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 16
  buffer_size  : 22050
  period_size  : 5513
  period_time  : 125011
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 5513
  period_event : 0
  start_threshold  : 22050
  stop_threshold   : 22050
  silence_threshold: 0
  silence_size : 0
  boundary     : 6206523236469964800
  appl_ptr     : 0
  hw_ptr       : 0

The DM7 apparently comes up as 8 channels as far as aplay reports on another user's Ubuntu 22.04 kernel 5.15 (sorry I don't have further info about that system).

Both the CMEDIA (all 8 channels working) and DM7 (only 2 channels working) are using the same snd-usb-audio driver

(note: device #s have changed from above output as I re-plugged devices - so DM7 now device 8):

[root@archpc music]# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 2: Dev 8, If 0, Class=Audio, Driver=snd-usb-audio, 480M
    |__ Port 2: Dev 8, If 1, Class=Audio, Driver=snd-usb-audio, 480M
    |__ Port 2: Dev 8, If 2, Class=Application Specific Interface, Driver=, 480M
    |__ Port 4: Dev 4, If 0, Class=Vendor Specific Class, Driver=rtl8192cu, 480M
    |__ Port 5: Dev 5, If 0, Class=Mass Storage, Driver=uas, 480M
    |__ Port 7: Dev 7, If 0, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 7: Dev 7, If 1, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 7: Dev 7, If 2, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 7: Dev 7, If 3, Class=Human Interface Device, Driver=usbhid, 12M

So I'm either missing something obvious, or I need a custom driver, or some kernel fiddling.  Help appreciated.

Last edited by DaveBullet (2023-03-17 04:09:34)

Offline

#2 2023-03-15 09:23:19

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 25,255

Re: [SOLVED] USB 8 channel DAC - only 2 channels recognised

Well what do you get if you use the same

aplay -v -f S32_LE -c 8 -D hw:1,0 /dev/zero --dump-hw-params

command? Afaik if you just request 2 it will only show 2.

Offline

#3 2023-03-15 09:28:38

DaveBullet
Member
Registered: 2023-03-14
Posts: 10

Re: [SOLVED] USB 8 channel DAC - only 2 channels recognised

The aplay with -c 8 errors because only 2 channels are supported. The top part of aplay does not change with parameters you request but statically displays device capabilities.

I used -c 2 as that would make it run without error

Offline

#4 2023-03-15 17:41:40

DaveBullet
Member
Registered: 2023-03-14
Posts: 10

Re: [SOLVED] USB 8 channel DAC - only 2 channels recognised

For reference:

[root@archpc ~]# aplay -v -f S32_LE -r 44100 -c 8 -D hw:1,0 /dev/zero --dump-hw-params
Playing raw data '/dev/zero' : Signed 32 bit Little Endian, Rate 44100 Hz, Channels 8
HW Params of device "hw:1,0":
--------------------
ACCESS:  MMAP_INTERLEAVED RW_INTERLEAVED
FORMAT:  S32_LE SPECIAL DSD_U32_BE
SUBFORMAT:  STD
SAMPLE_BITS: 32
FRAME_BITS: 64
CHANNELS: 2
RATE: [44100 192000]
PERIOD_TIME: [125 1000000]
PERIOD_SIZE: [8 192000]
PERIOD_BYTES: [64 1536000]
PERIODS: [2 1024]
BUFFER_TIME: (83 2000000]
BUFFER_SIZE: [16 384000]
BUFFER_BYTES: [128 3072000]
TICK_TIME: ALL
--------------------
aplay: set_params:1358: Channels count non available

Offline

#5 2023-03-17 04:09:09

DaveBullet
Member
Registered: 2023-03-14
Posts: 10

Re: [SOLVED] USB 8 channel DAC - only 2 channels recognised

I solved it.  Wrong firmware installed by factory on the DM7 !!!.  If you suspect the same problem.. run lsusb -v and check the bcdDevice = 1.18 (latest official firmware as at 2023-03-17)

i.e.

Bus 001 Device 009: ID 152a:8750 Thesycon Systemsoftware & Consulting GmbH DM7
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x152a Thesycon Systemsoftware & Consulting GmbH
  idProduct          0x8750 
  bcdDevice            1.98
  iManufacturer           1 Topping
  iProduct                3 DM7
  iSerial                 0 
  bNumConfigurations      2

Mine was at v1.98 - I don't know which device this is for, but must be for another one of the manufacturers 2 channel DACs.  Luckily using the factory firmware tool and .BIN file fixed the problem (confirmed in Ubuntu and Windows too).

So there you go.  this is how aplay looks now

[root@arch-pc ~]# aplay -v -f S32_LE -r 44100 -c 8 -D hw:CARD=DM7 /dev/zero --dump-hw-params
Playing raw data '/dev/zero' : Signed 32 bit Little Endian, Rate 44100 Hz, Channels 8
HW Params of device "hw:CARD=DM7":
--------------------
ACCESS:  MMAP_INTERLEAVED RW_INTERLEAVED
FORMAT:  S32_LE SPECIAL DSD_U32_BE
SUBFORMAT:  STD
SAMPLE_BITS: 32
FRAME_BITS: 256
CHANNELS: 8
RATE: [44100 192000]
PERIOD_TIME: [125 1000000]
PERIOD_SIZE: [6 192000]
PERIOD_BYTES: [192 6144000]
PERIODS: [2 1024]
BUFFER_TIME: (62 2000000]
BUFFER_SIZE: [12 384000]
BUFFER_BYTES: [384 12288000]
TICK_TIME: ALL
--------------------
Hardware PCM card 1 'DM7' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 8
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 32
  buffer_size  : 22050
  period_size  : 5513
  period_time  : 125011
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 5513
  period_event : 0
  start_threshold  : 22050
  stop_threshold   : 22050
  silence_threshold: 0
  silence_size : 0
  boundary     : 6206523236469964800
  appl_ptr     : 0
  hw_ptr       : 0

Offline

Board footer

Powered by FluxBB