The Apple TV and Crystal HD with Linux

TL;DR Linux works, default GPU is slow, Broadcom accelerator support has been dropped from various apps, kernel driver is maintained out-of-tree

Note that only the first generation of the Apple TV is known to run Linux. Later version run on Apple A series ARM SoCs with a PowerVR SGX (and later A10X Fusion). Because there aren’t any free drivers for this GPU, this isn’t very useful for a device that has video decoding as its primary use case. The proprietary drivers have only been used on OMAP SoCs with Linux. It might work with Openiboot, such as this one.

The CPU is an second generation Intel Pentium M, codenamed Crofton. According to Apple Insider, they used an underclocked Dothan core to be able to run on a 350MHz bus. Although according to Wikipedia, the lowest clockspeed for Dothan CPUs is already 1GHz.

The GPU is an Nvidia GeForce Go 7300 with 64MiB of VRAM.

The OEM software is the Apple TV Software based on Mac OS X 10.4 Tiger.

Linux

People have used the Broadcom Crystal HD on a mini-PCI Express card for accelerating video playback. Because this mPCIe card is replacing the original Wi-Fi mPCIe card, it has been recommended to switch to USB Wi-Fi.

XBMC (a month before the rename to Kodi) removed the userspace support for the Crystal HD in 2014, see here: https://github.com/xbmc/xbmc/pull/5105

A Linux distribution Crystalbuntu was made by Sam Nazarko. This later became OSMC. I think that OSMC maintained downstream support for the Crystal HD for a few more years after dropping support for the ATV1 too in 2017.

VLC included support for the Crystal HD, but removed it in 2020: https://github.com/videolan/vlc/commit/e1a90aa943b55734cdf8f25f5e2dc12a547b0c30

FFmpeg and MPlayer still have support for the Crystal HD. The gsteamer plugin is still packaged in Debian, see https://packages.debian.org/unstable/video/gstreamer1.0-crystalhd

The kernel driver has a long history, both temporarily in /drivers/staging/ and floating around in various Git repositories. The history of this kernel module has been documented here: https://github.com/dbason/crystalhd/blob/master/HISTORY.md

LibreELEC developer chewitt wrote:

“The OE 6.0.1 image is the best-performing release for the AppleTV that I created as it has hacks like nVidia shader caching and a startup sequence in Kodi designed to force things into swap to create free RAM headroom that helps subsequent playback. However it’s all a fudge/compromse and both OE and OSMC have the same fundamental issue: the CHD drivers are not perfect and 256MB RAM is not enough for good Kodi operation.”