A Forgotten Gem: Apple FireWire SDK

Once upon a time (for those somewhat new to the Mac platform), there was this innovative connection that showed up in the late 1990s – early 00s called FireWire that came around shortly after the advent of USB (at least in terms of the consumer world – FireWire had been in development since the mid 80s but didn’t show up on Macs as standard until the Blue and White Power Mac G3 in 1999).  FireWire was a high speed bus for external connections that was truly ahead of its time allowing initially up to 400 Megabits per second of bi-directional traffic between the host machine and the client, which at the time of its release only USB 1.1 was commonplace with 12 Megabits per second of throughput, so FireWire offered over 33x the speed for devices that supported it!

 

 

 

 

 

 

This speed was later increased with FireWire 800 to (as you guessed it) – 800 Megabits per second of bi-directional traffic.  See the comparison below between these cable types the fit the typical full-sized connection ports.  Full-sized FireWire 400 cables use a specialized 6-pin connector, while the FireWire 800 cables with a more squarish end used a specialized 9-pin connector.

You can connect FireWire 400 Devices to FireWire 800 devices and vice versa.  There are also smaller 4-pin connection ports found on many devices, so adapters can be used as well as cables with different connector tips on each end, but at the end of the day, FireWire is FireWire.  For devices that have the same type of connector on each end, the cables in the example below will allow for end to end transfer of 400 or 800 Megabits per second, respectively.  Otherwise, if a slower speed is used on one end or another, that will be the maximum bi-directional transfer speed between devices (example: if you use a cable with a 9-pin FireWire 800 connection on one end and a 6-pin FireWire 400 connector on the other end to accommodate both ports, the maximum transfer speed will be 400 Megabits per second).  As for the smaller 4-pin connections, the main caveat is that they do not carry power, and are all limited to a maximum of 400 Megabits per second (some of these ports are even rated at 100 or 200 Megabits per second).  The larger connectors also carry power in addition to data/video.

 

 

 

 

 

 

 

 

In the early years of FireWire, a wide array of premium products were released that used this connection as it worked great to transmit both data and video, while HDMI that came shortly after for consumer electronics (which had far greater throughput and bandwidth for video than FireWire) was quickly standardized for consumer digital video connections, but was mainly targeted for use with video only.  Everything from DVRs (Digital Video Recorders), camcorders, Over Air STBs (Set Top Boxes), DVD Recorders, hard drive enclosures, TVs (a wide variety of types, including rear projection, CRT, DLP, and Plasma Displays), and even the very obscure (but very fascinating) format of D-VHS used FireWire (more to come later specifically around D-VHS itself).  Of course, a good number of Windows based PCs and just about every Mac that shipped from 2000 through 2012 also had onboard FireWire ports that could then connect to these various peripherals and displays.

The key advantage of FireWire was the fact that it provided a very steady steam of data, which is why it was so ideal for both data and video.  While USB 2.0 reached 480 Megabits per second (20% faster than FireWire 400 on paper) and while the earlier versions of USB 3.0 could theoretically reach up to 5.0 Gigabits per second (a little more than 6x faster than FireWire 800 on paper), both versions of FireWire were technically better than their generational counterpart for large file transfers.  This was because USB (until v3.1) largely relied on burst transmissions (sending chunks of data at a time and then pausing before doing so again repeatedly).  Replicating something large such as a 500 GB to 1 TB file of uncompressed Pro-Res Video would always be better over FireWire before the advent of faster steady stream transport methods (such as USB 3.2 Gen 2 or Thunderbolt).

Now that some background was provided on FireWire, the question begs – how did developers build and collaborate to make FireWire do all it could? In the heyday of the development of FireWire equipped hardware/peripherals and software, Apple used to ship out its Software Developer Kit (SDK) for FireWire to developers and made these assets available online.  Apple’s FireWire SDK stopped being updated in 2009, but it’s still out there and theoretically works on all Macs that can run 32-bit code and is a Universal Binary package, so it will work on basically all PowerPC G3 through G5 Macs running Mac OS X equipped with FireWire as well as all Intel Macs equipped with FireWire or Thunderbolt (with a FireWire adapter dongle) running Mojave and earlier.  Sign up for an Apple Developer Account with your Apple ID and you can then easily access the FireWire SDK found in the Apple Developer Downloads section.  Simply search “FireWire” once you are in.

The last version (FireWire SDK 26) that Apple has available on its Developer site tends to work well in Mac OS X Tiger through Snow Leopard from my early trials at it, but may work just fine in many other versions of Mac OS X/OS X/MacOS – I’ll need to do some further testing to verify.

 

 

 

 

 

 

 

 

 

 

 

So what’s so exciting about Apple’s FireWire SDK? What might be a good use for it? Well – if you’re a developer, there’s plenty to do.  The entire FireWire application programming stack was provided by Apple, so you could build your own FireWire based application from the base code that’s provided and there’s actually some really cool sample applications included in the SDK package that are really basic, but can do some pretty neat tricks.  One such application is Virtual D-VHS, which I will highlight in a follow-up article.  Stay tuned for more on D-VHS and how Apple’s Virtual D-VHS can be a much more cost effective (albeit much lighter featured) substitute if your only aim is high-quality MPEG2 video capture and how the quality might compare to other video capture options.