Ticket #152 (closed enhancement: fixed)

Opened 16 years ago

Last modified 15 years ago

Alesis io14 playback support

Reported by: adi Assigned to: ppalmers
Priority: minor Milestone: FFADO 2.1
Component: Version: FFADO SVN (trunk)
Keywords: Cc:
The device the bug applies to: Alesis io14

Description

Hi!

The io14-playback.patch makes the dice code working for Alesis io14. It's still necessary to set AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT to 0 in the toplevel config.h, but perhaps it's possible circumvent that somehow.

Attachments

io14-playback.patch (0.6 kB) - added by adi on 08/27/08 07:26:34.
nodata-xmit.patch (0.7 kB) - added by adi on 09/23/08 14:02:42.

Change History

08/27/08 07:26:34 changed by adi

  • attachment io14-playback.patch added.

09/23/08 02:10:37 changed by ppalmers

(In [1332]) re #152: applied the patch.

09/23/08 02:11:52 changed by ppalmers

  • owner set to ppalmers.
  • status changed from new to assigned.

It should not be necessary to set AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT to 0, since the code for the dice disables this dynamically. Can you try whether it works with AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT set to 1?

09/23/08 14:01:56 changed by adi

I've rechecked with AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT=1, and it immediately gives:

126392527373: Error (StreamProcessorManager.cpp)[ 702] alignReceivedStreams: Could not shift SP 0xd70580 -5 frames
126392527431: Error (StreamProcessorManager.cpp)[ 629] syncStartAll: Could not align streams...
126393128059: Warning (StreamProcessorManager.cpp)[ 660] alignReceivedStreams: xrun while aligning streams...
126393128115: Error (StreamProcessorManager.cpp)[ 629] syncStartAll: Could not align streams...

and finally:

126399134051: Error (StreamProcessorManager.cpp)[ 702] alignReceivedStreams: Could not shift SP 0xd70580 -5 frames
126399134113: Error (StreamProcessorManager.cpp)[ 629] syncStartAll: Could not align streams...
126399134128: Fatal (StreamProcessorManager.cpp)[ 742] start: Could not syncStartAll...
126402723678: Fatal (IsoHandlerManager.cpp)[ 341] Execute: (0xd6f850, Receive) Handler died: now: 46D00B36, last: 4028A000, diff: 81957686 (max: 49152000)
126402723733: Warning (StreamProcessor.cpp)[ 127] handlerDied: Handler died for 0xd712e0
firewire ERR: Could not start streaming threads: -1
DRIVER NT: could not start driver
cannot start driver

As soon as I switch back to AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT=0, everything's fine. Ok, it's pretty sensitive: changing the workspaces or opening a new firefox tab causes an audible glitch accompanied by

126661619240: Warning (TimestampedBuffer.cpp)[ 431] writeFrames: ringbuffer full, 256, 31
126661619418: Warning (StreamProcessorManager.cpp)[ 660] alignReceivedStreams: xrun while aligning streams...
126661619462: Error (StreamProcessorManager.cpp)[ 629] syncStartAll: Could not align streams...
126662373537: Error (StreamProcessorManager.cpp)[ 702] alignReceivedStreams: Could not shift SP 0x8ff580 -7 frames

This might be caused by the nx6325 AMD C1E stability problem (large clock jitter on my dualcore laptop). Linux-2.6.27 should fix the underlying timer issue, so once 2.6.27 will be available, I can see whether the xruns still occur or not.

I've checked all occurances of AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT and added

   assert (false == m_send_nodata_payload );

to libstreaming/amdtp/AmdtpTransmitStreamProcessor.cpp:375. This leads to

jackd: src/libstreaming/amdtp/AmdtpTransmitStreamProcessor.cpp:375: unsigned int Streaming::AmdtpTransmitStreamProcessor::fillNoDataPacketHeader(iec61883_packet*, unsigned int*): Assertion `false == m_send_nodata_payload' failed.
Aborted

Replacing the assertion with printf reveals that m_send_nodata_payload is always true, so the code in dice_avdevice.c isn't executed.

I've tracked it down: config.h needs to be included in dice_avdevice.c and AmdtpTransmitStreamProcessor?.h in order to propagate the correct value of AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT.

I'll attach a patch to this ticket.

09/23/08 14:02:42 changed by adi

  • attachment nodata-xmit.patch added.

09/24/08 09:40:37 changed by ppalmers

  • milestone changed from FFADO 2.0 to FFADO 2.1.

09/24/08 09:42:57 changed by ppalmers

(In [1347]) re #152: apply patch

02/02/09 14:25:28 changed by adi

  • status changed from assigned to closed.
  • resolution set to fixed.

I'm closing this ticket. io14 worked great over the last months, xruns vanished with realtime priorities for jackd. Operation is very stable, few to no xruns or crashes.

I suggest to change the device DB's entry to "reported to work", "basically supported" or something like this. It's surely more than "Not supported", though only in the trunk.