RME Fireface-800 update

  • warning: Creating default object from empty value in /home/ffado/ffado.org/modules/spam/spam.module on line 488.
  • warning: Creating default object from empty value in /home/ffado/ffado.org/modules/spam/spam.module on line 488.
  • warning: Creating default object from empty value in /home/ffado/ffado.org/modules/spam/spam.module on line 488.
  • warning: Creating default object from empty value in /home/ffado/ffado.org/modules/spam/spam.module on line 488.
  • warning: Creating default object from empty value in /home/ffado/ffado.org/modules/spam/spam.module on line 488.
  • warning: Creating default object from empty value in /home/ffado/ffado.org/modules/spam/spam.module on line 488.
  • warning: Creating default object from empty value in /home/ffado/ffado.org/modules/spam/spam.module on line 488.
  • warning: Creating default object from empty value in /home/ffado/ffado.org/modules/spam/spam.module on line 488.

Here's a quick update on the Fireface-800. The short story is that it mostly works as of svn revision 2062. Ffado-mixer includes all device controls and the matrix mixer is complete. Audio streaming works to and from the device, although startup can still be a little rough (that's next on my list to look at). It's probably ready for an initial round of testing by others to confirm that success can be achieved on systems other than my own. Please use the ffado-devel mailing list to report bugs and provide feedback.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

ffado works, but jack isn't happy...

Hello jwoithe.

Thanks for the great work. I just downloaded 2148 from SVN, and it appears to work with my fireface 800. ffado-mixer runs, changes settings, and the FF800 shows level changes on its front LEDs, for example.

However, I've tried several versions of jackd, and all of them have failed after calling jackd -dfirewire. Some information from the call to jackd is below.

Could you please advise as to the best forum for help with this issue?

Thanks!

----DEBUG INFO----
$ jackd -dfirewire -v4
jackdmp 1.9.8
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2011 Grame.
jackdmp comes with ABSOLUTELY NO WARRANTY

This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
no message buffer overruns
no message buffer overruns
no message buffer overruns
JACK server starting in realtime mode with priority 10
00838876494: (ffado.cpp)[ 92] ffado_streaming_init: libffado 2.999.0-2148 built May 11 2012 19:52:48
00838925296: Warning (ieee1394service.cpp)[ 375] initialize: Could not set SPLIT_TIMEOUT to min requested (1000000)
00838925338: Warning (ieee1394service.cpp)[ 379] initialize: Set SPLIT_TIMEOUT to min requested (1000000) did not succeed
00838927132: Debug (devicemanager.cpp)[ 358] discover: Starting discovery...
00838969621: Debug (Configuration.cpp)[ 163] showSetting: Group: (null)
00838969716: Debug (Configuration.cpp)[ 185] showSetting: vendorid = 2613 (0x00000A35)
00838969771: Debug (Configuration.cpp)[ 185] showSetting: modelid = 1 (0x00000001)
00838969814: Debug (Configuration.cpp)[ 209] showSetting: vendorname = RME
00838969865: Debug (Configuration.cpp)[ 209] showSetting: modelname = FireFace800
00838969907: Debug (Configuration.cpp)[ 185] showSetting: driver = 40 (0x00000028)
00838969953: Debug (Configuration.cpp)[ 209] showSetting: mixer = Rme
00838970203: Debug (devicemanager.cpp)[ 620] discover: driver found for device 0
00838970338: Debug (Configuration.cpp)[ 163] showSetting: Group: (null)
00838970378: Debug (Configuration.cpp)[ 185] showSetting: vendorid = 2613 (0x00000A35)
00838970428: Debug (Configuration.cpp)[ 185] showSetting: modelid = 1 (0x00000001)
00838970471: Debug (Configuration.cpp)[ 209] showSetting: vendorname = RME
00838970529: Debug (Configuration.cpp)[ 209] showSetting: modelname = FireFace800
00838970566: Debug (Configuration.cpp)[ 185] showSetting: driver = 40 (0x00000028)
00838970610: Debug (Configuration.cpp)[ 209] showSetting: mixer = Rme
00838972294: Debug (fireface_flash.cpp)[ 309] read_device_flash_settings: Status read: 0: 0x81c000b1 0xa0003001 0xffffffff 0xffffffff
00838972402: Debug (devicemanager.cpp)[ 657] discover: discovery of node 0 on port 0 done...
00838972446: Debug (devicemanager.cpp)[ 665] discover: Discovery finished...
00838972501: Debug (devicemanager.cpp)[1269] showDeviceInfo: ===== Device Manager =====
00838972542: Debug (Element.cpp)[ 121] show: Element DeviceManager
00838972584: Debug (devicemanager.cpp)[1277] showDeviceInfo: --- IEEE1394 Service 0 ---

Iso handler info:
Dumping IsoHandlerManager Stream handler information...
State: 2
00838972730: Debug (devicemanager.cpp)[1287] showDeviceInfo: --- Device 0 ---
00838972894: Debug (devicemanager.cpp)[1290] showDeviceInfo: Clock sync sources:
00838972956: Debug (devicemanager.cpp)[1299] showDeviceInfo: Type: Internal , Id: 0, Valid: 1, Active: 1, Locked 1, Slipping: 0, Description: Selected via device controls
00838973162: Debug (rme_avdevice.cpp)[ 698] prepare: Preparing Device...
00838973275: Debug (rme_avdevice.cpp)[ 754] prepare: iso tx channel: 0
00838973463: Debug (rme_avdevice.cpp)[ 656] resetForStreaming: init stat: 81c000b0 a0003007 ffffffff ffffffff
00838978780: Debug (rme_avdevice.cpp)[ 656] resetForStreaming: init stat: 81c000ba a0003007 00000001 00000001
00838987142: Warning (StreamProcessor.cpp)[1708] updateState: ignoring identity state update from/to ePS_Created
00838987330: Warning (StreamProcessor.cpp)[1708] updateState: ignoring identity state update from/to ePS_Created
00838987852: Debug (rme_avdevice.cpp)[ 656] resetForStreaming: init stat: 81c000c0 80003007 00000001 00000001
Handler type................: Receive
Port, Channel...............: 0, 1
Buffer, MaxPacketSize, IRQ..: 128, 800, 64
Last cycle, dropped.........: -1, 0, 0
Handler type................: Transmit
Port, Channel...............: 0, 0
Buffer, MaxPacketSize, IRQ..: 128, 792, 64
Speed ..................: 2
Min ISOXMT bufferfill : 7999
Last cycle, dropped.........: -1, 0, 0
00839728465: Debug (RmeTransmitStreamProcessor.cpp)[ 319] generatePacketData: ticks per frame: 513 7 112 (len=784)
00839752463: Debug (StreamProcessor.cpp)[ 641] getPacket: dropped packets xrun (2)
00839752525: Error (StreamProcessor.cpp)[ 707] getPacket: Invalid return value: 4
00839752545: Error (IsoHandlerManager.cpp)[1384] iterate: IsoHandler (0x853bb08): Failed to iterate handler: Permission denied
00839771423: Debug (StreamProcessorManager.cpp)[1411] waitForPeriod: Xrun on XMIT SP 0x853a9b8 due to ISO side xrun
00839771506: Warning (StreamProcessorManager.cpp)[ 909] alignReceivedStreams: xrun while aligning streams...
00839771558: Error (StreamProcessorManager.cpp)[ 873] syncStartAll: Could not align streams...
00839797952: Warning (TimestampedBuffer.cpp)[1064] incrementFrameCounter: (0x8539c70) difference rather large (+): diff= 656804.390, max= 10000.000, 353025024.000, 352368219.610
00840104648: Debug (StreamProcessor.cpp)[ 641] getPacket: dropped packets xrun (1)
00840126703: Debug (StreamProcessorManager.cpp)[1411] waitForPeriod: Xrun on XMIT SP 0x853a9b8 due to ISO side xrun
00840126837: Warning (StreamProcessorManager.cpp)[ 909] alignReceivedStreams: xrun while aligning streams...
00840126877: Error (StreamProcessorManager.cpp)[ 873] syncStartAll: Could not align streams...
00840152567: Warning (TimestampedBuffer.cpp)[1064] incrementFrameCounter: (0x8539c70) difference rather large (+): diff= 673815.298, max= 10000.000, 361758720.000, 361084904.702
00840465301: Debug (StreamProcessor.cpp)[ 641] getPacket: dropped packets xrun (2)
00840465377: Error (StreamProcessor.cpp)[ 707] getPacket: Invalid return value: 4
00840465398: Error (IsoHandlerManager.cpp)[1384] iterate: IsoHandler (0x853bb08): Failed to iterate handler: Permission denied
00840481658: Debug (StreamProcessorManager.cpp)[1411] waitForPeriod: Xrun on XMIT SP 0x853a9b8 due to ISO side xrun
00840481695: Warning (StreamProcessorManager.cpp)[ 909] alignReceivedStreams: xrun while aligning streams...
00840481716: Error (StreamProcessorManager.cpp)[ 873] syncStartAll: Could not align streams...
00840507305: Warning (TimestampedBuffer.cpp)[1064] incrementFrameCounter: (0x8539c70) difference rather large (+): diff= 676824.963, max= 10000.000, 370477056.000, 369800231.037
00840908579: Warning (TimestampedBuffer.cpp)[ 511] writeFrames: ringbuffer full, 784, 575
00840908611: Debug (StreamProcessor.cpp)[ 587] putPacket: processPacketData xrun
00840908784: Debug (StreamProcessorManager.cpp)[1397] waitForPeriod: Xrun on RECV SP 0x8539ac0 due to ISO side xrun
StreamProcessor 0x8539ac0, Receive:
Port, Channel : 0, 1
Packets, Dropped, Skipped : 10082, 0, 0
Now : 00380349210 (015s 3811c 1818t)
Xrun? : True
State : ePS_WaitingForStreamDisable
Buffer : 0x8539c70
Framerate : Nominal: 48000, Sync: 48005.799994, Buffer 48005.799994
TimestampedBuffer (0x8539c70): 4676 frames, 4676 events
Timestamps : head: 377840675.951, Tail: 380234498.698, Next tail: 380238082.265
Head - Tail : -2393822.747 (-4675.674350 frames)
DLL Rate : 3583.816574 (511.973796)
DLL Bandwidth : 1.017253e-08 1/ticks (0.250000 Hz)
00840908920: Debug (StreamProcessorManager.cpp)[1415] waitForPeriod: Xrun on XMIT SP 0x853a9b8 due to buffer side xrun
00840908936: Warning (StreamProcessorManager.cpp)[ 909] alignReceivedStreams: xrun while aligning streams...
00840908953: Error (StreamProcessorManager.cpp)[ 873] syncStartAll: Could not align streams...
00840917777: Warning (TimestampedBuffer.cpp)[1064] incrementFrameCounter: (0x8539c70) difference rather large (+): diff= 115453.735, max= 10000.000, 380353536.000, 380238082.265
00842833207: Fatal (IsoHandlerManager.cpp)[ 348] Execute: (0x85166c0, Transmit) Handler died: now: 22C86686, last: 1EC48A63, diff: 49341475 (max: 49152000)
00842833245: Warning (StreamProcessor.cpp)[ 173] handlerDied: Handler died for 0x853a9b8
00850049796: Error (IsoHandlerManager.cpp)[1913] requestEnable: Enable requested on stream 'Transmit' with state: 2
00850049890: Error (StreamProcessor.cpp)[1244] scheduleStartDryRunning: Could not start handler for SP 0x853a9b8
00850049950: Error (StreamProcessorManager.cpp)[ 498] startDryRunning: Could not put 'Transmit' SP 0x853a9b8 into the dry-running state
00850049997: Error (IsoHandlerManager.cpp)[1913] requestEnable: Enable requested on stream 'Transmit' with state: 2
00850050089: Error (StreamProcessor.cpp)[1244] scheduleStartDryRunning: Could not start handler for SP 0x853a9b8
00850050125: Error (StreamProcessorManager.cpp)[ 498] startDryRunning: Could not put 'Transmit' SP 0x853a9b8 into the dry-running state
00850050185: Error (IsoHandlerManager.cpp)[1913] requestEnable: Enable requested on stream 'Transmit' with state: 2
00850050220: Error (StreamProcessor.cpp)[1244] scheduleStartDryRunning: Could not start handler for SP 0x853a9b8
00850050271: Error (StreamProcessorManager.cpp)[ 498] startDryRunning: Could not put 'Transmit' SP 0x853a9b8 into the dry-running state
00850050313: Error (IsoHandlerManager.cpp)[1913] requestEnable: Enable requested on stream 'Transmit' with state: 2
00850050355: Error (StreamProcessor.cpp)[1244] scheduleStartDryRunning: Could not start handler for SP 0x853a9b8
00850050391: Error (StreamProcessorManager.cpp)[ 498] startDryRunning: Could not put 'Transmit' SP 0x853a9b8 into the dry-running state
00850050453: Error (IsoHandlerManager.cpp)[1913] requestEnable: Enable requested on stream 'Transmit' with state: 2
00850050507: Error (StreamProcessor.cpp)[1244] scheduleStartDryRunning: Could not start handler for SP 0x853a9b8
00850050556: Error (StreamProcessorManager.cpp)[ 498] startDryRunning: Could not put 'Transmit' SP 0x853a9b8 into the dry-running state
00850050597: Fatal (StreamProcessorManager.cpp)[1021] start: Could not syncStartAll...
00850050641: Warning (devicemanager.cpp)[ 929] startStreaming: Failed to start SPM!
firewire ERR: Could not start streaming threads
00850050905: Fatal (ffado.cpp)[ 220] ffado_streaming_start: Could not start the streaming system
Cannot start driver
JackServer::Start() failed with -1
Failed to start server
00850051303: Error (IsoHandlerManager.cpp)[1332] ~IsoHandler: BUG: Handler still running!

Re: ffado works, but jack isn't happy...

A very similar post was sent to the ffado-user mailing list earlier today. This might be from you. Apologies that the website decided your post was spam - sometimes the spam filter gets it wrong. I've released it from the quarantine area.

There are a few details in the logs you've provided which are worth investigating. Refer to my reply on ffado-user for the details. Briefly, it seems that your system is dropping packets for some reason.

The best forum for discussing issues like this is probably the mailing lists. For general user enquiries ffado-user is the place to go, as it seems you have independently concluded. Sometimes though it's best to send technical questions to ffado-devel, simply because there are some technical people which only subscribe to ffado-devel. Anyway, let's see what turns up as a result of the post to ffado-user.

Oh, and if the posting to ffado-user wasn't you, feel free to join in on the ffado-user discussion. :-)

Re: ffado works, but jack isn't happy...

Yes, that was me. Sorry for the double post. When this post didn't show up, I went looking for help elsewhere ;-) Thanks for the helpful replies. I'll copy ffado-devel.

The whole ffado effort is great. I can't wait to use RME FW devices with linux.

Re: TCO & storing settings

> Do you plan to support Time Code Option card and storing settings into internal memory?

Yes to both. I don't have an ETA at this stage since there are a few other arguably more important things I would like to get out of the road first, the most visible of these being the occasional instabilities at start-up. Having said that, I do hope to look at the flash read/write issue in the next couple of months, but that will depend on how long it takes to clear up a bunch of bug tracking tickets which have languished without attention for an embarrassingly long time.

FYI I do have a TCO card but it's not currently fitted to my FF800 - the theory being that I wanted everything to function well for units without it fitted first, and the only way to be sure of that is to not have it fitted. As a result I think I'll fit that only after the flash support is done.

So to summarise, I think the first of these to be supported by FFADO will be the reading/writing of the device's configuration flash memory (which includes the mixer status) with the TCO support following sometime after that. At least that's my feeling at the moment.

flash read

Hey jwoithe,

Is there any problem with reading settings from flash? For example if flash settings are written in another OS, then the device is connected to linux, will the currently active (read from flash) settings be replaced with the defaults of the drivers?

Thanks so much for your work here! I'm looking forward to using it.

-j

Re: flash read

> Is there any problem with reading settings from flash?

Not technically. I know how to do it, and most of the code for reading and writing is already in FFADO. It's mostly a matter of debugging it and then providing a user interface for it.

> For example if flash settings are written in another OS, then the device is connected to linux, will the currently active (read from flash) settings be replaced with the defaults of the drivers?

The values written to flash seem to be driven more by the nature of low level GUI control values in other operating than anything else. However, at the end of the day that's the value definitions that the device's hardware expects and so that's what we have to use.

The way the flash works on these interfaces is kind of interesting. While the values written to the device flash are used by the device for initialisation on power-up, they are not generally used by the computer when it connects to the device unless the user explicitly requests it. Instead, the computer (at least under other OSes) sets the device up how it last had it configured. The reason is pretty simple: there's no way to obtain some of the device's currently active settings from the device - they must be assumed. Furthermore, since the device can be hot-plugged, there's no way to be sure that the flash settings reflect the actual device's current state (it could have been changed by some other computer).

With that background we can return to the original question. The primary function of the device flash is to set up the device's power on status: the status the device adopts when power is applied without a computer connected. At present, when one connects the RME to Linux the power-on defaults supplied from flash will be replaced by the defaults used by ffado (as you have suggested is the case). While it's feasible for ffado to read the flash contents and use those as the defaults, this still isn't really "correct" because something else may have changed the device configuration in the meantime and not written that to flash. Note that device settings are not automatically written to flash by the RME device: they are only written when the user requests it (and presently ffado-mixer has no way to request that this happen).

The way I plan to deal with this is similar to that adopted in other OSes.

  • Ffado will cache the device settings on the hard disc for use when the device is next connected. This mirrors what is done in other OSes.
  • Ffado-mixer will gain a "save to flash" button, which will allow the current ffado-configured settings to be written to flash for restoration at next power-up.
  • I will probably also add a "read from flash" button to allow the current flash settings to be used to reset the device.
  • Further down the track, implementation of some form of "preset" system will probably also be done, whereby ffado-mixer can save the current device settings to presets on the computer, which can then be recalled into the device later. This last point has little to do with the device's flash memory - I've included it only for completeness.

Certainly if you have suggestions about how best to deal with these issues I would be interested to hear them.

> Thanks so much for your work here!

Thanks! :-)

TCO & storing settings

Do you plan to support Time Code Option card and storing settings into internal memory?

Fireface-800 is good for SVN

Fireface-800 is good for SVN 2062 and I know Ffado-mixer includes all device controls which can be help in this project. I hope this project will be getting amore response. I must say that this is great for every person so they should involve in it and give a support in it.

  • Binary choices delivers an opportunity to earn income. Due to the fact the inception on the strategy of binary options’ there are already several investing platforms that offers binary options trading trading to new and seasoned traders.