[Jackaudio] Can't start with laptop speakers on Thinkpad Carbon X1 7th Gen and Ubuntu 20.04

Dan Zink sludgefree at gmail.com
Sun Sep 13 08:40:44 CEST 2020


Hello again,

I've got a solution. The period that this driver uses is an EXTREMELY
non-standard 1008 samples.

I discovered this by making a dummy jackd server and adding the card
manually via alsa_in:

[19:36:16]daniel at daniel-ThinkPad-X1-Carbon-7th:~>
$alsa_in -d hw:CARD=sofhdadsp,DEV=0 -r 48000
WARNING: buffer size does not match: (requested 2048, got 2040)
WARNING: period size does not match: (requested 1024, got 1008)
selected sample format: 32bit
delay = 4208
delay = 1022

Anyway, the solution here is to use a period of 1008. This can be assigned
in qjackctl by typing it in instead of using the dropdown, or via cli with
the `--period 1008` option.

Some audio applications will need additional config. For example,
supercollider requires a 2^n block size that is a factor of the sample
rate. This can be achieved by executing `s.options.blockSize = 16;` before
booting the server.

Other than the bizarre period, most of the defaults work quite well.
Obviously this can be tuned, but at a bare minimum, jackd can be
successfully started on my machine via:

[02:37:47]daniel at daniel-ThinkPad-X1-Carbon-7th
:/usr/lib/firmware/intel/sof-tplg>
$jackd -d alsa --period 1008

On Sat, Sep 12, 2020 at 7:45 PM Dan Zink <sludgefree at gmail.com> wrote:

> Hi all,
>
> I made some headway on this, I was able to start Jack, but... this is the
> weirdest thing I've ever seen with hardware audio:
>
> I had to make the period size 1008 samples - not 1024, etc.
>
> I discovered this number by running Jack starting with the dummy server,
> like: `jackd -d dummy` and then adding the alsa_in device, like: `alsa_in
> -d hw:CARD=sofhdadsp,DEV=0 -r 48000`
>
> alsa_in -d hw:CARD=sofhdadsp,DEV=0 -r 48000
> WARNING: buffer size does not match: (requested 2048, got 2040)
> WARNING: period size does not match: (requested 1024, got 1008)
> selected sample format: 32bit
> delay = 4208
>
> So starting up jackd like: `jackd -d alsa --period=1008` boots, but the
> sound is horrible from SuperCollider.
>
> Is there any way to update my sound card to use a more standard period
> size? Or am I out of luck here? That buffer size is also very... unusual.
>
>
> On Mon, Sep 7, 2020 at 5:10 PM Dan Zink <sludgefree at gmail.com> wrote:
>
>> Hello all,
>>
>> Sometimes I want to use jackd with the laptop speakers or headphones,
>> instead of my audio interface. I can't get it to start on my new laptop
>> (using the audio interface works perfectly, thanks community :) ).
>>
>> I've successfully and mostly painlessly gotten jackd working on a few
>> different machines, but this one has me stumped. I'm going to try to
>> document as much as I can here so please forgive me if I miss something.
>>
>>
>> I'm using this version of jackd
>>
>> $jackd -V
>> jackdmp version 1.9.12 tmpdir /dev/shm protocol 8
>>
>>
>>
>> and this version of Ubuntu:
>>
>> $uname -a
>> Linux daniel-ThinkPad-X1-Carbon-7th 5.4.0-45-generic #49-Ubuntu SMP Wed
>> Aug 26 13:38:52 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
>>
>>
>>
>> Starting up selecting the first device under `aplay` throws this error
>> (using -R instead of -r doesn't seem to affect very much):
>>
>> $jackd --verbose -r -P 80 -d alsa -d hw:sofhdadsp,0
>> jackdmp 1.9.12
>> Copyright 2001-2005 Paul Davis and others.
>> Copyright 2004-2016 Grame.
>> Copyright 2016-2017 Filipe Coelho.
>> jackdmp comes with ABSOLUTELY NO WARRANTY
>> This is free software, and you are welcome to redistribute it
>> under certain conditions; see the file COPYING for details
>> no message buffer overruns
>> no message buffer overruns
>> no message buffer overruns
>> JACK server starting in non-realtime mode
>> self-connect-mode is "Don't restrict self connect requests"
>> Jack: JackPosixThread::StartImp : create non RT thread
>> Jack: JackPosixThread::ThreadHandler : start
>> Jack: playback device hw:sofhdadsp,0
>> Jack: capture device hw:sofhdadsp,0
>> Jack: JackDriver::Open capture_driver_name = hw:sofhdadsp,0
>> Jack: JackDriver::Open playback_driver_name = hw:sofhdadsp,0
>> Jack: Check protocol client = 8 server = 8
>> Jack: JackEngine::ClientInternalOpen: name = system
>> Jack: JackEngine::AllocateRefNum ref = 0
>> Jack: JackLinuxFutex::Allocate name = jack_sem.1000_default_system val = 0
>> Jack: JackEngine::NotifyAddClient: name = system
>> Jack: JackGraphManager::SetBufferSize size = 1024
>> Jack: JackConnectionManager::DirectConnect first: ref1 = 0 ref2 = 0
>> Jack: JackGraphManager::ConnectRefNum cur_index = 0 ref1 = 0 ref2 = 0
>> Jack: JackDriver::SetupDriverSync driver sem in flush mode
>> audio_reservation_init
>> Acquire audio card Audio0
>> creating alsa driver ...
>> hw:sofhdadsp,0|hw:sofhdadsp,0|1024|2|48000|0|0|nomon|swmeter|-|32bit
>> configuring for 48000Hz, period = 1024 frames (21.3 ms), buffer = 2
>> periods
>> ALSA: final selected sample format for capture: 32bit integer
>> little-endian
>> ALSA: cannot set period size to 1024 frames for capture
>> ALSA: cannot configure capture channel
>> Jack: JackDriver::Close
>> Jack: JackConnectionManager::DirectDisconnect last: ref1 = 0 ref2 = 0
>> Jack: JackGraphManager::DisconnectRefNum cur_index = 0 ref1 = 0 ref2 = 0
>> Jack: JackEngine::ClientInternalClose ref = 0
>> Jack: JackEngine::ClientCloseAux ref = 0
>> Jack: JackGraphManager::RemoveAllPorts ref = 0
>> Released audio card Audio0
>> audio_reservation_finish
>> Jack: ~JackDriver
>> Cannot initialize driver
>> Jack: no message buffer overruns
>> Jack: JackPosixThread::Stop
>> Jack: JackPosixThread::ThreadHandler : exit
>> JackServer::Open failed with -1
>> Jack: Succeeded in unlocking 82280346 byte memory area
>> Jack: JackShmMem::delete size = 0 index = 0
>> Jack: ~JackDriver
>> Jack: Succeeded in unlocking 1187 byte memory area
>> Jack: JackShmMem::delete size = 0 index = 1
>> Jack: Cleaning up shared memory
>> Jack: Cleaning up files
>> Jack: Unregistering server `default'
>> Failed to open server
>>
>>
>>
>> Using a dummy server succeeds:
>>
>> $jackd -r -P 80 -d dummy
>> jackdmp 1.9.12
>> Copyright 2001-2005 Paul Davis and others.
>> Copyright 2004-2016 Grame.
>> Copyright 2016-2017 Filipe Coelho.
>> jackdmp comes with ABSOLUTELY NO WARRANTY
>> This is free software, and you are welcome to redistribute it
>> under certain conditions; see the file COPYING for details
>> no message buffer overruns
>> no message buffer overruns
>> no message buffer overruns
>> JACK server starting in non-realtime mode
>> self-connect-mode is "Don't restrict self connect requests"
>>
>>
>>
>> When I list my devices (with the interface unplugged), with aplay -l I
>> get:
>>
>> $aplay -l
>> **** List of PLAYBACK Hardware Devices ****
>> card 0: sofhdadsp [sof-hda-dsp], device 0: HDA Analog (*) []
>>   Subdevices: 0/1
>>   Subdevice #0: subdevice #0
>> card 0: sofhdadsp [sof-hda-dsp], device 1: HDA Digital (*) []
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> card 0: sofhdadsp [sof-hda-dsp], device 3: HDMI1 (*) []
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> card 0: sofhdadsp [sof-hda-dsp], device 4: HDMI2 (*) []
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>> card 0: sofhdadsp [sof-hda-dsp], device 5: HDMI3 (*) []
>>   Subdevices: 1/1
>>   Subdevice #0: subdevice #0
>>
>>
>>
>> here's the relevant lsmod:
>>
>> $lsmod | grep snd
>> snd_seq_dummy          16384  0
>> snd_usb_audio         266240  0
>> snd_usbmidi_lib        36864  1 snd_usb_audio
>> snd_seq_midi           20480  0
>> snd_seq_midi_event     16384  1 snd_seq_midi
>> snd_seq                69632  3
>> snd_seq_midi,snd_seq_midi_event,snd_seq_dummy
>> snd_rawmidi            36864  2 snd_seq_midi,snd_usbmidi_lib
>> snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
>> snd_hda_intel          53248  0
>> mc                     53248  5
>> videodev,snd_usb_audio,videobuf2_v4l2,uvcvideo,videobuf2_common
>> snd_soc_skl_hda_dsp    24576  6
>> snd_hda_codec_hdmi     61440  1
>> snd_soc_hdac_hdmi      36864  1 snd_soc_skl_hda_dsp
>> snd_hda_codec_realtek   126976  1
>> snd_hda_codec_generic    81920  1 snd_hda_codec_realtek
>> snd_soc_dmic           16384  1
>> snd_sof_pci            20480  2
>> snd_sof_intel_hda_common    69632  1 snd_sof_pci
>> snd_soc_hdac_hda       24576  1 snd_sof_intel_hda_common
>> snd_sof_intel_hda      20480  1 snd_sof_intel_hda_common
>> snd_sof_intel_byt      20480  1 snd_sof_pci
>> snd_sof_intel_ipc      20480  1 snd_sof_intel_byt
>> snd_sof               106496  4
>> snd_sof_pci,snd_sof_intel_hda_common,snd_sof_intel_byt,snd_sof_intel_ipc
>> snd_sof_xtensa_dsp     16384  1 snd_sof_pci
>> snd_hda_ext_core       28672  4
>> snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_soc_hdac_hda,snd_sof_intel_hda
>> snd_soc_acpi_intel_match    32768  2 snd_sof_pci,snd_sof_intel_hda_common
>> snd_soc_acpi           16384  2 snd_sof_pci,snd_soc_acpi_intel_match
>> snd_soc_core          245760  6
>> snd_sof,snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_soc_hdac_hda,snd_soc_dmic,snd_soc_skl_hda_dsp
>> snd_compress           24576  1 snd_soc_core
>> ac97_bus               16384  1 snd_soc_core
>> snd_pcm_dmaengine      16384  1 snd_soc_core
>> snd_intel_dspcfg       24576  3
>> snd_hda_intel,snd_sof_pci,snd_sof_intel_hda_common
>> snd_hda_codec         131072  6
>> snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek,snd_soc_hdac_hda,snd_soc_skl_hda_dsp
>> snd_hda_core           90112  11
>> snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_hda_codec_realtek,snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_soc_hdac_hda,snd_sof_intel_hda,snd_soc_skl_hda_dsp
>> snd_hwdep              20480  2 snd_usb_audio,snd_hda_codec
>> snd_pcm               106496  11
>> snd_hda_codec_hdmi,snd_hda_intel,snd_usb_audio,snd_hda_codec,snd_sof,snd_sof_intel_hda_common,snd_soc_hdac_hdmi,snd_soc_core,snd_hda_core,snd_pcm_dmaengine
>> ledtrig_audio          16384  4
>> snd_hda_codec_generic,snd_hda_codec_realtek,snd_sof,thinkpad_acpi
>> snd_timer              36864  2 snd_seq,snd_pcm
>> snd                    90112  28
>> snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_compress,thinkpad_acpi,snd_soc_core,snd_pcm,snd_soc_skl_hda_dsp,snd_rawmidi
>> soundcore              16384  1 snd
>>
>>
>>
>> And finally, the lspci
>>
>> $sudo lspci
>> 00:00.0 Host bridge: Intel Corporation Coffee Lake HOST and DRAM
>> Controller (rev 0c)
>> 00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620
>> (Whiskey Lake) (rev 02)
>> 00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200
>> v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 0c)
>> 00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500
>> v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model
>> 00:12.0 Signal processing controller: Intel Corporation Cannon Point-LP
>> Thermal Controller (rev 11)
>> 00:14.0 USB controller: Intel Corporation Cannon Point-LP USB 3.1 xHCI
>> Controller (rev 11)
>> 00:14.2 RAM memory: Intel Corporation Cannon Point-LP Shared SRAM (rev 11)
>> 00:14.3 Network controller: Intel Corporation Cannon Point-LP CNVi
>> [Wireless-AC] (rev 11)
>> 00:15.0 Serial bus controller [0c80]: Intel Corporation Cannon Point-LP
>> Serial IO I2C Controller #0 (rev 11)
>> 00:15.1 Serial bus controller [0c80]: Intel Corporation Cannon Point-LP
>> Serial IO I2C Controller #1 (rev 11)
>> 00:16.0 Communication controller: Intel Corporation Cannon Point-LP MEI
>> Controller #1 (rev 11)
>> 00:1d.0 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root
>> Port #9 (rev f1)
>> 00:1d.4 PCI bridge: Intel Corporation Cannon Point-LP PCI Express Root
>> Port #13 (rev f1)
>> 00:1f.0 ISA bridge: Intel Corporation Cannon Point-LP LPC Controller (rev
>> 11)
>> 00:1f.3 Audio device: Intel Corporation Cannon Point-LP High Definition
>> Audio Controller (rev 11)
>> 00:1f.4 SMBus: Intel Corporation Cannon Point-LP SMBus Controller (rev 11)
>> 00:1f.5 Serial bus controller [0c80]: Intel Corporation Cannon Point-LP
>> SPI Controller (rev 11)
>> 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (6)
>> I219-V (rev 11)
>> 03:00.0 Non-Volatile memory controller: Sandisk Corp WD Black 2018/PC
>> SN720 NVMe SSD
>>
>>
>> Has anyone else succeeded in getting jackd running with this particular
>> hardware? Thanks!
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.linuxaudio.org/archives/jackaudio/attachments/20200913/5faba507/attachment-0001.html>


More information about the JackAudio mailing list