latest posts

Feb 11, 2014

In working on my Silicon Graphics Indy (as detailed in these posts: R5000 upgrade and the initial post), I realized I hadn't built a jcBENCH MIPS3/Irix release before and hadn't released a revamped MIPS4/Irix build on the cross-platform code I worked on a few weeks ago.

Jan 27, 2014

Brief Introduction

The Silicon Graphics Indy workstation was originally released in late 1993 starting at $4,995. For that price you received a diskless 100 MHz R4000 Indy, 32mb of a ram, the base 8bit graphics card and a 15” monitor. A more reasonable configuration: 64mb of ram, 1 GB hard drive, flooptical drive, 24bit XL graphics card and external CD-ROM was $23,695 at launch. I should note, standard features on the Indy included an ISDN modem, 10baseT Ethernet, four channel stereo sound card and composite video & s-video input, pretty advanced for the time especially compared to the Apple Mac Quadra.

My Story - Initial Hardware Setup

I actually received my Indy way back in May 2012 for a whopping $37 shipped with no hard drive and no memory, while having the R4400SC 150 MHz CPU and 8bit graphics. The SC in the R4400SC, stands for Secondary Cache. Commonly you will find the R4000PC and R4600PC on eBay which lack the L2 cache.

Luckily the Indy takes 72 pin FPM memory that was pretty standard back in 1993 when it was first released, this made finding compatible working ram on eBay much easier. The Indy has 8 slots and supports up to 256mb of memory (8x32mb), which I was able to find for < $10.

Knowing I would be using this at some point for at least some vintage SGI Doom I also picked up the 24bit XL Graphics Option for $20 later in May 2012, hoping I would get the R5000 180 MHz CPU (more on this later).

Fast forward to January 23rd 2014, I was cleaning up my office after work and noticed the Indy sitting on top of my Prism and decided to invest the time in getting it up and running.

Little did I know all of the spare Ultra 160 and Ultra 320 SCSI drives I had laying around either were dead or didn’t have the backwards compatibility to SCSI-2 which the Indy utilizes (I didn’t realize some manufacturers dropped SCSI-2 support in the U160/U320 era). Luckily, I just purchased several Maxtor ATLAS 15k II 73 GB U320 drives (Model #8E073L0) for use in my Fuel, Tezros, Origin 300s and Origin 350.
Realizing it was a long shot, I put one of those in the Indy (with an SCA->50pin adapter I got off of eBay for $2) and the Indy recognized it without any problems. Granted the SCSI-2’s 10mb/sec bus limits the outbound and inbound bandwidth the drive has (I had previously benchmarked it around 95mb/sec of actual transfer speed), fluid dynamic bearing motors (virtually silent), the 3.5ms access time and internal transfers far outweigh trying to find an “original” SCSI-2 drives, which I might add often go for $40+ on a Seagate 5400pm 2gb drive. I should note the Seagate Cheetah 15k.3 18 GB U320 (Model #ST318453LC) and the Fujitsu 18 GB U160 (Model #MAJ3182MC) drives did not downgrade to SCSI-2.

I should note, my Indy randomly refused to boot (no power to even the power supply fan). Apparently this was a common problem with the initial power supplies from Nidec. The later Sony models didn’t have this problem, but had the problem of not running the fan 100% of the time, instead only when the temperatures hit a high point. Some folks have modified their Sony power supplies to keep the fan on 100% of the time, I did not as I only really use the Indy in the basement where the hottest it gets is about 69’.

A solution I found was to disconnect the power cable for a good 20-30 minutes and then try again. 9 times out of 10 this worked and the system had 0 issues booting into IRIX and maintaining it. So before you run out to buy a “new” power supply of eBay try this solution out. These are 20-21 year old machines afterall.

My Story – Getting IRIX Installed

Having installed IRIX now on a Fuel, Tezro and an Origin 300 I am well versed in the process. For those who are not, checkout this howto guide (http://www.futuretech.blinkenlights.nl/6.5inst.html), it is very detailed and should be all you need to get going. This assumes you have IRIX 6.5.x. Depending on which workstation/server you have, you might need a higher version. 6.5.30 is the latest version of IRIX released, however those typically go for $300+ on eBay. I highly suggest simply getting some version of 6.5 and downloading the 6.5.22m tar files off of SGI via their Supportfollio (this is free after registration).

In my case, the Indy is so old that any version of 6.5 is acceptable, though I wanted to get it to 6.5.22m so I could utilize nekoware. Nekoware is a community project where several contributors compile typical open source software like bash, Apache, MySQL, PHP etc. for MIPS/IRIX. You can download the tardist files here (http://nekoware.dustytech.net/index.php?path=current/) (a tardist is similar to a rpm if you’re coming from a Linux background).

I should note, if you install from an older IRIX 6.5.x release (prior to 6.5.22m) you need to install Patch 5086 (available via the Supportfollio for free) prior to the upgrade.

Another question that might arise especially for those installing to an Indy, I pulled out the DVD-ROM Drive (SCSI-2 50pin) from my Silicon Graphics Fuel to install IRIX. For newer systems that utilize SCA like an Octane or Origin 3x0, you could use a 50pin -> SCA adapter with the drive or do as I did with my Origin 300 a while back and setup a VM of DINA. Basically this allows you to install IRIX over the network to your hardware.
After installation before continuing I highly recommend you clone your drive and keep it locked away in case you ever accidentially mess up your installation of if your hard drive dies. Depending on the speed of your system, you could have just invested several hours of time. Cloing a disk is very easy in IRIX, simply follow this guide (http://www.sgidepot.co.uk/disksfiles.html#CLONE). I had done it myself previously on my Origin 300 and it only took about 10 minutes. For my Indy for those curious, it took about 20 minutes.

My Story – Post IRIX Installation

After installation my first step was to get nekoware installed, I typically install the following (including the dependencies for them):

BASH

OpenSSH

wget

SDL

Firefox

GCC

Nedit

rdesktop

Samba

Subversion

There’s countless others, but those are the essentials that I utilize very frequently. Depending on your system, the installation (especially of GCC) could take some time so be patient. Something to note, if you have an R4x00 CPU you need to utilize the MIPS3 tardists, however if you have an R5000 Indy you can use the MIPS4 variations. At some point it seems contributors to nekoware for MIPS3 trickled off so you’ll more than likely be compiling from source for most things. As I compile stuff I’ll start contributing to my local repository as well.

What’s Next?

I’ve been on a hunt for an R5000 180 MHz CPU or at the least a 150 MHz variant so I can be close to the highest end Indy available.

As for its use, I plan to start on the MODEXngine project now that I have a pretty clear multiplatform architecture.

In addition I want to use it as test bed for writing efficient C++, in a future blog I will be focusing on laziness of programmers (not all, but many) that I feel the commodity PC hardware of today has gotten so fast and cheap that programmers don’t consider efficiency or writing with performance in mind.

Jan 22, 2013

For quite some time now I've been trying to hunt down a newer release of either the full set of installation CDs or the 6.5.30 Overlay CD set (the last version of IRIX). Hunting on eBay as usual I came across an IRIX 6.5 full set, but there was no information as to what revision only "SC4-AWE-6.5 REV ZC". Last year I bought a full set that was labeled SC4-AWE-6.5 REV S. This turned out to be 6.5.14 and as it so happened looks to have been sold with an SGI O2 machine as there were O2 demo CDs inside it.
So which version is the "SC4-AW-6.5 REV ZC"? Turns out it's 6.5.21, which for many will be very important as it added support for the Origin 350 and Onyx 4 systems, the last ones in Silicon Graphics' line up based on MIPS CPUs.
[caption id="attachment_1771" align="aligncenter" width="550"] Silicon Graphics SC4-AWE-6.5 REV ZC Full CD Set[/caption]
[caption id="attachment_1772" align="aligncenter" width="550"] Silicon Graphics SC4-AWE-6.5 REV ZC Full CD Set - Back[/caption]

May 09, 2012

About a year ago I started work on a new 3D game engine, while originally it was just foray into WPF, it turned into using OpenGL and C# using OpenTK. Eventually this turned into a dead end as I had too high ambitions. A year later (really more like 15 years later), I finally have come up with a more reasonable game plan to create an iterative approach.
Following id software's technology jumps starting with Wolfenstein 3D and hopefully one day hit Quake III level of tech.
So the initial features will be:

90' Walls, Floors and Ceilings

Clipping

Texture Mapping with MIP-Mapping Support

OpenGL Rendering with SDL for Window Management

IRIX and Windows Ports

I started work on the base level editor tonight:
[caption id="attachment_1213" align="aligncenter" width="300" caption="jcGEDitor WIP"][/caption]

Feb 25, 2012

Last Sunday I was curious about IRIX root disk cloning, I had done it previously on an SGI Octane with a none root drive, but never on the root drive itself. Since I have 2 SGI O2s and 2 identical Maxtor Atlas II 15k 73gb Ultra 320 drives, it made sense rather than reinstalling everything just to clone it. Sure enough about 20 minutes later, I had an extra duplicate of my SGI O2 IRIX 6.5.30 install with all of my Nekoware packages (BASH, PHP, MySQL etc). Pulled it out and put into my other SGI O2, worked like a charm.
After doing some work on my SGI Origin 300 this morning, I figured I'd replace the failing Maxtor ATLAS 15k 36gb Ultra 320 drive with a brand new Fujitsu MAU3147 15k 36gb Ultra 320 drive. Not to mention the Maxtor had been making a terrible high pitch noise for some time before it ended up in the Origin :)
Fujitsu in the Origin 300 Sled:
[caption id="attachment_975" align="aligncenter" width="225" caption="Fujitsu MAU ready to go for my Origin 300"][/caption]
After sliding it into my already powered Origin 300, I realized the SCSI ports weren't auto-scanning for changes. Some googling later, I found the Solaris equivalent of probe-scsi-all is scsiha -p 0; on IRIX.
Immediately following that running a hinv command:
4 500 MHZ IP35 Processors
CPU: MIPS R14000 Processor Chip Revision: 1.4
FPU: MIPS R14010 Floating Point Chip Revision: 1.4
Main memory size: 2048 Mbytes
Instruction cache size: 32 Kbytes
Data cache size: 32 Kbytes
Secondary unified instruction/data cache size: 2 Mbytes
Integral SCSI controller 3: Version Fibre Channel QL2200A
Integral SCSI controller 0: Version QL12160, low voltage differential
Disk drive: unit 1 on SCSI controller 0
Disk drive: unit 2 on SCSI controller 0
Integral SCSI controller 1: Version QL12160, low voltage differential
IOC3/IOC4 serial port: tty3
IOC3/IOC4 serial port: tty4
Integral Fast Ethernet: ef0, version 1, module 001c16, pci 4
IOC3/IOC4 external interrupts: 1
USB controller: type OHCI
IRIX found the drive on Controller 0, so I was ready to begin the cloning procedure. Following these steps, 10 minutes later, I had my data copied to the Fujitsu drive and was ready to become my new root drive on my Origin 300.
Pretty cool Silicon Graphics built that in, cloning a Windows system drive is a huge pain natively. Although there is a sweet tool by Arconis if you own a Western Digital on there site, here for free. I used that when I moved off of my RAID 0 stripe of 2 Western Digital Black 500gb drives to the 1TB versions and didn't feel like reinstalling all of my applications including the ones that had limited activations without having to call the company to get them to reset the activations.
Maxtor, you've been good from 2004-2008 and from 2011-2012:
[caption id="attachment_976" align="aligncenter" width="225" caption="Maxtor ATLAS 15k 36gb drive, finally being retired"][/caption]

Feb 25, 2012

Finally got around to replacing the 4 80mm 40 decibel fans in my Origin 300 this morning. The noise from this one server was enough to travel from the basement inside a rack all the way to the 3rd floor Master Bedroom. Suffice it to say, I definitely couldn't run the server 24/7. Hunting around on Amazon, I found these 80mm Cooler Master fans, not too bad price wise and still put out decent air flow.
[caption id="attachment_963" align="aligncenter" width="225" caption="New Cooler Master 80mm replacement fans for my SGI Origin 300"][/caption]
Prep for the swap:
[caption id="attachment_964" align="aligncenter" width="225" caption="My Quad R14k SGI Origin 300"][/caption]
The original fan in case someone needed a part number:
[caption id="attachment_965" align="aligncenter" width="225" caption="SGI Origin 300 Stock Fan"][/caption]
As I was swapping in the new fans, I realized the fan connector was not the standard ATX style.
Stock Connector:
[caption id="attachment_966" align="aligncenter" width="300" caption="Stock SGI Origin 300 Fan Connector"][/caption]
Versus the standard ATX connector:
[caption id="attachment_967" align="aligncenter" width="300" caption="Repacement Cooler Master Fan ATX Connector"][/caption]
Luckily the standard 4 pin Molex power connector for the 2 Ultra 160 drives is right next to the fans, so a little wiring job and voila:
[caption id="attachment_968" align="aligncenter" width="300" caption="SGI Origin 300 with replacement fans installed"][/caption]
Note, doing it this way will throw an error in the L1 Console and will shut your machine down. A way around it is to simply connect to the Origin 300 over a console connection and type:
env off.
This is dangerous though as the server will not shutdown automatically if a fan fails or the server overheats.
Having said that, it came to my attention that IRIX does not install a Serial/Terminal client by default. The common cu is on the IRIX 6.5 Foundation CD 1 disk. Turn on the Subsystems Only in the IRIX Software Manager and scroll down until you see it. Chances are you're not running a base 6.5 install so you'll also need the first disk of your overlays (6.5.30 Overlay CD 1 in my case) in order to install it to resolve the package conflicts.
After installing you may receive a "CONNECT FAILURE: NO DEVICES AVAILABLE".
Open up vi or your favorite text editor and open up /etc/uucp/Devices
Add in a line:
Direct ttyd2 - 38400 direct
Make sure the spaces are there.
You can also try setting it up via the Serial Manager under the System Manager application.
Afterwards, simply running:
cu -l /dev/ttyd2 -s38400
Allowed me into my L1 console to turn off environment monitoring. Then hit Control + D to get back into the PROM Monitor and hit "1" to start IRIX.

Feb 03, 2012

Well actually it did on Tuesday, but just finally got it in working state last night with SSH, BASH and SAMBA. I had a spare Maxtor Atlas II 15k 73gb Ultra 320 SCA drive that I replaced the existing Quantum 10k 9gb, it's now both quiet and pretty fast considering it's one cpu away from being the lowest end O2 and it's 14-15 years old.
[caption id="attachment_907" align="aligncenter" width="225" caption="Silicon Graphics O2"][/caption]
[caption id="attachment_908" align="aligncenter" width="300" caption="Silicon Graphics O2 Startup Menu"][/caption]
Next on the todo list is get GCC setup along with NEDIT so I can start programming on it.

Jan 28, 2012

Last night when working on my Silicon Graphics Origin 300 and suffering with an old version Mozilla circa 2005 as seen below:
[caption id="attachment_896" align="aligncenter" width="300" caption="Mozilla 1.7.12 on IRIX"][/caption]
I started wondering, these machines can function as a Web Server, MySQL server, firewall etc especially my Quad R14k Origin 300, yet web browsing is seriously lacking on them. Firefox 2 is available over at nekoware, but that is painfully slow. Granted I don't use my Origin for web browsing, but when I was using a R12k 400mhz Octane as my primary machine a few years ago as I am sure others around the world are doing it was painful. This problem I don't think is solely for those on EOL'd Silicon Graphics machines, but any older piece of hardware that does everything but web browsing decently. Thinking back to the Amazon Silk platform, using less powerful hardware, but a brilliant software platform, Amazon is able to deliver more with less.
The problem arises for the rest of the market because of the diversity of the PC/Workstation market. The way I see it you've got 2 approaches to a "universal" cloud web renderer. You could either:

Write a custom lightweight browser tied to an external WCF/Soap Web Service

Write a packet filter inspector for each platform to intercept requests and return them from a WCF/Soap service either through Firefox Extensions or a lower level implementation, almost like a mini-proxy

Plan A has major problems because you've got various incarnations of Linux, IRIX, Solaris, VMS, Windows etc, all with various levels of Java and .NET/Mono support (if any), so a Java or .NET/Mono implementation is probably not the right choice. Thus you're left trying to make a portable C/C++ application. To cut down on work, I'd probably use a platform independent library like Gsoap to handle the web service calls. But either way the amount of work would be considerable.
Plan B, I've never done anything like before, but I would imagine would be a lot less work than Plan A.
I spent 2 hours this morning playing around with a WCF service and a WPF application doing kind of like Plan A.
[caption id="attachment_897" align="aligncenter" width="300" caption="jcW3CLOUD in action"]in action" width="300" height="189" class="size-medium wp-image-897" />[/caption]
But instead of writing my own browser, I simply used the WebBrowser control, which is just Internet Explorer.
The Web Service itself is simply:

It simply makes a web request based on the URL from the client, converts the HTML page to a Stringobject and I pass it into a JCW3CLOUDPageobject (which would also contain images, although I did not implement image support).
Client side (ignoring the WPF UI code):

It simply makes the WCF request based on the property and then returns the HTML and writes it to a temporary HTML file for the WebBrowser control to read from. Nothing special, you'd probably want to add handling for specific pages, images and caching, but this was far more than I wanted to play with. Hopefully it'll help someone get started on something cool. It does not handle requests from with the WebBrowser control, so you would need to override that as well. Otherwise only the initial request would be returned from the "Cloud", but subsequent requests would be made normally.
This project would be way too much for myself to handle, but it did bring up some interesting thoughts:

Handling Cloud based rendering, would keeping images/css/etc stored locally and doing modified date checks on every request be faster than simply pulling down each request fully?

Would the extra costs incurred to the 3G/4G providers make it worthwhile?

Would zipping content and unzipping them outway the processing time on both ends (especially if there was very limited space on the client)

Is there really a need/want for such a product? Who would fund such a project, would it be open source?

Jan 11, 2012

After some more thought about jcBENCH and what its real purpose was I am going to drop the Solaris and IRIX ports. Solaris has a Mono port, but I only have Sun Blade 100 which has a single cpu. Not expecting a ton of performance from that. IRIX on the other hand, I have a Quad R14k 500 Origin 300, but no port of Mono exists. So I could port it to Java, but then you really couldn't compare benchmarks between the Mono/.NET versions. I am about 50% done with the Android port and am just waiting for the OpenSuse 12.1 compatible MonoDevelop release so I can get started on the Linux Port.
After those 2 ports are completed I am thinking of starting something entirely new that I have been thinking about the last couple years. Those that deal with a SQL database and write a data layer for his or her .NET project, know the shortcomings or doing either:

Using an ADO.NET Entity Model, adding your Tables, Views and Stored Procedures and then use that as is or extend it with some business logic

Use an all custom data layer using the base DataTable, DataRows etc, wrap your objects with partial classes and create a "factory"

Both approaches have their pros and cons, the first takes a lot of less time, but you also have a lot less control and could be costly with all of the overhead. Both however will eventually fall apart down the road. The reason, they were built for one audience and one production server or servers. How many times have you gone to your IT Manager and asked for a new Database server because it was quicker then really go back to the architecture of your data layer. As time goes on, this could happen over and over again. I have personally witnessed such an event. A system was designed and built for around 50 internal users, on a single cpu web server and a dual Xeon database server. Over 5 years later, the code has remained the same yet it's been moved to 6 different servers with ever increasing speed.
Times have changed and will continue to change, workloads vary from day to day, servers are swapped in and out, so my solution, an adaptive, dynamic data layer. One that profiles itself and uses that data to analyze the server to use either single threaded LINQ queries or PLINQ queries if the added overhead of using PLINQ would out way the time it would take only using one cpu. In addition using Microsoft's AppFabric to cache the commonly used intensive queries that maybe only get run once an hour and the data doesn't change for 24. This doesn't come without a price of course, having only architected this model in my head, I can't say for certain how much overhead the profiling will be. Over the next couple months, I'll be developing this so stay tuned. jcBENCH as you might have guessed was kind of a early test scenario of testing various platforms and how they handled multi-threaded tasks of varying intensity.

Jan 04, 2012

Years ago when I was a kid I was enamored by Silicon Graphics. My father spoke highly of them and I saw what they were able to produce in the movies I loved. In high school I had wanted a then new, Octane 2. They were around $14,000 back then. A few years later in 2004/2005, I broke down and spent around $300 on an Octane I. Finally got an Octane II in 2007, but needed cash so I sold off all of my Silicon Graphics equipment.
Fast forward until last summer, Origin 300s finally came down to a reasonable price point (~$120), picked up a Quad R14k, 2GB Origin 300 with a Fiber Channel PCI-X card. Only kicker was it didn't have any drives and being an Origin 300, no cd/dvd drive and no video card either. Busy with other stuff, I left it sitting in my "stack". Last night, UPS delivered, IRIX at last!
[caption id="attachment_23" align="aligncenter" width="550" caption="IRIX 6.5.4 Installation CDs"][/caption]
Still waiting on the drives I bought, found a guy on eBay who had 3 Maxtor Atlas 15K IIs for dirt cheap. One step closer to getting it finally setup :)