dave@dilltk.UUCP (Dave Dillabough) (09/22/89)
Hi All, In response to various recent articles here is what I did to add a 2nd hard disk controller to SCO Xenix. I have had 4 drives working reliably on my system for some months now. This only works on SCO Xenix 2.3 and above, requires 1 small hardware mod (fairly simple) and works for all models of Western Digital controllers that I have tried. History I too, noticed a reference in the 2.3 release notes that gives the new syntax for the mkdev hd command to add a second hard drive controller, but try as I might I couldn't find any other info about the hardware setup neeeded. I called SCO for a clarification and was told that the second controller needed to be setup for Address 170H and Interupt 15. Sounded pretty easy, but looking at the info that I had on controller cards later revealed no way to reset the interupt used by the card. The address part was pretty easy as 170H is the secondary address of any controller card that I looked at. Assuming that maybe the interupt changed when the address changed I tried installing a second HD card with the address set to the secondary position. The system booted but hung when mkdev hd was used to add the second controller. Phoning SCO back I was told that the controller that they were using was made by Compac and had a settable interupt but that it had not yet been tried due to lack of some cable or other. Pulling out the trusty old AT Tech reference manual at home showed that interupt 14 (1st HD controller) and interupt 15 (2nd HD controller) are pins D7 and D6 on the AT bus. An examination of these pins on various controllers showed that pin D6 is not conected to anything or is not even included on the board. On a board that had the D6 pin cutting the trace to D7 and reconnecting it to D6 was all that it took to get the software to recognize the second controller. I have tried a variety of controller and drive combinations and they all seem to work fine. All of the controllers that I have used are made by Western Digital and any combination of ST-506, RLL and ESDI buffered or unbuffered have worked OK. Systems used to do the tests in were 1) a 16 mhz NEC Powermate 386 and 2) a 25 mhz 386 clone (Twinhead motherboard, Phoenix BIOS) and A Televideo Tele386. Gruesome Details First you must do the interupt mod. Standard disclaimers apply for chopping and hacking printed circuit boards. The pins in question can be located by looking at the back (solder side) of the disk controller card. The gold edge conector fingers must all be present on the shorter of the 2 connectors (the one farthest from the card mounting bracket. If there are any gaps in the gold fingers the one that you need is probably not present (true on about half of the controllers that I have seen) but count out the pins be make sure. From the notch between the 2 sets of fingers count right 7 pin positions. This is pin D7 (interupt 14) that is used by the 1st controller. To the immediate left is pin D6 (interupt 15) that is needed for the 2nd controller. Assuming that D6 is present the trace that connects to D7 must be cut and then rerouted to D6. On most cards the fingers connect to a series of holes that are right above them. These holes are the easiest point to solder to. To test out the board jumper together D6 and D7 at these holes. Rather than cutting the trace to D7 initially you can test the system by covering the D7 finger with a piece of tape. This will prevent the card from responding on interupt 14 while allowing interupt 15 to work. Since D8 - D15 are not used by the controller you can cover these pins without any problems. After verifying the operation of the controller you can modify the board in a permanent manner. If you have a board where the D6 finger is missing (blank between D2 and D7) you must find another location to pick up this signal. Running a wire from the motherboard to the card is probably the easiest way to do this. Most motherboards are laid out in such a manner that the holes for the short (front) connector is present at all slots regardless of whether or not the connector is installed or not. This is an easy place to attach a wire to pick up interupt 15. Relate the holes on the board to the fingers on the card to find the needed one. You should be able to solder a wire to this hole by removing the cards from the motherboard while not having to remove the motherboard itself. This wire should be soldered to the 2nd controller board to supply interupt 15. To do this follow the trace from pin D7 until it passes through the card and solder the wire in this hole. Remember to cut the trace to disconnect D7 afterwards. That's the hard part. Obviously it is easier (and much neater) to start with a card with all of the fingers present but the other way does work if you can't scare one up. | This is the solder (back) side of the controller card | | <<<----this is the bracket that faces the back of your computer | | | | |______ __ ___ | | | | | | 31 gold fingers total | | | | | | | | | | |_|_|_|_|_|____________________________| |_|_|_|_|_|_|_|_______| ^ ^ ^ D1 D6 D7 Next you must reconfigure the card's jumpers. To do this you will need the information that (hopefully) came with the card. What is needed is to 1) move the HD address from 178H (primary address) to 170H (secondary address). -this is usually 1 jumper. 2) if the second card has a floppy disk controller on it you must move this to a secondary address or disable it. (usually 1 jumper and a trace cut) 3) if the card has firmware in ROM (BIOS) it must be moved to a secondary address or disabled. If the hard drive that you are going to use on this controller has not had a primary format done, format it before proceeding as per instructions appropriate to your machine. Now install the card in a 16 bit slot in the machine and cable the hard drive to it. Boot xenix and while logged in as root type mkdev hd 0 1 This specifies hard drive 0 (first one) on crontroller 1 (2nd one). Answer the prompts as appropriate for your drive type. If you are not sure of what you are doing review the manual on hard drive installation. The first drive on the second controller is /dev/[r]hd4 while the second drive on this controller is /dev/[r]hd5. The installation of the hard drive from this point follows the same procedure that was used to install the initial hard drive in your system. I had problems adding the 3rd hard disk as the ndisk kernel parameter was set to 2 (only enough room allocated for 2 hard drives). I changed ndisk to 4 and had no problem adding the 3rd and forth disks. Have fun, Dave Dillabough ------------------------------------------------------------------------------- uunet!van-bc!dilltk!dave ubc-cs!van-bc!dilltk!dave -------------------------------------------------------------------------------