This post is about the trouble I had (not that big in my opinion) in using my new SATA hard disk (hd) on my old motherboard (mobo), how I tried fixing it in my Ubuntu 7.10 installation, and how I finally managed to get it working for me.
I recently bought a spanking new 250 GB Seagate Barracuda ST3250310AS SATA hd which I decided to install on my old PC which I bought with an MSI K8M Neo-V mobo shown in Figure 1
Figure 1 – MSI K8M Neo-V mobo
Which I bought about 3 years ago. I just wanted to update my storage space, and I am quite pleased on how this mobo (and the overall performance of the PC it became part of) perform for me up till today. I’m using Ubuntu Gutsy Gibbon with the latest kernel version
f@foxhound1:/media/sda2$ uname -a
Linux foxhound1 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686 GNU/Linux
And so I took my old mobo’s manual just to be extra sure I didn’t need to do any bizarre attachments, jumpers et al. I’ve had a lot of experience installing and/or debugging SATA hds before, both coming from the 3.5″ and 2.5″ area, but the hds I’ve handled are usually limited to Seagate brands.
So I thought the MSI mobo manual doesn’t say I have to do anything special, so that should mean the old plug and play type of installation will work, which should actually be the case, I thought to myself. What happened was that after I plugged in my Seagate SATA hd into my MSI mobo, I booted my PC and checked that the newly installed hd was being detected in the BIOS at the least. Primarily the onboard SATA controller of my MSI mobo wasn’t enabled to handle SATA hds (since I only used PATA hds on this PC previously), so I enabled it. Then I saved my changes and rebooted my PC again to effect the changes. After I rebooted my PC, the post-BIOS messages still didn’t display that I had a new hd (my Seagate ST3250310AS). Wow! Still no SATA hd. I checked the onboard SATA controller option in my BIOS again and this time I enabled RAID instead of SATA, thinking that (as the mobo manual also talks about RAID hd installation on SATA hds) that might work. I saved and rebooted again only to find out that there’s still no indication whatsoever that I installed a new SATA hd on the post-BIOS display messages.
What I did next is that I just enabled SATA for the meantime on my BIOS and proceeded to boot my Ubuntu 7.10 OS. I thought that perhaps since I had 3 hds + I DVD writer and a pretty decent Nvidia graphics card, my new SATA hd needed some time to settle and get powered up. So I got in my Ubuntu and checked if it has detected my new SATA hd. I checked my /dev for anything that would resemble a new SATA hd such as /dev/sd*, /dev/sc*, /dev/hd* but to no avail. It seemed that there would be no sign of my new hd in Ubuntu as well.
Now I need to find some traces of a SATA hd detection on my Ubuntu OS to see whether the problem of the SATA hd ‘undetection’ is hardware or software related. I did a
f@foxhound1:/media/sda2$ dmesg |grep -i sata
[ 44.861902] sata_via 0000:00:0f.0: version 2.2
[ 44.861982] sata_via 0000:00:0f.0: routed to hard irq line 11
[ 44.862056] scsi0 : sata_via
[ 44.862099] scsi1 : sata_via
[ 44.862304] ata1: SATA max UDMA/133 cmd 0x0001ec00 ctl 0x0001e802 bmdma 0x0001dc00 irq 16
[ 44.862308] ata2: SATA max UDMA/133 cmd 0x0001e400 ctl 0x0001e002 bmdma 0x0001dc08 irq 16
[ 45.065652] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[ 45.469051] ata2: SATA link down 1.5 Gbps (SStatus 0 SControl 300)
Which would indicate that my OS detected my new SATA hd. But why is there no trace in my /dev then?? I kept on searching for clues so as to isolate the problem as hardware or software related. I went and checked if I had SATA kernel modules loaded:
f@foxhound1:/media/sda2$ lsmod |grep -i sata
sata_via 12548 0
libata 125168 2 sata_via,ata_generic
Which would indicate I had the sata_via and the latest libata modules loaded already. I found in the Internet that sata_via and libata are the two necessary kernel modules to access and use SATA hds. So if they’re loaded, where the heck then is my new SATA hd???
Searching through the Internet to refresh some long unused Linux commands I knew, I found and recalled modinfo:
f@foxhound1:/media/sda2$ modinfo sata_via
description: SCSI low-level driver for VIA SATA controllers
author: Jeff Garzik
vermagic: 2.6.22-14-generic SMP mod_unload 586
Which shows that I have the latest Linux kernel SATA drivers available, after which I checked if there were issues with those SATA drivers and there weren’t any. WTF??? So why can’t I still use my hd? Btw I also rebooted and chose RAID in the BIOS option instead of the earlier SATA option, did the above mentioned checks again and still no new hd for me. Boo hooo.
Finally, I somehow made up my mind that it must not be a software issue/problem, rather it’s a hardware issue. What I did was I turned my PC off, then I recalled that on my mobo manual, it mentioned about a 150 MB/s performance for the SATA v1.0 interface it had. On the Seagate SATA hd, it is mentioned that the SATA hd can operate either on a 1.5 Gb/s or on a 3 Gb/s mode. From my experience with handling hds, that must’ve been it: my mobo can only operate on the lower bitrate SATA v1.0 specification since as shown in Figure 2
Figure 2 – Seagate ST3250310AS hd jumper settings
which is printed on my Seagate ST3250310AS hd. So I downloaded the seagate ST3250310AS manual and verified it. Then I grabbed a jumper from my trusty toolbox (which btw has inside it some RJ45 headers, some mobo spacers, a soldering iron, 2 protoboards, several dozens of resistors, capacitors, and connecting wires, as well as food coupons, a famous electronics and solid state devices book, among others) and placed it on the appropriate jumpers on my new SATA hd.
I booted my PC up, chose the SATA BIOS option again, and voila! I can see a SATA hd on my post-BIOS message! (^)__(^) and look! It’s my Seagate ST3250310AS (^)___(^) Hehe
Anyway, before I start celebrating some more, I continued to boot my Ubuntu. But before I was able to successfully load into my KDE desktop, I first had a short problem with my Nvidia drivers and I had to fix it first. It would seem that Nvidia drivers in Linux aren’t yet as stable as their M$ Window$ counter parts. Tsk tsk tsk. Anyway, I got into my desktop, fired this command again
f@foxhound1:~$ ls /dev/sd*
And there’s my SATA hd! To further check, I used Gparted, a graphical hard disk partition editor which I was familiar and comfortable with, to partition my hd. I was finally able to use my new SATA hd. To further my pleasure, I once again check
f@foxhound1:/media/sda2$ cat /proc/scsi/scsi
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: ST3250310AS Rev: 3.AA
Type: Direct-Access ANSI SCSI revision: 05
And there she (my Seagate ST3250310AS hd) blows! Now, to back up and duplicate my files….
Comments/Questions/Suggestions are welcome, as long as they come in a calm and ruly way (^)__(^)