# DataExchange on linux?

**URL:** <https://forums.steinberg.net/t/dataexchange-on-linux/917660>\
**Category:** VST 3 SDK\
**Created:** [June 9, 2024, 10:12pm UTC](https://forums.steinberg.net/t/dataexchange-on-linux/917660 "2024-06-09T22:12:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![recallmenot](https://avatars.discourse-cdn.com/v4/letter/r/c4cdca/32.png) [@recallmenot](https://forums.steinberg.net/u/recallmenot)\
**Post date:** [June 9, 2024, 10:12pm UTC](https://forums.steinberg.net/t/dataexchange-on-linux/917660/1 "2024-06-09T22:12:21Z")

</div>

Hi,  
I’m trying to use the DataExchange as per [tutorial](https://steinbergmedia.github.io/vst3_dev_portal/pages/Tutorials/Data+Exchange.html) which seems to be the efficient way of transfering audio data to the controller thread for using in FFT displays etc.  
On windows, I was able to use it just fine.  
Currently, on linux it appears the Processor does not want to connect to the controller.  
I get no “queue opened” or block transfer messages.  
A little GDB later, I found out everything is well until  
`void DataExchangeHandler::onConnect (IConnectionPoint* other, FUnknown* hostContext)`  
tries to do  
`	impl->exchangeHandler = U::cast<IDataExchangeHandler> (hostContext);`  
which returns zero, hence no connection is established.

What did I miss?

In case of missing host-side DataExchange API support, overriding the notify function as per tutorial, the alternate IMessage route should work automatically without further intervention, calling the onDataExchangeBlocksReceived method, no?

---

<div class="post-metadata">

**Author:** ![Arne\_Scheffler](https://dub1.discourse-cdn.com/steinberg/user_avatar/forums.steinberg.net/arne_scheffler/32/92023_2.png) [@Arne\_Scheffler](https://forums.steinberg.net/u/Arne_Scheffler)\
**Post date:** [June 10, 2024, 11:58am UTC](https://forums.steinberg.net/t/dataexchange-on-linux/917660/2 "2024-06-10T11:58:28Z")

</div>

There was a missing peace in linux support, namely the support for the generic IRunLoop interface. In the first iteration the IRunLoop interface was only available when opening the editor. This was changed in one of the latest releases. Maybe your host does not support the newer IRunLoop specification.

---

<div class="post-metadata">

**Author:** ![recallmenot](https://avatars.discourse-cdn.com/v4/letter/r/c4cdca/32.png) [@recallmenot](https://forums.steinberg.net/u/recallmenot)\
**Post date:** [June 10, 2024, 12:28pm UTC](https://forums.steinberg.net/t/dataexchange-on-linux/917660/3 "2024-06-10T12:28:58Z")

</div>

Thanks for the response @Arne_Scheffler!

So to connect the DataExchange, the new iRunLoop is needed host-side and even iMessage wouldn’t work?

In the case I’m describing, the editor is open (directly after loading the plugin). Neither is a connection established nor any data received.

I already [requested the REAPER devs to implement the iRunLoop fix](https://forum.cockos.com/showthread.php?p=2780246#post2780246) for a crash when closing a controller that uses an animation but that was a month ago.

---

<div class="post-metadata">

**Author:** ![Arne\_Scheffler](https://dub1.discourse-cdn.com/steinberg/user_avatar/forums.steinberg.net/arne_scheffler/32/92023_2.png) [@Arne\_Scheffler](https://forums.steinberg.net/u/Arne_Scheffler)\
**Post date:** [June 10, 2024, 2:19pm UTC](https://forums.steinberg.net/t/dataexchange-on-linux/917660/4 "2024-06-10T14:19:09Z")

</div>

> [@recallmenot](#):
>
> So to connect the DataExchange, the new iRunLoop is needed host-side and even iMessage wouldn’t work?

Yes, the run loop is needed to support message handling. You would not need the runloop interface when the host would support the data exchange API natively.

---

<div class="post-metadata">

**Author:** ![recallmenot](https://avatars.discourse-cdn.com/v4/letter/r/c4cdca/32.png) [@recallmenot](https://forums.steinberg.net/u/recallmenot)\
**Post date:** [July 5, 2024, 2:08pm UTC](https://forums.steinberg.net/t/dataexchange-on-linux/917660/5 "2024-07-05T14:08:23Z")

</div>

the reaper devs implemented the new iRunLoop as of 7.17 [as per my request](https://forum.cockos.com/showthread.php?t=290873).  
I guess upgrading the host-side VST SDK to \>= 3.7.9 is a difficult move coming later (somewhen).  
I hope Bitwig and others will follow suit soon but at least now there is a DAW on linux where DataExchange works.
