Restoring a Sun SPARCstation IPX Part 3: SCSI2SD, Solaris install and ExpansionFollow article
Fitting a SCSI-to-SD storage converter, installing the O/S and looking at expansion.
The first post in this series introduced the Sun SPARCstation IPX and focused on replacing the electrolytic capacitors in its dead PSU, followed by replacing the NVRAM used to store the Ethernet address and Sun hostid along with configuration similar to that set with a PC via its BIOS. The second post then went on to cover cleaning up the plastic enclosures, some additional PSU work and then addressing a persistent NVRAM issue by rescuing the original device.
In the final post in this series, we take a look at installing a SCSI-to-SD storage adapter, before going on to install a fresh copy of the Solaris operating system.
The SCSI drive fitted in the Sparcstation appears to work well and while it’s advisable to exercise vintage drives now and again, there was also thought that it may also last a little longer if it’s not being run all the time. In addition, to which 207MB is not an enormous amount of storage and an obligatory shot of the drive with a 32GB Micro SD for comparison can be seen above.
Handily a board can be bought which takes an SD card for storage and then uses this to provide one or more SCSI drives. The latest version of SCSI2SD, version 6, provides support for emulating up to 7x drives and these can be a mixture of hard disk drives and optical drives.
In order to fit this into the IPX chassis, it was necessary to make up a new slightly longer SCSI cable, which was done using RS Pro 50-way ribbon cableand 3M IDC cable mount socket connectors . The original cable can be seen above on the left, with the new custom length cable on the right.
Building firmware and scsi2sd-util6
The SCSI2SD board has firmware and it’s generally a good idea to update this to the latest available. Download links are provided on the wiki, but this can also be built from source and the steps for doing this on Ubuntu Linux 20.04 are shown next.
First dependencies need to be installed:
$ sudo apt install gcc-arm-none-eabi dfu-util automake-1.15 libgtk2.0-dev $ curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py $ sudo python2 get-pip.py $ sudo pip2 install intelhex
Note that some other tools may need to be installed if you don’t have these already, but if this is the case it should be fairly clear what needs to be installed from the resulting error when building.
Following which the firmware sources can be cloned and built:
$ git clone --recursive git://www.codesrc.com/git/SCSI2SD-V6 $ cd SCSI2SD-V6 $ ln -s Makefile.2020c Makefile $ make -j4
A symbolic link was created to Makefile.2020c since this was a “Version 6 2020c” board, but obviously, if you have a different build you would need to use the correct Makefile.
When the build completed successfully this resulted in creating the firmware file:
To build the utility GUI you also need to:
$ cd src/scsi2sd-util6
And then run make again. However, we didn’t have much success getting this to build and could be that, since it doesn’t use cmake or configure, you need to manually edit files to suit your system. Although there also didn’t seem to be much in the way of documentation or an issue tracker etc.
Looking on GitHub there do appear to be a number of forks of this codebase and one from user jwakely appeared promising, since there was a commit that added an option to use the system’s installed build of dfu-util, instead of trying to build this (which was proving problematic). Hence this was cloned and built with:
$ git clone --recursive https://github.com/jwakely/SCSI2SD-V6.git $ cd SCSI2SD-V6/src/scsi2sd-util6 $ USE_SYSTEM_DFU_UTIL=Yes make -j4
We actually had to run the make command a few times until the scsi2sd-util6 binary was built. Note also that running “sudo make install” is not advised, as this installs to /usr/bin/. Although of course, you can easily move the binary to a more appropriate location, such as /usr/local/bin.
Hopefully the above will be useful to others who would like to build the utility from source and if some obvious mistake was being made when trying to build the upstream version, or simple changes to the make infrastructure were all that was needed, please comment below.
Now that we have the latest firmware and scsi2sd-util6 — both either simply downloaded or built from source — we can move on to updating the board and configuring storage.
Since it accesses the USB port and no udev rules are provided, we need to run scsi2sd-util6 with sudo (or we could of course create some rules).
$ sudo scsi2sd-util6
In the File menu there is an Upgrade Firmware option, where we can select the firmware and then proceed to plug in the board and — if all goes according to plan — we should see an output in the debug log similar to that shown above.
We can now move on to configuration. The general settings can be seen above and those required will vary depending upon the system and whether this supports parity and whether bus termination is required at the drive etc. We also have a tab for each emulated drive and it’s often the case that you cannot simply configure as large a storage device as you like, for example. Since vintage systems are more likely to have fairly low hard limits and may even only recognise certain vendors and models of drive. Hence it can be advisable to try to emulate a particular known device.
A quick web search turned up a page which detailed recommended settings for using a SPARCstation 10 together with SCSI2SD and the NeXTSTEP O/S. So the same settings were used and an emulated drive was configured with SCSI ID 3, 2GB in size and a sector size of 512 bytes. The configuration was then exported from the GUI to an XML file and sectoresPerTrack edited to be 139 and headsPerCylinder to 4, before re-importing and uploading to the board.
The SCSI2SD was then cabled up to the SPARCstation and a quick test performed before re-assembling, just in case the drive configuration needed to be tweaked.
Fortunately, upon executing probe-scsi at the OpenBoot prompt we received confirmation that the IPX could see a SCSI disk with target 3, along with an external CDROM drive that was connected.
It was decided to install a pretty early version of the Solaris operating system which dates back to around the time of the SPARCstation IPX being introduced, Solaris 1.1. This packages SunOS 4.1.3 UNIX together with the OpenWindows Desktop Version 3.
Installation is reasonably straightforward and involves booting from CDROM, selecting a drive to install to and formatting this.
The first stage of installation results in a “miniroot” being written to disk — a minimal bootable image. Following which the system is booted from this and installation is resumed. There were just two small issues: firstly, it appeared that the installer did not like the year 2021 being entered as the date, so this ended up being set to 1998. The second issue was that when entering a static IP address starting “10.” it didn’t give the opportunity to enter a network mask, but then it was realised that the RFCs for CIDR were not issued until one year after this O/S release!
Above is a short video of the system booting, logging in and starting a few simple applications.
The collection includes a number of additional SCSI expansion units. Above the CDROM drive here we can see an external HDD enclosure, stacked on top of which is a DDS-2 tape drive which can store up to 4GB uncompressed and 8GB compressed on a DAT-based tape cassette. The last peripheral, at the very top, is a 150MB quarter-inch cartridge (QIC) tape drive. This is possibly the most useful, since it dates back to around the time of the IPX and you occasionally come across software distributed using this format. However, this is also in a pretty bad state and looks like it’s been stored somewhere damp, hence may take quite a bit of work to restore it.
SPARCstations also made provision for internal expansion via SBus cards, which is a 32-bit address and data bus based standard that could transfer up to 100MB/s, which was pretty fast for its time. The IPX provides two SBus expansion slots. The card pictured above is a Transputer link adapter, which could be used to enable a Sun workstation to be used as a front-end processor for a Transputer-based parallel processing system — an accelerator for compute-intensive workloads.
One neat feature of SBus cards is that they have a PROM whose contents firstly identify the card and its characteristics, and secondly may contain an optional software driver. If provided this driver is written in a Forth based language and in fact the OpenBoot console (BIOS) is also Forth-based. Unfortunately, the card shown above came with blank EEPROMs and so I’d be keen to hear from anyone else who happens to have a Parsytec BBK SBus card, with EEPROMs that might be copied.
Restoring the SPARCstation IPX has been a fun project and it's great to finally have a working system of the sort that I desperately wanted to own as a teenager, but which was very far beyond my reach. In addition to which there are a few potential future projects that would make use of this and while somewhat more the slow burn type, I hope to eventually share details in due course.