# HotPlugging SATA

## techiem2

I recently bought myself a new hard disk with a hard disk carrier that does USB2 and eSATA.

I have a SATA-eSATA hangover cable hooked up.

I know my motherboard supports SATA Hotswapping, but I can't get it to work in linux.

Basically, when I plug the carrier in while the system is running, it is not detected.

I can force a rescan of the bus to detect it, but that kind of defeats the purpose (especially since you have to force a rescan of the bus after you unplug the disk so the devices go away again), and doesn't trigger udev to automount it for user access.

I could totally script this of course, have cron run a job every minute that scans the bus and then mounts the partitions, but then I'd still have to manually unmount them as root (I think?) before I can unplug it.

I'd kinda like to get it to work as it's supposed to, just like hotplugging USB and letting the user pumount them.   :Smile: 

Any ideas?

Is this simply not doable yet with SATA?

Thanks.

----------

## sleighboy

The first place to start is which chipset you have for your SATA controller. I have a Rosewill external enclosure and a nForce SATA chip and hot-plugging works for me (sata_nv driver).

Identify your chipset and have a look here: http://linux-ata.org/driver-status.html

----------

## techiem2

The board is a Gigabyte GA-M61PM-S2 (Nvidia GeForce 6100/nforce 430) board.

Nvidia MCP61 SATA Controller.

My current kernel has SATA_NV and SATA_AHCI both compiled in (not modules).

- I should also note that my 2 internal drives are both SATA as well

----------

## the.ant

 *techiem2 wrote:*   

> The board is a Gigabyte GA-M61PM-S2 (Nvidia GeForce 6100/nforce 430) board.
> 
> Nvidia MCP61 SATA Controller.
> 
> My current kernel has SATA_NV and SATA_AHCI both compiled in (not modules).

 

The chipset supports hotplugging, maybe two drivers over the top? you could check with a live-cd if it works and then try to determine wether you need both drivers and/or there are any other kernel options which you might have missed. I don't know enough about gentoo to understand the mounting process, all I can tell you is that it works for me with a normal ubuntu installation (using eduv) as well as the gentoo-live-cd. If it also works with an installed gentoo am i only able to tell if I finally get it running, which seems to be rather impossible, but that's another story  :Wink: 

----------

## sleighboy

Excellent, I have both compiled in mine as well. Can you post the dmesg output you get after you plug the enclosure in..the one I bought had a JMicron chipset on it and I had to enable that before I could get even the USB to recognize it. I'd look at dmesg output after the SATA plug in (or, after enclosure power-on).. and then unplug the SATA and use the USB connection instead and examine dmesg output, plus do a lsusb -v to gather detailed chipset info for the controller in the enclosure, that may help you find the kernel options you need to enable. I had SATA hotplug working for me under x86_64 since about gentoo-sources-2.6.21

----------

## drescherjm

 *Quote:*   

> Is this simply not doable yet with SATA? 

 

I used SATA hotswap 2 to 3 years ago on linux on a promise sx8 but I know it also works on a few different cards. Two weeks ago while testing software raid on a recent kernel (2.6.22) I was able to swap out drives on a SYBA Silicon Image, Inc. SiI 3114 controller (SATA1) as well as the nVidia nForce4 controller of a ASUS A8N and a nForce4 controller on a FOXCONN  motherbord.

----------

## techiem2

ok.

Here's dmesg output from plugging disk in sata and forcing a rescan of the bus (nothing real interesting though, seems to be pretty standard messages)

```

ata3: soft resetting port

ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)

ata3.00: ATA-7, max UDMA/133, 1465149168 sectors: LBA48 NCQ (depth 0/32)

ata3.00: ata3: dev 0 multi count 0

ata3.00: configured for UDMA/133

ata3: EH complete

scsi 2:0:0:0: Direct-Access     ATA      WDC WD7500AAKS-2 30.0 PQ: 0 ANSI: 5

SCSI device sdd: 1465149168 512-byte hdwr sectors (750156 MB)

sdd: Write Protect is off

sdd: Mode Sense: 00 3a 00 00

SCSI device sdd: write cache: enabled, read cache: enabled, doesn't support DPO or FUA

SCSI device sdd: 1465149168 512-byte hdwr sectors (750156 MB)

sdd: Write Protect is off

sdd: Mode Sense: 00 3a 00 00

SCSI device sdd: write cache: enabled, read cache: enabled, doesn't support DPO or FUA

 sdd: sdd1 sdd2 sdd3 < sdd5 sdd6 sdd7 sdd8 > sdd4

sd 2:0:0:0: Attached scsi disk sdd

sd 2:0:0:0: Attached scsi generic sg3 type 0

```

And here's the info from lsusb -v when it was plugged in usb:

```

Bus 001 Device 007: ID 04fc:0c15 Sunplus Technology Co., Ltd                                                                                                                                                         

Device Descriptor:                                                                                                                                                                                                   

  bLength                18                                                                                                                                                                                          

  bDescriptorType         1                                                                                                                                                                                          

  bcdUSB               2.00                                                                                                                                                                                          

  bDeviceClass            0 (Defined at Interface level)                                                                                                                                                             

  bDeviceSubClass         0                                                                                                                                                                                          

  bDeviceProtocol         0                                                                                                                                                                                          

  bMaxPacketSize0        64                                                                                                                                                                                          

  idVendor           0x04fc Sunplus Technology Co., Ltd                                                                                                                                                              

  idProduct          0x0c15                                                                                                                                                                                          

  bcdDevice           c6.83                                                                                                                                                                                          

  iManufacturer           2 Sunplus Technology Inc.                                                                                                                                                                  

  iProduct                3 USB to Serial-ATA bridge                                                                                                                                                                 

  iSerial                 1 WDC WD7500     WD-WCAPT0606491                                                                                                                                                           

  bNumConfigurations      1                                                                                                                                                                                          

  Configuration Descriptor:                                                                                                                                                                                          

    bLength                 9                                                                                                                                                                                        

    bDescriptorType         2                                                                                                                                                                                        

    wTotalLength           32                                                                                                                                                                                        

    bNumInterfaces          1                                                                                                                                                                                        

    bConfigurationValue     1                                                                                                                                                                                        

    iConfiguration          4 Bulk Only Configuration                                                                                                                                                                

    bmAttributes         0xc0                                                                                                                                                                                        

      Self Powered                                                                                                                                                                                                   

    MaxPower                2mA                                                                                                                                                                                      

    Interface Descriptor:                                                                                                                                                                                            

      bLength                 9                                                                                                                                                                                      

      bDescriptorType         4                                                                                                                                                                                      

      bInterfaceNumber        0                                                                                                                                                                                      

      bAlternateSetting       0                                                                                                                                                                                      

      bNumEndpoints           2                                                                                                                                                                                      

      bInterfaceClass         8 Mass Storage                                                                                                                                                                         

      bInterfaceSubClass      6 SCSI                                                                                                                                                                                 

      bInterfaceProtocol     80 Bulk (Zip)                                                                                                                                                                           

      iInterface              5 Bulk Only Interface                                                                                                                                                                  

      Endpoint Descriptor:                                                                                                                                                                                           

        bLength                 7                                                                                                                                                                                    

        bDescriptorType         5                                                                                                                                                                                    

        bEndpointAddress     0x81  EP 1 IN                                                                                                                                                                           

        bmAttributes            2                                                                                                                                                                                    

          Transfer Type            Bulk                                                                                                                                                                              

          Synch Type               None                                                                                                                                                                              

          Usage Type               Data                                                                                                                                                                              

        wMaxPacketSize     0x0200  1x 512 bytes                                                                                                                                                                      

        bInterval               0                                                                                                                                                                                    

      Endpoint Descriptor:                                                                                                                                                                                           

        bLength                 7                                                                                                                                                                                    

        bDescriptorType         5                                                                                                                                                                                    

        bEndpointAddress     0x02  EP 2 OUT                                                                                                                                                                          

        bmAttributes            2                                                                                                                                                                                    

          Transfer Type            Bulk                                                                                                                                                                              

          Synch Type               None                                                                                                                                                                              

          Usage Type               Data                                                                                                                                                                              

        wMaxPacketSize     0x0200  1x 512 bytes                                                                                                                                                                      

        bInterval               0                                                                                                                                                                                    

Device Qualifier (for other device speed):                                                                                                                                                                           

  bLength                10                                                                                                                                                                                          

  bDescriptorType         6                                                                                                                                                                                          

  bcdUSB               2.00                                                                                                                                                                                          

  bDeviceClass            0 (Defined at Interface level)                                                                                                                                                             

  bDeviceSubClass         0                                                                                                                                                                                          

  bDeviceProtocol         0                                                                                                                                                                                          

  bMaxPacketSize0        64                                                                                                                                                                                          

  bNumConfigurations      1                                                                                                                                                                                          

Device Status:     0x0001                                                                                                                                                                                            

  Self Powered                                                               

```

I'm working on updating and compiling a new kernel, so I'll check that later.

I'm guessing it's probably a kernel setting I'm missing or have set wrong, but who knows.

 :Smile: 

----------

## drescherjm

 *Quote:*   

> ata3: soft resetting port
> 
> ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
> 
> ata3.00: ATA-7, max UDMA/133, 1465149168 sectors: LBA48 NCQ (depth 0/32)
> ...

 

On every controller that I have used that supported hotswap this is pretty much what I got immediately after plugging the new drive in.

----------

## techiem2

Well, it's still not working on my new kernel.

Force scanning the bus works of course, but hotplugging still doesn't.

So I'm guessing either a kernel issue or a udev setting or some such.

Any more ideas?

Thanks.

----------

## Martux

Hi!

Has anyone a solution with this yet? I'd prefer kde/hal solutions...

(Controller is a jmicron here, too).

----------

