I knew from previous research that I needed to use a utility called ndiswrapper. This makes it possible to use Windows drivers for wireless adapters when there isn't a native Linux alternative. I also knew that recent versions of Ubuntu don't include it by default. The machine I'm working on dual-boots between Windows and Ubuntu, so the obvious solution was to download the packages under Windows before booting into Ubuntu to install them.
Fortunately, finding the packages without the benefit of a package manager proved easier than I was expecting. In fact, Ubuntu's documentation pages include a tutorial covering exactly this situation. I downloaded all three packages, and placed them in the root of a disk partition that the Ubuntu install has access to. I also downloaded drivers for the Netgear WG121.
Booting into Ubuntu, I ran dpkg to install each of the packages. I also edited /etc/modprobe.d/blacklist (as a point of interest, it's necessary to do this as root), to block the built-in drivers which would otherwise conflict with ndiswrapper.
The WG121 drivers I downloaded included a folder called ndis5, which I guessed would contain a copy of the driver specially written to work with ndiswrapper. I skipped the steps in the tutorial related to finding drivers, and moved straight on to installing the driver using ndisgtk. This is a GUI for ndiswrapper that makes the process extremely straightforward.
What should have been the final step was to load the ndiswrapper module by running
depmod -a
modprobe ndiswrapper
which should have started the ndiswrapper module and, in turn, made the wireless adapter usable. Instead, I got an error message that the ndiswrapper module couldn't be found.
When researching the problem, the first website I came across suggested that this could be a conflict between the packages I'd installed and a previously installed version of ndiswrapper. I was under the impression that the dpkg package manager should have stopped this from happening, but nevertheless I used the Synaptic package manager to remove all three ndiswrapper packages and started from scratch. Needless to say, this didn't solve the problem.
Another search took me to Ask Ubuntu, where another Ubuntu user had experienced the same problem and identified a solution. Apparently, the problem is caused by a bug with ndiswrapper which only appeared in Ubuntu 12.04 The suggested solution is to compile ndiswrapper from source by downloading the ndiswrapper-source package from http://packages.ubuntu.com/precise/ndiswrapper-source. When I tried to install the package I got an error due to a few dependencies being missing (obviously I couldn't connect to the Internet to download them), but the installation got far enough through to put a copy of the source code in /usr/src. From there, it was a simple matter of extracting the code using tar, then run make and make install. With these steps completed, running modprobe ndiswrapper worked, and the wireless adapter was initialised. The final step of the process was to delete the contents of the /etc/modprobe.d/ndiswrapper.conf file and force ndiswrapper to re-write it by running sudo ndiswrapper -m.
With ndiswrapper and the driver I linked to above, my Netgear WG121 appears to be stable, and the settings have persisted through a couple of reboots.
