GithubHelp home page GithubHelp logo

takaswie / linux-firewire-dkms Goto Github PK

View Code? Open in Web Editor NEW
39.0 16.0 8.0 5.9 MB

Currently this repository is maintained for Linux firewire subsystem and unit drivers.

Home Page: http://ieee1394.docs.kernel.org/

Makefile 0.32% C 99.68%
ieee1394 linux subsystem

linux-firewire-dkms's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

linux-firewire-dkms's Issues

mic Input no longer avasilable after upgrading to ubuntu 22.10

My ultralite mk3 was working fine with this driver, the input mic was detected and usable - after upgrading to ubuntu 22.10 the device is still listed in my audio settings - but no signal is arriving from the microphone. I tested wiring connections and hardware settings on windows - all seems to work properly.

Any clue on how to debug the issue?
Thanks!!!

M-Audio ProFire Lightbridge: Kernel panic

Trying to revive old "M-Audio ProFire LightBridge" interface.

It's attached using adat to one PreSonus Digimax FS (I also have a Behringer Ultragain Pro-8 and an Expert Sleepers ES-3 with adat)
no-name Firewire pci-e interface (VIA VT6307 + asmedia asm1083 ICs)
motherboard is an ASRock Phantom Gaming 4 / AMD X570
CPU is a Ryzen 7 3700x
RAM is 2x16GB Corsair CMK32GX4M2B3200C16

uname -a
Linux debian 5.10.0-8-amd64 #1 SMP Debian 5.10.46-1 (2021-06-24) x86_64 GNU/Linux

lspci |grep -i firewire
05:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev 80)

I get a Kernel Panic when I turn on the "M-Audio ProFire LightBridge".

[ 96.930836] mce: [Hardware Error]: CPU 6: Machine Check Exception: 7 Bank 0: bc002800000c0135
[ 96.930837] mce: [Hardware Error]: RIP 10:ffffffffc025b08a> {get_cycle_time+0x2a/0x120 [firewire_ohci]}
[ 96.930838] mce: [Hardware Error]: TSC 69e4ebbb40 ADDR fc7000c0 MISC d01a0ffe00000000 IPID b000000000
[ 96.930840] mce: [Hardware Error]: PROCESSOR 2:870f10 TIME 1626800481 SOCKET 0 APIC c microcode 8701021
[ 96.930840] Kernel panic - not syncing: Fatal local machine check
[ 96.931077] Kernel Offset: 0x2b000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)

The "M-Audio ProFire LightBridge" using the M-Audio drivers for windows 7 SP1 (released 06/02/2012):
Using the M-Audio system-tray tool, I can set the sample rate and sync and the LED's change accordingly on the ProFire.
But when i try sending audio to it, windows crashes.
https://m-audio.com/support/download/drivers/firewire-installer-6.0.4-driver-5.10.0.5061

I don't have other firewire devices for testing the VIA firewire adapter.

Am I missing something obvious?
Any tips on how to proceed ?

Thank you for your contributions to the community.

fireface 802: too much latency with pipewire

Hello Takashi,
I try to use the fireface 802 on Fedora 37 (Linux 6.1.14) with pipewire (0.3.66).

Pipewire config .config/pipewire/pipewire.conf.d/10-clock-quantum.conf :

context.properties = {
        default.clock.quantum       = 256
}

The roundtrip latency measured with jack_iodelay:

new playback latency: [256, 256]
4753.261 frames     99.026 ms total roundtrip latency
extra loopback latency: 4241 frames

This 99,026ms latency makes it unsuable to play instruments.

(for comparaison : in usb the roundtrip latency is 26.123 ms)


I tried to follow the instructions here
and modified /usr/share/wireplumber/main.lua.d/50-alsa-config.lua, alsa_monitor.rules:

  {
    matches = {
      {
        -- Matches the rme fireface
        { "device.name", "matches", "alsa_card.firewire-*"},
      },
    },
    apply_properties = {
      ["api.alsa.period-size"]   = 256,
      ["api.alsa.period-num"]    = 3,
    },
  },

But it does not change anything.

How is it possible to fix the latency?

Dice works partially [Broken]

Hi Takashi, I am a user of TC Electronic DesktopKonnekt6 and latest kernel update 3.19.2 add partial support for my device and thus broke my usual sound workflow. So i want to make good bug report to make device usable on latest kernels.

With 3.19.2 kernel device is successfully recognized by system and even sometimes can play sound(!). But always, after some time sound is breaks (usually after 30-90 seconds) and to restore it i must restart pulseaudio(v6.0) and application. So device becomes unusable on latests kernels.
Earlier i use my sound card through ffado + jackdbus + pulseaudio. Now it's impossible, so i have to downgrade kernel.

I write bug-report here because if you make some patches i can test it with dkms as soon as you commit them.
Please request any additional info that you need to fix problem and i will post it here soon.

Related bug(not mine):
https://bugs.archlinux.org/task/44258

Some useful info:

cat /proc/asound/cards
 0 [DesktopKonnekt6]: DICE - DesktopKonnekt6
                      TC Electronic DesktopKonnekt6 (serial 12941) at fw1.0, S400

cat /proc/asound/card0/dice 
sections:                                                                                                                                                                 
  global: offset 10, size 90
  tx: offset 100, size 142
  rx: offset 242, size 282
  ext_sync: offset 524, size 4
  unused2: offset 0, size 0
global:
  owner: ffc1:000100000000
  notification: 00000040
  nick name: DesktopKonnekt6
  clock select: internal 44100
  enable: 1
  status: locked 44100
  ext status: 00000000
  sample rate: 44100
  version: 1.0.4.0
  clock caps: 44100 48000 88200 96000 176400 192000 arx1 arx2 internal
  clock source names: Unused\Unused\Unused\Unused\Unused\Unused\Unused\Unused\Unused\Unused\Unused\Unused\INTERNAL\\
tx 0:
  iso channel: 0
  audio channels: 6
  midi ports: 0
  speed: S400
  names: ch 1\ch 2\ - \ - \ - \ - \\
  ac3 caps: 00000000
  ac3 enable: 00000000
rx 0:
  iso channel: 1
  sequence start: 0
  audio channels: 6
  midi ports: 0
  names: main out 1\main out 2\phones out 1\phones out 2\ - \ - \\
  ac3 caps: 00000000
  ac3 enable: 00000000
ext status:
  clock source: internal
  locked: 1
  rate: 44100
  adat user data: 0

M-Audio ProFire Lightbridge: Discontinous errors

Hi,

News - New kernel - no panic.

That sounds good. As long as I know, many users of Ryzen Zen 2 SoC encounter the similar issue. I guess it comes from the other part of functions irrelevant to IEEE 1394 bus and M-Audio ProFire Lightbridge.

Anyway the kernel panic issue is fixed in your side. Let you close the issue and file another one for the discontinuous issue.

Originally posted by @takaswie in #36 (comment)

Firewire MOTU 8-PRE: sound output is VERY distorted

Hey, I just tried the recent kernels and the alsa snd-firewire-motu because I have a couple of MOTU 8-PRE in our rehearsal room. I had good stuff with ffado / jack but I wanted to make it simpler and try your ALSA driver and run without jack.

Setup was a no brainer, but man, the sound coming out is ear-breaking! Sometimes I will hear the real deal, but after a few seconds it degenrates into a loud noise that can't recover. The 1st time I used the driver, it almost made me deaf!

Another issue: the channel indexing seems completely wrong, output should come out of Main 1 + 2, but it does from 3 + 4. Input channel indexing is also wrong. I plug something on h/w channel 1 but get the stream on s/w input 3.

When reading your emails / READMEs, I take it that you tried the driver on an 8-PRE, but if you managed to make it work fine, I can tell you it does not at all with mine. FFADO has no issue though, so it must be the ALSA driver. I am not sure how I can help but I am used to linux and troubleshooting things. If you can point me in the right direction, I can find some time to do it. I really hope this can be fixed and improved further because I really want to ditch ffado / jack so that I can switch eventually to pipewire. Thanks for the hard work!

Sample rate problem with Terratec Phase 88

I have set the sample rate to 48000 with ffado-mixer and tried to play a 44100 sound file, and got an error. Now no matter if I set the sample rate back to 44100 I get the same error.

aplay -vv -Dplughw:0,0 test.wav 
Playing WAVE 'test' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
aplay: set_params:1297: Unable to install hw params:
ACCESS:  RW_INTERLEAVED
FORMAT:  S16_LE
SUBFORMAT:  STD
SAMPLE_BITS: 16
FRAME_BITS: 32
CHANNELS: 2
RATE: 44100
PERIOD_TIME: (46439 46440)
PERIOD_SIZE: 2048
PERIOD_BYTES: 8192
PERIODS: 4
BUFFER_TIME: (185759 185760)
BUFFER_SIZE: 8192
BUFFER_BYTES: 32768
TICK_TIME: 0
$ cat /proc/asound/card0/firewire/clock
Sampling rate: 44100
Clock Source: Internal

Periodic interrupts with MOTU 828mk3

I am experiencing an issue with my MOTU 828mk3 (JACK2 with ALSA backend).
A periodic xrun occurs every now and then and the interval seems to be dependent on the buffer size.

During all of the following tests, sample rate and nperiods have been set to 192000/3.
For some reason I can not set lower sample rate values. [1]
Only the buffer size has been changed after each test. Please consider the corresponding intervals.

$ tail -f ~/.log/jack/jackdbus.log | grep alsa_pcm

buffer size: 2048 (~349s interval between xruns):

Thu Apr 30 10:27:38 2020: Jack: **** alsa_pcm: xrun of at least 0.061 msecs
Thu Apr 30 10:33:32 2020: Jack: **** alsa_pcm: xrun of at least 0.042 msecs
Thu Apr 30 10:39:25 2020: Jack: **** alsa_pcm: xrun of at least 0.056 msecs
Thu Apr 30 10:45:09 2020: Jack: **** alsa_pcm: xrun of at least 0.057 msecs
Thu Apr 30 10:50:55 2020: Jack: **** alsa_pcm: xrun of at least 0.061 msecs

buffer size: 1024 (~344s interval between xruns):

Thu Apr 30 11:29:36 2020: Jack: **** alsa_pcm: xrun of at least 0.061 msecs
Thu Apr 30 11:35:23 2020: Jack: **** alsa_pcm: xrun of at least 0.061 msecs
Thu Apr 30 11:41:09 2020: Jack: **** alsa_pcm: xrun of at least 0.057 msecs
Thu Apr 30 11:46:53 2020: Jack: **** alsa_pcm: xrun of at least 0.053 msecs
Thu Apr 30 11:52:35 2020: Jack: **** alsa_pcm: xrun of at least 0.058 msecs

buffer size: 512 (~81s interval between xruns):

Thu Apr 30 11:56:43 2020: Jack: **** alsa_pcm: xrun of at least 0.060 msecs
Thu Apr 30 11:58:04 2020: Jack: **** alsa_pcm: xrun of at least 0.062 msecs
Thu Apr 30 11:59:27 2020: Jack: **** alsa_pcm: xrun of at least 0.059 msecs
Thu Apr 30 12:00:47 2020: Jack: **** alsa_pcm: xrun of at least 0.061 msecs
Thu Apr 30 12:02:10 2020: Jack: **** alsa_pcm: xrun of at least 0.061 msecs

buffer size: 256 (~81s interval between xruns):

Thu Apr 30 12:11:49 2020: Jack: **** alsa_pcm: xrun of at least 0.060 msecs
Thu Apr 30 12:13:11 2020: Jack: **** alsa_pcm: xrun of at least 0.059 msecs
Thu Apr 30 12:14:31 2020: Jack: **** alsa_pcm: xrun of at least 0.050 msecs
Thu Apr 30 12:15:53 2020: Jack: **** alsa_pcm: xrun of at least 0.062 msecs
Thu Apr 30 12:17:14 2020: Jack: **** alsa_pcm: xrun of at least 0.060 msecs

buffer size: 128 (~15s interval between xruns):

Thu Apr 30 12:20:49 2020: Jack: **** alsa_pcm: xrun of at least 0.064 msecs
Thu Apr 30 12:21:05 2020: Jack: **** alsa_pcm: xrun of at least 0.052 msecs
Thu Apr 30 12:21:27 2020: Jack: **** alsa_pcm: xrun of at least 0.062 msecs
Thu Apr 30 12:21:43 2020: Jack: **** alsa_pcm: xrun of at least 0.065 msecs
Thu Apr 30 12:21:59 2020: Jack: **** alsa_pcm: xrun of at least 0.066 msecs

I know that this messages does not contain very accurate timestamps, but they might be of some help, since $ dmesg -w was completely silent about the interrupts. [2]

[1] Trying to initialize the interface at other sample rates usually causes the following error:

[ 8294.188278] firewire_ohci 0000:03:00.3: DMA context IT0 has stopped, error code: evt_timeout

Power-cycling the interface and reloading firewire-ohci and snd-firewire-motu might not be enough to get it back working. It seems like JACK is unable to reinitialize the server until I reboot my laptop. At that point, if I try to manually start jackd with sample rate parameters, the sample rate LEDs on the interface change accordingly. Sometimes I can even hear a high-pitched signal while trying to initialize the JACK server with low sample rate settings. However, I usually rely on the JACK2's dbus system by executing jack_control commands.

I have also noticed that jack has to be started in synchronous mode, which is not a default option for JACK2. Otherwise the interval between xruns seems to be the same, but they are a lot more... like hundreds. Realtime priorities does not seem to make a change.

The tests above were performed from within a tty, without a graphical environment. I have disabled services like systemd-timesyncd, removed network modules and so on.

CPU scaling governor was set to performance. Both /sys/class/rtc/rtc0/max_user_freq and /sys/class/rtc/rtc0/max_user_freq are set to 2048. I have also tried running different kernels, distributions and so on, but things are usually worse.

[2] I have recompiled linux (without the realtime kernel patchset) and enabled CONFIG_SND_PCM_XRUN_DEBUG, CONFIG_SND_VERBOSE_PROCFS, CONFIG_SND_DEBUG. Here's some relevant output from dmesg that occured after a single xrun.

[  +0.000006] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 5.6.8-arch1-1-custom #1
[  +0.000002] Hardware name: LENOVO 4236QZ0/4236QZ0, BIOS CBET4000 4.11-2096-g5b06ffea56-dirty 04/07/2020
[  +0.000001] Call Trace:
[  +0.000005]  <IRQ>
[  +0.000018]  dump_stack+0x66/0x90
[  +0.000009]  __snd_pcm_xrun.cold+0x5/0xa [snd_pcm]
[  +0.000005]  snd_pcm_update_state+0x103/0x110 [snd_pcm]
[  +0.000003]  snd_pcm_update_hw_ptr0+0x24f/0x7b0 [snd_pcm]
[  +0.000003]  ? ohci_flush_iso_completions+0x116/0x150 [firewire_ohci]
[  +0.000004]  snd_pcm_period_elapsed+0x75/0xa0 [snd_pcm]
[  +0.000003]  tasklet_action_common.isra.0+0x5f/0x130
[  +0.000002]  __do_softirq+0x111/0x34d
[  +0.000002]  irq_exit+0xac/0xd0
[  +0.000001]  do_IRQ+0x89/0x140
[  +0.000002]  common_interrupt+0xf/0xf
[  +0.000001]  </IRQ>
[  +0.000002] RIP: 0010:cpuidle_enter_state+0xc9/0x410
[  +0.000002] Code: e8 bc 62 95 ff 80 7c 24 0f 00 74 17 9c 58 0f 1f 44 00 00 f6 c4 02 0f 85 1c 03 00 00 31 ff e8 4e da 9b ff fb 66 0f 1f 44 00 00 <45> 85 ed 0f 88 72 02 00 00 49 63 d5 4c 2b 64 24 10 48 8d 04 52 48
[  +0.000000] RSP: 0018:ffffafb0800abe68 EFLAGS: 00000246 ORIG_RAX: ffffffffffffffdd
[  +0.000002] RAX: ffff8ab3eb6c0000 RBX: ffff8ab3eb6f6400 RCX: 000000000000001f
[  +0.000000] RDX: 0000000000000000 RSI: 000000003164062c RDI: 0000000000000000
[  +0.000001] RBP: ffffffffb94c99c0 R08: 00000094d68ef808 R09: 000000000000019f
[  +0.000000] R10: 0000000000000889 R11: ffff8ab3eb6ebce4 R12: 00000094d68ef808
[  +0.000001] R13: 0000000000000005 R14: 0000000000000005 R15: ffff8ab3ea660000
[  +0.000003]  ? cpuidle_enter_state+0xa4/0x410
[  +0.000002]  cpuidle_enter+0x29/0x40
[  +0.000002]  do_idle+0x1e6/0x270
[  +0.000002]  cpu_startup_entry+0x19/0x20
[  +0.000002]  start_secondary+0x186/0x1d0
[  +0.000002]  secondary_startup_64+0xb6/0xc0
[  +0.001095] ALSA: PCM: [Q] Lost interrupts?: (stream=0, delta=224, new_hw_ptr=224, old_hw_ptr=0)
[  +0.000002] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 5.6.8-arch1-1-custom #1
[  +0.000000] Hardware name: LENOVO 4236QZ0/4236QZ0, BIOS CBET4000 4.11-2096-g5b06ffea56-dirty 04/07/2020
[  +0.000001] Call Trace:
[  +0.000001]  <IRQ>
[  +0.000002]  dump_stack+0x66/0x90
[  +0.000005]  snd_pcm_update_hw_ptr0.cold+0x3d/0xef [snd_pcm]
[  +0.000003]  ? ohci_flush_iso_completions+0x116/0x150 [firewire_ohci]
[  +0.000004]  snd_pcm_period_elapsed+0x75/0xa0 [snd_pcm]
[  +0.000002]  tasklet_action_common.isra.0+0x5f/0x130
[  +0.000002]  __do_softirq+0x111/0x34d
[  +0.000002]  irq_exit+0xac/0xd0
[  +0.000001]  do_IRQ+0x89/0x140
[  +0.000002]  common_interrupt+0xf/0xf
[  +0.000000]  </IRQ>
[  +0.000002] RIP: 0010:cpuidle_enter_state+0xc9/0x410
[  +0.000001] Code: e8 bc 62 95 ff 80 7c 24 0f 00 74 17 9c 58 0f 1f 44 00 00 f6 c4 02 0f 85 1c 03 00 00 31 ff e8 4e da 9b ff fb 66 0f 1f 44 00 00 <45> 85 ed 0f 88 72 02 00 00 49 63 d5 4c 2b 64 24 10 48 8d 04 52 48
[  +0.000001] RSP: 0018:ffffafb0800abe68 EFLAGS: 00000246 ORIG_RAX: ffffffffffffffdd
[  +0.000001] RAX: ffff8ab3eb6c0000 RBX: ffff8ab3eb6f6400 RCX: 000000000000001f
[  +0.000001] RDX: 0000000000000000 RSI: 000000003164062c RDI: 0000000000000000
[  +0.000000] RBP: ffffffffb94c99c0 R08: 00000094d6a1c341 R09: 00000000000001ce
[  +0.000001] R10: 0000000000000123 R11: ffff8ab3eb6ebce4 R12: 00000094d6a1c341
[  +0.000000] R13: 0000000000000003 R14: 0000000000000003 R15: ffff8ab3ea660000
[  +0.000003]  ? cpuidle_enter_state+0xa4/0x410
[  +0.000002]  cpuidle_enter+0x29/0x40
[  +0.000002]  do_idle+0x1e6/0x270
[  +0.000002]  cpu_startup_entry+0x19/0x20
[  +0.000002]  start_secondary+0x186/0x1d0
[  +0.000002]  secondary_startup_64+0xb6/0xc0

I feel like all of this might not be related to my system, but the internal clock of the interface. Any ideas?

system details:
laptop: Lenovo Thinkpad T420
CPU: Intel i7-3720QM
FireWire chip: Ricoh R5C832
OS: Arch Linux (linux-rt 5.6.4-rt3-1-rt)

Question...

I see Tascam in the read me list. Does this work with the IF/FW or IF/FW mkii cards for Tascam DM4800 and DM3200 mixers?

Problem with M-AUDIO FW410(snd-bebob) on 4.13 kernel

I'm on Arch Linux and for the module to compile I have to remove the <target/target_core_base.h> and <target/target_core_backed.h> from backport.h because the headers package for arch doesn't include those.
backport.h.4.9.txt
On 4.13 I also change the <linux/sched/signal.h> to <linux/signal.h>.
backport.h.4.13.txt
After doing that it gets compiled correctly.

As detailed here for my sound card to work the bootloader must load the firmware during boot up. The sound card also stops working randomly, so it must be reloaded again when that happens.

Following the above steps everything worked perfectly, both on the 4.12 kernel and the 4.9 lts kernel. It booted up correctly and it reset itself after a crash.
But on the 4.13 kernel, while my sound card works after boot up it will not reset itself after it crashes.
These are my dmesg logs:
dmesg-grep-firewire.txt
dmesg-grep-bebob.txt
I assume the crash happened right at 3733.744; everything worked fine until then

FireFace800 buffer freezes

Hello,
I'm using a FireFace 800 on manjaro and I have an issue.
When I play back audio for an extended period of time, at a random point between 30 seconds and 3 minutes the audio buffer will freeze and be repeated until 5 to 15 seconds after I stop any playback on the computer. Then I can use the interface again.
What I tried that made no difference:
low latency (preempt) or real time kernel
switching to pipewire and pipewire-jack
using pulseaudio, jack or alsa as the source protocol

dmesg --follow gives me no new events when the freeze happens

lsmod | grep snd_fireface gives me:

snd_fireface           40960  0
snd_firewire_lib       57344  2 snd_fireface,snd_dice
snd_rawmidi            45056  4 snd_seq_midi,snd_firewire_lib,snd_fireface,snd_dice
snd_hwdep              16384  3 snd_hda_codec,snd_fireface,snd_dice
snd_pcm               159744  7 snd_hda_codec_hdmi,snd_hda_intel,snd_firewire_lib,snd_hda_codec,snd_fireface,snd_hda_core,snd_dice
snd                   118784  15 snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_fireface,snd_timer,snd_pcm,snd_dice,snd_rawmidi
firewire_core          81920  14 snd_firewire_lib,snd_fireface,firewire_ohci,snd_dice

readlink -f /sys/bus/firewire/devices/fw1.0/driver/ gives me:
/sys/bus/firewire/drivers/snd_fireface

since I don't have a clue how to debug this any further, any help solving this would be much appreciated!

Digidesign Digi 003R clicks & pops while recording

Picked up a Digidesign Digi 003R to play around with and for the most part it worked. It can connect at 4800/4100 256 and all of the routing appears to work in Ardour 5.12.

Unfortunately it generates a little pop/click every 5 to 7 seconds in the recording and output. This was using kernel 4.19 and 5.4 with and without snd-firewire-improve from.

I was wondering if there was any helpful output / logs I could provide to help track this issue?

Fireface 800 lockup with pipewire

Hello Sakamoto-San,
I want to report an issue:

On my system with LSI FW643 and RME FireFace 800, sometimes the pipewire process gets locked into uninterruptible sleep (D state).

This occurs under two circumstances:

  • pipewire has an auto-suspend feature that closes the connection to the audio device after 5 seconds of silence. This I could disable.
  • after suspend (to RAM). this I need to work reliably.
sudo cat /proc/2236/stack
[<0>] fw_run_transaction+0x225/0x3b0 [firewire_core]
[<0>] snd_fw_transaction+0xae/0x130 [snd_firewire_lib]
[<0>] ff800_finish_session+0x3f/0x60 [snd_fireface]
[<0>] snd_ff_stream_stop_duplex+0x35/0x70 [snd_fireface]
[<0>] pcm_hw_free+0x38/0x50 [snd_fireface]
[<0>] snd_pcm_common_ioctl+0x1203/0x1790 [snd_pcm]
[<0>] snd_pcm_ioctl+0x2a/0x40 [snd_pcm]
[<0>] __x64_sys_ioctl+0x90/0xd0
[<0>] do_syscall_64+0x38/0xc0
[<0>] entry_SYSCALL_64_after_hwframe+0x6e/0xd8
sudo cat /proc/2236/syscall
16 0x6c 0x4112 0x5 0x5610a86e3e90 0x5610a86e3 0x7 0x7ffe4d126ca0 0x7f7a5e2ec3af

in
trying to sudo rmmod -f snd_fireface spawns an rmmod process which then goes into uninterruptible sleep (D state) itself.

while true; do kill -9 2236; done runs forever.

sudo strace -f -o pipewire_strace -p 2236 returns strace: attach: ptrace(PTRACE_SEIZE, 2236): operation forbidden

That's as far as I got searching with ddg.

All I can do to get audio back is reboot, but even then on shutdown, the kernel waits minutes for the process to terminate.

Can you please help me with this?
I'll be glad to provide any information you require.

build fails on Fedora 20 x86_64

$ uname -r
3.16.6-200.fc20.x86_64

Build fails as shown below, build succeeds and snd-fireworks loads and runs fine with my audiofire AF2 and AF12 after commenting out snd_card_new() as shown here:

http://pastebin.com/8UZw6Df9

make -C /lib/modules/3.16.6-200.fc20.x86_64/build M=/home/nostar/src/snd-firewire-improve modules
make[1]: Entering directory /usr/src/kernels/3.16.6-200.fc20.x86_64' CC [M] /home/nostar/src/snd-firewire-improve/sound/firewire/isight.o In file included from /home/nostar/src/snd-firewire-improve/sound/firewire/isight.c:19:0: /home/nostar/src/snd-firewire-improve/sound/firewire/../../backport.h:9:59: error: static declaration of ‘snd_card_new’ follows non-static declaration static inline int snd_card_new(struct device *parent, int idx, const char *xid, ^ In file included from /home/nostar/src/snd-firewire-improve/sound/firewire/../../backport.h:4:0, from /home/nostar/src/snd-firewire-improve/sound/firewire/isight.c:19: include/sound/core.h:283:5: note: previous declaration of ‘snd_card_new’ was here int snd_card_new(struct device *parent, int idx, const char *xid, ^ In file included from /home/nostar/src/snd-firewire-improve/sound/firewire/isight.c:19:0: /home/nostar/src/snd-firewire-improve/sound/firewire/../../backport.h: In function ‘snd_card_new’: /home/nostar/src/snd-firewire-improve/sound/firewire/../../backport.h:13:2: error: implicit declaration of function ‘snd_card_create’ [-Werror=implicit-function-declaration] int err = snd_card_create(idx, xid, module, extra_size, card_ret); ^ cc1: some warnings being treated as errors make[3]: *** [/home/nostar/src/snd-firewire-improve/sound/firewire/isight.o] Error 1 make[2]: *** [/home/nostar/src/snd-firewire-improve/sound/firewire] Error 2 make[1]: *** [_module_/home/nostar/src/snd-firewire-improve] Error 2 make[1]: Leaving directory/usr/src/kernels/3.16.6-200.fc20.x86_64'

DigiMagic

Hi Takashi,

There are 2 models of the 003Rack:

003R: 4 preamps - digimagic works
003R+: 8 preamps - digimagic does not work (yet)

I actually checked out your code from 4 days ago and played with this branch.
I manually added the digimagic that Robin and I reverse engineered, but unfortunately the code does not seem to work for 003Rack+ model. We need to reverse engineer new magic bytes for the 003R+.

Then I also tested your latest code and the magic is still not working on 003R+.

I also have added code for mixer control of the clock source and verified it works on my hardware (003R+). I can do a pull request with the new code soon.

Damien

Mytek Stereo192-DSD-DAC crackling since duplex stream synchronisation removal CIP_SYNC_TO_DEVICE in 2016

Hi Takashi,

With Mytek Stereo192-DSD-DAC there is consistent crackling in audio stream with post-2016 driver stack, I believe due to quirk in firmware or hardware of Stereo192-DSD-DAC with Dice Mini (TCD2210) possibly in combination with ALSA firewire driver, as Focusrite Saffire Pro 24 microphone interface works well with both old and new driver stack. Here are some loopback recordings with following configuration: MPD -> Jack -> Stereo192 -> Headphones -> Microphone -> Pro24 -> Jack -> Audacity. Audio signal is 1khz test tone, there are no XRUNs in driver, except possibly 96000hz example.

demonstration.tar.gz (file 192000_olddrv.flac demonstrates correct playback with old ALSA firewire driver stack.)

I originally discovered this in 2016, and reported the issue to alsa-devel in 2017[1]. At the time, changes in ALSA firewire stack were major, causing not only crackling but also failure to change sampling frequency rate. I note current driver already re-implemented all such features in presumably a much better way, as it's working very well besides crackling issue. Later I submitted patch for hard-coded parameters for Stereo192-DSD-DAC in 2018[2], which is required for this model. Finally we had some brief contact in 2020 about another user attempting to use this device[3].

Since 2016 I have been running old ALSA firewire stack for DICE (snd_firewire_lib and snd_dice), which is based upon:

  • 2eb65d67afbf9364b525b657f1475d1a2cbc27de ALSA: dice: expand timeout to wait for Dice notification

Various minor changes and cherry picks over the years to keep it compatible with more modern kernel and backports for important bugs. Recently I upgraded from Debian buster to Debian bullseye, which is from kernel 4.19 to 5.10. It appears changes in ALSA have been significant and not fully backwards compatible, as with old modules suspend is broken, poweroff occasionally has hard CPU lockup and there are stability issues when doing insmod rmmod at times, especially rmmod firewire_ohci. Current kernel is 5.10.19-1 with Debian version 5.10.0-4-rt-amd64.

As running with old modules appears to be no longer feasible due to above issues, which do not occur with new modules, it was time to fully research the exact issue and determine which exact commit introduces this regression for Stereo192-DSD-DAC. This meant reading through the commit messages and code changes of ALSA firewire stack between last known good version 2eb65d67afbf9364b525b657f1475d1a2cbc27de and known broken version kernel v4.6, as well as general reading of all later commits to see if there may have been relevant changes.

After a tedious process of merging in changes per commit, making it build with modern kernel, and module removal and insertion I was able to identify the commit resulting in the crackling regression for Stereo192-DSD-DAC:

  • 1387e3eafa94837342b044b429b79830998009ac ALSA: dice: drop duplex streams synchronization to transfer own time stamps

This commit effectively disables usage of CIP_SYNC_TO_DEVICE, resulting in loss of duplex stream synchronisation as described in commit message. This unexpectedly causes the crackling issue on Stereo192-DSD-DAC. However, from commit message:

As long as I experienced, this causes the units to generate no sounds at
first time to receive packets. This issue occurs only with Dice II. I guess
this is due to a quirk of the PLL. In short, the PLL cannot generate firm
signals to ADCs/DACs or the other ICs when no packets are received in the
beginning of packet streaming. While, on second time or later, the unit
generates sound correctly. I guess that starting packet streaming at first
time sets the PLL correctly.

This is the exact behaviour change noted for Stereo 192-DSD-DAC, even though it is Dice Mini (TCD2210) per firmware research you did in 2018[4]. With old modules playback did almost always not work the first time at a new sampling rate, but when it plays audio the second time the lock is perfect and playback is good. With new modules playback always works first time, but also always with crackling.

Later commits however remove CIP_SYNC_TO_DEVICE feature completely from AMDTP stream implementation, as it was thought this feature was not needed.

  • dec63cc8b65b04c0ebb5d82b6b399665d6d44dca ALSA: firewire-lib: handle IT/IR contexts in each software interrupt context
  • d9a16fc926a950c9e481cb7e89c554593b8e29e2 ALSA: firewire-lib: code cleanup for incoming packet handling
  • 390a1512e6ccda2ec32ea1395814f36cf4d30e48 ALSA: firewire-lib: code cleanup for outgoing packet handling

Although I am somewhat familiar with concepts because of research to determine the issue, I am not familiar enough to re-implement duplex stream synchronisation in modern ALSA firewire driver. I also cannot determine the real problem very well, it could be duplex stream synchronisation was masking the real bug in either device or ALSA firewire driver.

What are your thoughts on this issue? If there is any further testing I can do to help feel free to let me know.

[1] https://mailman.alsa-project.org/pipermail/alsa-devel/2017-September/125524.html
[2] https://mailman.alsa-project.org/pipermail/alsa-devel/2018-May/136194.html
[3] https://mailman.alsa-project.org/pipermail/alsa-devel/2020-May/168114.html
[4] https://mailman.alsa-project.org/pipermail/alsa-devel/2018-May/136198.html

Thanks,

Melvin.

Discovered internal mixer controls - digi00x

Hi Takashi,
I found the following controls for internal mixer matrix.
It is able to route any single capture channel to 1, 2, or 1+2 (stereo) using the following registers:

// Value 0 = off
// Value 1 = on
#define R003_MIX_CONTROL        0xffffe0000124ull

#define R003_MIX                0xffffe0000300ull
#define R003_MIX_ANALOG_1L      (0x00 | R003_MIX)
#define R003_MIX_ANALOG_1R      (0x04 | R003_MIX) 
#define R003_MIX_ANALOG_2L      (0x08 | R003_MIX)
#define R003_MIX_ANALOG_2R      (0x0c | R003_MIX)
#define R003_MIX_ANALOG_3L      (0x10 | R003_MIX)
#define R003_MIX_ANALOG_3R      (0x14 | R003_MIX)
#define R003_MIX_ANALOG_4L      (0x18 | R003_MIX)
#define R003_MIX_ANALOG_4R      (0x1c | R003_MIX)
#define R003_MIX_ANALOG_5L      (0x20 | R003_MIX)
#define R003_MIX_ANALOG_5R      (0x24 | R003_MIX)
#define R003_MIX_ANALOG_6L      (0x28 | R003_MIX)
#define R003_MIX_ANALOG_6R      (0x2c | R003_MIX)
#define R003_MIX_ANALOG_7L      (0x30 | R003_MIX)
#define R003_MIX_ANALOG_7R      (0x34 | R003_MIX)
#define R003_MIX_ANALOG_8L      (0x38 | R003_MIX)
#define R003_MIX_ANALOG_8R      (0x3c | R003_MIX)
#define R003_MIX_SPDIF_1L       (0x40 | R003_MIX)
#define R003_MIX_SPDIF_1R       (0x44 | R003_MIX)
#define R003_MIX_SPDIF_2L       (0x48 | R003_MIX)
#define R003_MIX_SPDIF_2R       (0x4c | R003_MIX)
#define R003_MIX_ADAT_1L        (0x50 | R003_MIX)
#define R003_MIX_ADAT_1R        (0x54 | R003_MIX)
#define R003_MIX_ADAT_2L        (0x58 | R003_MIX)
#define R003_MIX_ADAT_2R        (0x5c | R003_MIX)
#define R003_MIX_ADAT_3L        (0x60 | R003_MIX)
#define R003_MIX_ADAT_3R        (0x64 | R003_MIX)
#define R003_MIX_ADAT_4L        (0x68 | R003_MIX)
#define R003_MIX_ADAT_4R        (0x6c | R003_MIX)
#define R003_MIX_ADAT_5L        (0x70 | R003_MIX)
#define R003_MIX_ADAT_5R        (0x74 | R003_MIX)
#define R003_MIX_ADAT_6L        (0x78 | R003_MIX)
#define R003_MIX_ADAT_6R        (0x7c | R003_MIX)
#define R003_MIX_ADAT_7L        (0x80 | R003_MIX)
#define R003_MIX_ADAT_7R        (0x84 | R003_MIX)
#define R003_MIX_ADAT_8L        (0x88 | R003_MIX)
#define R003_MIX_ADAT_8R        (0x8c | R003_MIX)

#define R003_MIX_NONE           0x00000000
#define R003_MIX_1_TO_STEREO    0x18000000
#define R003_MIX_1_TO_1         0x20000000

trying with audiofire2 on kernel 4.2 (mint)

hello, I it installed successfully, though I still have this
Failed to load module "module-alsa-card" (argument: "device_id="0" name="firewire-0x0014860fc44a8c55" card_name="alsa_card.firewire-0x0014860fc44a8c55" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=no card_properties="module-udev-detect.discovered=1""): initialization failed.

full dump here:
https://gist.github.com/ungentilgarcon/7fce5ee104c0cabe05af

If I modprobe I don't have a snd-fireworks, does that mean it didn't install itself?

I'm ready to do much to help make it work.

Audiofire firmware was downgraded to 4.8, oh and it works ok with jack.

regards

greg

Fireface 802: Periodic audio artifacts

I'm experiencing regular audio artifacts using the Fireface 802 connected via FireWire on Manjaro with kernel v5.13.

The artifacts occur about every 10-20 minutes for a duration of roughly one minute. The artifacts sound a lot like a constant phasing, suddenyl taking out a lot of low and mid frequencies and sounding harsh and but-crushing-like in the highs. The artifacts do not happen when dual-booting into Windows.

Not sure if this helps, but I think it could be related. When opening the Fireface 802 via Jack, I have to set the periods/buffer setting to 3 and the frames/period to 512 or 1024 to get only some xruns while doing simple desktop work (browsing, mails, music playback on a Ryzen 3950X, no realtime DAW stuff). Connecting the Fireface 802 via USB, I can set periods/buffer to default (which results in "2") and frames/period to 128 and still not get any xrun for hours when doing simple desktop stuff.

Fireface 800 stuck in initialization after sleep

Hello Sakamoto-San,
I want to report an issue: after the computer returns from sleep, my Fireface 800 often does this little "dance" over and over, I don't think it will stop:
video
I think after sleep the driver continuously tries to re-configure / reset the Fireface but something doesn't work.
I have to turn off the Fireface with its hardware power switch, then turn it back on again and it connects fine again.
This issue has been there in 5.xx kernels also, but it never happened in Windows.
Linux: 6.1.7-1-MANJARO
Firewire card: LSI FW643 PCIe
FFADO is installed but I almost never use / open it. So the driver in use is built-in kernel driver.
Can you please help me in this?

saffire pro 40 - tries to connect but fails

hi there,
just plugged this in today. trying to make it work. What I see here is that some status leds flashes on the front panel of the interface, this happens just before the user login screen pops up.

However unforunately there seems to be some sort of communications error. And the device does not appear after logging into desktop session, after loading pipewire etc.

[id:~] 130 $ sudo dmesg -w|grep fw
[    1.470466] firewire_core 0000:03:00.0: created device fw0: GUID 0011223333555555, S400
[    4.591494] firewire_core 0000:03:00.0: created device fw1: GUID 00130e0401404f10, S400
[    4.742627] snd_hda_intel 0000:00:1f.3: Applying patch firmware 'hda-jack-retask.fw'
[    4.742777] snd_hda_intel 0000:01:00.1: Applying patch firmware 'hda-jack-retask.fw'
[   26.387768] snd_dice fw1.0: Detect discontinuity of cycle: 11297 11298
[   26.677842] snd_dice fw1.0: Detect discontinuity of cycle: 13700 13701
[   26.936997] snd_dice fw1.0: Detect discontinuity of cycle: 15782 15783
[   27.374312] snd_dice fw1.0: transaction failed: bus reset
[   27.424313] snd_dice fw1.0: transaction failed: bus reset
[   27.476329] snd_dice fw1.0: transaction failed: bus reset
[   27.526348] snd_dice fw1.0: transaction failed: bus reset
[   27.576322] snd_dice fw1.0: transaction failed: bus reset
[   27.628304] snd_dice fw1.0: transaction failed: bus reset
[   27.928326] snd_dice fw1.0: transaction failed: bus reset
[   27.978300] snd_dice fw1.0: transaction failed: bus reset

Can't compile module with latest fedora kernel

Hi, I'm trying to compile the latest module with fedora32 and dkms fails


Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area...
make -j8 KERNELRELEASE=5.6.18-300.fc32.x86_64 all...(bad exit status: 2)
Error! Bad return status for module build on kernel: 5.6.18-300.fc32.x86_64 (x86_64)
Consult /var/lib/dkms/alsa-firewire/4.17/build/make.log for more information.

Checking the file shows as follows:

vie 19 jun 2020 10:09:18 CEST
make -C /lib/modules/5.6.18-300.fc32.x86_64/build M=/var/lib/dkms/alsa-firewire/4.17/build modules
make[1]: Entering directory '/usr/src/kernels/5.6.18-300.fc32.x86_64'
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/dice-transaction.o
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/bebob_command.o
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/ff.o
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/amdtp-dot.o
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/tascam-proc.o
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/oxfw-command.o
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/fireworks_transaction.o
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/motu.o
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/oxfw.h:19,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/oxfw-command.c:8:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./tascam.h:22,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/tascam-proc.c:8:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/./../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/motu.h:22,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/motu.c:8:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw/oxfw-command.o] Error 1
make[3]: *** [scripts/Makefile.build:505: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/oxfw] Error 2
make[3]: *** Waiting for unfinished jobs....
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam/tascam-proc.o] Error 1
make[3]: *** [scripts/Makefile.build:505: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/tascam] Error 2
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-stream.o
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/bebob_stream.o
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu/motu.o] Error 1
make[3]: *** [scripts/Makefile.build:505: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/motu] Error 2
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/bebob_proc.o
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./bebob.h:22,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/bebob_command.c:8:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/ff.h:22,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/ff.c:8:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./fireworks.h:22,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/fireworks_transaction.c:31:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/bebob_command.o] Error 1
make[4]: *** Waiting for unfinished jobs....
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/fireworks_command.o
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/dice.h:28,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/dice-transaction.c:9:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/fireworks_transaction.o] Error 1
make[4]: *** Waiting for unfinished jobs....
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface/ff.o] Error 1
make[3]: *** [scripts/Makefile.build:505: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireface] Error 2
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-proc.o
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-pcm.o
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice/dice-transaction.o] Error 1
make[3]: *** [scripts/Makefile.build:505: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/dice] Error 2
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-hwdep.o
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-transaction.o
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./bebob.h:22,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/bebob_proc.c:8:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x.h:21,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-stream.c:8:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./bebob.h:22,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/bebob_stream.c:8:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/./../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/bebob_proc.o] Error 1
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-stream.o] Error 1
make[4]: *** Waiting for unfinished jobs....
  CC [M]  /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-midi.o
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./fireworks.h:22,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/fireworks_command.c:8:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/./../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob/bebob_stream.o] Error 1
make[3]: *** [scripts/Makefile.build:505: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/bebob] Error 2
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks/fireworks_command.o] Error 1
make[3]: *** [scripts/Makefile.build:505: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fireworks] Error 2
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x.h:21,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-pcm.c:8:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x.h:21,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-proc.c:8:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-pcm.o] Error 1
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x.h:21,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-hwdep.c:17:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-proc.o] Error 1
make[4]: *** [scripts/Makefile.build:268: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-hwdep.o] Error 1
In file included from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../../backport.h:2,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x.h:21,
                 from /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-midi.c:8:
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:460:18: error: field ‘trigger_tstamp’ has incomplete type
  460 |  struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */
      |                  ^~~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:461:18: error: field ‘tstamp’ has incomplete type
  461 |  struct timespec tstamp;  /* reference timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:470:18: error: field ‘audio_tstamp’ has incomplete type
  470 |  struct timespec audio_tstamp; /* sample counter, wall clock, PHC or on-demand sync'ed */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:471:18: error: field ‘driver_tstamp’ has incomplete type
  471 |  struct timespec driver_tstamp; /* useful in case reference system tstamp is reported with delay */
      |                  ^~~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:473:37: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  473 |  unsigned char reserved[52-2*sizeof(struct timespec)]; /* must be filled with zero */
      |                                     ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:480:18: error: field ‘tstamp’ has incomplete type
  480 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:482:18: error: field ‘audio_tstamp’ has incomplete type
  482 |  struct timespec audio_tstamp; /* from sample counter or wall clock */
      |                  ^~~~~~~~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:652:18: error: field ‘tstamp’ has incomplete type
  652 |  struct timespec tstamp;  /* Timestamp */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:764:18: error: field ‘tstamp’ has incomplete type
  764 |  struct timespec tstamp;  /* Timestamp - last update */
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:814:18: error: field ‘tstamp’ has incomplete type
  814 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:957:18: error: field ‘tstamp’ has incomplete type
  957 |  struct timespec tstamp;
      |                  ^~~~~~
/var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/../../.././include/uapi/sound/asound.h:958:36: error: invalid application of ‘sizeof’ to incomplete type ‘struct timespec’
  958 |  unsigned char reserved[128-sizeof(struct timespec)];
      |                                    ^~~~~~
make[4]: *** [scripts/Makefile.build:267: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x/digi00x-midi.o] Error 1
make[3]: *** [scripts/Makefile.build:505: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/digi00x] Error 2
make[2]: *** [scripts/Makefile.build:505: /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire] Error 2
make[1]: *** [Makefile:1695: /var/lib/dkms/alsa-firewire/4.17/build] Error 2
make[1]: Leaving directory '/usr/src/kernels/5.6.18-300.fc32.x86_64'
make: *** [Makefile:23: all] Error 2

As I'm not familiar with this process, I'm not sure if I might be missing any required library, mind having a look at this?

Thanks!

audiophile not work property

Thank you for great work!
I have ubuntu 13.10 x64 (3.11.0-26-generic) and M-audio firewire audiophile.
But i can't get work correctly this device :(
It work (listen sound) only if i boot in Windows 7 x64 with lates m-audio drivers, power-on and without power-off boot in Ubuntu.
I think problem is audiophile don't find firmware or something wrongs other (when i power turn-on after blinking front panel, show only blue LED power-on maybe it's correct?) and can't work correctly.
Can i upload firmware without booting every time in windows?

$ dmesg | grep -i firewire_core
[ 1.661987] firewire_core 0000:07:06.0: created device fw0: GUID 005966e6006cf049, S400
[ 1.667702] firewire_core 0000:07:06.0: created device fw1: GUID 000d6c0300d50ce0, S400
[ 1.667917] firewire_core 0000:07:06.0: phy config: new root=ffc1, gap_count=5
[ 3.672265] firewire_core 0000:07:06.0: BM lock failed (timeout), making local node (ffc0) root
[ 3.672270] firewire_core 0000:07:06.0: phy config: new root=ffc0, gap_count=5

$ ffado-test ListDevices
FFADO test and diagnostic utility
Part of the FFADO project -- www.ffado.org
Version: 2.1.9999-
(C) 2008, Daniel Wagner, Pieter Palmers
This program comes with ABSOLUTELY NO WARRANTY.

=== 1394 PORT 0 ===
Node id GUID VendorId ModelId Vendor - Model
0 0x000d6c0300d50ce0 0x00000D6C 0x00010060 M-Audio - FW Audiophile

$ cat /proc/asound/card0/firewire/clock
Sampling rate: 44100
Clock Source: Internal (MSU-dest: 1)

$ cat /proc/asound/card0/firewire/firmware
Manufacturer: bridgeCo
Protocol Ver: 1
Build Ver: 0
GUID: 0x000D6C0300D50CE0
Model ID: 0x0D
Model Rev: 1
Firmware Date: 20070504
Firmware Time: 102212
Firmware ID: 0x10060
Firmware Ver: 16777215
Base Addr: 0x20080000
Max Size: 1572864
Loader Date: 20031006
Loader Time: 100041

$ cat /proc/asound/card0/firewire/formation
Output Stream from device:
Rate PCM MIDI
32000 0 0
44100 4 1
48000 4 1
88200 4 1
96000 4 1
176400 0 0
192000 0 0
Input Stream to device:
Rate PCM MIDI
32000 0 0
44100 6 1
48000 6 1
88200 6 1
96000 6 1
176400 0 0
192000 0 0

$ cat /proc/asound/card0/firewire/meter
Analog In 1: 707840
Analog In 2: 802048
Digital In 1: 0
Digital In 2: 0
Analog Out 1: 1486218751
Analog Out 2: 1486218751
Analog Out 3: 0
Analog Out 4: 0
Digital Out 1: 743109375
Digital Out 2: 743109375
HP Out 1: 1486218751
HP Out 2: 1486218751
Aux Out 1: 0
Aux Out 2: 0

Error using DKMS on Manjaro linux to backport snd-firewire-improve

Hi Takashi

Can you help? I would like to try out the snd_dice driver with a Focusrite Saffire PRO 24.

Here is the make log...

DKMS make.log for alsa-firewire-3.11 for kernel 3.18.3-1-MANJARO (x86_64)
Mi 28. Jan 20:48:54 CET 2015
make -C /lib/modules/3.18.3-1-MANJARO/build M=/var/lib/dkms/alsa-firewire/3.11/build modules
make[1]: Entering directory '/usr/lib/modules/3.18.3-1-MANJARO/build'
CC [M] /var/lib/dkms/alsa-firewire/3.11/build/sound/firewire/lib.o
CC [M] /var/lib/dkms/alsa-firewire/3.11/build/sound/firewire/iso-resources.o
CC [M] /var/lib/dkms/alsa-firewire/3.11/build/sound/firewire/packets-buffer.o
CC [M] /var/lib/dkms/alsa-firewire/3.11/build/sound/firewire/fcp.o
CC [M] /var/lib/dkms/alsa-firewire/3.11/build/sound/firewire/cmp.o
CC [M] /var/lib/dkms/alsa-firewire/3.11/build/sound/firewire/amdtp.o
/var/lib/dkms/alsa-firewire/3.11/build/sound/firewire/amdtp.c: In function ‘amdtp_stream_pcm_abort’:
/var/lib/dkms/alsa-firewire/3.11/build/sound/firewire/amdtp.c:1067:3: error: implicit declaration of function ‘snd_pcm_stop_xrun’ [-Werror=implicit-function-declaration]
snd_pcm_stop_xrun(pcm);
^
cc1: some warnings being treated as errors
scripts/Makefile.build:257: recipe for target '/var/lib/dkms/alsa-firewire/3.11/build/sound/firewire/amdtp.o' failed
make[3]: *** [/var/lib/dkms/alsa-firewire/3.11/build/sound/firewire/amdtp.o] Error 1
scripts/Makefile.build:402: recipe for target '/var/lib/dkms/alsa-firewire/3.11/build/sound/firewire' failed
make[2]: *** [/var/lib/dkms/alsa-firewire/3.11/build/sound/firewire] Error 2
Makefile:1381: recipe for target 'module/var/lib/dkms/alsa-firewire/3.11/build' failed
make[1]: *** [module/var/lib/dkms/alsa-firewire/3.11/build] Error 2
make[1]: Leaving directory '/usr/lib/modules/3.18.3-1-MANJARO/build'
Makefile:16: recipe for target 'all' failed
make: *** [all] Error 2

Cheers, Simon

SYT field being always zero does not mean sync cannot be done

This statement is not quite correct:
https://github.com/takaswie/snd-firewire-improve/blob/618f4f4e2e6e27585820b2f9f873171b8bd5e758/sound/firewire/digi00x/digi00x-stream.c#L332

There is an implementation of Amdtp streaming specifically for Oxford chips that have SYT field in transmitted packets always = 0x0000 that uses system timestamps of packets instead of the SYT value and adjusts on the fly with a DLL. See the source code of ffado: http://www.ffado.org/files/libffado-2.3.0.tgz

I think it would improve the digi00x driver.

[snd-dice] latency 13 times higher compared to FFADO (Saffire 14 PRO) with jack2

Hi,

On a 5900x, 32 GB RAM, Archlinux (kernel 6.0.2), I have been investigating crazy high latency using a pipewire-jack, see:

https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2790

I ended up testing jack_iodelay with jack2, comparing snd-dice and FFADO

Running qjackctl jack2, ALSA backed (snd-dice) 48000Hz, 1024 samples, 2 periods:

> jack_iodelay                                                                                                                                                                                                                                                                                                                           
new capture latency: [0, 0]
new playback latency: [0, 0]
Signal below threshold...
Signal below threshold...
new capture latency: [1024, 1024]
Signal below threshold...
Signal below threshold...
new playback latency: [2048, 2048]
  5198.818 frames    108.309 ms total roundtrip latency
        extra loopback latency: 2126 frames
        use 1063 for the backend arguments -I and -O Inv
  5198.818 frames    108.309 ms total roundtrip latency
        extra loopback latency: 2126 frames
        use 1063 for the backend arguments -I and -O ?? Inv

Running qjackctl jack2, firewire backend (FFADO) 4800, 512 samples, 2 periods:

> jack_iodelay                                                                                                                                                                                                                                                                                                                                    
new capture latency: [0, 0]
new playback latency: [0, 0]
Signal below threshold...
new capture latency: [1024, 1024]
Signal below threshold...
new playback latency: [3072, 3072]
  4258.811 frames     88.725 ms total roundtrip latency
        extra loopback latency: 162 frames
        use 81 for the backend arguments -I and -O Inv
  4258.812 frames     88.725 ms total roundtrip latency
        extra loopback latency: 162 frames
        use 81 for the backend arguments -I and -O Inv

Note that qjackctl seems to not set the number of periods correctly with firewire backend, the above playback latency suggests 3 periods instead of 2.
It seems that Cadence fixes the issue, but the extra loopback latency stays at 162 frames with FFADO

Thanks

Firewire control transactions to ProjectMix I/O timing out.

Hi,

Takashi, I remember talking to you about this before, but just wanted to highlight it again.

It seems that a firewire bus reset is necessary before sending commands to the ProjectMix in order for these commands to not keep timing out.

I realise that it may be worthwhile to include this in FFADO as opposed to your project here, but I thought for simplicity, including it in your driver may be a good decision.

Other than that, the driver is working great. It's allowed me to switch to Linux nearly full time by running a jack sink from pulseaudio. Good work! I really appreciate it.

Regards,
Darren

Fireface 800 modprobe issue

Hello,

My lab has a fireface 800 that we use for very timing sensitive audio output. We are using Ubuntu 17.04, Linux 4.10, and I downloaded your repository and followed the steps to install the modules via DKMS. The install is successfull, but when I execute "sudo modprobe snd-fireface" I get an error saying that it cannot find "amdtp_stream_pcm_ack" (I don't know the exact error, as I am not at that computer at the moment).

Any idea what I can do to get this error resolved so that I can use alsa for my fireface 800?

snd-dice / TC Electronic Konnekt 24D

snd-dice never worked for my device. I guess the issue is known? the sound is crackling, and these are no x-runs. It was ok for me all those years since ffado works great for this device. now I am interested in snd-dice again whatever, since I would like to use Pipewire which doesn't suport ffado. If there is anything I can do to help debug the issue let me know

UBSAN: invalid-load in fcp.c load value of 16 is not valid for type '_Bool'

Ubuntu 20.04 just got the 5.15 (5.15.0-33) Low Latency kernel in the mainline repo and while booting with snd-firewire-improve installed it throws out that line before plymouth comes up during boot.

Here's the complete error from journalctl:

jun 09 14:46:27 AMiGA-3700X unknown: Started bpfilter
jun 09 14:46:27 AMiGA-3700X kernel: firewire_core 0000:05:00.0: created device fw1: GUID 0003db0a00012483, S400
jun 09 14:46:27 AMiGA-3700X kernel: ================================================================================
jun 09 14:46:27 AMiGA-3700X kernel: UBSAN: invalid-load in /var/lib/dkms/alsa-firewire/4.17/build/sound/firewire/fcp.c:362:9
jun 09 14:46:27 AMiGA-3700X kernel: load of value 16 is not a valid value for type '_Bool'
jun 09 14:46:27 AMiGA-3700X kernel: CPU: 2 PID: 424 Comm: irq/24-firewire Tainted: P           OE     5.15.0-33-lowlatency #34~20.04.1-Ubuntu
jun 09 14:46:27 AMiGA-3700X kernel: Hardware name: System manufacturer System Product Name/PRIME X570-P, BIOS 4204 02/24/2022
jun 09 14:46:27 AMiGA-3700X kernel: Call Trace:
jun 09 14:46:27 AMiGA-3700X kernel:  <IRQ>
jun 09 14:46:27 AMiGA-3700X kernel:  dump_stack_lvl+0x4a/0x5f
jun 09 14:46:27 AMiGA-3700X kernel:  dump_stack+0x10/0x12
jun 09 14:46:27 AMiGA-3700X kernel:  ubsan_epilogue+0x9/0x45
jun 09 14:46:27 AMiGA-3700X kernel:  __ubsan_handle_load_invalid_value.cold+0x44/0x49
jun 09 14:46:27 AMiGA-3700X kernel:  fcp_response.cold+0x16/0x23 [snd_firewire_lib]
jun 09 14:46:27 AMiGA-3700X kernel:  fw_core_handle_request+0x24b/0x400 [firewire_core]
jun 09 14:46:27 AMiGA-3700X kernel:  handle_ar_packet+0x1e7/0x210 [firewire_ohci]
jun 09 14:46:27 AMiGA-3700X kernel:  ? handle_ar_packet+0x1e7/0x210 [firewire_ohci]
jun 09 14:46:27 AMiGA-3700X kernel:  ? __enqueue_entity+0x96/0xa0
jun 09 14:46:27 AMiGA-3700X kernel:  ar_context_tasklet+0x144/0x290 [firewire_ohci]
jun 09 14:46:27 AMiGA-3700X kernel:  tasklet_action_common.isra.0+0xe7/0xf0
jun 09 14:46:27 AMiGA-3700X kernel:  ? handle_irq_event_percpu+0x72/0x80
jun 09 14:46:27 AMiGA-3700X kernel:  tasklet_action+0x22/0x30
jun 09 14:46:27 AMiGA-3700X kernel:  __do_softirq+0xda/0x31c
jun 09 14:46:27 AMiGA-3700X kernel:  ? irq_finalize_oneshot.part.0+0xe0/0xe0
jun 09 14:46:27 AMiGA-3700X kernel:  do_softirq+0x66/0x80
jun 09 14:46:27 AMiGA-3700X kernel:  </IRQ>
jun 09 14:46:27 AMiGA-3700X kernel:  <TASK>
jun 09 14:46:27 AMiGA-3700X kernel:  __local_bh_enable_ip+0x62/0x70
jun 09 14:46:27 AMiGA-3700X kernel:  irq_forced_thread_fn+0x7e/0x90
jun 09 14:46:27 AMiGA-3700X kernel:  irq_thread+0xb8/0x170
jun 09 14:46:27 AMiGA-3700X kernel:  ? wake_threads_waitq+0x30/0x30
jun 09 14:46:27 AMiGA-3700X kernel:  ? irq_thread_check_affinity+0xe0/0xe0
jun 09 14:46:27 AMiGA-3700X kernel:  kthread+0x138/0x160
jun 09 14:46:27 AMiGA-3700X kernel:  ? set_kthread_struct+0x40/0x40
jun 09 14:46:27 AMiGA-3700X kernel:  ret_from_fork+0x1f/0x30
jun 09 14:46:27 AMiGA-3700X kernel:  </TASK>
jun 09 14:46:27 AMiGA-3700X kernel: ================================================================================

Sound seems to still work fine out of my Apogee Duet (oxfw) after boot completes, so I'm not sure if I should be worried.

AudioFire4 No Sound Controls

The Latest master I tried with kernel 3.12.5 on archlinux and am missing mixer controls

Some maybe useful output....

tburdick@rocket /proc/asound/AudioFire4 % dmesg | grep fire 
[    1.879309] firewire_ohci 0000:02:00.0: added OHCI v1.10 device as card 0, 4 IR + 8 IT contexts, quirks 0x11
[    2.379216] firewire_core 0000:02:00.0: created device fw0: GUID 001e8c00003358b2, S400
[    2.379231] firewire_core 0000:02:00.0: phy config: new root=ffc1, gap_count=5
[    5.393239] firewire_core 0000:02:00.0: created device fw1: GUID 0014860c9d61d822, S400
tburdick@rocket /proc/asound/AudioFire4 % uname -a
Linux rocket 3.12.5-1-ARCH #1 SMP PREEMPT Thu Dec 12 12:57:31 CET 2013 x86_64 GNU/Linux
tburdick@rocket /proc/asound/AudioFire4 % ls
#clock  #firmware  #meters  #queues  id  midi0  pcm0c/  pcm0p/
tburdick@rocket /proc/asound/AudioFire4 % 

skmd install failure

Hello,

i get the following error:

$ sudo dkms install snd-firewire-3.11
Error! Could not find module source directory.
Directory: /usr/src/snd-firewire-3.11 does not exist.
$ ls -l /usr/src/alsa-firewire-3.11/
total 120
-rw-rw-r-- 1 muranyia muranyia   711 Oct  6 17:00 backport.h
-rw-rw-r-- 1 muranyia muranyia   976 Oct  6 17:00 dkms.conf
-rw-rw-r-- 1 muranyia muranyia 10407 Oct  6 17:00 ftransfer.c
drwxrwxr-x 3 muranyia muranyia  4096 Oct  6 17:00 include
-rw-rw-r-- 1 muranyia muranyia   453 Oct  6 17:00 Makefile
-rw-rw-r-- 1 muranyia muranyia   603 Oct  6 17:06 modules.order
-rw-rw-r-- 1 muranyia muranyia  4160 Oct  6 17:06 Module.symvers
-rw-rw-r-- 1 muranyia muranyia  5073 Oct  6 17:00 monitor.c
-rw-rw-r-- 1 muranyia muranyia  3047 Oct  6 17:00 README
drwxrwxr-x 3 muranyia muranyia  4096 Oct  6 17:00 sound
$ uname -r
3.13.0-36-generic

Integration with PulseAudio

I am opening this thread not to mess up another one with my questions.

So far I have learned that Unity will not boot up unless I disable Pulseaudio as described here:
https://wiki.ubuntu.com/PulseAudio/Log

I have noticed now, that starting Pulseaudio afterwards actually works and the firewire card is listed, although by a weird name:
screenshot from 2014-10-14 16 18 20

Another thing to note is that the card is detected as 10-channel surround despite the settings I have applied, suggested here.

Mackie Onyx 1640i: JACK instance hangs randomly after long playback.

Hi,

I am suffering from another issue that is playing audio via PulseAudio bridge and after around 45min-1h the JACK instance just hangs producing exactly once XRUN. The only way to recover is to restart JACK. The issue was present in the stock kernel (5.12.0-rc3) module and I thought with your recent patches that is was gone but no. I am using your recent driver and it's affected as well.

First I thought its PulseAudio issue. But then I experimented a bit and I killed PulseAudio and played music with Mixxx directly to JACK with ALSA backend and the issue still persist.

Posting logs when the issue will pop up...

EDIT: OK Now when I try to debug it runs rock solid. But I am sure it will happen after some time.

Fireface 802 : does not work with a buffer size of 128 / periods 2

This is a follow up to this issue : alsa-project/snd-firewire-ctl-services#94


The driver works well with the fireface 802 with a buffer size of 256 or 64 and Periods = 2,
but there is an error when the buffer size = 128, and periods = 2.

Here are the error logs:

Starting jack server...
JACK server starting in realtime mode with priority 10
self-connect-mode is "Don't restrict self connect requests"
Acquired audio card Audio5
creating alsa driver ... hw:Fireface802,0|hw:Fireface802,0|128|2|48000|0|0|nomon|swmeter|-|32bit
configuring for 48000Hz, period = 128 frames (2.7 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 2 periods for capture
ERROR: ALSA: cannot set hardware parameters for capture
ERROR: ALSA: cannot configure capture channel
Released audio card Audio5
ERROR: Cannot initialize driver
ERROR: JackServer::Open failed with -1
ERROR: Failed to open server

This works fine when the buffer size = 128, and periods = 4.


Ubuntu: 22.04
kernel: 5.15.0-46-generic

Readme Slightly Wrong

The readme install sections gives

ln -s $(pwd)/snd-firewire-improve /usr/src/alsa-firewire-3.11

but then uses snd-firewire/3.11 for dkms install.

These need to match

snd-bebob : from kernel 4.13 to 5.3.19 and .20

Hi there,

First, I'm really not sure this is the right place to write an Issue, but I didnt find better on the net, still waiting alsa-devel ML approval... :/

I upgraded my Ubuntu Disco (kernel 4.13) to Ubuntu Eoan (kernel 5.3.19) and I can report my SaffireLE / Firewire doesnt work anymore.

At startup it lights green ok, but no sound is playable, then the lights turn orange (like it is when it's not working), I hear the relay sound, then, the Saffire LE disapears from the sound menu.

I can see this in dmesg:

[   19.083583] snd-bebob fw1.0: Detect discontinuity of CIP: 10 50
[   19.746665] snd-bebob fw1.0: Detect discontinuity of CIP: A0 A8
[   19.846775] snd-bebob fw1.0: Detect discontinuity of CIP: 70 B0
[   20.335861] snd-bebob fw1.0: Detect discontinuity of CIP: 90 D0
[   20.856301] snd-bebob fw1.0: Detect discontinuity of CIP: 78 B8
[   21.312770] snd-bebob fw1.0: Detect discontinuity of CIP: 30 70
[   21.796716] snd-bebob fw1.0: Detect discontinuity of CIP: 00 40
[   22.347664] snd-bebob fw1.0: Detect discontinuity of CIP: 00 40
[   22.818247] snd-bebob fw1.0: Detect discontinuity of CIP: A8 E8
[   23.306079] snd-bebob fw1.0: Detect discontinuity of CIP: 98 D8
[   29.544652] snd-bebob fw1.0: Detect discontinuity of CIP: 10 50
[   30.272090] snd-bebob fw1.0: Detect discontinuity of CIP: A8 E8
[   30.776168] snd-bebob fw1.0: Detect discontinuity of CIP: 00 40
[   31.268123] snd-bebob fw1.0: Detect discontinuity of CIP: E0 20
[   31.766085] snd-bebob fw1.0: Detect discontinuity of CIP: E0 20
[   32.267903] snd-bebob fw1.0: Detect discontinuity of CIP: 88 C8
[   32.767989] snd-bebob fw1.0: Detect discontinuity of CIP: F8 38
[   33.263808] snd-bebob fw1.0: Detect discontinuity of CIP: 78 B8
[   33.757156] snd-bebob fw1.0: Detect discontinuity of CIP: 08 48
[   34.258860] snd-bebob fw1.0: Detect discontinuity of CIP: 80 C0
[   34.755571] snd-bebob fw1.0: Detect discontinuity of CIP: 40 80
[   35.261252] snd-bebob fw1.0: Detect discontinuity of CIP: 60 A0
[   35.753980] snd-bebob fw1.0: Detect discontinuity of CIP: 78 B8
[   36.253547] snd-bebob fw1.0: Detect discontinuity of CIP: C0 00
[   36.752500] snd-bebob fw1.0: Detect discontinuity of CIP: 08 48
[   37.255203] snd-bebob fw1.0: Detect discontinuity of CIP: B0 F0
[  277.760550] snd-bebob fw1.0: Detect discontinuity of CIP: 40 80
[  278.488972] snd-bebob fw1.0: Detect discontinuity of CIP: C0 00
[  278.986290] snd-bebob fw1.0: Detect discontinuity of CIP: E0 20
[  279.485998] snd-bebob fw1.0: Detect discontinuity of CIP: 18 58
[  279.983838] snd-bebob fw1.0: Detect discontinuity of CIP: D0 10
[  280.486776] snd-bebob fw1.0: Detect discontinuity of CIP: C0 00
[  280.979487] snd-bebob fw1.0: Detect discontinuity of CIP: 30 70
[  281.480952] snd-bebob fw1.0: Detect discontinuity of CIP: 78 B8
[  281.975413] snd-bebob fw1.0: Detect discontinuity of CIP: 38 78
[  282.475487] snd-bebob fw1.0: Detect discontinuity of CIP: 60 A0
[  282.979446] snd-bebob fw1.0: Detect discontinuity of CIP: 88 C8
[  283.472403] snd-bebob fw1.0: Detect discontinuity of CIP: 88 C8
[  283.968484] snd-bebob fw1.0: Detect discontinuity of CIP: 68 A8
[  284.471585] snd-bebob fw1.0: Detect discontinuity of CIP: 30 70
[  284.562886] usb 3-4.1: reset high-speed USB device number 5 using xhci_hcd
[  284.965508] snd-bebob fw1.0: Detect discontinuity of CIP: D0 10
[  285.469348] snd-bebob fw1.0: Detect discontinuity of CIP: 68 A8
[  285.965174] snd-bebob fw1.0: Detect discontinuity of CIP: 20 60
[  285.981618] firewire_core 0000:05:01.0: phy config: new root=ffc1, gap_count=5
[  290.103982] firewire_core 0000:05:01.0: phy config: new root=ffc1, gap_count=5

I tried update the kernel with eoan-proposed I know run 5.3.20 and I have the same problem (the trace above is made with 5.3.20.

So please, first: tell me where to report this properly to the proper team... ?

And second, If you have any tools or tips to report better, with a trace on or something?

Thanks a lot !!!!!

Mackie Onyx 1640i: Kernel module snd-oxfw plays audio in slow motion.

As I already wrote an email to you @takaswie maybe some other developers might want to take a look so I re-post a bit reformatted report here:

So I confirm my Mackie Onyx 1640i is using snd_oxfw driver.

I have two items to request you:

  • retrieve packet dump from ALSA oxfw driver
  • test with the latest driver
  1. Here is dump [1] (file:trace.dat_stock) with the old (stock) driver for my custom kernel (5.12.2-rt3-fw) and the [1] (file:trace.dat_new) from your new driver (master branch) that you asked to test out. Everything at 512 buffer size and 3 periods @ 48kHz and JACK2 with ALSA backend (44,1kHz test described below) :

The problem is when I play music from pulseaudio sink (from Firefox; Soundcloud and YouTube) the audio plays in slow motion on both sites mentioned. Even the video on YouTube is in slow motion. With VLC and local mp3 file there is slow motion effect and interrupt/break in audio output every 1 second. In Ardour (Linux DAW) the same problem appears. Audio is slowed or just really pitched down. I used command sleep 5 to be more on less precise on the time sudo trace-cmd record -e snd_firewire_lib:amdtp_packet runs.

Also from my experience; I played audio only for short time on YT (pulseaudio_sink to ALSA backend on JACK as I dont have 44.1kHz sessions in Ardour. But at 44.1kHz the same slow motion effect appears on YT and Soundcloud as well as files played locally via VLC. (file:trace.dat_441)

The only messages from dmesg are:

[  531.209832] snd_oxfw fw1.0: Detect discontinuity of CIP: 68 00
[ 5041.841125] snd_oxfw fw1.0: Detect discontinuity of CIP: 58 00

But I am not sure when they appeared.
With old or the new master kernel module. Maybe I will try to figure it out.
Also I will try with non-RT kernel.

LINK TO THE DUMPS
[1] https://mega.nz/folder/76hCBRTK#muOYoyghB8fbva4alQDZnQ

I've verified I run your new driver with this:

areyouloco@studio:~/code/snd-firewire-improve$ sudo modinfo snd-oxfw
filename:       /lib/modules/5.12.2-rt3-fw/updates/dkms/snd-oxfw.ko
areyouloco@studio:~/code/snd-firewire-improve$ sudo dkms install alsa-firewire/4.17
Module alsa-firewire/4.17 already installed on kernel 5.12.2-rt3-fw/x86_64

(sudo modprobe -r before and loaded the module again after DKMS build to be sure)

  1. So when I uninstall your driver and run it from kernel directory:
areyouloco@studio:~/code/snd-firewire-improve$ sudo dkms remove alsa-firewire/4.17 --all
areyouloco@studio:~/code/snd-firewire-improve$ sudo modinfo snd-oxfw
filename: /lib/modules/5.12.2-rt3-fw/kernel/sound/firewire/oxfw/snd-oxfw.ko

(again sudo modprobe -r before and loaded the module again after DKMS uninstall)

After restoring to kernel's stock module it plays at normal speed/pitch.

So there is for sure some bug introduced to be rechecked.

Thank you for your amazing work! Up to some further tests,
AreYouLoco?

Enhancement request: Add "pretty" port names

When using JackD it would be beneficial to add port aliases the same way FFado does.
For example, with FFado:

[galileo@sol ~]$ jack_lsp -A
firewire_pcm:0040ab0000c39b88_MicIn1 left_in
   system:capture_1
firewire_pcm:0040ab0000c39b88_MicIn1 right_in
   system:capture_2
firewire_pcm:0040ab0000c39b88_LineIn 3+4 left_in
   system:capture_3
firewire_pcm:0040ab0000c39b88_LineIn 3+4 right_in
   system:capture_4
firewire_pcm:0040ab0000c39b88_SpdifIn left_in
   system:capture_5
firewire_pcm:0040ab0000c39b88_SpdifIn right_in
   system:capture_6
firewire_pcm:0040ab0000c39b88_MidiPort_1_in
firewire_pcm:0040ab0000c39b88_LineOut 1+2 left_out
   system:playback_1
firewire_pcm:0040ab0000c39b88_LineOut 1+2 right_out
   system:playback_2
firewire_pcm:0040ab0000c39b88_LineOut 3+4 left_out
   system:playback_3
firewire_pcm:0040ab0000c39b88_LineOut 3+4 right_out
   system:playback_4
firewire_pcm:0040ab0000c39b88_SpdifOut left_out
   system:playback_5
firewire_pcm:0040ab0000c39b88_SpdifOut right_out
   system:playback_6
firewire_pcm:0040ab0000c39b88_MidiPort_1_out


with snd_bebob:

[galileo@sol ~]$ jack_lsp -A
system:capture_1
   alsa_pcm:hw:FA66:out1
system:capture_2
   alsa_pcm:hw:FA66:out2
system:capture_3
   alsa_pcm:hw:FA66:out3
system:capture_4
   alsa_pcm:hw:FA66:out4
system:capture_5
   alsa_pcm:hw:FA66:out5
system:capture_6
   alsa_pcm:hw:FA66:out6
system:playback_1
   alsa_pcm:hw:FA66:in1
system:monitor_1
system:playback_2
   alsa_pcm:hw:FA66:in2
system:monitor_2
system:playback_3
   alsa_pcm:hw:FA66:in3
system:monitor_3
system:playback_4
   alsa_pcm:hw:FA66:in4
system:monitor_4
system:playback_5
   alsa_pcm:hw:FA66:in5
system:monitor_5
system:playback_6
   alsa_pcm:hw:FA66:in6
system:monitor_6

All of my attempts to do so via jack_property have failed ...

snd-bebob does not recognize Behringer FCA1616

I have used an FCA1616 exclusively over USB for more than one year, but just decided to see how it will perform over FireWire, since I relied on snd-motu (with MOTU 828mk3) in the past, while using the same laptop and the same FireWire chipset.

Hardware/software details about my current setup:
laptop model: ThinkPad W530
integrated firewire controller:  Ricoh Co Ltd R5C832
operating system: Arch Linux
kernel version: 6.3.3.15.realtime2-1-rt

It looks like snd-bebob was not loaded automatically after hot-plugging the device and I am sure that it is not blacklisted.
However, firewire_core successfully detected a new device and this is the only relevant system log after the hot-plug:

firewire_core 0000:02:00.3: phy config: new root=ffc1, gap_count=5

What I tried to do next was to load snd-bebob manually by running $ sudo modprobe -vv snd-bebob, which returns this:

modprobe: INFO: custom logging function 0x55de1411caf0 registered
modprobe: INFO: context 0x55de14cb53d0 released

I have collected the attribute/value pairs for some of the relevant kernel modules and here is the output for each one of them:

$ systool -vm firewire_core
Module = "firewire_core"

  Attributes:
    coresize            = "106496"
    initsize            = "0"
    initstate           = "live"
    refcnt              = "3"
    srcversion          = "67F2C7904F3BB92B859573B"
    taint               = ""
    uevent              = <store method only>

  Sections:
    .altinstr_replacement= "0xffffffffc0936c7c"
    .altinstructions    = "0xffffffffc09371c8"
    .bss                = "0xffffffffc093f000"
    .call_sites         = "0xffffffffc0938864"
    .data               = "0xffffffffc093e600"
    .exit.data          = "0xffffffffc093ec30"
    .exit.text          = "0xffffffffc0936c80"
    .gnu.linkonce.this_module= "0xffffffffc093ec40"
    .ibt_endbr_seal     = "0xffffffffc0939430"
    .init.data          = "0xffffffffc0949000"
    .init.text          = "0xffffffffc0948000"
    .note.Linux         = "0xffffffffc093d4ec"
    .note.gnu.build-id  = "0xffffffffc093d4c8"
    .note.gnu.property  = "0xffffffffc093d488"
    .orc_unwind         = "0xffffffffc0939478"
    .orc_unwind_ip      = "0xffffffffc093bae8"
    .parainstructions   = "0xffffffffc0938518"
    .printk_index       = "0xffffffffc093ec20"
    .retpoline_sites    = "0xffffffffc0938538"
    .return_sites       = "0xffffffffc09385e4"
    .rodata             = "0xffffffffc0937200"
    .rodata.str1.1      = "0xffffffffc0937e54"
    .rodata.str1.8      = "0xffffffffc09381d8"
    .smp_locks          = "0xffffffffc093811c"
    .strtab             = "0xffffffffc094db58"
    .symtab             = "0xffffffffc094a000"
    .text               = "0xffffffffc092d000"
    __bug_table         = "0xffffffffc093e000"
    __ksymtab           = "0xffffffffc0937000"
    __ksymtab_gpl       = "0xffffffffc09371a4"
    __ksymtab_strings   = "0xffffffffc09375c0"
    __mcount_loc        = "0xffffffffc093790c"
    __patchable_function_entries= "0xffffffffc093e0a8"
$ systool -vm firewire_ohci
Module = "firewire_ohci"

  Attributes:
    coresize            = "61440"
    initsize            = "0"
    initstate           = "live"
    refcnt              = "0"
    srcversion          = "E7A9075D5DE58FF3D1F1086"
    taint               = ""
    uevent              = <store method only>

  Parameters:
    debug               = "0"
    quirks              = "0"
    remote_dma          = "N"

  Sections:
    .altinstr_replacement= "0xffffffffc0d5ac6c"
    .altinstructions    = "0xffffffffc0d5b000"
    .bss                = "0xffffffffc0d60880"
    .call_sites         = "0xffffffffc0d5ccd4"
    .data.once          = "0xffffffffc0d60498"
    .data               = "0xffffffffc0d601e0"
    .exit.data          = "0xffffffffc0d60330"
    .exit.text          = "0xffffffffc0d5ac40"
    .gnu.linkonce.this_module= "0xffffffffc0d604c0"
    .init.data          = "0xffffffffc0d66000"
    .init.text          = "0xffffffffc0d65000"
    .note.Linux         = "0xffffffffc0d5f134"
    .note.gnu.build-id  = "0xffffffffc0d5f110"
    .note.gnu.property  = "0xffffffffc0d5f0d0"
    .orc_unwind         = "0xffffffffc0d5d288"
    .orc_unwind_ip      = "0xffffffffc0d5e4b2"
    .printk_index       = "0xffffffffc0d60338"
    .retpoline_sites    = "0xffffffffc0d5cb50"
    .return_sites       = "0xffffffffc0d5cb90"
    .rodata             = "0xffffffffc0d5b020"
    .rodata.str1.1      = "0xffffffffc0d5c120"
    .rodata.str1.8      = "0xffffffffc0d5c698"
    .smp_locks          = "0xffffffffc0d5ca9c"
    .strtab             = "0xffffffffc0d691a8"
    .symtab             = "0xffffffffc0d67000"
    .text               = "0xffffffffc0d55000"
    __bug_table         = "0xffffffffc0d60000"
    __mcount_loc        = "0xffffffffc0d5bf80"
    __param             = "0xffffffffc0d5cad8"
    __patchable_function_entries= "0xffffffffc0d60030"
$ systool -vm snd_firewire_lib
Module = "snd_firewire_lib"

  Attributes:
    coresize            = "69632"
    initsize            = "0"
    initstate           = "live"
    refcnt              = "1"
    srcversion          = "2A86CB007524F713701FEFE"
    taint               = ""
    uevent              = <store method only>

  Sections:
    .bss                = "0xffffffffc1a53d40"
    .call_sites         = "0xffffffffc1a4f452"
    .data               = "0xffffffffc1a532e0"
    .exit.data          = "0xffffffffc1a53870"
    .exit.text          = "0xffffffffc1a4d2f0"
    .gnu.linkonce.this_module= "0xffffffffc1a53980"
    .init.data          = "0xffffffffc1a5b000"
    .init.text          = "0xffffffffc1a5a000"
    .note.Linux         = "0xffffffffc1a5175c"
    .note.gnu.build-id  = "0xffffffffc1a51738"
    .note.gnu.property  = "0xffffffffc1a516f8"
    .orc_unwind         = "0xffffffffc1a4f8a6"
    .orc_unwind_ip      = "0xffffffffc1a50ad6"
    .printk_index       = "0xffffffffc1a537f0"
    .ref.data           = "0xffffffffc1a538c0"
    .retpoline_sites    = "0xffffffffc1a4f2e2"
    .return_sites       = "0xffffffffc1a4f2fa"
    .rodata             = "0xffffffffc1a4e220"
    .rodata.cst2        = "0xffffffffc1a4f2de"
    .rodata.str1.1      = "0xffffffffc1a4ec6d"
    .rodata.str1.8      = "0xffffffffc1a4f0a8"
    .static_call.text   = "0xffffffffc1a4d330"
    .static_call_sites  = "0xffffffffc1a53968"
    .strtab             = "0xffffffffc1a5eb50"
    .symtab             = "0xffffffffc1a5c000"
    .text               = "0xffffffffc1a48000"
    __bpf_raw_tp_map    = "0xffffffffc1a53880"
    __bug_table         = "0xffffffffc1a53000"
    __jump_table        = "0xffffffffc1a52000"
    __ksymtab           = "0xffffffffc1a4e000"
    __ksymtab_gpl       = "0xffffffffc1a4e174"
    __ksymtab_strings   = "0xffffffffc1a4e831"
    __mcount_loc        = "0xffffffffc1a4ee6b"
    __patchable_function_entries= "0xffffffffc1a53070"
    __tracepoints_ptrs  = "0xffffffffc1a4f2cc"
    __tracepoints_strings= "0xffffffffc1a4f2d0"
    __tracepoints       = "0xffffffffc1a53920"
    _ftrace_events      = "0xffffffffc1a538a0"
$ systool -vm snd_bebob
Module = "snd_bebob"

  Attributes:
    coresize            = "65536"
    initsize            = "0"
    initstate           = "live"
    refcnt              = "0"
    srcversion          = "67917B5F2F6555E7722E386"
    taint               = ""
    uevent              = <store method only>

  Parameters:
    enable              = "Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y"
    id                  = "(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null)"
    index               = "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1"

  Sections:
    .bss                = "0xffffffffc1a3d900"
    .call_sites         = "0xffffffffc1a3963c"
    .data               = "0xffffffffc1a3d300"
    .exit.data          = "0xffffffffc1a3d500"
    .exit.text          = "0xffffffffc1a36f30"
    .gnu.linkonce.this_module= "0xffffffffc1a3d540"
    .ibt_endbr_seal     = "0xffffffffc1a39d5c"
    .init.data          = "0xffffffffc197b000"
    .init.text          = "0xffffffffc197a000"
    .note.Linux         = "0xffffffffc1a3c054"
    .note.gnu.build-id  = "0xffffffffc1a3c030"
    .note.gnu.property  = "0xffffffffc1a3bff0"
    .orc_unwind         = "0xffffffffc1a39dbc"
    .orc_unwind_ip      = "0xffffffffc1a3b23e"
    .printk_index       = "0xffffffffc1a3d460"
    .retpoline_sites    = "0xffffffffc1a39498"
    .return_sites       = "0xffffffffc1a394bc"
    .rodata             = "0xffffffffc1a37000"
    .rodata.cst2        = "0xffffffffc1a39412"
    .rodata.str1.1      = "0xffffffffc1a39040"
    .rodata.str1.8      = "0xffffffffc1a38c08"
    .smp_locks          = "0xffffffffc1a39414"
    .strtab             = "0xffffffffc197ef70"
    .symtab             = "0xffffffffc197c000"
    .text               = "0xffffffffc1a32000"
    __bug_table         = "0xffffffffc1a3d000"
    __mcount_loc        = "0xffffffffc1a38940"
    __param             = "0xffffffffc1a39420"
    __patchable_function_entries= "0xffffffffc1a3d010"

The last thing I did was to compare my current configuration ROM with yours and all I can say is that they differ from each other.

Card detected but not available

Hi,

I followed the installation steps and after the first reboot I was able to see my MOTU UltraLite mk3 Hybrid FW-USB2 in the audio settings .. then suddenly it disappeared and no way I can get it back :(

The card works fine on the same system running windows OS, but I do not use that OS. Just to make sure the fireware pci-e card was working.

➜  ~ lspci | grep -i firewire
05:00.0 FireWire (IEEE 1394): Texas Instruments XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express] (rev 01)



The card seems to be detected properly, see bottom:

➜  ~ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia_1 [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia_1 [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia_1 [HDA NVidia], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia_1 [HDA NVidia], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia_1 [HDA NVidia], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia_1 [HDA NVidia], device 11: HDMI 5 [HDMI 5]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia_1 [HDA NVidia], device 12: HDMI 6 [HDMI 6]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 11: HDMI 5 [HDMI 5]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 12: HDMI 6 [HDMI 6]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: Generic [HD-Audio Generic], device 0: ALC1220 Analog [ALC1220 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: Generic [HD-Audio Generic], device 1: ALC1220 Digital [ALC1220 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 4: UltraLiteMk3 [UltraLiteMk3], device 0: FW-MOTU [UltraLiteMk3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

But it does not show up in the audio settings. Neither in pavucontrol, anything I can do to debug the issue?

Behringer X32: Crackling playback at 48 kHz

Hi,

I'm using a Behringer X32. The mixer supports two sampling rates: 44.1 and 48 kHz. Via the firewire connection (JACK audio server with firewire backend), both recording and playback at 44.1 kHz work without any problems. But at 48 kHz only recording works, playback is heavily disturbed (digital artefacts).

When the mixer is connected, it is (correctly) recognised as
BEHRINGER X_UF (id:6, rev:0), GUID 00156400000082f5 at fw1.0, S400
and the following modules are loaded: snd_bebob snd_firewire_lib

The problem occurs with both tested kernels:
4.15.0-167-lowlatency (Kubuntu 18.04)
5.13.1-051301-lowlatency (Ubuntu Studio 21.04)

I would appreciate any help to solve this problem.

New digimagic (003amdtp) driver integration

There was a bug in the implementation of digimagic, which has now been corrected in 003amdtp at http://github.com/x42/003amdtp .
Now we need to integrate it correctly into the digi00x driver. This may involve a slight change in how the digimagic state is stored and allocated. In particular, the state should not be static (multiple devices) and also should be re-initialized on open/close or stream-restart.

Periodic interrupts with Digidesign Digi 002 Rack

Today I've got a decent deal for a Digidesign Digi 002 Rack, so I decided to get it, primarily for testing purposes. It seems like it has the same problem, as we've previously discussed in #27. #26 seems to be pretty much the same. Can you confirm if all three issues are actually caused by #24?

saf pro40 - cannot get alsa / lib spa / pipewire to see / recognise 96khz mode (it still sees 48000 max)

Link to Log excerpts: https://gist.github.com/dreamcat4/42260017a29eb7c718c10bbaec60f69b

Hi @takaswie,
Very pleased to see how good is firewire alsa device controls. Now that they are integrated into latest kernel. (and am running 6.5 / 6.6 here)...

Most things works pretty well and with sudo alsactl store to save the state (between reboots).

So 1st set my saffire pro 40 interface into 96khz mode:

# 1. use cget / cset to set hardware config = '3' == 96khz
$ amixer -c0 cget iface=CARD,name=clock-rate
numid=11,iface=CARD,name='clock-rate'
  ; type=ENUMERATED,access=rw----W-,values=1,items=4
  ; Item #0 '44100'
  ; Item #1 '48000'
  ; Item #2 '88200'
  ; Item #3 '96000'
  : values=3

# 2. remove any old (or broken) alsa settings
$ sudo rm /var/lib/alsa/asound.state

# 3. persist card settings across restarts
$ sudo alsactl store

Unfortunately when pipewire daemon starts, it goes through all of it's plugins stack loading and probing to alsa. With Tim's libspa ? Or what is the alsa apis. And then inside of pipewire, the object properties onto any hardware streams still maxes out to only the default 48khz. So the hardware alsa setting rate up to 96k does not get noticed? Or perhaps (if not a bug or other problem)... then there is some other tricks needed for this?

Here we can see in the pw-dump the object properties onto the hardware's node objects PipeWire:Interface:Node, we can see here:

    "params": {
      "EnumFormat": [
        {
          "mediaType": "audio",
          "mediaSubtype": "raw",
          "format": "S32LE",
          "rate": {
            "default": 48000,
            "min": 44100,
            "max": 48000
          },

Link: https://gist.github.com/dreamcat4/42260017a29eb7c718c10bbaec60f69b#file-pw-dump-card-0-after-cset-rate3-96000-json-L1832-L1842

And of course, that the reported "max" rate is 48000 --> pipewire plays the streams at 48k

Link: https://gist.github.com/dreamcat4/42260017a29eb7c718c10bbaec60f69b#file-pw-top-c-L7

So looking into the alsa kernel sources, I can indeed see that for snd_dice kernel module... we have those different modes depending upon the hardware etc... that is the array of snd_dice_rates

Link: https://gist.github.com/dreamcat4/42260017a29eb7c718c10bbaec60f69b#file-snd_dice-alsa-kernel-module-reference-c

However when i query the kernel module, there is not any kernel params to set (no options) to configure the modes, for to try and force the rates.

So I was wondering @takaswie what can I try next about forcing the 96khz rate? For example, should I try to force pipewire to override the pipewire properties? And then see what might happen.

Or is there some other hardware setting / modes to configure in the alsa hardware interface... some more cset commands to bring the hardware into 96khz mode setting?

bebob: often fail to take bootloader to run runtime firmware

Reported in #21 and https://forum.manjaro.org/t/firewire-m-audio-410-driver-wont-load-firmware/51165.

With recent Linux kernel, snd-bebob often fail to take bootloader to run runtime firmware.

$ echo 1 > /sys/module/firewire_ohci/parameters/debug
(connect the device to IEEE 1394 bus and autoload snd-bebob)
$ journalctl -n 10
...
[12748.022203] firewire_ohci 0000:02:00.0: AT spd 2 tl 09, ffc1 -> ffc0, ack_pending , BR req, ffffc8020020 8,0
[12748.022305] firewire_ohci 0000:02:00.0: AR spd 0 tl 09, ffc0 -> ffc1, ack_complete, BR resp 8,31
[12748.022366] firewire_ohci 0000:02:00.0: AT spd 2 tl 0a, ffc1 -> ffc0, ack_pending , BW req, ffffc8021000 c,0
[12748.022482] firewire_ohci 0000:02:00.0: AR spd 0 tl 0a, ffc0 -> ffc1, ack_complete, W resp
[12748.022523] firewire_core 0000:02:00.0: created device fw1: GUID 000d6c01100af510, S400
...
$ cat /sys/bus/firewire/devices/fw1.0/model_name
FW Bootloader

The cause is not cleared yet.

No playback with Terratec Phase 88

aplay -vv -Dplughw:0,0 test.wav 
aplay: main:722: audio open error: Function not implemented
cat /proc/asound/card0/firewire/firmware 
Manufacturer:   bridgeCo
Protocol Ver:   1
Build Ver:  0
GUID:       0x000AAC0300592827
Model ID:   0x03
Model Rev:  1
Firmware Date:  20051215
Firmware Time:  163713
Firmware ID:    0x3
Firmware Ver:   17960223
Base Addr:  0x20080000
Max Size:   1572864
Loader Date:    20040719
Loader Time:    134046
cat /proc/asound/card0/firewire/clock 
Sampling rate: 48000
cat /proc/asound/card0/firewire/formation 
Output Stream from device:
    Rate    PCM MIDI
    32000   10  1
    44100   10  1
    48000   10  1
    88200   10  1
    96000   10  1
    176400  0   0
    192000  0   0
Input Stream to device:
    Rate    PCM MIDI
    32000   10  1
    44100   10  1
    48000   10  1
    88200   10  1
    96000   10  1
    176400  0   0
    192000  0   0
uname -r
3.13.0-36-generic

build failure on 3.12

dkms install snd-firewire/3.11

Kernel preparation unnecessary for this kernel. Skipping...

Building module:
cleaning build area....
make KERNELRELEASE=3.12-1-amd64 all....
Error! Build of snd-firewire-lib.ko failed for: 3.12-1-amd64 (x86_64)
Consult the make.log in the build directory
/var/lib/dkms/snd-firewire/3.11/build/ for more information.

cat make.log
DKMS make.log for snd-firewire-3.11 for kernel 3.12-1-amd64 (x86_64)
nie, 19 sty 2014, 14:58:36 CET
make -Wall -C /lib/modules/3.12-1-amd64/build M=/var/lib/dkms/snd-firewire/3.11/build modules
make[1]: Wejście do katalogu /usr/src/linux-headers-3.12-1-amd64' make[1]: Opuszczenie katalogu/usr/src/linux-headers-3.12-1-amd64'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.