Resurrecting iChat Audio and Video Conferencing

Hacker News by 7 min read 42x views
Resurrecting iChat Audio and Video Conferencing

Share Post

Published on: 2026-09-11 12:36:14 by Chris Jones

Updated on: 2026-10-05 20:15:16 • 7 min read

Add this to your /etc/hosts document on your old Mac operating Leopard or Show Leopard (has not been tested on Tiger or Panther), and iChat have to be capable to create audio and video calls again. This assumes your router does port-preserving NAT (most do).

157.230.2.213 configuration.apple.com 

Do note that if you are on a BSD based router akin pfSense or OPNsense, you volition need to allow origin harbor conservation in your outbound NAT settings.

I used to be the most annoying benevolent of Apple zealot. In the first 2000s, I idea everything Apple had was improved than item alternatively out there whether it was true or not. There was one location that it was true, however, and that was in the realm of video and audio conferencing in the first 2000s.

The big players for person flat video conferencing at the period were Microsoft alongside MSN Messenger, Yahoo! alongside Yahoo! Messenger, and AOL alongside AOL Instant Messenger (AIM). Then at Apple's World Wide Developer Conference (WWDC) in June of 2003, alongside alongside the G5 processor and OS X 10.3 panther, Apple announced "iChat AV".

iChat AV Marketing Screenshot

They additionally announced this gorgeous over-engineered webcam to go alongside alongside it called the "iSight".

Original iSight Webcam

I really had a G4 laptop and an iSight. It felt akin living in the forthcoming and I loved it. This article is concerning how I got iChat's video conferencing on first OS X operating complete the Internet again to relive several of that fun.

In first 2023, my companion (will be referred to as "Methodius") and I decided to fair try it and see what would happen. We tried to test a uncomplicated iChat audio call on OS X Leopard. That type of iChat plant alongside XMPP (Jabber) servers, so we all set it up alongside an document on jabb.im, and pressed the green call button. It rang for the another party, it stated it was trying to connect, and then...failed to connect.

It's never that easy.

Time to do several traffic inspection alongside tcpdump. Thankfully, that comes pre-installed on OS X from rear afterward so I didn't have to instal item extra. Along alongside the packet inspection, I additionally ran iChat in debug manner by launching it in the terminal akin this:

/Applications/iChat.app/contents/MacOS/iChat -errorLogLevel 7 

iChat's debug manner was extremely helpful and barely documented anywhere, so now it lives current if I always need to appearance it up again.

  1. iChat makes an http petition to http://configuration.apple.com/configurations/macosx/ichat/1/snatmap.txt to get the location of an SNATMAP server.
  2. iChat makes a UDP petition to that SNATMAP server to get its own community IP address.
  3. iChat on the two ends afterward exchanges their community IPs and ports via their content communication conduit (XMPP in our case).
  4. iChat on the two ends afterward attempts to set up a peer-to-peer RTP association by blasting packets to all complete over the community IPs and ports earlier discovered via the SNATMAP server. Since NAT connections are stateful, and outbound NAT connections open an inbound association to the device making the request, iChat rearward NAT routers are capable to nexus alongside all another without the need to set up NAT harbor forwarding onward of time.
  1. iChat attempted to create an http petition to http://configuration.apple.com/configurations/macosx/ichat/1/snatmap.txt but got redirected to https which it could not nexus to since OS X's TLS suite is too old.
  2. iChat unsuccessful to complete that request, so alternatively of exchanging our community IPs, they exchanged personal LAN IPs instead, which evidently unsuccessful to nexus complete NAT.

The https URL is motionless up at the period of penning this, however, and really contains something!

snatmap://snatmap.apple.com:5678 

OK, NP. I set up my own uncomplicated web server, hosted that document myself, update OS X's /etc/hosts document to item configuration.apple.com to an IP of my choosing. Ran it and...still nothing.

Apple's SNATMAP server doesn't react anymore. At this point, we were at a deceased end since we had no idea how this SNATMAP server worked or how iChat expects to communicate alongside it. We learned a lot but ended in failure.

Methodius and I decide to try again in summer 2026, but this period alongside a small LLM assistance. With our previous network captures, we were capable to use an LLM to reverse engineer iChat's video conferencing example and fig out what the petition to the SNATMAP server looks akin and what iChat expects as a response. From that, we were capable to create a specification document of the SNATMAP protocol.

Even although I didn't have the cognize how to decompile iChat, peruse the gathering code, and them create awareness of it, I can at smallest study how to compose a uncomplicated UDP server from the spec document the LLM generated.

I'm a systems engineer and admin by trade. I instal and configure servers, but I've never written a server of my own before. Turns out, this SNATMAP server made for a awesome archetypal server to custom with.

The protocol:

  1. Communicates complete UDP on harbor 5678
  2. The petition packet contains four sectors in 16 bytes.
    1. Type ("1" for request)
    2. Nonce (random figure used to equivalent a petition alongside a response)
    3. client local IP (unused)
    4. client local harbor (unused)
  3. The reply packet contains four sectors in 16 bytes
    1. Type ("2" for response)
    2. Nonce (the identical random figure from the request)
    3. External IP from the UDP request
    4. The external harbor from the UDP request

Links for the spec document and origin code to the SNATMAP server are at the end of this post

Since Methodius has kids and, as a result, has much small liberated period than I do, I needed a way to test how iChat plant throughout the Internet by myself. Since I don't have two distinct ISP connections to perform with, I decided to build an "Internet" in a lab. This was achieved by operating two NAT routers (OpenWrt) as virtual machines operating on a KVM presenter (Proxmox) that traversed a flat network area acting as the "Internet". Then I physically hooked two Macs up to the bodily KVM presenter (via USB NICs) anywhere the VM routers assigned them IP addresses in their own personal LAN rearward a NAT. Then on the "Internet" network, I had the Jabber (ejabberd), web (lighttpd), and SNATMAP servers operating in a Debian Linux VM.

Here it is diagrammed alongside pictures of the bodily setup alongside the Proxmox Server (the Thinkpad laptop) and the two Macs hooked up to it. iChat Diagram iChat Lab 1 iChat Lab 2 iChat Lab 3 iChat Lab 4

With this, I was capable to test and iterate quickly.

The spec document can be used to create your own type of the server if you so desire. The origin code was hand written in Python from the spec document and is prepared to run on fair concerning any OS that can run Python 3.

If you desire to oneself host, be certain you have a web server configured to answer requests to configuration.apple.com and have it assist snatmap.txt from the path

/configurations/macosx/ichat/1/snatmap.txt 

In snatmap.txt create it contain

snatmap://YOUR_SERVER_IP:5678 

replacing YOUR_SERVER_IP alongside the community IP location of the server the SNATMAP server is operating on.

Or you can fair use my server! I keeping it operating for the 1-5 group remaining in the earth that desire to video conversation using the ancient software. :D

On your old mac operating OS X Leopard or Snow Leopard (might activity on older but not tested), fair act this into your /etc/hosts file.

157.230.2.213 configuration.apple.com 

Then have the companion you desire to call do the same. After that, mash that green call button!

It's true! You can equal use a fairly contemporary Logitech webcam. I tested on OS X Leopard alongside a Logitech C920.

Here is a screenshot of Methodius and I chatting complete the genuine Internet alongside iChat AV. iChat AV Screenshot Real

Enjoy and blessed chatting!

Other Article Hacker News
↑
Close Right Ads
Close Left Ads