0001 ARECA FIRMWARE SPEC
0002 ===================
0003
0004 Usage of IOP331 adapter
0005 =======================
0006
0007 (All In/Out is in IOP331's view)
0008
0009 1. Message 0
0010 ------------
0011
0012 - InitThread message and return code
0013
0014 2. Doorbell is used for RS-232 emulation
0015 ----------------------------------------
0016
0017 inDoorBell
0018 bit0
0019 data in ready
0020 zDRIVER DATA WRITE OK)
0021 bit1
0022 data out has been read
0023 (DRIVER DATA READ OK)
0024
0025 outDooeBell:
0026 bit0
0027 data out ready
0028 (IOP331 DATA WRITE OK)
0029 bit1
0030 data in has been read
0031 (IOP331 DATA READ OK)
0032
0033 3. Index Memory Usage
0034 ---------------------
0035
0036 ============ ==========================================
0037 offset 0xf00 for RS232 out (request buffer)
0038 offset 0xe00 for RS232 in (scratch buffer)
0039 offset 0xa00 for inbound message code message_rwbuffer
0040 (driver send to IOP331)
0041 offset 0xa00 for outbound message code message_rwbuffer
0042 (IOP331 send to driver)
0043 ============ ==========================================
0044
0045 4. RS-232 emulation
0046 -------------------
0047
0048 Currently 128 byte buffer is used:
0049
0050 ============ =====================
0051 1st uint32_t Data length (1--124)
0052 Byte 4--127 Max 124 bytes of data
0053 ============ =====================
0054
0055 5. PostQ
0056 --------
0057
0058 All SCSI Command must be sent through postQ:
0059
0060 (inbound queue port)
0061 Request frame must be 32 bytes aligned:
0062
0063 #bit27--bit31
0064 flag for post ccb
0065 #bit0--bit26
0066 real address (bit27--bit31) of post arcmsr_cdb
0067
0068 ===== ===================
0069 bit31 == ===============
0070 0 256 bytes frame
0071 1 512 bytes frame
0072 == ===============
0073 bit30 == ==============
0074 0 normal request
0075 1 BIOS request
0076 == ==============
0077 bit29 reserved
0078 bit28 reserved
0079 bit27 reserved
0080 ===== ===================
0081
0082 (outbount queue port)
0083 Request reply:
0084
0085 #bit27--bit31
0086 flag for reply
0087 #bit0--bit26
0088 real address (bit27--bit31) of reply arcmsr_cdb
0089
0090 ===== =======================================================
0091 bit31 must be 0 (for this type of reply)
0092 bit30 reserved for BIOS handshake
0093 bit29 reserved
0094 bit28 == ===================================================
0095 0 no error, ignore AdapStatus/DevStatus/SenseData
0096 1 Error, error code in AdapStatus/DevStatus/SenseData
0097 == ===================================================
0098 bit27 reserved
0099 ===== =======================================================
0100
0101 6. BIOS request
0102 ---------------
0103
0104 All BIOS request is the same with request from PostQ
0105
0106 Except:
0107
0108 Request frame is sent from configuration space:
0109
0110 ============ ==========================
0111 offset: 0x78 Request Frame (bit30 == 1)
0112 offset: 0x18 writeonly to generate
0113 IRQ to IOP331
0114 ============ ==========================
0115
0116 Completion of request::
0117
0118 (bit30 == 0, bit28==err flag)
0119
0120 7. Definition of SGL entry (structure)
0121 --------------------------------------
0122
0123 8. Message1 Out - Diag Status Code (????)
0124 -----------------------------------------
0125
0126 9. Message0 message code
0127 ------------------------
0128
0129 ====== =================================================================
0130 0x00 NOP
0131 0x01 Get Config
0132 ->offset 0xa00 :for outbound message code message_rwbuffer
0133 (IOP331 send to driver)
0134
0135 ===================== ==========================================
0136 Signature 0x87974060(4)
0137 Request len 0x00000200(4)
0138 numbers of queue 0x00000100(4)
0139 SDRAM Size 0x00000100(4)-->256 MB
0140 IDE Channels 0x00000008(4)
0141 vendor 40 bytes char
0142 model 8 bytes char
0143 FirmVer 16 bytes char
0144 Device Map 16 bytes char
0145 FirmwareVersion DWORD
0146
0147 - Added for checking of
0148 new firmware capability
0149 ===================== ==========================================
0150 0x02 Set Config
0151 ->offset 0xa00 :for inbound message code message_rwbuffer
0152 (driver send to IOP331)
0153
0154 ========================= ==================
0155 Signature 0x87974063(4)
0156 UPPER32 of Request Frame (4)-->Driver Only
0157 ========================= ==================
0158 0x03 Reset (Abort all queued Command)
0159 0x04 Stop Background Activity
0160 0x05 Flush Cache
0161 0x06 Start Background Activity
0162 (re-start if background is halted)
0163 0x07 Check If Host Command Pending
0164 (Novell May Need This Function)
0165 0x08 Set controller time
0166 ->offset 0xa00 for inbound message code message_rwbuffer
0167 (driver to IOP331)
0168
0169 ====== ==================
0170 byte 0 0xaa <-- signature
0171 byte 1 0x55 <-- signature
0172 byte 2 year (04)
0173 byte 3 month (1..12)
0174 byte 4 date (1..31)
0175 byte 5 hour (0..23)
0176 byte 6 minute (0..59)
0177 byte 7 second (0..59)
0178 ====== ==================
0179 ====== =================================================================
0180
0181
0182 RS-232 Interface for Areca Raid Controller
0183 ==========================================
0184
0185 The low level command interface is exclusive with VT100 terminal
0186
0187 1. Sequence of command execution
0188 --------------------------------
0189
0190 (A) Header
0191 3 bytes sequence (0x5E, 0x01, 0x61)
0192
0193 (B) Command block
0194 variable length of data including length,
0195 command code, data and checksum byte
0196
0197 (C) Return data
0198 variable length of data
0199
0200 2. Command block
0201 ----------------
0202
0203 (A) 1st byte
0204 command block length (low byte)
0205
0206 (B) 2nd byte
0207 command block length (high byte)
0208
0209 .. Note:: command block length shouldn't > 2040 bytes,
0210 length excludes these two bytes
0211
0212 (C) 3rd byte
0213 command code
0214
0215 (D) 4th and following bytes
0216 variable length data bytes
0217
0218 depends on command code
0219
0220 (E) last byte
0221 checksum byte (sum of 1st byte until last data byte)
0222
0223 3. Command code and associated data
0224 -----------------------------------
0225
0226 The following are command code defined in raid controller Command
0227 code 0x10--0x1? are used for system level management,
0228 no password checking is needed and should be implemented in separate
0229 well controlled utility and not for end user access.
0230 Command code 0x20--0x?? always check the password,
0231 password must be entered to enable these command::
0232
0233 enum
0234 {
0235 GUI_SET_SERIAL=0x10,
0236 GUI_SET_VENDOR,
0237 GUI_SET_MODEL,
0238 GUI_IDENTIFY,
0239 GUI_CHECK_PASSWORD,
0240 GUI_LOGOUT,
0241 GUI_HTTP,
0242 GUI_SET_ETHERNET_ADDR,
0243 GUI_SET_LOGO,
0244 GUI_POLL_EVENT,
0245 GUI_GET_EVENT,
0246 GUI_GET_HW_MONITOR,
0247 // GUI_QUICK_CREATE=0x20, (function removed)
0248 GUI_GET_INFO_R=0x20,
0249 GUI_GET_INFO_V,
0250 GUI_GET_INFO_P,
0251 GUI_GET_INFO_S,
0252 GUI_CLEAR_EVENT,
0253 GUI_MUTE_BEEPER=0x30,
0254 GUI_BEEPER_SETTING,
0255 GUI_SET_PASSWORD,
0256 GUI_HOST_INTERFACE_MODE,
0257 GUI_REBUILD_PRIORITY,
0258 GUI_MAX_ATA_MODE,
0259 GUI_RESET_CONTROLLER,
0260 GUI_COM_PORT_SETTING,
0261 GUI_NO_OPERATION,
0262 GUI_DHCP_IP,
0263 GUI_CREATE_PASS_THROUGH=0x40,
0264 GUI_MODIFY_PASS_THROUGH,
0265 GUI_DELETE_PASS_THROUGH,
0266 GUI_IDENTIFY_DEVICE,
0267 GUI_CREATE_RAIDSET=0x50,
0268 GUI_DELETE_RAIDSET,
0269 GUI_EXPAND_RAIDSET,
0270 GUI_ACTIVATE_RAIDSET,
0271 GUI_CREATE_HOT_SPARE,
0272 GUI_DELETE_HOT_SPARE,
0273 GUI_CREATE_VOLUME=0x60,
0274 GUI_MODIFY_VOLUME,
0275 GUI_DELETE_VOLUME,
0276 GUI_START_CHECK_VOLUME,
0277 GUI_STOP_CHECK_VOLUME
0278 };
0279
0280 Command description
0281 ^^^^^^^^^^^^^^^^^^^
0282
0283 GUI_SET_SERIAL
0284 Set the controller serial#
0285
0286 ================ =============================================
0287 byte 0,1 length
0288 byte 2 command code 0x10
0289 byte 3 password length (should be 0x0f)
0290 byte 4-0x13 should be "ArEcATecHnoLogY"
0291 byte 0x14--0x23 Serial number string (must be 16 bytes)
0292 ================ =============================================
0293
0294 GUI_SET_VENDOR
0295 Set vendor string for the controller
0296
0297 ================ =============================================
0298 byte 0,1 length
0299 byte 2 command code 0x11
0300 byte 3 password length (should be 0x08)
0301 byte 4-0x13 should be "ArEcAvAr"
0302 byte 0x14--0x3B vendor string (must be 40 bytes)
0303 ================ =============================================
0304
0305 GUI_SET_MODEL
0306 Set the model name of the controller
0307
0308 ================ =============================================
0309 byte 0,1 length
0310 byte 2 command code 0x12
0311 byte 3 password length (should be 0x08)
0312 byte 4-0x13 should be "ArEcAvAr"
0313 byte 0x14--0x1B model string (must be 8 bytes)
0314 ================ =============================================
0315
0316 GUI_IDENTIFY
0317 Identify device
0318
0319 ================ =============================================
0320 byte 0,1 length
0321 byte 2 command code 0x13
0322 return "Areca RAID Subsystem "
0323 ================ =============================================
0324
0325 GUI_CHECK_PASSWORD
0326 Verify password
0327
0328 ================ =============================================
0329 byte 0,1 length
0330 byte 2 command code 0x14
0331 byte 3 password length
0332 byte 4-0x?? user password to be checked
0333 ================ =============================================
0334
0335 GUI_LOGOUT
0336 Logout GUI (force password checking on next command)
0337
0338 ================ =============================================
0339 byte 0,1 length
0340 byte 2 command code 0x15
0341 ================ =============================================
0342
0343 GUI_HTTP
0344 HTTP interface (reserved for Http proxy service)(0x16)
0345
0346 GUI_SET_ETHERNET_ADDR
0347 Set the ethernet MAC address
0348
0349 ================ =============================================
0350 byte 0,1 length
0351 byte 2 command code 0x17
0352 byte 3 password length (should be 0x08)
0353 byte 4-0x13 should be "ArEcAvAr"
0354 byte 0x14--0x19 Ethernet MAC address (must be 6 bytes)
0355 ================ =============================================
0356
0357 GUI_SET_LOGO
0358 Set logo in HTTP
0359
0360 ================ =============================================
0361 byte 0,1 length
0362 byte 2 command code 0x18
0363 byte 3 Page# (0/1/2/3) (0xff --> clear OEM logo)
0364 byte 4/5/6/7 0x55/0xaa/0xa5/0x5a
0365 byte 8 TITLE.JPG data (each page must be 2000 bytes)
0366
0367 .. Note:: page0 1st 2 byte must be
0368 actual length of the JPG file
0369 ================ =============================================
0370
0371 GUI_POLL_EVENT
0372 Poll If Event Log Changed
0373
0374 ================ =============================================
0375 byte 0,1 length
0376 byte 2 command code 0x19
0377 ================ =============================================
0378
0379 GUI_GET_EVENT
0380 Read Event
0381
0382 ================ =============================================
0383 byte 0,1 length
0384 byte 2 command code 0x1a
0385 byte 3 Event Page (0:1st page/1/2/3:last page)
0386 ================ =============================================
0387
0388 GUI_GET_HW_MONITOR
0389 Get HW monitor data
0390
0391 ================ =============================================
0392 byte 0,1 length
0393 byte 2 command code 0x1b
0394 byte 3 # of FANs(example 2)
0395 byte 4 # of Voltage sensor(example 3)
0396 byte 5 # of temperature sensor(example 2)
0397 byte 6 # of power
0398 byte 7/8 Fan#0 (RPM)
0399 byte 9/10 Fan#1
0400 byte 11/12 Voltage#0 original value in ``*1000``
0401 byte 13/14 Voltage#0 value
0402 byte 15/16 Voltage#1 org
0403 byte 17/18 Voltage#1
0404 byte 19/20 Voltage#2 org
0405 byte 21/22 Voltage#2
0406 byte 23 Temp#0
0407 byte 24 Temp#1
0408 byte 25 Power indicator (bit0 power#0,
0409 bit1 power#1)
0410 byte 26 UPS indicator
0411 ================ =============================================
0412
0413 GUI_QUICK_CREATE
0414 Quick create raid/volume set
0415
0416 ================ ==============================================
0417 byte 0,1 length
0418 byte 2 command code 0x20
0419 byte 3/4/5/6 raw capacity
0420 byte 7 raid level
0421 byte 8 stripe size
0422 byte 9 spare
0423 byte 10/11/12/13 device mask (the devices to create raid/volume)
0424 ================ ==============================================
0425
0426 This function is removed, application like
0427 to implement quick create function
0428
0429 need to use GUI_CREATE_RAIDSET and GUI_CREATE_VOLUMESET function.
0430
0431 GUI_GET_INFO_R
0432 Get Raid Set Information
0433
0434 ================ =============================================
0435 byte 0,1 length
0436 byte 2 command code 0x20
0437 byte 3 raidset#
0438 ================ =============================================
0439
0440 ::
0441
0442 typedef struct sGUI_RAIDSET
0443 {
0444 BYTE grsRaidSetName[16];
0445 DWORD grsCapacity;
0446 DWORD grsCapacityX;
0447 DWORD grsFailMask;
0448 BYTE grsDevArray[32];
0449 BYTE grsMemberDevices;
0450 BYTE grsNewMemberDevices;
0451 BYTE grsRaidState;
0452 BYTE grsVolumes;
0453 BYTE grsVolumeList[16];
0454 BYTE grsRes1;
0455 BYTE grsRes2;
0456 BYTE grsRes3;
0457 BYTE grsFreeSegments;
0458 DWORD grsRawStripes[8];
0459 DWORD grsRes4;
0460 DWORD grsRes5; // Total to 128 bytes
0461 DWORD grsRes6; // Total to 128 bytes
0462 } sGUI_RAIDSET, *pGUI_RAIDSET;
0463
0464 GUI_GET_INFO_V
0465 Get Volume Set Information
0466
0467 ================ =============================================
0468 byte 0,1 length
0469 byte 2 command code 0x21
0470 byte 3 volumeset#
0471 ================ =============================================
0472
0473 ::
0474
0475 typedef struct sGUI_VOLUMESET
0476 {
0477 BYTE gvsVolumeName[16]; // 16
0478 DWORD gvsCapacity;
0479 DWORD gvsCapacityX;
0480 DWORD gvsFailMask;
0481 DWORD gvsStripeSize;
0482 DWORD gvsNewFailMask;
0483 DWORD gvsNewStripeSize;
0484 DWORD gvsVolumeStatus;
0485 DWORD gvsProgress; // 32
0486 sSCSI_ATTR gvsScsi;
0487 BYTE gvsMemberDisks;
0488 BYTE gvsRaidLevel; // 8
0489 BYTE gvsNewMemberDisks;
0490 BYTE gvsNewRaidLevel;
0491 BYTE gvsRaidSetNumber;
0492 BYTE gvsRes0; // 4
0493 BYTE gvsRes1[4]; // 64 bytes
0494 } sGUI_VOLUMESET, *pGUI_VOLUMESET;
0495
0496 GUI_GET_INFO_P
0497 Get Physical Drive Information
0498
0499 ================ =============================================
0500 byte 0,1 length
0501 byte 2 command code 0x22
0502 byte 3 drive # (from 0 to max-channels - 1)
0503 ================ =============================================
0504
0505 ::
0506
0507 typedef struct sGUI_PHY_DRV
0508 {
0509 BYTE gpdModelName[40];
0510 BYTE gpdSerialNumber[20];
0511 BYTE gpdFirmRev[8];
0512 DWORD gpdCapacity;
0513 DWORD gpdCapacityX; // Reserved for expansion
0514 BYTE gpdDeviceState;
0515 BYTE gpdPioMode;
0516 BYTE gpdCurrentUdmaMode;
0517 BYTE gpdUdmaMode;
0518 BYTE gpdDriveSelect;
0519 BYTE gpdRaidNumber; // 0xff if not belongs to a raid set
0520 sSCSI_ATTR gpdScsi;
0521 BYTE gpdReserved[40]; // Total to 128 bytes
0522 } sGUI_PHY_DRV, *pGUI_PHY_DRV;
0523
0524 GUI_GET_INFO_S
0525 Get System Information
0526
0527 ================ =============================================
0528 byte 0,1 length
0529 byte 2 command code 0x23
0530 ================ =============================================
0531
0532 ::
0533
0534 typedef struct sCOM_ATTR
0535 {
0536 BYTE comBaudRate;
0537 BYTE comDataBits;
0538 BYTE comStopBits;
0539 BYTE comParity;
0540 BYTE comFlowControl;
0541 } sCOM_ATTR, *pCOM_ATTR;
0542 typedef struct sSYSTEM_INFO
0543 {
0544 BYTE gsiVendorName[40];
0545 BYTE gsiSerialNumber[16];
0546 BYTE gsiFirmVersion[16];
0547 BYTE gsiBootVersion[16];
0548 BYTE gsiMbVersion[16];
0549 BYTE gsiModelName[8];
0550 BYTE gsiLocalIp[4];
0551 BYTE gsiCurrentIp[4];
0552 DWORD gsiTimeTick;
0553 DWORD gsiCpuSpeed;
0554 DWORD gsiICache;
0555 DWORD gsiDCache;
0556 DWORD gsiScache;
0557 DWORD gsiMemorySize;
0558 DWORD gsiMemorySpeed;
0559 DWORD gsiEvents;
0560 BYTE gsiMacAddress[6];
0561 BYTE gsiDhcp;
0562 BYTE gsiBeeper;
0563 BYTE gsiChannelUsage;
0564 BYTE gsiMaxAtaMode;
0565 BYTE gsiSdramEcc; // 1:if ECC enabled
0566 BYTE gsiRebuildPriority;
0567 sCOM_ATTR gsiComA; // 5 bytes
0568 sCOM_ATTR gsiComB; // 5 bytes
0569 BYTE gsiIdeChannels;
0570 BYTE gsiScsiHostChannels;
0571 BYTE gsiIdeHostChannels;
0572 BYTE gsiMaxVolumeSet;
0573 BYTE gsiMaxRaidSet;
0574 BYTE gsiEtherPort; // 1:if ether net port supported
0575 BYTE gsiRaid6Engine; // 1:Raid6 engine supported
0576 BYTE gsiRes[75];
0577 } sSYSTEM_INFO, *pSYSTEM_INFO;
0578
0579 GUI_CLEAR_EVENT
0580 Clear System Event
0581
0582 ================ =============================================
0583 byte 0,1 length
0584 byte 2 command code 0x24
0585 ================ =============================================
0586
0587 GUI_MUTE_BEEPER
0588 Mute current beeper
0589
0590 ================ =============================================
0591 byte 0,1 length
0592 byte 2 command code 0x30
0593 ================ =============================================
0594 GUI_BEEPER_SETTING
0595 Disable beeper
0596
0597 ================ =============================================
0598 byte 0,1 length
0599 byte 2 command code 0x31
0600 byte 3 0->disable, 1->enable
0601 ================ =============================================
0602
0603 GUI_SET_PASSWORD
0604 Change password
0605
0606 ================ =============================================
0607 byte 0,1 length
0608 byte 2 command code 0x32
0609 byte 3 pass word length ( must <= 15 )
0610 byte 4 password (must be alpha-numerical)
0611 ================ =============================================
0612
0613 GUI_HOST_INTERFACE_MODE
0614 Set host interface mode
0615
0616 ================ =============================================
0617 byte 0,1 length
0618 byte 2 command code 0x33
0619 byte 3 0->Independent, 1->cluster
0620 ================ =============================================
0621
0622 GUI_REBUILD_PRIORITY
0623 Set rebuild priority
0624
0625 ================ =============================================
0626 byte 0,1 length
0627 byte 2 command code 0x34
0628 byte 3 0/1/2/3 (low->high)
0629 ================ =============================================
0630
0631 GUI_MAX_ATA_MODE
0632 Set maximum ATA mode to be used
0633
0634 ================ =============================================
0635 byte 0,1 length
0636 byte 2 command code 0x35
0637 byte 3 0/1/2/3 (133/100/66/33)
0638 ================ =============================================
0639
0640 GUI_RESET_CONTROLLER
0641 Reset Controller
0642
0643 ================ =============================================
0644 byte 0,1 length
0645 byte 2 command code 0x36
0646 * Response with VT100 screen (discard it)
0647 ================ =============================================
0648
0649 GUI_COM_PORT_SETTING
0650 COM port setting
0651
0652 ================ =================================================
0653 byte 0,1 length
0654 byte 2 command code 0x37
0655 byte 3 0->COMA (term port),
0656 1->COMB (debug port)
0657 byte 4 0/1/2/3/4/5/6/7
0658 (1200/2400/4800/9600/19200/38400/57600/115200)
0659 byte 5 data bit
0660 (0:7 bit, 1:8 bit must be 8 bit)
0661 byte 6 stop bit (0:1, 1:2 stop bits)
0662 byte 7 parity (0:none, 1:off, 2:even)
0663 byte 8 flow control
0664 (0:none, 1:xon/xoff, 2:hardware => must use none)
0665 ================ =================================================
0666
0667 GUI_NO_OPERATION
0668 No operation
0669
0670 ================ =============================================
0671 byte 0,1 length
0672 byte 2 command code 0x38
0673 ================ =============================================
0674
0675 GUI_DHCP_IP
0676 Set DHCP option and local IP address
0677
0678 ================ =============================================
0679 byte 0,1 length
0680 byte 2 command code 0x39
0681 byte 3 0:dhcp disabled, 1:dhcp enabled
0682 byte 4/5/6/7 IP address
0683 ================ =============================================
0684
0685 GUI_CREATE_PASS_THROUGH
0686 Create pass through disk
0687
0688 ================ =============================================
0689 byte 0,1 length
0690 byte 2 command code 0x40
0691 byte 3 device #
0692 byte 4 scsi channel (0/1)
0693 byte 5 scsi id (0-->15)
0694 byte 6 scsi lun (0-->7)
0695 byte 7 tagged queue (1 enabled)
0696 byte 8 cache mode (1 enabled)
0697 byte 9 max speed (0/1/2/3/4,
0698 async/20/40/80/160 for scsi)
0699 (0/1/2/3/4, 33/66/100/133/150 for ide )
0700 ================ =============================================
0701
0702 GUI_MODIFY_PASS_THROUGH
0703 Modify pass through disk
0704
0705 ================ =============================================
0706 byte 0,1 length
0707 byte 2 command code 0x41
0708 byte 3 device #
0709 byte 4 scsi channel (0/1)
0710 byte 5 scsi id (0-->15)
0711 byte 6 scsi lun (0-->7)
0712 byte 7 tagged queue (1 enabled)
0713 byte 8 cache mode (1 enabled)
0714 byte 9 max speed (0/1/2/3/4,
0715 async/20/40/80/160 for scsi)
0716 (0/1/2/3/4, 33/66/100/133/150 for ide )
0717 ================ =============================================
0718
0719 GUI_DELETE_PASS_THROUGH
0720 Delete pass through disk
0721
0722 ================ =============================================
0723 byte 0,1 length
0724 byte 2 command code 0x42
0725 byte 3 device# to be deleted
0726 ================ =============================================
0727 GUI_IDENTIFY_DEVICE
0728 Identify Device
0729
0730 ================ =============================================
0731 byte 0,1 length
0732 byte 2 command code 0x43
0733 byte 3 Flash Method
0734 (0:flash selected, 1:flash not selected)
0735 byte 4/5/6/7 IDE device mask to be flashed
0736 .. Note:: no response data available
0737 ================ =============================================
0738
0739 GUI_CREATE_RAIDSET
0740 Create Raid Set
0741
0742 ================ =============================================
0743 byte 0,1 length
0744 byte 2 command code 0x50
0745 byte 3/4/5/6 device mask
0746 byte 7-22 raidset name (if byte 7 == 0:use default)
0747 ================ =============================================
0748
0749 GUI_DELETE_RAIDSET
0750 Delete Raid Set
0751
0752 ================ =============================================
0753 byte 0,1 length
0754 byte 2 command code 0x51
0755 byte 3 raidset#
0756 ================ =============================================
0757
0758 GUI_EXPAND_RAIDSET
0759 Expand Raid Set
0760
0761 ================ =============================================
0762 byte 0,1 length
0763 byte 2 command code 0x52
0764 byte 3 raidset#
0765 byte 4/5/6/7 device mask for expansion
0766 byte 8/9/10 (8:0 no change, 1 change, 0xff:terminate,
0767 9:new raid level,
0768 10:new stripe size
0769 0/1/2/3/4/5->4/8/16/32/64/128K )
0770 byte 11/12/13 repeat for each volume in the raidset
0771 ================ =============================================
0772
0773 GUI_ACTIVATE_RAIDSET
0774 Activate incomplete raid set
0775
0776 ================ =============================================
0777 byte 0,1 length
0778 byte 2 command code 0x53
0779 byte 3 raidset#
0780 ================ =============================================
0781
0782 GUI_CREATE_HOT_SPARE
0783 Create hot spare disk
0784
0785 ================ =============================================
0786 byte 0,1 length
0787 byte 2 command code 0x54
0788 byte 3/4/5/6 device mask for hot spare creation
0789 ================ =============================================
0790
0791 GUI_DELETE_HOT_SPARE
0792 Delete hot spare disk
0793
0794 ================ =============================================
0795 byte 0,1 length
0796 byte 2 command code 0x55
0797 byte 3/4/5/6 device mask for hot spare deletion
0798 ================ =============================================
0799
0800 GUI_CREATE_VOLUME
0801 Create volume set
0802
0803 ================ =============================================
0804 byte 0,1 length
0805 byte 2 command code 0x60
0806 byte 3 raidset#
0807 byte 4-19 volume set name
0808 (if byte4 == 0, use default)
0809 byte 20-27 volume capacity (blocks)
0810 byte 28 raid level
0811 byte 29 stripe size
0812 (0/1/2/3/4/5->4/8/16/32/64/128K)
0813 byte 30 channel
0814 byte 31 ID
0815 byte 32 LUN
0816 byte 33 1 enable tag
0817 byte 34 1 enable cache
0818 byte 35 speed
0819 (0/1/2/3/4->async/20/40/80/160 for scsi)
0820 (0/1/2/3/4->33/66/100/133/150 for IDE )
0821 byte 36 1 to select quick init
0822 ================ =============================================
0823
0824 GUI_MODIFY_VOLUME
0825 Modify volume Set
0826
0827 ================ =============================================
0828 byte 0,1 length
0829 byte 2 command code 0x61
0830 byte 3 volumeset#
0831 byte 4-19 new volume set name
0832 (if byte4 == 0, not change)
0833 byte 20-27 new volume capacity (reserved)
0834 byte 28 new raid level
0835 byte 29 new stripe size
0836 (0/1/2/3/4/5->4/8/16/32/64/128K)
0837 byte 30 new channel
0838 byte 31 new ID
0839 byte 32 new LUN
0840 byte 33 1 enable tag
0841 byte 34 1 enable cache
0842 byte 35 speed
0843 (0/1/2/3/4->async/20/40/80/160 for scsi)
0844 (0/1/2/3/4->33/66/100/133/150 for IDE )
0845 ================ =============================================
0846
0847 GUI_DELETE_VOLUME
0848 Delete volume set
0849
0850 ================ =============================================
0851 byte 0,1 length
0852 byte 2 command code 0x62
0853 byte 3 volumeset#
0854 ================ =============================================
0855
0856 GUI_START_CHECK_VOLUME
0857 Start volume consistency check
0858
0859 ================ =============================================
0860 byte 0,1 length
0861 byte 2 command code 0x63
0862 byte 3 volumeset#
0863 ================ =============================================
0864
0865 GUI_STOP_CHECK_VOLUME
0866 Stop volume consistency check
0867
0868 ================ =============================================
0869 byte 0,1 length
0870 byte 2 command code 0x64
0871 ================ =============================================
0872
0873 4. Returned data
0874 ----------------
0875
0876 (A) Header
0877 3 bytes sequence (0x5E, 0x01, 0x61)
0878 (B) Length
0879 2 bytes
0880 (low byte 1st, excludes length and checksum byte)
0881 (C)
0882 status or data:
0883
0884 1) If length == 1 ==> 1 byte status code::
0885
0886 #define GUI_OK 0x41
0887 #define GUI_RAIDSET_NOT_NORMAL 0x42
0888 #define GUI_VOLUMESET_NOT_NORMAL 0x43
0889 #define GUI_NO_RAIDSET 0x44
0890 #define GUI_NO_VOLUMESET 0x45
0891 #define GUI_NO_PHYSICAL_DRIVE 0x46
0892 #define GUI_PARAMETER_ERROR 0x47
0893 #define GUI_UNSUPPORTED_COMMAND 0x48
0894 #define GUI_DISK_CONFIG_CHANGED 0x49
0895 #define GUI_INVALID_PASSWORD 0x4a
0896 #define GUI_NO_DISK_SPACE 0x4b
0897 #define GUI_CHECKSUM_ERROR 0x4c
0898 #define GUI_PASSWORD_REQUIRED 0x4d
0899
0900 2) If length > 1:
0901
0902 data block returned from controller
0903 and the contents depends on the command code
0904
0905 (E) Checksum
0906 checksum of length and status or data byte
0907