You are not logged in.
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/LinuxDM7 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 #0More 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 : 0As 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 : 0The 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, 12MSo 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
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-paramscommand? Afaik if you just request 2 it will only show 2.
Offline
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
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 availableOffline
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 2Mine 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 : 0Offline