Mac OS X

Setup for Mac OS X is similar to Linux, with a few extra hurdles:
  • You’ll need to download and build from the source; there’s no packaged installer available (i.e. similar routine to “The Hard Way” in the Linux instructions).
  • To do this, you’ll need to have XCode installed (the currently-available version requires OS X 10.7 Lion or 10.8 Mountain Lion), as well as the supplementary Command Line Tools (Preferences→Downloads).
  • Automated startup is more involved.
After downloading, double-click the file to extract the source code. Then open a Terminal window and “cd” into the newly-created folder:
Download: file
cd lcdproc-0.5.6
Do not build the software using the exact Linux procedure — we need to make some small changes along the way. The first step is the same though. From the command line, in the source folder, type:
Download: file
./configure
Then edit the source file for the Matrix Orbital driver:
Download: file
nano server/drivers/MtxOrb.c
(Or you can use vi, emacs, or whatever the editor of your choice.)

Look for this line (around line 387):
Download: file
	p->fd = open(device, O_RDWR | O_NOCTTY);
Replace this with the following two lines:
Download: file
	p->fd = open(device, O_RDWR | O_NONBLOCK);
#undef HAVE_CFMAKERAW
The rest of the build process is then similar to Linux:
Download: file
make
sudo make install
Configuration is then similar to the Linux directions, with the following changes:
  • dmesg won’t show the USB device name. Instead, you’ll need to root around in the /dev directory to find the device name; e.g. start with:
Download: file
ls /dev/tty.usb*
Compare the output with the device first disconnected, then connected, to help track down the correct device name, and edit the Device= line in LCDd.config to match.
  • The LCD drivers are located in /usr/local/lib/lcdproc/ by default; edit the DriverPath= line in LCDd.config to match (and remember to include the trailing slash).
  • The LCDd daemon is located in /usr/local/sbin by default.
  • The lcdproc client is in /usr/local/bin (and must be run as root — use “sudo” during initial configuration/testing).
The auto-start configuration is also notably different, given OS X’s unique method of launching daemons.

First, edit the lcdproc configuration file so that it’s respawn behavior doesn’t interfere with the system’s own facility:
Download: file
      sudo nano /usr/local/etc/lcdproc.conf
    
Look for this line, which is commented out by default:
Download: file
#Foreground=true
Remove the initial # character to enable this line, then save the changes to the file.

It’s slightly awkward…this line should be enabled in lcdproc.conf (which runs in the foreground), but disabled in LCDd.conf after testing (the background daemon).

One more change. Look for this line in lcdproc.conf (around line 77):
Download: file
HighLoad=1.3
If you’re on a multi-core system, increase this number to suit. For example, on a 4-core iMac, I’m using a 4X-ish larger value of 5.0.

This sets the processor load threshold at which the LCD backlight will blink (to indicate heavy work). At startup and login, a lot of processes are launched and may temporarily trigger this blinking if set too low.
Next, we need to create plist files for both programs. From the command line:
Download: file
nano net.omnipotent.LCDd.plist
Copy and paste the following into the new file:
Download: file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
 <dict>
  <key>Label</key>
  <string>net.omnipotent.LCDd</string>
  <key>ProgramArguments</key>
   <array>
    <string>/usr/local/sbin/LCDd</string>
   </array>
  <key>KeepAlive</key>
  <true/>
 </dict>
</plist>
Then a second file:
Download: file
nano net.omnipotent.lcdproc.plist
Containing:
Download: file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
 <dict>
  <key>Label</key>
  <string>net.omnipotent.lcdproc</string>
  <key>ProgramArguments</key>
   <array>
    <string>/usr/local/bin/lcdproc</string>
   </array>
  <key>KeepAlive</key>
  <true/>
 </dict>
</plist>
Set the ownership of both of these files to “root,” then copy to the system daemon directory:
Download: file
sudo chown root:wheel net.omnipotent.LCDd.plist
sudo chown root:wheel net.omnipotent.lcdproc.plist
sudo cp net.omnipotent.LCDd.plist /Library/LaunchDaemons
sudo cp net.omnipotent.lcdproc.plist /Library/LaunchDaemons
On the next reboot, the LCD should begin cycling status information per the lcdproc configuration.

If there’s no response from the LCD, it may be the wrong device name in the LCDd configuration file. Double-check the value there against the contents of the /dev directory, and test by running LCDd from the command line.
This guide was first published on May 10, 2013. It was last updated on May 10, 2013. This page (Mac OS X) was last updated on Aug 26, 2019.