RogersCompactMonitorFan
Member
- Joined
- Mar 8, 2023
- Messages
- 21
- Likes
- 16
I'm posting this as I think it deserves a separate thread to the other CS43131 threads. I know there have been reports in other threads of 'clicks' when using some of the CS43131 dongles but I think this is a different problem (or perhaps not!).
TLDR - My JC20 dongle seems to not be happy with a Raspberry Pi/Beaglebone and using 'mpd'. Maybe this information sheds light on some of the glitches people have reported with Windows PCs - or maybe it's a totally different problem - I don't know. But as far as I can tell - be careful if buying one of these devices to use it with a Raspberry Pi Zero or Beaglebone - the sound is glitchy to the point of being unusable. I don't have any of the "faster" Raspberry Pis to hand to test - I don't know if anyone else has success with this.
Details.........
I noticed that the JCally JC20 dongle I recently purchased occasionally glitched with my Android Pixel 6a phone- particularly during the change of track during 'gapless' playback but at other times - but mostly is usable.
I tried using the Raspberry Pi Zero that I've been using successfully with an Apple USB-C Headphone Dongle, and it mostly plays but glitches often enough to be unlistenable.
This machine hasn't been updated for quite a while, so thought perhaps the kernel (5.15.32+ #1538 Thu Mar 31 19:37:58 BST 2022 armv6l GNU/Linux) was old. I tried a Beaglebone black using the latest Debian image and this is far, far worse - unlistenable. The sound goes "Brrr-brrr-brrr" as though the dongle isn't receiving data quickly enough. The dongle seems to work OK on a desktop Linux machine running Ubuntu however so I don't think it's simply a Linux problem.
I don't really have a huge amount to add in posting this, other than to post my experiences in the hope perhaps it sheds light on some of these problems - or to warn anyone using a Raspberry Pi or Beaglebone that it doesn't seem to work "out of the box".
I sadly don't have enough Linux ALSA debugging knowledge, but perhaps someone out there finds this and a bulb lights up!
Further information provided in case it is useful...
I notice the reported 'packet size' is much smaller on the JC20 than the Apple device so I don't know if this a clue or not.
The device appears like this:
with kernel...
The other devices I have - Apple USB-C headphone adapter and "Labrodie" branded cheap dongle play fine.
On the working Apple device:
and
...but on the JC20 device:
It's playing using mpd with the config below. mpd is reported by 'top' as using about 5% CPU on the Beaglebone so I don't think it's a CPU limitation.
TLDR - My JC20 dongle seems to not be happy with a Raspberry Pi/Beaglebone and using 'mpd'. Maybe this information sheds light on some of the glitches people have reported with Windows PCs - or maybe it's a totally different problem - I don't know. But as far as I can tell - be careful if buying one of these devices to use it with a Raspberry Pi Zero or Beaglebone - the sound is glitchy to the point of being unusable. I don't have any of the "faster" Raspberry Pis to hand to test - I don't know if anyone else has success with this.
Details.........
I noticed that the JCally JC20 dongle I recently purchased occasionally glitched with my Android Pixel 6a phone- particularly during the change of track during 'gapless' playback but at other times - but mostly is usable.
I tried using the Raspberry Pi Zero that I've been using successfully with an Apple USB-C Headphone Dongle, and it mostly plays but glitches often enough to be unlistenable.
This machine hasn't been updated for quite a while, so thought perhaps the kernel (5.15.32+ #1538 Thu Mar 31 19:37:58 BST 2022 armv6l GNU/Linux) was old. I tried a Beaglebone black using the latest Debian image and this is far, far worse - unlistenable. The sound goes "Brrr-brrr-brrr" as though the dongle isn't receiving data quickly enough. The dongle seems to work OK on a desktop Linux machine running Ubuntu however so I don't think it's simply a Linux problem.
I don't really have a huge amount to add in posting this, other than to post my experiences in the hope perhaps it sheds light on some of these problems - or to warn anyone using a Raspberry Pi or Beaglebone that it doesn't seem to work "out of the box".
I sadly don't have enough Linux ALSA debugging knowledge, but perhaps someone out there finds this and a bulb lights up!
Further information provided in case it is useful...
I notice the reported 'packet size' is much smaller on the JC20 than the Apple device so I don't know if this a clue or not.
The device appears like this:
lsusbBus 001 Device 005: ID 262a:18c8 SAVITECH Corp. CS43131 HIFI Audiowith kernel...
uname -aLinux BeagleBone 6.12.28-bone26 #1 PREEMPT Thu May 29 17:50:58 UTC 2025 armv7l GNU/LinuxThe other devices I have - Apple USB-C headphone adapter and "Labrodie" branded cheap dongle play fine.
Bus 001 Device 007: ID 05ac:110a Apple, Inc. USB-C to 3.5mm Headphone Jack AdapterBus 001 Device 008: ID 3302:29c4 TTGK Technology USB-C AudioOn the working Apple device:
cat /proc/asound/card1/stream0 Apple, Inc. USB-C to 3.5mm Headphone Jack A at usb-musb-hdrc.1-1, full speed : USB AudioPlayback: Status: Running Interface = 1 Altset = 1 Packet Size = 288 Momentary freq = 48000 Hz (0x30.0000) Interface 1 Altset 1 Format: S24_3LE Channels: 2 Endpoint: 0x02 (2 OUT) (SYNC) Rates: 48000 - 48000 (continuous) Bits: 0 Channel map: FL FR Interface 1 Altset 2 Format: S16_LE Channels: 2 Endpoint: 0x02 (2 OUT) (SYNC) Rates: 48000 - 48000 (continuous) Bits: 0 Channel map: FL FRand
cat /proc/asound/card1/pcm0p/sub0/hw_params access: RW_INTERLEAVEDformat: S24_3LEsubformat: STDchannels: 2rate: 48000 (48000/1)period_size: 6000buffer_size: 24000...but on the JC20 device:
cat /proc/asound/card1/stream0 Shenzhen CBHT Technology Co., Ltd CS43131 HIFI Audio at usb-musb-hdrc.1-1, high : USB AudioPlayback: Status: Running Interface = 2 Altset = 2 Packet Size = 54 Momentary freq = 44320 Hz (0x5.8a41) Feedback Format = 16.16 Interface 2 Altset 1 Format: S16_LE Channels: 2 Endpoint: 0x03 (3 OUT) (ASYNC) Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000 Data packet interval: 125 us Bits: 16 Channel map: FL FR Sync Endpoint: 0x84 (4 IN) Sync EP Interface: 2 Sync EP Altset: 1 Implicit Feedback Mode: No Interface 2 Altset 2 Format: S24_3LE Channels: 2 Endpoint: 0x03 (3 OUT) (ASYNC) Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000 Data packet interval: 125 us Bits: 24 Channel map: FL FR Sync Endpoint: 0x84 (4 IN) Sync EP Interface: 2 Sync EP Altset: 2 Implicit Feedback Mode: No Interface 2 Altset 3 Format: S32_LE Channels: 2 Endpoint: 0x03 (3 OUT) (ASYNC) Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000 Data packet interval: 125 us Bits: 32 Channel map: FL FR Sync Endpoint: 0x84 (4 IN) Sync EP Interface: 2 Sync EP Altset: 3 Implicit Feedback Mode: No Interface 2 Altset 4 Format: SPECIAL Channels: 2 Endpoint: 0x03 (3 OUT) (ASYNC) Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000 Data packet interval: 125 us Bits: 32 DSD raw: DOP=0, bitrev=0 Channel map: FL FR Sync Endpoint: 0x84 (4 IN) Sync EP Interface: 2 Sync EP Altset: 4 Implicit Feedback Mode: No cat /proc/asound/card1/pcm0p/sub0/hw_params access: RW_INTERLEAVEDformat: S24_3LEsubformat: STDchannels: 2rate: 44100 (44100/1)period_size: 5513buffer_size: 22050It's playing using mpd with the config below. mpd is reported by 'top' as using about 5% CPU on the Beaglebone so I don't think it's a CPU limitation.
cat /etc/mpd.confaudio_output { type "alsa" name "CS43131 Dongle" device "hw:1,0" # DSD stuff from https://help.nativedsd.com/en/articles/6948867-playing-dsd-files-on-linux #auto_resample "no" #auto_channels "no" #auto_format "no" # dop "yes" # Don't enable DoP unless you know you need it}