Getting GSPort Uthernet To Work On Linux | 2020-08-10

Encouraged by my previous post, I decided to make a bit of a weekend project out of finding some kind of Apple // series emulator and getting it online. As mentioned before, the two most logical ways to do this are through serial and a card called Uthernet. Since I remember that the methods for communicating with slot cards on the old Apple // series were pretty basic, it stood to reason I might find an emulator already supporting it.

I did, though not for the trusty old Apple //e of my youth. Instead, I found the source for GSPort, an Apple //gs emulator. It boasted Uthernet simulation, but “only on Windows”. I also noted that the Windows support relied on WinPCAP…but libpcap is a pretty typical library to have on Linux anyway.

It turned out it wasn’t very hard to get working. In fact, if you’d like to try it yourself, here’s what you’ll need to do:

So, a few notes about GSPort and how it’s set up. Basically, GSPort uses libpcap in a manner not unlike Wireshark. It sets the underlying network adapter into promiscuous mode and sends its own Ethernet frames in the raw over it. By using a MAC address similar to that of an Uthernet card, it distinguishes itself from your actual network adapter and can filter off traffic destined for the emulated network card. Thus, it requires either being root or having special capabilities…and it won’t work on wifi! Basically, wifi has some extra bits of underyling protocol to manage mapping between MAC addresses and stations, and the process of sending Ethernet in the raw from an extra spoofed address won’t work under that scenario.

Have any trouble with this yourself? Don’t be afraid to hit me up on Mastodon, Github, or Twitter.