846 karma · joined December 12, 2016
As to availability, the hardware is manufactured and assembled in Denkendorf, Germany, so the supply chain is short. The Foundation guarantees availability of the Compute Module 1 and 3 until at least January 2023.
Of course the eMMC is still based on flash, which has a limited lifetime. So we use a customized version of Raspbian which has swap disabled by default (can be enabled if you need it) and tunes the syslog configuration to reduce the amount of log data written. It's also possible to use a tmpfs-backed /var/log (can be enabled with a mouse click or a simple command). That way we try to prolong the lifetime of the eMMC as much as possible.
We've also been in talks with the Foundation about this and they have asserted that the eMMC is of good quality and should last for the typical lifetime of a PLC (which can be decades).
But noone is forcing you to use a specific software. You can use Python or even Bash. The input and output values are stored in a process image by an open source kernel driver (piControl) and you can access the process image through a char device. Just seek() to the value you're interested in and issue a read() or write().
https://wiki.linuxfoundation.org/realtime/start
It contains patches to get latencies down and touches numerous subsystems of the kernel. Most importantly, interrupt handlers become preemptible. (Normally interrupts are executed in "atomic context", i.e. they cannot be preempted. This also means e.g. that you can't sleep in an interrupt handler because the timer interrupt is disregarded. With PREEMPT_RT_FULL, interrupts are executed in "process context", i.e. as normal kernel threads which can be interrupted.)
We use the kernel branch of the Foundation (which contains a ton of patches required for hardware support of the Raspberry Pi), cherry-pick the realtime patch set on top, then apply three custom patches, one is a fix to make the USB driver's interrupt handler preemptible. The result is this branch:
The CSI and DSI pins are not accessible on external ports I'm afraid. I'm also not aware of plans to add modules which would make CSI/DSI available externally. In theory it's possible to open the case and attach wires to the pins which go to a connector external to the case and you could connect a CSI camera or DSI display there, however the result can hardly be considered "industrial". :-)
An alternative is to connect a USB camera.
The 4-core BCM2837 on the Compute Module 3 is beefy enough for image processing with OpenCV, in fact we're using OpenCV for our demos at expos. It may even be sufficient for video transcoding. One thing to be aware of though is that we're using a kernel with RT patches. Which means low latency, but also lower throughput. If you don't need low latencies but maximum throughput, it may be a good idea to use a kernel without RT patches. All the tooling to build a custom kernel is on GitHub.
The German I/O module page has an animation which shows this in detail, it seems the English page is missing that for some reason:
2. I think that was a different company, I'll have to ask the CEO next time I see him.
The RevPi Core 3 is equipped with a high performance cooler which is able to sustain 1.2 GHz at full load for about 20 minutes (at room temperature). After that the clock rate will be moderately reduced to 1.15 GHz.
The TL;DR is that the products have gone through all the testing required by EN61131-2 and you can safely deploy them in harsh environments (e.g. wrt electromagnetic radiation or vibrations/shocks). However there is no external certification.
* It's either the Compute Module 3 or the older (cheaper, slower) Compute Module 1.
* The schematics of the base board in the RevPi Core are open source: https://revolution.kunbus.de/download/1803/
* Normally you wouldn't open the RevPi Core case and solder stuff to the base board, though you're given all the information you need if want to do so. The expected use is to just mount the RevPi Core on a top hat rail and extend it with I/O or gateway modules via the PiBridge connector.
https://github.com/libyal/libfvde/wiki
It's experimental though. Better back up your data.
I'd recommend to create a partition for ZFS and move data there that you want to use on both OSes, or outright install Linux on a zpool and mount that on macOS. This has worked remarkably well for me, even with lz4 compression and all the other great features. Layer ZFS on TrueCrypt if you need encryption, I wrote a howto a while ago but never had the time to update it:
https://github.com/zfsonlinux/pkg-zfs/wiki/Dual-booting-OS-X...
The case I was referring to was with the Ethernet cable still plugged in. They seem to suspend the Ethernet controller but don't wake it when packets come in, presumably because the controller doesn't support that. The machine appears dead from the outside after a few seconds of inactivity.
https://www.youtube.com/watch?v=O4AgFhIm1qs
Quote: "It's not just for artists. It's not just for pointy-headed intellectuals from California. It's for us, it's for programmers, it's for developers."
Also, the Alpine Ridge controllers are attached with PCIe 3.0 4x lanes, that's 31.504 GBit/s, so you can't exhaust the available bandwidth fully.
Second, there's no proprietary battery magic in macOS, as stated in the article I already achieve 10.5W idle power consumption on my Ivy Bridge MacBook Pro with discrete GPU, Thunderbolt and AirPort suspended, wheras macOS achieves 7W. I've noticed a GPE in the ACPI tables for the Firewire controller which presumably signals hotplug when the controller is asleep. We're not using that on Linux yet, we keep the Firewire controller active all the time. Adding that would probably save another 1W.
So we're inching ever closer to macOS levels of battery life, and I think eventually we may be able to surpass it because of the sophisticated CPU pstate management that Intel developers continue to tweak with every new release.
Or let's say you want to quickly set up a Hadoop cluster to crunch some data.
Five machines is certainly small as HPC clusters go, and in reality you'll probably have to cap this to four machines because you need one port to attach to a power socket if you need the cluster for more than 2-3 hours. Nevertheless the 4x 40 GBit/s Thunderbolt ports offer some really interesting possibilities, and I'm not aware of any other portable machine that has this right now.
I even backported the then-current version to MacOS X 10.4 (Tiger) last year. :-)
https://lists.freedesktop.org/archives/dri-devel/2015-Octobe...
Back then the probed panel resolution (EDID retrieved by radeon) was 3840x2160, which doesn't make any sense because the panel actually has 5120x2880. It's unclear if this was because of missing/broken MST support in radeon (Multistream Transport) or if Apple used some proprietary mechanism to squeeze the panel resolution in a single stream transport. You may want to contact the person who started that thread (Andreas Tunek) and ask if the situation has improved with contemporary kernels.
https://news.ycombinator.com/item?id=12820490
That said, the kernel developers working on Mac hardware support aren't Apple haters. We're fans. I also don't share the "not for professionals" criticism that was widely directed at the new MacBook Pro fully: E.g. as stated in the article, the four Thunderbolt ports are interesting for HPC applications as you can build a portable compute cluster with up to five fully-meshed high-speed networked nodes. If that's not professional I don't know what is.