Serial ATA (SATA) chipsets — Linux support status
Revised: Mon Dec 31 19:01:01 PST 2007
As this page is showing the effect of lagging maintenance (though its author hasn't yet given up), readers should seriously consider favouring what is now (2011) the most current site for general coverage of this subject: https://ata.wiki.kernel.org/articles/s/a/t/SATA_hardware_features_8af2.html
Problem: Serial ATA (also known as S-ATA or SATA) chipsets are rapidly replacing legacy "parallel ATA" (PATA, i.e., regular ATA/133) chipsets — newer Linux installers' kernels yet support many Serial ATA chipsets, by now (especially since 2.4 and earlier kernels are now a thing of the past), but some confusion persists.
Note: There is no such thing as a distribution or its installer (generically) "having SATA support" (or not). Please send anyone speaking in such terms to this page. (Some SATA chipsets have been supported since practically forever, as their programming interfaces are unchanged from PATA predecessors. Others are brand-new and require new drivers from scratch.)
There are three workaround options, if your installer still
has a problem with support for the SATA chip present:
1. Switch the motherboard BIOS back to "legacy ATA mode" (parallel ATA = PATA). Complete a Linux installation. Fetch or build a kernel with support for your chipset. Switch the BIOS setting back. (Potential catch: It's claimed that Dell Optiplex GX270 and Dell Precision Workstation 360 desktop units, using Intel ICH5 SATA-I chipsets, don't support switching to legacy ATA mode. This might be true of some others.)
2. (In the by-now rare case of being stuck on an installer that relies on 2.4.x kernels:) Rebuild your installer using kernel 2.4.27 or later, which includes libata, desirable since it adds many new chipsets and gives a (potential, subject to physical read limits, etc.) ~10M/s speed boost to some others compared to the quite slow 2.4.x drivers/ide set.
3. Temporarily add a PATA drive to your system. Install Linux onto that. Fetch or build a kernel with support for your chipset. Migrate your system to the SATA drives.
Driver Overview: Linux kernels have two ATA ("IDE") driver sets:
"drivers/ide": This is the traditional ATA driver set, maintained by Bartlomiej Zolnierkiewicz (before that, Andre Hedrick). Contrary to popular belief, it includes low-level drivers for many common SATA chipsets. The Linux kernel team's near-term plan is to phase out this driver set.
Optionally, on top of drivers/ide block-device (generic mass storage access) drivers, one can load drivers to provide software-level suport for BIOS services enabling various types of manufacturer-specific software RAID (called "fakeraid", below):
For 2.4 kernels, Linux's software-RAID (fakeraid) driver collection is called "ataraid", which has subdrivers for the various manufacturers' different software RAID schemes. Using ataraid results in your partitions being addressed using a /dev/ataraid/d0p1 (etc.) device-naming convention. Note: Support greatly improved circa-2.4.23.
For 2.6 kernels, Linux's software-RAID (fakeraid) driver collection is called "dmraid" (Device Mapper RAID). So far (Sept 2004), Promise Fasttrack, HighPoint 37X, Intel ICH5/6, LSI, and SiI 3112A/Medley are supported: http://tienstra4.flatnet.tudelft.nl/~gerte/gen2dmraid/
I'm pretty sure manufacturers' proprietary drivers, where available, are designed to fit the above framework.
"libata": This is the newer ATA driver set for selected SATA chipsets only, maintained by Jeff Garzik, leveraging the kernel's well-tested SCSI layer. Garzik developed it in the 2.6 kernel series. 2.4 support was available only with a backported patch until libata's inclusion in 2.4.27 and later.
libata causes each SATA port appear as a new SCSI bus. There are individual low-level drivers for the individual SATA chipsets, e.g., ahci, pdc_adma, ata_piix, sata_nv, sata_mv, sata_promise, sata_qstor, sata_sil, sata_sil24, sata_sis, sata_sx4, sata_uli, sata_svw, sata_via, sata_vsc.
Hardware RAID cards have drivers outside these two collections (e.g., 3w-xxxx, 3w-9xxx, aacraid, cciss, dac960, dpt_i2o, gdth, ips, megaraid, megaraid2, megaraid_mbox aka megaraid-newgen, mpt*).
Driver Support for Each Known SATA Chipset:
(Caveats: Don't assume this page's data are perfect. Also, if a card's price makes it seem too good to be true, it probably is.)
The first and more-important of two issues raised by these chipsets is what's required to make Linux see block devices on them at all.
(link) 3Ware Escalade 9xxx (e.g., 9500S-4 4-port, 9500S-8 8-port, 9500S-8MI 8-port, 9500S-12 12-port, 9500S-12MI 12-port) and 8xxx family (e.g., 8506, 8006, 8006-2LP 2-port, 8506-4LP 4-port, 8506-8 8-port, 8506-12 12-port) SATA-I PCI cards and 95xx series family (e.g., 9550SX-4LP 4 port, 9550SX-8LP 8 port, 9550SX-12 12-port, 9550SX-12MI 12-port, 955SX-16ML 16-port) SATA-II NCQ PCI-X cards — real hardware RAID. Supported by its own (3w-xxxx and 3w-9xxx) driver in 2.4.18 or earlier: essentially any recent 2.4 kernel. Uses exact same driver as prior (non-SATA) 7xxx series. Faster at sequential reads than the Adaptec cards, if you tune the readahead buffers. Note: 3Ware provides utilities to support ATA hotswap with its host adapters (only), if using suitable drive enclosures/connectors. Model 9500S-8 (8-port card) accepts an optional battery backup unit. Applied Micro Circuits Corporation (AMCC) acquired 3Ware, Inc. in March 2004.
(link) Adaptec AAR 2400, 2410, 2410SA, 2120S, 2200S, 2810SA (8-port), 21610SA (16-port) series PCI cards — real hardware RAID, using the slightly anemic Intel IOP302/303 I/O co-processor chips. Use "aacraid" driver. (Should not be confused with the Adaptec 2400A ATA RAID host adapter, for which one uses the dpt_i2o driver, that card being a legacy of Adaptec's buying DPT — nor with the low-end Adaptec AAR 12x0 series, which please see.) Faster at random I/O than the 3Ware cards. Optional battery is available for the card's cache, for more reliable operation in the event of power loss, etc. (Card disables the drive's write cache.)
(link) Adaptec AAR 2420SA (4-port) and AAR 2820SA (8-port) PCI-X cards — real hardware RAID. Use "aacraid" driver. Features Adaptec AIC-8210 RAID co-processor chip. Supports NCQ, hot sparing. Optional battery backup unit is available.
(link) Adaptec AAR 1200, 1210, 1210SA, 1205SA, 2047600 (2-port) series PCI cards — fakeraid. This turns out to be a Silicon Image 3112-variant or 3112A-variant. Works with a patched version of libata's sata_sil subdriver (2003-12).
(link) Adaptec ASR-2020SA/2025SA Zero-Channel RAID cards — real hardware RAID. Cards lack SATA I/O functionality but supply RAID logic: offload I/O processing across ZCR connection to EMRL- or RAIDIOS-compatible SATA-I I/O chip on motherboard. Use "aacraid" driver.
(link) Adaptec AAR-1420SA 4-port SATA-II PCI-X — fakeraid. These are rumoured to be a cheap OEM from someone else, but the chipset identity is unknown. Note Brent Norris's scathing review. Beware of Adaptec's term "HostRaid": This means fakeraid, not real hardware RAID. Adaptec offers proprietary drivers (binary-only).
(link) Addonics SATA-I family — fakeraid. See Silicon Image 3112. Models ADST203 (2-port SATA-I PCI combo card), ADST108 (external/internal 2-port SATA-I PCI card), and ADSA2 (2-port SATA-I PCI card) all use SiI3112 chips. Models ADSA4R-E (4-Port eSATA-I PCI card) and ADST114 (4-port SATA-I RAID PCI card) both use SiI3114 chips. Model AD2SAP-E (2-Port eSATA-I PCI card) uses SiI3512 chips.
(link) Addonics SATA-II family — fakeraid. See Silicon Image 3124. Models ADS3GX4R5-E (eSATA-II RAID5/JBOD card), ADS3GX4R5 (SATA-II PCI-X RAID card), and ADSA3GX4R-E (4-Port External SATA-II PCI-X card) all use SiI3124 chips. Model ADSA3GPX1-E (eSATA-II PCI-Express card) uses SiI3132 chips.
(link) Addonics CardBus PCMCIA cards — fakeraid. Model ADCB2SA-E is a 2-port eSATA-I CardBus card. Model ADCBSA2 is a 2-port SATA-I CardBus card. I so far have no information on their chipsets: This entry is a placeholder.
(link) ADMA — fakeraid. Please see entry for Pacific Digital Talon, as no other manufacturers yet implement this open-standard hardware spec.
(link) AHCI mode — fakeraid. Intel's Advanced Host Controller Interface is an open-standard PCI abstract device layer for mass-storage access describing a fairly advanced SATA interface ("HBA" = host bus adapter), in theory supporting native command queuing (NCQ) with per-device queues, hotplug, port multiplexer, etc. It's currently represented by Intel's ICH6-R and ICH6-M chipsets, ULi's (formerly ALi) M1575 and M1567 4-port SATA-II PCI Express South Bridges; AMD's SB600 South Bridge, and some chipsets from SiS, VIA, Nvidia, ATI, and JMicron. libata AHCI driver "ahci" became available starting 2.4.29-preX and 2.6.9-rcX, and is now production quality. If your desired installation kernel lacks "ahci", you may be able to use a pre-AHCI fallback mode (e.g., the ICH5-like fallback mode of Intel ICH6/ICH6-R chipsets): Look in your BIOS Setup program for a "legacy" or "ATA" setting, e.g., as reported by Peter Knaggs for his Dell Dimension XPS Gen 3 Series / Intel 925X Express chipset motherboard.
(link) AMD SB600 South Bridge — fakeraid. Supports the standard AHCI driver interface.
(link) Areca Technology Corp. ARC-11xx, ARC-12xx PCI-X and PCI-Express cards — real hardware RAID. Model ARC-1120 has a battery backup unit option. Said to use Marvell 88SX60xx chips and an Intel 80332 XOR engine. Erich Chen of Areca maintains GPLed source code for a "arcmsr" driver for these chipsets (also available at unnet). Like Garzik's libata driver, Chen's "arcmsr" driver uses the kernel's SCSI layers.
- (link) ATI 4379 — fakeraid. This turns out to be an integrated version of the Silicon Image 3112.
(link) Broadcom RAIDCore BC4852, BC4810 (8-port), and BC4452, BC4410 (4-port) PCI-X cards — fakeraid. Units use Broadcom BCM5770 chips. The cheaper 4810 and 4410 cards differ from their 4852 and 4452 brethren in having some advanced capabilities disabled; they can be upgraded via an extra-cost software key. (Broadcom Corporation acquired RAIDCore in spring 2004.)
Broadcom offers proprietary driver "bcraid" for its BCM5770-chip-based RAIDCore BC4000-series products (BC4452, BC4652, BC4852, BC4450, BC4650, BC4850, BC4410, BC4610, BC4810).
(link) Broadcom SATA-II cards — fakeraid. As of 2005-09, new cards are expected based on Broadcom's BCM5773 chip supporting 8-port PCI-X or PCI-Express SATA-II with Broadcom's XelCore fakeraid. This entry is a placeholder.
(link) Broadcom RAIDCore BCM5785 aka HT-1000 chips — fakeraid. Proprietary drivers using Broadcom's proprietary "blob" are available from IBM and Tyan.
(link) HP (/Compaq) SA5xxx PCI cards — real hardware RAID. Supported in 2.6.6 and later kernels using the Compaq CISS (cciss) driver.
(link) HighPoint RocketRAID 1540/1542/1544/1640 & 454 (HPT374 chipset), RocketRAID 1520 (HPT372, HPT372N, or HPT372A chipset), and Rocket 1520 (HPT302N chipset — non-RAID) PCI cards — fakeraid. Supported by drivers/ide's hpt36x driver, by at latest 2.4.21-pre5. No libata driver exists for these, but Alan Cox is working on one (as of 2006-01). Note: Some recent HighPoint cards use Marvell 88SX50xx chips (for which see separate driver info). Problematic proprietary Linux i386 binary drivers for HighPoint fakeraid (release 2.0 of which is reported to malfunction or even fail to compile on later 2.6 kernels ranging, at least, from 2.6.8 through 2.6.14) are available, but, as usual, you're better off using Linux's own open-source "md" software-RAID driver. (Warning: You'll need to load the proprietary driver only into kernels lacking the conflicting drivers/ide htp36x driver, in the presence of which your system will seize up, at boot time.)
(link) HighPoint Rocket 1511 (1-port external port, PCI) and RocketHead 100 (external PATA/SATA converter widget) — fakeraid. These devices both are based on HighPoint PATA controller chips (HPT302N and HPT372A, respectively), speaking to SATA via a Marvell 88i8030 SATA bridge chip. As such, they cannot be supported by Linux's drivers/ide htp36x driver, but there are proprietary, binary-only drivers.
(link) HighPoint RocketRAID 1820 (8-port) / 1820A (8-port) / 1810 (4-port) SATA-II PCI-X cards — fakeraid. Said to use the Marvell 88SX5080 chip. Model 1820A adds the HighPoint HPT601 XOR engine chip: Its model 1820 predecessor was out only briefly, and should be rare.
HighPoint makes available proprietary driver "hptmv" (source code wrapper around a binary-only proprietary core library).
(link) HighPoint RocketRAID 2240 (16-port SATA-II PCI-X), 2220 (8-port SATA-II PCI-X), 2320 (8-port SATA-II PCI Express), 2224 (4-port SATA-II PCI-X) cards — fakeraid. Proprietary binary drivers (2240, 2220, 2320, 2224) can be downloaded from the manufacturer. Correspondent Berkley Shands notes that these cards and proprietary drivers are quite CPU-intensive, even pushing a quad-Opteron system a bit. He also recommended tweaking hpt_reset routine to fix IRQ spinlocks, on 2.6.14/2.6.15 kernels. He achieved a maximum initial read speed of 870MB/sec. on RAID0, using 50% of CPU power. Note that models 2220 and 2240 both try to use (different) proprietary drivers named "hptmv6". Use command-line rather than GUI RAID setup utility, if there will be more than 8 drives per array. Shands adds: "Just FYI, to get those nice performance numbers, you must set the read-ahead value for the drive and use the POSIX_WILL_NEED function of fadvise(). The default read-ahead is 8 sectors. I use 1024; otherwise, you won't come anywhere near those numbers."
(link) HighPoint RocketRAID 2310 (4-port SATA-II PCI Express card) — fakeraid. An proprietary "rr2310_00" driver (source code wrapper around binary-only proprietary core libraries, deceptively claimed to be "open source") is available from the manufacturer.
(link) HighPoint RocketRAID 2320 (8-port SATA-II PCI Express card) — fakeraid. An proprietary, high-performance "rr232x" driver (source code wrapper around binary-only proprietary core libraries, deceptively claimed to be "open source") is available from the manufacturer.
Garzik mentions that newer HighPoint cards (those that aren't based on Marvell 88SX50xx chips) pretend they are SCSI and are supported by the "hptiop" driver.
(link) IBM ServeRAID family, e.g. ServeRAID-7t, and 7k PCI and PCI-X cards — real hardware RAID. Prior to the ServeRAID-7 series, units probably worked with the same ips driver as for the SCSI predecessor cards in this family. More info. Somewhere around the ServeRAID 7t, IBM began applying the "ServeRAID" brand to Adaptec-oriented host adapters and Intel ICH-oriented fakeraid (so-called "HostRaid") ones: E.g., the ServeRAID-7t and 7k are based on an Adaptec 2410SA chip; the ServeRAID-7e uses an Intel ICH5-R fakeraid chip (entries for which, please see). Oddly, support for IBM/Adaptec HostRAID fakeraid format (ServeRAID model 7e) is said to require Adaptec's proprietary a320raid driver.
(link) ICP Vortex GDT8586RZ (4-port), GDT8546RZ (8-port) series PCI cards — real hardware RAID: Uses Intel 80303 I/O processor and hardware XOR engine dedicated coprocessor, and includes 128MB cache. Works with the kernel's gdth driver version 3.04 or later. A file of hints on using the gdth driver with sundry distributions is available from ICP Vortex. (Adaptec acquired ICP Vortex — from Intel — in 2003.) One source says these cards are based on Silicon Image 3112 chips, which are probably not the system-facing chipsets, and so don't determine driver support.
(link) Intel ICH5 / ICH5-R family chips — fakeraid. (See fakeraid support details under Intel ICH6.) Supported in 2.4.22 and later kernels using drivers/ide's piix driver (but that driver locks up in many cases), and also (much more reliably) in libata's ata_piix driver, production quality since 2004-02-25. Intel ICH5/ICH6 is an open-standard hardware spec. ICH7/8 usually can be set to be backwards-compatible. "Enhanced mode" or "SATA-only mode" may need to be set in BIOS.
Intel produced GPLed patch sets for ICH5 in the 2.4.9 and 2.4.20 kernels of (respectively) Red Hat Advanced Server 2.1 and Red Hat Linux 8.0, available for download as part of its driver set for the 6300ESB I/O Controller Hub South Bridge on its E7520 and 875P motherboard chipsets.
Adaptec has released a proprietary "aarich" driver (source code wrapper surrounding a binary-only core library) for Intel ICH5-R and Silicon Image 3512. (The name is intended to be parsed as AAR-ICH, as it is intended for certain Adaptec AAR-series cards based on Intel ICH5 SATA-I chips.)
Supermicro's ftp site offers proprietary drivers for Intel ICH5-R chips on Intel Hance Rapids motherboards, written by Adaptec.
(link) Intel ICH6 / ICH6-R / ICH6-M family SATA-I chips — fakeraid. libata's ata_piix driver support is now (2004-02-25) functional when the ICH6 is running in either ICH5-alike mode or (on ICH6-R or ICH6-M) the enhanced, much-faster, open-specification "AHCI" mode (entry for which, please see), as of 2004-07-08.i ICH6 and AHCI are both open-standard hardware specs. If your desired installation kernel lacks the "ahci" driver, you may be able to use ICH5-like fallback mode: Look in your BIOS Setup program for a "legacy" or "ATA" setting, e.g., as reported by Peter Knaggs for his Dell Dimension XPS Gen 3 Series / Intel 925X Express chipset motherboard.
Note that as of 06/2004, Silicon Image chipsets have a bug in "lba48" addressing (of a few drives over 137GB, but not all of them), necessitating a patch that will, as a necessary consequence, limit performance on the drives affected (only).
Alternatively, LSI has produced proprietary, binary-only drivers (source code wrapper accompanying a "megaide" binary-only driver) for ICH6-R. Supermicro's ftp site offers versions of those same proprietary, binary-only drivers.
Intel ICH5-R, ICH6-R, and perhaps some others perform RAID0 disk-spanning via a BIOS trick, which is thus OS-independent. That mode of Intel fakeraid (Intel Software RAID) can be supported in 2.4.x on ICH5/6 with ataraid subdriver iswraid atop libata's ata_piix (not atop drivers/ide): http://www.kerneltraffic.org/kernel-traffic/kt20031201_243.html#16, http://www.kerneltraffic.org/kernel-traffic/kt20040331_255.html#16. (The iswraid patch will be merged into kernel 2.4.28; it and related patches/info are available at http://iswraid.sourceforge.net/.)
(link) Intel ICH7 / ICH7-R SATA-II chips — fakeraid. Should work with either libata's ata_piix driver or libata's ahci driver. (Please see entries for ICH5, ICH6, and AHCI.)
Supermicro's ftp site offers proprietary drivers for Intel ICH7-R, written by Adaptec.
(link) Intel SRCS14L Serial ATA RAID Controller PCI card — real hardware RAID. This is a four-port PCI card for servers, based on an ICP Vortex chipset, driving SATA-I output using a pair of Silicon Image SiI3112A SATA-I chips, and with an Intel GC80303 dedicated I/O processor with 64MB of ECC SDRAM for processing XOR logic. Use the kernel's "gdth" driver (for ICP Vortex and for related Intel SCSI RAID cards). The Silicon Image chips are not the system-facing chipsets (1 2), and so don't determine driver support.
(link) Intel SRCS16 and SRCS28X Serial ATA RAID Controller PCI cards — real hardware RAID. These are six-port PCI and eight-port PCI-X cards (respectively) for servers, based on an LSI Logic MegaRAID chipset, driving SATA-I output using Silicon Image SiI3112A SATA-I chips (one for each channel pair) and an Intel GC80302 or IOP331 (respectively) dedicated I/O processor with 64MB or 128 MB of ECC SDRAM (respectively) for processing XOR logic. Use the kernel's "megaraid2" driver (For LSI Logic MegaRAID). The Silicon Image chips are not the system-facing chipsets (1 2), and so don't determine driver support. An optional battery-backup daughterboard is available.
(link) Intel 31244 4-port SATA-II PCI-X sub-board — this is based around a Vitesse VSC71714 chip (which please see). No RAID functionality, in itself: Sub-board can be embedded on a NAS controller card with a separate RAID chip.
(link) ITE Tech., Inc. IT8212 / IT8212F PCI Express card — real hardware RAID. GPLed "iteraid" driver by Mark Lu of ITE Tech., Inc. is available — which unfortunately is broken in 2.6.10 and later kernels, because it relies on the long-deprecated MOD_DEC_USE_COUNT and MOD_INC_USE_COUNT module-use-count macros removed from include/linux/module.h as of that kernel version. (2005-09-12 addendum: Donald Huang of ITE Tech. answered my query, and said that Jack Lee of ITE Tech. will undertake the necessary revision work, some time later.)
Alternatively, Alan Cox's series of -ac variant kernel source code trees include an "it8212" driver as Alan's add-in to 2.6.9 and later kernels' drivers/ide driver collections. (As of 2005-09-08, this patch isn't in mainline kernels, however. Update: As of 2006-01, the new driver is said to be in mainline 2.6.14 kernels, at least.)
(link) LSI Logic MegaRAID SATA 150-4 (four ports) and 150-6 (six ports) Serial ATA RAID Host Adapters — real hardware RAID. Work with 2.4.x kernel's megaraid2 driver (same one as for SCSI). Cards use an Intel GC80302 dedicated I/O processor. This chipset, under its former AMI brand name, has had a long and excellent history with SCSI gear. Optional battery backup unit is available for the model 150-6 card's cache, for more reliable operation in the event of power loss, etc. These cards should not be confused with the low-end LSI Logic MegaRaid SATA 150-2 card (which please see).
(link) LSI Logic MegaRAID SATA 150-2 Serial ATA RAID Host Adapter PCI card — fakeraid. This turns to to be a Silicon Image 3112-variant. Reports suggest that Linux's open-source SiI 3112 driver sets from Linux work with this card.
An i386 binary (ataraid?) subdriver (megaide) for this fakeraid ("IDEal RAID") scheme can be retrieved from Steve Hardy's Web site, from http://pub.datux.nl/linux/drivers/proliant/, or from LSI Logic. The driver is a GPLed wrapper around proprietary library megaide_lib.o. I'd recommend using (instead) Linux's own open-source "md" software-RAID driver, unless/until LSI Logic (like HighPoint, Nvidia, Promise, and VIA) gets a clue about open source.
(link) LSI Logic MegaRAID SATA 300-4X 4-port and 300-8X 8-port SATA-II PCI-X cards — real hardware RAID. Uses a Marvell 88SX6081 chip. Compatible with Linux's megaraid2 driver.
(link) LyCOM Technology, Inc. cards — fakeraid. These PCI (ST-108, ST-114, ST-102, ST-117, ST-119, ST-117R, ST-115, ST-100, ST-103, ST-200, ST-208, ST-210, ST-203, ST-209, ST-211, NW-201, ST-125, ST-124, ST-113e, ST-119e, ST-134e, ST-117e), PCI Express (PE-105N, PE-102R5, PE-103R5, PE100, PE100N, PE102, PE-103), and PCI-X (64-101, 64-102, 64-102-1) cards appear to use various Silicon Image chips.
(link) LyCOM Technology, Inc. CardBus cards — fakeraid. It's unclear what chipset these PCMCIA cards use: This entry is a placeholder.
(link) Marvell Technology Group Ltd. 88SX7xxx, 88SX6xxx ("Hercules II") and 88SX5xxx/88SX48 ("Hercules I") chip series chips — fakeraid. The 88SX50xx series supports TCQ, but not NCQ or port multipliers. The 88SX60x1 series supports TCQ, NCQ, and port multipliers. libata driver "sata_mv" became available 2005-06 (beta quality as of 2007-02).
For Marvell chipsets 88SX5040, 88SX5041, 88SX5080, and 88SX5081 "Hercules I" (all SATA-I); and 88SX6041 4-port & 88SX6081 8-port "Hercules II" (both SATA-II), there is a "mvSata" driver from Marvell International Ltd. Like Garzik's libata "sata_mv" driver, Marvell's "mvSata" driver uses the kernel's SCSI layers.
As of May 2005's v. 3.4.1, that driver changed from proprietary licensing to GPLv2; probably the best revised source code is now Carlos Vidal's file tree, which also has precompiled kernels for Fedora Core and a HOWTO that should generalise well to other distributions. A patch may be necessary to run this driver properly on newer 2.6 kernels.
Supermicro's ftp site offers proprietary drivers for Marvell 4-port and 8-part SATA chips, written by Adaptec.
(link) Maxtor SATA/150 PCI Card — fakeraid. A relabelled Promise FastTrak TX2plus card (which please see), using a PDC20375 chip.
(link) NetCell SyncRAID SR3000, SR3100 (3-port) and SR5000, SR5103 (5-port) SATA-I RAID PCI cards — real hardware RAID. All units cited are based on the NetCell SyncRAID TD6405 64-bit controller ASIC. NetCell provides a GPLed driver in the form of a patch to the Linux kernel source tree's drivers/ide code.
(link) Nvidia NForce3 Go120, Go150, 150, 250, 250Gb, and 150 Pro (SATA-I); NForce 4 MCP, SLI, Ultra (SATA-II); and NForce Pro 2200 MCP and 2050 (SATA-II) chips — fakeraid. This motherboard chipset family uses yet another type of fakeraid called nvRAID. libata driver "sata_nv" added as of 2004-07-08 development code, included in kernel 2.6.8, and now production quality. As of 2006-01-25, Nvidia provided provided information (under NDA) that will permit implementation of NCQ support. Note: Nvidia's proprietary Linux i386 binary driver bundles for its chipsets seem to rely on (and in some cases furnish) Garzik's "sata_nv" driver — presumably adding to that Nvidia's own subdriver to support nvRAID disk formatting. However, as usual, you're probably better off using Linux's own open-source "md" software-RAID driver for the RAID functionality.
Note that newer Nvidia chipsets have switched to the AHCI open standard.
(link) Pacific Digital Talon ZL-2, ZL-4, and RAIDStaQ LP-4 series SATA-I PCI cards (and potentially cards from licensees using PD's "automatic DMA" = ADMA interface) — fakeraid. No hotplug or port multipliers. libata driver "ata_adma" existed in the development branch a/o 2005-11, but in 2007 appears to have been replaced by the libata "pdc_adma" driver (beta quality as of 2007-02).
(link) Pacific Digital QMaster RAID SATA-II PCI-X cards — genuine hardware RAID (but Linux driver uses it only in non-RAID mode). libata driver "sata_qstor" (initially named "ata_qstor") was added in 2005-03, and is beta quality as of 2007-02.
(link) Promise FastTrak SATA150, SATA150 TX2, SATA150 TX2plus, SATA150 TX4, SATA150 SX4, SX4-M, SATA378, and Ultra 618 series PCI cards (e.g., PDC20621, PDC20275, PDC20618, PDC20318, PDC20319, PDC20375, PDC20378, and PDC20376 chips) PCI cards — fakeraid, mitigated by the fact that the Promise PDC20621 ASIC chip (on SX4, SX4-M, and TX4, but not TX2) functions as a "RAID accelerator" — XOR engine and memory, leaving RAID logic to the host CPU — but libata doesn't support that functionality at this time (2005-11). libata's "sata_promise" driver (for tx2/tx4, production quality driver) or "sata_sx4" (for sx4, beta quality driver) provides support a/o 2004-02-25 (included in kernel 2.6.x). Cache memory add-on hardware module is available for some models (OEM versions only, though, not retail). Proprietary fakeraid "ft" driver (ataraid?) is available, as are instructions. An now-unmaintained 2003-02 i386 binary driver (often claimed in error to be open source; people being fooled by its source-code wrapper) is also available.
(link) Promise SX8 PCI-X card — fakeraid. Per the 2004-09-15 libata report, a separate block driver, "sx8" (not part of libata), has been written for this hardware. (However, Garzik later wrote that it may be rolled into libata, after all, to make possible ATAPI support.)
(link) Promise PDC20579-chip-based SATAII150 579 SATA-II chipset — fakeraid. libata's sata_promise driver can support it using a patch to the 2004-10 libata development code and a 2.6 kernel, or by using the manufacturer's GPLed driver code.
(link) Promise PDC20518-chip-based SATAII150 TX4 SATA-II card — fakeraid. libata's sata_promise driver can support it using a patch to the kernel 2.6.10 libata code. Garzik posted his own patch on 2005-02-06 to support this device; the code will be included in kernel 2.6.11. Alternatively, use the manufacturer's GPLed driver code.
Kristoffer Winther Sørensen has posted a guide to retrofitting Garzik's sata_promise patch to the current SUSE Linux installer.
(link) Promise PDC20575-chip-based SATAII150 TX2plus SATA-II chip — fakeraid. Garzik posted a patch on 2005-02-06 to support this device; the code will be included in kernel 2.6.11. Alternatively, use the manufacturer's GPLed driver code.
(link) Promise PDC20619 chip — fakeraid. Tobias Lorenz's patch for libata's sata_promise driver was incorporated into libata-dev on 2005-03-13 and merged into kernel 2.6.11-rc4.
(link) Promise PDC40718-chip-based SATA300 TX4 SATA-II chipset — fakeraid. Supported by libata's sata_promise driver as of 2005-04-15. Alternatively, use the manufacturer's GPLed driver code.
(link) Promise PDC20775-chip-based SATA300 TX2plus SATA-II chipset — fakeraid. Supported by libata's sata_promise driver as of 2005-04-15. Alternatively, use the manufacturer's GPLed driver code.
(link) Promise PDC20779-chip-based SATA300 779 SATA-II chipset — fakeraid. This chipset will probably prove compatible with libata's sata_promise driver, perhaps requiring modifications. Alternatively, use the manufacturer's GPLed driver code.
(link) Promise FastTrak TX2300/TX2200 (2-port) and TX4300/TX4200 (4-port) RAID SATA-II PCI cards — fakeraid. I gather that these have a programming interface differing from that of their sata_promise-compatible predecessors, but have no chip information so far: This entry is a placeholder.
Promise offers a "ftsata2" proprietary driver (open-source wrapper around a binary-only, proprietary core library). Warning: Correspondent Andreas Thienemann warns that this driver works on Linux 2.4.x kernels only, and cannot be built to function on 2.6.x because it uses deprecated interfaces and references missing headers.
(link) Promise SuperTrak EX8300 8-port SATA-II PCI-X card and SuperTrak EX8350 8-port SATA-II PCI Express card — real hardware RAID(?). Uses Intel IOP331 I/O processor (XScale family) and Marvell 88SX6081 SATA chipset. Press releases says there's a "full open source Linux driver" — which might be the Marvell driver(?). EX8500 card was demoed on 2005-08-23.
(link) ServerWorks Frodo / Apple K2 / Broadcom chip — libata's sata_svw driver provides support a/o 2005-11. As of 2004-07-08, that driver supports the Apple K2 and ServerWorks Frodo4 (4-port) / Frodo8 (8-port) variants. Driver is now production quality. Other variants' PCI IDs haven't yet been collected, added to the driver, and tested. The Broadcom chip used appears not to be model BCM5770, so Broadcom's proprietary "bcraid" driver likely won't work. (Broadcom acquired ServerWorks in 2001.)
(link) SIIG SC-SAE012-S1 PCI-Express SATA-II card — fakeraid. Uses a Silicon Image 3132 chip.
(link) Silicon Image 3112 (2-port integrated chip) / 3114 / 3114R (4-port integrated chip) and 3512 / 3512A / 3514 (chip in 2-port PCI card) (Silicon Image, Inc. aka SiI, formerly CMD Technology, Inc.) — fakeraid. libata's "sata_sil" driver (production quality) provides support (a/o 2004-07-08), or probably 2.4.x drivers/ide's siimage driver (originally developed for the pre-SATA CMD680 aka SiI680 chip used in many ATA host adapters). Note that enabling libata support for this chipset requires enabling CONFIG_BROKEN (under "Code maturity level options") in your kernel configuration, for reasons Garzik has explained. As of 2004-12, Silicon Image 311x became an open-standard hardware spec.
An OEM (and apparently slightly modified) version of the SiI 3112 chip is sometimes integrated into motherboards as the ATI IXP400 SATA chip. In that form, it's reportedly had support by libata's "sata_sil" driver since the 2.6.11 kernel.
I am still trying to untangle references to SiI's model numbers. Strings within Silicon Image's proprietary drivers suggest that that 3112, 3114, 3512, 3514, 434e, and 4e4e are chipset model numbers with the following "subdevice" numbers in their respective families. 3112: 3423, 6112. 3114: 3424, 6114. 3512: 3422, 3423, 6512. 3514: 3424 (note duplicate), 6514. That driver purports to be for "SiI SATA RAID Controllers 3x and 6x Series" and shows the identification string "SiI6514 (3112 to 6514) SATA RAID controller".
Daniel Paepcke has posted a HOWTO for building the sata_sil driver.
ataraid support for SiI's Medley fakeraid is available from 2.4.21 or later's silraid (Arjan van de Ven's) subdriver or its superior 2.4.26 and later replacement, medley (by Thomas Horsten). Note: So far, medley supports only Medley's RAID0 "striped" mode, and not its RAID1 "mirrored" or RAID1+0 (AKA "RAID10") modes. Alternatively, you can use Linux's "md" software-RAID driver.
Silicon Image, Inc's proprietary, binary-only drivers are available from Tyan, Tekram, IBM, or Supermicro.
Adaptec has released a proprietary "aarich" driver (source code wrapper surrounding a binary-only core library) for Intel ICH5-R and Silicon Image 3512. (The name is intended to be parsed as AAR-ICH, as it is intended for Adaptec AAR-series cards based on Intel ICH5 SATA-I chips.)
(link) Silicon Image 3124/3124-2 (chip in 4-port SATA-II PCI-X cards) and 3132 (chip in 2-port SATA-II PCI Express cards) (Silicon Image, Inc., formerly CMD Technology, Inc.) — libata's sata_sil24 driver (production quality) supports Silicon Image 3124 (2005-08) and also the follow-on 2-port PCI Express SATA-II successor chip, the Silicon Image 3132. (Per 2004-07-08's libata status report, Silicon Image provided Garzik with docs and sample hardware.)
(link) SiS 964 South Bridge, SiS 180 card — fakeraid. Supports hotplug and port multipliers. Is now (2004-03-01) supported in libata using driver "sata_sis" contributed by Uwe Koziolek. The 2.6.6 kernel added this driver a/o 2004-05-09. Driver is now production quality.
Note that newer SIS chipsets have switched to the AHCI open standard.
(link) SiS 965L South Bridge — fakeraid. No known open-source drivers. Manufacturer's propriatary, binary only SiSE 18x card driver also supports SiS 965L, but at present (2005-09), you need this in the modules.pcimap file to furnish the missing PCI ID: "sata_sis 0x00001039 0x00000182 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0". I'd speculate that libata's "sata_sis" driver might work to the same degree, but do not have confirmation.
Note that newer SIS chipsets have switched to the AHCI open standard.
(link) Supermicro DAC-SATA-MV8 PCI card — uses a Marvell chip (which please see).
(link) Tekram PCI-X and PCI-Express cards — Inexpensive variants of similar models from Areca. E.g., Tekram SIR-1120 is near-identical to an Areca ARC-1120. Cards use Marvell chips.
(link) ULi Electronics, Inc. (formerly ALi) M1573 South Bridge and M5285, M5283, and M5281 SATA-I bridge chips — fakeraid. libata driver "sata_uli". Driver is now production quality.
(link) ULi Electronics, Inc. (formerly ALi) AHCI-compatible chips — fakeraid. ULi's M1575 4-port SATA-II PCI Express South Bridge is its first chipset to support the standard AHCI driver interface.
(link) ULi Electronics, Inc. (formerly ALi) M1567 SATA-II PCI Express South Bridge — fakeraid. Probably supports the standard AHCI driver interface (unconfirmed).
(link) VIA Technologies, Inc. VT6421 and VT6421L PCI chips &mdash fakeraid. A libata-dev patch was posted on 2005-02-06.
(link) VIA Technologies, Inc. VT8235M South Bridge chipset. — fakeraid. Driver status unknown.
(link) VIA Technologies, Inc. VT8237 and VT8237A South Bridge chipset, using VIA's VT6420 Serial ATA chip — fakeraid. libata's "sata_via" driver set provides support a/o 2005-11 (included since kernel v. 2.6.3). Driver is now production quality. Recent 2.4.x drivers/ide code should support it, too. Proprietary drivers available.
(link) VIA Technologies, Inc. VT8237R and VT8237R+ South Bridge chipset — fakeraid. 2-port chip, said to support RAID 0, 1, 0+1 and JBOD. Might be based on VIA's VT6421L Serial ATA chip(?). Driver status unknown. The "+" variant is said to differ from the earlier non-plus variant in having forwards compatibility for SATA-II drives.
(link) VIA Technologies, Inc. VT8251 PCI Express South Bridge chipset — fakeraid. This 4-port SATA-II chipset (used in some new a/o 2005-11 motherboards such as the ASUS A7V-MX) is claimed to use the standard AHCI driver interface, though one correspondent had no luck a/o 2005-11-15 — possible just a PCI ID problem? Uniquely (to my knowledge) for a fakeraid adapter, it supports RAID 5 along with RAID levels 0 and 1.
(link) Vitesse Semiconductor Corp. VSC7174 Serial ATA chip — libata's sata_vsc (by Jeremy Higdon) was added as of the 2.6.5 kernel. Driver is now production quality. No RAID functionality, in itself: Chip can be embedded on a NAS controller card with a separate RAID chip. Supports hotplug and port multipliers.
RAID issues (a separate wrinkle): (link)
Most ATA RAID host adapters (except 3Ware Escalade, Adaptec 24x0, Areca, HP/Compaq, IBM ServeRAID, Intel SRC*/ICP Vortex, LSI Logic MegaRAID 150-4/150-6, and Tekram) turn out, upon examination, to not be real hardware RAID, but rather software/BIOS-dependent fakeraid. (I.e., missing hardware functionality is traditionally emulated inside idiosyncratic, undocumented, and proprietary software drivers, to hit low price points). Fakeraid is difficult to support in Linux — absent either reverse-engineering, special proprietary drivers, or (rare) manufacturer cooperation. (HighPoint, LSI Logic, Nvidia, Promise, and VIA provide proprietary drivers to support their respective fakeraids. I personally would steer clear.)
Linux often cannot read existing fakeraid volumes on such host adapters, unless you're willing to use proprietary fakeraid drivers (where available). But unless you're dual-booting MS-Windows, you shouldn't care, because Linux's software RAID (kernel "md" driver) is much faster and more reliable. You're advised to blow away fakeraid volumes, use SATA drives as straight block devices, and enable Linux software RAID instead, during Linux installation.
Kernel coders are slowly figuring out some fakeraid variants, and coding ataraid/dmraid modules.
Warning about media errors and RAID
Be aware that if any one drive of your SATA-based RAID array goes offline for any reason, including a significant string of media errors, depending on the SATA host adapter, the array may hang and need to be rebooted. This is because many SATA host adapters, like ATA generally absent special hardware provisions, simply don't support hotplug functionality.
This is known to be true, in particular, of Intel's ICH5/ICH5-R series, and Garzik has pointed out that that chip series, plus Intel ICH6 (in non-AHCI mode), Pacific Digital Talon, and Promise SATA SX4 — at minimum — will never support hotplug.
Troubleshooting:
If your installer finds no block devices or has other problems, please realise that all Linux SATA support is still (2004-01) hit or miss. (Users of 3Ware cards should have no problems, though. Those with Intel ICH5 chipset may be OK with the 2.4.22 or later drivers/ide piix driver, as that chipset is very nearly identical to prior Intel chips in the PIIX series.) Your best option is to find or build an installer with a recent version of liba/ta, either by virtue of its inclusion in stock 2.6.x kernels, its merger into 2.4.27 and later, or by your applying it as a patch to a (pre-2.4.27) 2.4 installation kernel.
Links/Resources:
Serial ATA (SATA) for Linux link farm (Garzik's -- static 2008 snapshot from just before the site was abandoned). All of author's future SATA status reports and other support pages will be (2011: were) linked there.
Linux SATA RAID FAQ (Garzik's -- static 2008 snapshot). Mostly, "Why — no, sir — here's why that SATA thing you bought actually isn't real hardware RAID." Very droll.
Linux-IDE: — information resource for open-source Linux ATA support but not necessarily the Serial ATA variant, operated by a "Linux ATA Development Storage Consulting Group":
http://www.linux-ide.org/
Background article on Serial ATA and Linux:
http://www.linux-tutorial.info/modules.php?name=Tutorial&pageid=328
Design limits of ATA, especially in RAID settings:
http://www.findarticles.com/cf_dls/m0BRZ/6_23/105884199/p1/article.jhtml Why SCSI will still remain generally faster and more reliable.
Serial ATA Info by Brady Matthew Shea (static 2007 snapshot).
SATA/RAID-Capable Hard Drives and Motherboards by Brady Matthew Shea.
libata status reports:
- Link to cumulative-info report (static 2006 snapshot)
- a/o 2004-07-08: http://www.google.com/groups?hl=en&lr=&ie=UTF-8&th=28f68c68ad7073d8&rnum=1
- a/o 2004-05-10: http://www.google.com/groups?hl=en&lr=&ie=UTF-8&th=9f3661e9bc8e3981&rnum=1
- a/o 2004-04-24: http://lkml.org/lkml/mbox/2004/4/24/80
- a/o 2004-03-30: http://www.google.com/groups?hl=en&lr=&ie=UTF-8&selm=1Fz8E-VU-87%40gated-at.bofh.it
- a/o 2004-03-25: http://www.google.com/groups?selm=1DGQl-3Dk-47%40gated-at.bofh.it&output=gplain
- a/o 2004-03-23: http://www.google.com/groups?hl=en&lr=&ie=UTF-8&th=16436e61be477b1c&rnum=1
- a/o 2004-02-25: http://www.ussg.iu.edu/hypermail/linux/kernel/0402.3/0711.html
- a/o 2003-12-03: http://www.ussg.iu.edu/hypermail/linux/kernel/0312.0/0597.html
libata source code and docs checkout: Take care to read all documentation. Among other things, you'll need to disable all kernel ATA support, since libata uses the kernel's SCSI layers: http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/ or (somewhat easier to deal with) Garzik's periodic patchkits at http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/. Development code can be retrieved via rsync: rsync://rsync.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev.git/
I gather that libata is the only way to support SATA drives larger than 133GB. (libata supports the necessary "lba48" ATA addressing extension starting with kernel revision 2.6.5-rc2.) Also, Garzik has hotplug, random taskfile submission (thus enabling SMART support, previously unavailable under libata), and ATAPI under development for libata as of 2004-04-24. Last, Garzik has drivers for SATA-2 controllers under development as of 2004-03-30.
SATA can theoretically do tagged command queuing (TCQ), but support for that feature is just now (2004-07) under construction in libata — and exists in none of the other Linux driver sets.
Kernel Traffic's 2003-8 coverage (archival link): http://www.kerneltraffic.org/kernel-traffic/topics/Serial_ATA.html
Debian installation using Scott Kveton's unofficial
Debian 3.0 woody 5 MB netinst image: This image uses a 2.4.23
kernel, meaning it's useful for owners of Intel ICH5 chipsets (standard
ATA driver), Adaptec AAR 24x0 chipsets (aacraid driver), LSI Logic
MegaRAID 150-4/150-6 SATA chipsets (megaraid2 driver), and the SiS
964 South Bridge. (Please let
me know. My thanks to Martin McClure for confirming SiS 964 support.)
And of course 3Ware card owners can use almost any 2.4.x-based
installer. Kveton's image does not include Garzik's libata set, and
so doesn't cover other SATA chipsets. However, Kveton's instructions page
also details how you can create your own custom netinst,
e.g., one with 2.4.27 (and later) or a 2.6 kernel (either of which
includes libata):
http://oregonstate.edu/~kveton/debian/ or
http://public.www.planetmirror.com/pub/debian-netinst/kveton/
Debian installation using Kenshi's unofficial Debian 3.1 sarge 125MB netinst image: Uses the sarge "debian-installer" (d-i) installation routine and a 2.6.14 kernel. http://kmuto.jp/b.cgi/2005/11/26"
Installing Debian with SATA-based RAID. Article
by Karl Schmidt, in which he uses the Debian-sarge beta4 installer's
2.6 kernel's libata drivers to complete installation onto his Intel ICH5
SATA-I (Intel D865PERL motherboard), then create a Linux software RAID
array, and move Debian over:
http://wiki.xtronics.com/index.php/Raid
Debian chroot installation onto Intel ICH5-R SATA.
Involves initial Debian installation to a separate PATA drive.
Basic technique shown can be adapted to any SATA chipset using 2.4.27
(or later) or a 2.6 kernel (either of which includes libata):
http://www.e-aiyama.com/~toshi/Computer/Linux/SATA.html
Debian chroot installation onto Intel ICH5 SATA and LVM.
Involves initial Debian installation to a separate PATA drive:
http://www.lathi.net/twiki-bin/view/Main/DebianSataLvm
Debian 2.6-kernel-based installers. At least two installers for Debian provide installers with "2.6 boot flavour" options (and thus libata): all Knoppix releases starting with v. 3.4 and Official Debian Debian-Installer releases (for Debian 3.1 sarge and later) starting with beta 4.
Red Hat custom CD construction — creating your own custom RH-based installer starting from stock RH8, e.g., to substitute a custom kernel with libata patches:
http://www.cpqlinux.com/rh80customcd.html
Red Hat on an Intel D865PERL motherboard and SATA drives — brief article on how to install RH9 to hard drives on that motherboard's Intel ICH5 chipset, by setting the BIOS to "legacy mode" for installation, and then using Linux software RAID ("md" driver):
http://web.archive.org/web/20060425102930/http://www.transtronics.com/reference/D865PERL_SATA.htm
Follow-on to the prior entry, this time addressing Debian
3.1 "sarge" installation onto any SATA controller, avoiding using
fakeraid features and instead detailing how to set up "md" software RAID
mirroring. Article also makes the point that the Debian 4.0 "etch"
installer makes the steps he details unnecessary, taking care of the
process automatically:
http://wiki.xtronics.com/index.php/Raid
Fedora custom CD construction — creating your own custom Fedora-based installer starting from a stock Fedora image, e.g., to substitute a custom kernel with libata patches:
https://www.redhat.com/archives/anaconda-devel-list/2003-March/msg00033.html. (Note that Fedora Core2 provides a 2.6 kernel, making this rebuild step no longer necessary for most SATA chipsets.)
Tweakers.net article "Comparison of nine Serial ATA RAID 5 adapters" — introduces nine SATA-II host adapters, including some Linux-support comments.
Tom's Hardware's comparative reviews as of Jan. 2006 and Oct. 2005.
Clinton East's comparative review "SATA (Serial ATA) or SCSI?" — clarifies many of the issues in picking fakeraid and real hardware RAID controllers for Linux (and draws on this page as a resource).
ThinkWiki page "Problems with SATA and Linux" covers known SATA issues with IBM ThinkPads.
Disclaimer:
I've created this document from public sources in order to learn about the subject, but cannot claim any expertise. Accordingly, it may contain significant errors — and corrections are greatly appreciated. Please send all such to rick@linuxmafia.com.
See also:
Thanks to the Darma NAS OS Hardware Compatibility List (http://nas.darma.com/support/hcl.html) for crediting this page (for extensive borrowings from it).
The Skolelinux Project has a potentially useful page of information about hardware RAID chipsets: http://developer.skolelinux.no/info/prosjektet/delprosjekt/hw-raid-info.html
The Debian Project has a useful page of Linux RAID information: http://wiki.debian.org/LinuxRaidForAdmins