Driver Disk Installation Guide for ARC-11XX/ARC12XX/ARC16XX/18XX RAID Controller 
on RHEL 6.8 or CentOS 6.8(kernel 2.6.32-642.el6) x86_64 and i386 
=================================================================================
=================================================================================
Linux SCSI driver technical support 
mail address: support@areca.com.tw
Web site: www.areca.com.tw
==================================================================================
==================================================================================
 
**********************************************************************************   
1. Contents
**********************************************************************************

readme.txt	- the installation guide of ARC-11XX/12XX/16XX/18XX driver
		  for RHEL 6.8 or CentOS 6.8
arcmsr-1.50.0X.09-rhel6.8.iso	- Areca RAID driver for Linux system installation
kmod-arcmsr-1.50.0X.09_rhel6.8-1.x86_64.rpm    - arcmsr driver in rpm format
kmod-arcmsr-1.50.0X.09_rhel6.8-1.i686.rpm
arcmsr-1.50.0X.09-20220304.zip  - arcmsr driver source code
arcmsr-1.50.00.09-source-only.dkms.tar.gz - DKMS enabled driver source code
**********************************************************************************
2. First installation
**********************************************************************************
A. Before Installation
   Copy arcmsr-1.50.0X.09-rhel6.8.iso to top(/) directory of an USB flash drive .
   Give a label to USB flash drive, said ARECA.

B. Installation
	a. Booting from Installation DVD disc.

    For choice legacy DVD drive to install:
	b. If "Welcom to CentOS 6.8" or "Welcom to Red Hat Enterprise Linux 6.8" Installation screen show up, 
	   highlight cursor on "Install or upgrade an existing system".

	   Press Tab to edit boot command line option.
	   At the end of command line, append " dd"
	   (double quotation mark are not include).

	   Press Enter to start system installation.

    For choice UEFI DVD drive to install:
	b. When boot "CentOS 6.8" or "Red Hat Enterprise Linux 6.8" start 5 seconds count down, press Enter.
	   Highlight cursor on "CentOS 6.8" or "Red Hat Enterprise Linux 6.8", type e.
	   Highlight cursor on "kernel /images/pxeboot/vmlinuz", type e.
	   Append dd to grub edit as below appearance,
	   
	   	grub edit> kernel /images/pxeboot/vmlinuz dd

	   Press Enter.
	   Now it back to highlight cursor on "kernel /images/pxeboot/vmlinuz", type b to boot.

	c. When ask for "Do you have a driver disk?", insert the USB flash drive, then select Yes.
	d. When ask for "Drive Disk Source", select sda
	e. When ask for "Drive Disk Source" again, select /dev/sda1
	f. When ask for "Select drive disk image", select arcmsr-rhel6.8.iso
	g. When ask for "More Driver Disks?", if you don't want to install other driver, say No.
	h. Continue to system installation.

**********************************************************************************
3. Installing raid driver on an Existing System.
**********************************************************************************
	For x86_64 system:
	------------------
	# rpm -ivh kmod-arcmsr-1.50.0X.09_rhel6.8-1.x86_64.rpm
		or
	For i686 system:
	------------------
	# rpm -ivh kmod-arcmsr-1.50.0X.09_rhel6.8-1.i686.rpm

	If you are installing a new kmod-arcmsr to overwrite an old kmod-arcmsr.
	# rpm -ivh --force kmod-arcmsr-1.50.0X.09_rhel6.9-1....rpm

	# depmod -a
	# reboot

**********************************************************************************
4. To compile raid driver on an Existing System.
**********************************************************************************

	Before you can compile a new driver, you have to install kernel-headers and kernel-devel.
	These two rpm packages are in RHEL 6.8 DVD installation disc /Packages.
	# rpm -ivh kernel-headers-$(uname -r).rpm
	# rpm -ivh kernel-devel-$(uname -r).rpm

	To compile arcmsr driver, extract driver source code to a new directory.
	# make
	# cp arcmsr.ko  /lib/modules/$(uname -r)/kernel/drivers/scsi/arcmsr/
	# depmod -a
	# dracut -f
	# reboot

**********************************************************************************
5. To install DKMS enabled tarball of arcmsr driver on an Existing System.
**********************************************************************************
	Login as root or as superuser.
	Before you can compile a new driver, you have to install kernel-headers and kernel-devel.
	These two rpm packages are in RHEL 6 DVD installation disc /Packages.
	# rpm -ivh kernel-headers-$(uname -r).rpm
	# rpm -ivh kernel-devel-$(uname -r).rpm

	Download DKMS package dkms-<dkmsversion>.noarch.rpm from http://linux.dell.com/dkms/
	Before using DKMS, you must install DKMS package. You can install dkms as following.
	# rpm -ivh dkms-<dkmsversion>.noarch.rpm
	where <moduleversion> is dkms version could be, e.g., 2.2.0.3-1

	Copy arcmsr DKMS enabled tarball to home directory.
	In order to load tarball into the DKMS tree, you must use the following command:

	# dkms ldtarball --archive=./arcmsr-<moduleversion>-source-only.dkms.tar.gz
	where <moduleversion> is module version could be, e.g., 1.50.00.09
	arcmsr source code will be added to DKMS tree.
	
	To build arcmsr driver module
	# dkms build -m arcmsr -v <moduleversion>
	
	To install arcmsr driver module
	# dkms install -m arcmsr -v <moduleversion>


	If you are upgrading linux kernel, then you have to install the corresponding linux-headers-<kernelver> before
	reboot your system. New kernel image can be find in /boot, corresponding new linux header can be find in /usr/src.
	If you can not find new linux header in /usr/src, you can install it as following.
	# rpm -ivh kernel-headers-<kernelver>.rpm
	where <kernelver> is kernel version could be, e.g., 2.6.32-642.el6.$(uname -m)
	
	After installed linux header files, DKMS service will build and install arcmsr driver for new kernel automatically.

**********************************************************************************
6. To set driver parameters value
**********************************************************************************
    arcmsr provided driver parameters setting since v1.30.0X.25.
    Multiple Driver parameters can be set at a time.
    e.g. # insmod arcmsr.ko host_can_queue=72 cmd_per_lun=16

    Setting parameter value out of range will be ignored, parameter remain default value.

    a. To list what driver parameter can be set, parameter default value and value range.
       # modinfo arcmsr

    b. To set driver parameter when you manually install driver.
       (This method will be infeasible if your system was boot from areca Raid volume.)
       e.g. to set parameter host_can_queue value to 64
       # sudo rmmod arcmsr
       # sudo insmod /lib/modules/$(uname -r)/kernel/drivers/scsi/arcmsr/arcmsr.ko host_can_queue=64

    c. To set driver parameter during booting from grub menu.
       When grub menu display, use UP and DOWN arrow key to move cursor to booting target.
       Type e to edit, move cursor to end of line that include "linux   /boot/vmlinuz-x.xx.xx ....."
       Append driver parameter to there.(e.g. to set parameter host_can_queue value to 64)

       linux   /boot/vmlinuz-2.6.32-xx..... ... ... rhgb quiet arcmsr.host_can_queue=64

    d. To set driver parameter for every boot up.
       e.g. to set parameter host_can_queue value to 64
       # sudo gedit /boot/grub2/grub.cfg
           or
       # sudo gedit /boot/efi/EFI/centos/grub.cfg
       Append driver parameter setting to end of line that include "linux   /boot/vmlinuz-x.xx.xx ....."

       linux   /boot/vmlinuz-2.6.32-xx..... ... ... rhgb quiet arcmsr.host_can_queue=64

    e. To verify parameter setting is correct.
       1. To locate adapter parameter directory
          Find Areca host number:
          # dmesg | grep 'scsi host'
          # cat /sys/class/scsi_host/hostX/proc_name
                where hostX could be host0, host1, ...
          The correct output should be arcmsr. If output is (null), check host_fw_model and host_driver_version.
          # cat /sys/class/scsi_host/hostX/host_fw_model
          # cat /sys/class/scsi_host/hostX/host_driver_version

       2. List host_can_queue value
          #  cat /sys/class/scsi_host/hostX/can_queue

       3. List cmd_per_lun value
          #  cat /sys/class/scsi_host/hostX/cmd_per_lun

       4. List cmd_timeout value
          #  cat /sys/block/sdX/device/cmd_timeout
             where sdX could be sda, sdb, ...
