No. At least, I’ve had no luck running any of the TrakHound components on Linux.
In a previous post I mentioned that I could not try the TrakHound community software, since I do not have a Windows machine. Afterwards I wondered how true that was. After all, Wine does a decent job running most Windows software, and .NET support on Linux has gotten much better in recent years. So I thought it was worth a shot.
What is TrakHound?
In its own words, TrakHound is a “startup company focused on delivering IIoT solutions to the Advanced Manufacturing industry.” Their products include several components designed to provide a complete machine data collection, storage, and analytics system. This includes TrakHound Community, an open-source machine data collection system based on MTConnect.
Windows-only?
TrakHound Community is a .NET application written in C#. Though .NET has traditionally been a Windows-only platform, there were several possibilities for running it on Linux.
Mono
The Mono platform is an open-source implementation of the .NET framework. Using Mono, it is possible to build .NET assemblies that run in a Linux environment. However, some parts of the .NET framework are Microsoft-specific. TrakHound Community uses a technology called WPF (Windows Presentation Foundation), and Mono’s page on WPF states:
At this point, no group in the Mono project has plans to implement Windows Presentation Foundation APIs as part of the project.
We do not have any plans because the project is too large and there has not been any serious interest from the community to make this effort move forward.
Given that the page has not been significantly changed since 2014, it seems safe to say that Mono will not support WPF, so we will not be able to use it to build the TrakHound Community project.
.NET Core
In recent years, Microsoft has recently embraced the open-source community, releasing .NET Core. No WPF support though.
Wine
Wine is not an emulator, but it is pretty good at running Windows programs on Linux. So I installed Wine, and used it to install the .NET 4.5 framework on my Linux machine.
At first things looked promising. The Windows installer I downloaded from TrakHound’s website ran to completion. When I launched the application, though, it immediately crashed, complaining about unimplemented functions. I tried installing older versions of the framework, and other commonly-used libraries, with the same result.
And with that, I’m out of ideas.
Does it matter?
Though it would be nice to have an MTConnect monitoring client that runs on my Linux machine, I’ll admit that’s probably a rare use-case. Most people will probably want to view data from their Windows laptop or desktop computers, or from their smartphones (for which mobile apps are available).
On the server-side, though, Linux is much more commonplace. It would be nice to be able to launch their Data Collection software, to push data to their cloud service, or to run their analytics software from a local server.
Future Steps
I tested this installation out of personal interest: since TrakHound’s installation instructions did not mention Linux, I figured this was not likely to succeed. It may yet be possible to make the software run. Maybe I missed a Wine dependency needed to get the software running. Worst-case, since the software is open-source, I might be able to strip out the Windows-specific bits and re-factor the server portion as a console application that runs on .NET Core (which I’ve been looking for an excuse to work with). And of course, it’s always possible that someone else has already done this, and will send me a step-by-step guide.
Your article is awesome. You are saving me COUNTLESS HOURS not wasting time on Mono, which I recently installed. I doubt VS Code would work either, but by chance did you look into VS Code? I use LinuxCNC, hence my Linux interest in MTConnect.
When I experimented with Trakhound, most of what I did was in .NET Core in VS Code.
Right now I believe development effort will be required to run TrakHound on a Linux server. Their client applications use WPF (unsupported), and their data collection component is a Windows service.
Of course, the MTConnect agent itself will run just fine on Linux, and TrakHound’s MTConnect library works fine.
What in particular are you trying to get working?