2009 Mac Pro video card upgrade

After upgrading to Yosemite, I noticed that graphics performance was starting to lag a bit on my 2009 Mac Pro while driving two monitors at fairly low resolutions. At one point I had two GT 120s running separate monitors, but after one replacement and two failures, I was back down to one.

GT 120
GT 120

I decided to look into upgrade options and was happy to see that OS X now supports non-EFI video cards. The only catch: You won’t see anything displayed until OS X loads your drivers. Who cares?

I settled on an EVGA GeForce GTX 660 2GB, which Best Buy happened to sell. I can feel the judgement from the hardcore nerds for buying something at Best Buy. Nevertheless, this was much cheaper than trying to buy another GT 120 to replace my second one and offers WAY more power. I don’t game on my Mac – I just want the OS to feel snappy and fluid.

GeForce GTX 660
GeForce GTX 660

Like many powerful cards, the GTX 660 requires the PCIe 6 pin power connector from the power supply or motherboard. I’ve ordered this, but until it gets here, I’ve rigged up an external power source.

Steps to install:

  1. Attach one of these cables to your Mac Pro motherboard OR rig up an external PSU like I did
  2. Insert the new card and attach the other end of the 6 pin PCIe power cable
  3. Put the card retainer back in place, fasten everything down and reassemble
  4. If running an external PSU, make sure it is powered up before powering up the Mac Pro

Thoughts after installation:

  • Why didn’t I do this sooner
  • OS X is silky smooth
  • The fans will ramp up audibly if doing anything intensive in apps that utilize the GPU, but that’s OK
  • Everything just works – no drivers to install
  • My biggest bottleneck is now my disk – an SSD is nextMac About

Heaven Benchmark results:

Mode: 1680×1050 fullscreen on one monitor

Before:

  • FPS: 5.9
  • Score: 148
  • Min FPS: 3.3
  • Max FPS: 11.8

After:

  • FPS: 52.8
  • Score: 1330
  • Min FPS: 8.3
  • Max FPS: 103.3

New GTX 660
New GTX 660
IMG_0801
External PSU 6 pin power cable running through an open slot.
IMG_0802
External PSU

 

Adjusting a blank to provide room for the external power
Adjusting a blank to provide room for the external power cable

IMG_0805 IMG_0809 IMG_0810

Temporary setup
Temporary setup with external power supply. A PSU tester is connected to keep the supply running without being attached to a motherboard.
IMG_0862
Final 6-pin PCIe cable installed
IMG_0864
No more rig!

 

Kinect + Arduino

With an Arduino Ethernet, Processing, and a Kinect, I was able to easily create this little demo where hand movement can control a servo. This is just a tiny step in my master plan to create a robot clone so that I don’t have to leave my chair.

The following libraries and drivers made this work and also made it super easy for me to create it:

OpenKinect
Daniel Shiffman’s Processing Kinect Library (he knows his stuff and has great examples on his site)
Arduino Ethernet UDP send / receive string

Servo:
EMAX ES08A Servo

How it works:

  1. The Arduino Ethernet acquires an IP address and waits for UDP packets on a certain port.
  2. The machine with the Kinect sends packets to the Arduino that contain hand coordinate data.
  3. The Arduino then takes this data (an integer) and maps the range from 0 to 180 degrees.
  4. The mapped value is sent to the servo.

Arduino!

Pretty stoked to finally get one! So far I’ve dissected an old RC car and turned its wireless receiver board / remote into a volume controller for my Mac. I foresee many cool projects…

iPod touch as an auxiliary display

I played around tonight with making my iPod touch an auxiliary display. I thought it may be neat to just have random real-time public tweets cycle through on it so I made the following. As you can see there’s nothing too smooth about it yet – no AJAXiness implemented as this was purely proof of concept.