1.\" 2.\" Copyright (c) 1998, 1999, 2000, 2002, 2005, 2006, 2007 Kenneth D. Merry. 3.\" All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice, this list of conditions and the following disclaimer. 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 3. The name of the author may not be used to endorse or promote products 14.\" derived from this software without specific prior written permission. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26.\" SUCH DAMAGE. 27.\" 28.\" $FreeBSD$ 29.\" 30.Dd September 6, 2013 31.Dt CAMCONTROL 8 32.Os 33.Sh NAME 34.Nm camcontrol 35.Nd CAM control program 36.Sh SYNOPSIS 37.Nm 38.Aq Ar command 39.Op device id 40.Op generic args 41.Op command args 42.Nm 43.Ic devlist 44.Op Fl v 45.Nm 46.Ic periphlist 47.Op device id 48.Op Fl n Ar dev_name 49.Op Fl u Ar unit_number 50.Nm 51.Ic tur 52.Op device id 53.Op generic args 54.Nm 55.Ic inquiry 56.Op device id 57.Op generic args 58.Op Fl D 59.Op Fl S 60.Op Fl R 61.Nm 62.Ic identify 63.Op device id 64.Op generic args 65.Op Fl v 66.Nm 67.Ic reportluns 68.Op device id 69.Op generic args 70.Op Fl c 71.Op Fl l 72.Op Fl r Ar reporttype 73.Nm 74.Ic readcap 75.Op device id 76.Op generic args 77.Op Fl b 78.Op Fl h 79.Op Fl H 80.Op Fl N 81.Op Fl q 82.Op Fl s 83.Nm 84.Ic start 85.Op device id 86.Op generic args 87.Nm 88.Ic stop 89.Op device id 90.Op generic args 91.Nm 92.Ic load 93.Op device id 94.Op generic args 95.Nm 96.Ic eject 97.Op device id 98.Op generic args 99.Nm 100.Ic rescan 101.Aq all | bus Ns Op :target:lun 102.Nm 103.Ic reset 104.Aq all | bus Ns Op :target:lun 105.Nm 106.Ic defects 107.Op device id 108.Op generic args 109.Aq Fl f Ar format 110.Op Fl P 111.Op Fl G 112.Nm 113.Ic modepage 114.Op device id 115.Op generic args 116.Aq Fl m Ar page | Fl l 117.Op Fl P Ar pgctl 118.Op Fl b | Fl e 119.Op Fl d 120.Nm 121.Ic cmd 122.Op device id 123.Op generic args 124.Aq Fl a Ar cmd Op args 125.Aq Fl c Ar cmd Op args 126.Op Fl d 127.Op Fl f 128.Op Fl i Ar len Ar fmt 129.Bk -words 130.Op Fl o Ar len Ar fmt Op args 131.Op Fl r Ar fmt 132.Ek 133.Nm 134.Ic smpcmd 135.Op device id 136.Op generic args 137.Aq Fl r Ar len Ar fmt Op args 138.Aq Fl R Ar len Ar fmt Op args 139.Nm 140.Ic smprg 141.Op device id 142.Op generic args 143.Op Fl l 144.Nm 145.Ic smppc 146.Op device id 147.Op generic args 148.Aq Fl p Ar phy 149.Op Fl l 150.Op Fl o Ar operation 151.Op Fl d Ar name 152.Op Fl m Ar rate 153.Op Fl M Ar rate 154.Op Fl T Ar pp_timeout 155.Op Fl a Ar enable|disable 156.Op Fl A Ar enable|disable 157.Op Fl s Ar enable|disable 158.Op Fl S Ar enable|disable 159.Nm 160.Ic smpphylist 161.Op device id 162.Op generic args 163.Op Fl l 164.Op Fl q 165.Nm 166.Ic smpmaninfo 167.Op device id 168.Op generic args 169.Op Fl l 170.Nm 171.Ic debug 172.Op Fl I 173.Op Fl P 174.Op Fl T 175.Op Fl S 176.Op Fl X 177.Op Fl c 178.Op Fl p 179.Aq all|off|bus Ns Op :target Ns Op :lun 180.Nm 181.Ic tags 182.Op device id 183.Op generic args 184.Op Fl N Ar tags 185.Op Fl q 186.Op Fl v 187.Nm 188.Ic negotiate 189.Op device id 190.Op generic args 191.Op Fl c 192.Op Fl D Ar enable|disable 193.Op Fl M Ar mode 194.Op Fl O Ar offset 195.Op Fl q 196.Op Fl R Ar syncrate 197.Op Fl T Ar enable|disable 198.Op Fl U 199.Op Fl W Ar bus_width 200.Op Fl v 201.Nm 202.Ic format 203.Op device id 204.Op generic args 205.Op Fl q 206.Op Fl r 207.Op Fl w 208.Op Fl y 209.Nm 210.Ic sanitize 211.Op device id 212.Op generic args 213.Aq Fl a Ar overwrite | block | crypto | exitfailure 214.Op Fl c Ar passes 215.Op Fl I 216.Op Fl P Ar pattern 217.Op Fl q 218.Op Fl U 219.Op Fl r 220.Op Fl w 221.Op Fl y 222.Nm 223.Ic idle 224.Op device id 225.Op generic args 226.Op Fl t Ar time 227.Nm 228.Ic standby 229.Op device id 230.Op generic args 231.Op Fl t Ar time 232.Nm 233.Ic sleep 234.Op device id 235.Op generic args 236.Nm 237.Ic fwdownload 238.Op device id 239.Op generic args 240.Aq Fl f Ar fw_image 241.Op Fl y 242.Op Fl s 243.Nm 244.Ic security 245.Op device id 246.Op generic args 247.Op Fl d Ar pwd 248.Op Fl e Ar pwd 249.Op Fl f 250.Op Fl h Ar pwd 251.Op Fl k Ar pwd 252.Op Fl l Ar high|maximum 253.Op Fl q 254.Op Fl s Ar pwd 255.Op Fl T Ar timeout 256.Op Fl U Ar user|master 257.Op Fl y 258.Nm 259.Ic hpa 260.Op device id 261.Op generic args 262.Op Fl f 263.Op Fl l 264.Op Fl P 265.Op Fl p Ar pwd 266.Op Fl q 267.Op Fl s Ar max_sectors 268.Op Fl U Ar pwd 269.Op Fl y 270.Nm 271.Ic help 272.Sh DESCRIPTION 273The 274.Nm 275utility is designed to provide a way for users to access and control the 276.Fx 277CAM subsystem. 278.Pp 279The 280.Nm 281utility 282can cause a loss of data and/or system crashes if used improperly. 283Even 284expert users are encouraged to exercise caution when using this command. 285Novice users should stay away from this utility. 286.Pp 287The 288.Nm 289utility has a number of primary functions, many of which support an optional 290device identifier. 291A device identifier can take one of three forms: 292.Bl -tag -width 14n 293.It deviceUNIT 294Specify a device name and unit number combination, like "da5" or "cd3". 295.It bus:target 296Specify a bus number and target id. 297The bus number can be determined from 298the output of 299.Dq camcontrol devlist . 300The lun defaults to 0. 301.It bus:target:lun 302Specify the bus, target and lun for a device. 303(e.g.\& 1:2:0) 304.El 305.Pp 306The device identifier, if it is specified, 307.Em must 308come immediately after the function name, and before any generic or 309function-specific arguments. 310Note that the 311.Fl n 312and 313.Fl u 314arguments described below will override any device name or unit number 315specified beforehand. 316The 317.Fl n 318and 319.Fl u 320arguments will 321.Em not 322override a specified bus:target or bus:target:lun, however. 323.Pp 324Most of the 325.Nm 326primary functions support these generic arguments: 327.Bl -tag -width 14n 328.It Fl C Ar count 329SCSI command retry count. 330In order for this to work, error recovery 331.Pq Fl E 332must be turned on. 333.It Fl E 334Instruct the kernel to perform generic SCSI error recovery for the given 335command. 336This is needed in order for the retry count 337.Pq Fl C 338to be honored. 339Other than retrying commands, the generic error recovery in 340the code will generally attempt to spin up drives that are not spinning. 341It may take some other actions, depending upon the sense code returned from 342the command. 343.It Fl n Ar dev_name 344Specify the device type to operate on, e.g.\& "da", "cd". 345.It Fl t Ar timeout 346SCSI command timeout in seconds. 347This overrides the default timeout for 348any given command. 349.It Fl u Ar unit_number 350Specify the device unit number, e.g.\& "1", "5". 351.It Fl v 352Be verbose, print out sense information for failed SCSI commands. 353.El 354.Pp 355Primary command functions: 356.Bl -tag -width periphlist 357.It Ic devlist 358List all physical devices (logical units) attached to the CAM subsystem. 359This also includes a list of peripheral drivers attached to each device. 360With the 361.Fl v 362argument, SCSI bus number, adapter name and unit numbers are printed as 363well. 364.It Ic periphlist 365List all peripheral drivers attached to a given physical device (logical 366unit). 367.It Ic tur 368Send the SCSI test unit ready (0x00) command to the given device. 369The 370.Nm 371utility will report whether the device is ready or not. 372.It Ic inquiry 373Send a SCSI inquiry command (0x12) to a device. 374By default, 375.Nm 376will print out the standard inquiry data, device serial number, and 377transfer rate information. 378The user can specify that only certain types of 379inquiry data be printed: 380.Bl -tag -width 4n 381.It Fl D 382Get the standard inquiry data. 383.It Fl S 384Print out the serial number. 385If this flag is the only one specified, 386.Nm 387will not print out "Serial Number" before the value returned by the drive. 388This is to aid in script writing. 389.It Fl R 390Print out transfer rate information. 391.El 392.It Ic identify 393Send a ATA identify command (0xec) to a device. 394.It Ic reportluns 395Send the SCSI REPORT LUNS (0xA0) command to the given device. 396By default, 397.Nm 398will print out the list of logical units (LUNs) supported by the target device. 399There are a couple of options to modify the output: 400.Bl -tag -width 14n 401.It Fl c 402Just print out a count of LUNs, not the actual LUN numbers. 403.It Fl l 404Just print out the LUNs, and do not print out the count. 405.It Fl r Ar reporttype 406Specify the type of report to request from the target: 407.Bl -tag -width 012345678 408.It default 409Return the default report. 410This is the 411.Nm 412default. 413Most targets will support this report if they support the REPORT LUNS 414command. 415.It wellknown 416Return only well known LUNs. 417.It all 418Return all available LUNs. 419.El 420.El 421.Pp 422.Nm 423will try to print out LUN numbers in a reasonable format. 424It can understand the peripheral, flat, LUN and extended LUN formats. 425.It Ic readcap 426Send the SCSI READ CAPACITY command to the given device and display 427the results. 428If the device is larger than 2TB, the SCSI READ CAPACITY (16) service 429action will be sent to obtain the full size of the device. 430By default, 431.Nm 432will print out the last logical block of the device, and the blocksize of 433the device in bytes. 434To modify the output format, use the following options: 435.Bl -tag -width 5n 436.It Fl b 437Just print out the blocksize, not the last block or device size. 438This cannot be used with 439.Fl N 440or 441.Fl s . 442.It Fl h 443Print out the device size in human readable (base 2, 1K == 1024) format. 444This implies 445.Fl N 446and cannot be used with 447.Fl q 448or 449.Fl b . 450.It Fl H 451Print out the device size in human readable (base 10, 1K == 1000) format. 452.It Fl N 453Print out the number of blocks in the device instead of the last logical 454block. 455.It Fl q 456Quiet, print out the numbers only (separated by a comma if 457.Fl b 458or 459.Fl s 460are not specified). 461.It Fl s 462Print out the last logical block or the size of the device only, and omit 463the blocksize. 464.El 465.It Ic start 466Send the SCSI Start/Stop Unit (0x1B) command to the given device with the 467start bit set. 468.It Ic stop 469Send the SCSI Start/Stop Unit (0x1B) command to the given device with the 470start bit cleared. 471.It Ic load 472Send the SCSI Start/Stop Unit (0x1B) command to the given device with the 473start bit set and the load/eject bit set. 474.It Ic eject 475Send the SCSI Start/Stop Unit (0x1B) command to the given device with the 476start bit cleared and the load/eject bit set. 477.It Ic rescan 478Tell the kernel to scan all busses in the system (with the 479.Ar all 480argument), the given bus (XPT_SCAN_BUS), or bus:target:lun 481(XPT_SCAN_LUN) for new devices or devices that have gone away. 482The user 483may specify a scan of all busses, a single bus, or a lun. 484Scanning all luns 485on a target is not supported. 486.It Ic reset 487Tell the kernel to reset all busses in the system (with the 488.Ar all 489argument) or the given bus (XPT_RESET_BUS) by issuing a SCSI bus 490reset for that bus, or to reset the given bus:target:lun 491(XPT_RESET_DEV), typically by issuing a BUS DEVICE RESET message after 492connecting to that device. 493Note that this can have a destructive impact 494on the system. 495.It Ic defects 496Send the SCSI READ DEFECT DATA (10) command (0x37) to the given device, and 497print out any combination of: the total number of defects, the primary 498defect list (PLIST), and the grown defect list (GLIST). 499.Bl -tag -width 11n 500.It Fl f Ar format 501The three format options are: 502.Em block , 503to print out the list as logical blocks, 504.Em bfi , 505to print out the list in bytes from index format, and 506.Em phys , 507to print out the list in physical sector format. 508The format argument is 509required. 510Most drives support the physical sector format. 511Some drives 512support the logical block format. 513Many drives, if they do not support the 514requested format, return the data in an alternate format, along with sense 515information indicating that the requested data format is not supported. 516The 517.Nm 518utility 519attempts to detect this, and print out whatever format the drive returns. 520If the drive uses a non-standard sense code to report that it does not 521support the requested format, 522.Nm 523will probably see the error as a failure to complete the request. 524.It Fl G 525Print out the grown defect list. 526This is a list of bad blocks that have 527been remapped since the disk left the factory. 528.It Fl P 529Print out the primary defect list. 530.El 531.Pp 532If neither 533.Fl P 534nor 535.Fl G 536is specified, 537.Nm 538will print out the number of defects given in the READ DEFECT DATA header 539returned from the drive. 540Some drives will report 0 defects if neither the primary or grown defect 541lists are requested. 542.It Ic modepage 543Allows the user to display and optionally edit a SCSI mode page. 544The mode 545page formats are located in 546.Pa /usr/share/misc/scsi_modes . 547This can be overridden by specifying a different file in the 548.Ev SCSI_MODES 549environment variable. 550The 551.Ic modepage 552command takes several arguments: 553.Bl -tag -width 12n 554.It Fl d 555Disable block descriptors for mode sense. 556.It Fl b 557Displays mode page data in binary format. 558.It Fl e 559This flag allows the user to edit values in the mode page. 560The user may 561either edit mode page values with the text editor pointed to by his 562.Ev EDITOR 563environment variable, or supply mode page values via standard input, using 564the same format that 565.Nm 566uses to display mode page values. 567The editor will be invoked if 568.Nm 569detects that standard input is terminal. 570.It Fl l 571Lists all available mode pages. 572.It Fl m Ar mode_page 573This specifies the number of the mode page the user would like to view 574and/or edit. 575This argument is mandatory unless 576.Fl l 577is specified. 578.It Fl P Ar pgctl 579This allows the user to specify the page control field. 580Possible values are: 581.Bl -tag -width xxx -compact 582.It 0 583Current values 584.It 1 585Changeable values 586.It 2 587Default values 588.It 3 589Saved values 590.El 591.El 592.It Ic cmd 593Allows the user to send an arbitrary ATA or SCSI CDB to any device. 594The 595.Ic cmd 596function requires the 597.Fl c 598argument to specify SCSI CDB or the 599.Fl a 600argument to specify ATA Command Block registers values. 601Other arguments are optional, depending on 602the command type. 603The command and data specification syntax is documented 604in 605.Xr cam_cdbparse 3 . 606NOTE: If the CDB specified causes data to be transferred to or from the 607SCSI device in question, you MUST specify either 608.Fl i 609or 610.Fl o . 611.Bl -tag -width 17n 612.It Fl a Ar cmd Op args 613This specifies the content of 12 ATA Command Block registers (command, 614features, lba_low, lba_mid, lba_high, device, lba_low_exp, lba_mid_exp. 615lba_high_exp, features_exp, sector_count, sector_count_exp). 616.It Fl c Ar cmd Op args 617This specifies the SCSI CDB. 618SCSI CDBs may be 6, 10, 12 or 16 bytes. 619.It Fl d 620Specifies DMA protocol to be used for ATA command. 621.It Fl f 622Specifies FPDMA (NCQ) protocol to be used for ATA command. 623.It Fl i Ar len Ar fmt 624This specifies the amount of data to read, and how it should be displayed. 625If the format is 626.Sq - , 627.Ar len 628bytes of data will be read from the device and written to standard output. 629.It Fl o Ar len Ar fmt Op args 630This specifies the amount of data to be written to a device, and the data 631that is to be written. 632If the format is 633.Sq - , 634.Ar len 635bytes of data will be read from standard input and written to the device. 636.It Fl r Ar fmt 637This specifies that 11 result ATA Command Block registers should be displayed 638(status, error, lba_low, lba_mid, lba_high, device, lba_low_exp, lba_mid_exp, 639lba_high_exp, sector_count, sector_count_exp), and how. 640If the format is 641.Sq - , 64211 result registers will be written to standard output in hex. 643.El 644.It Ic smpcmd 645Allows the user to send an arbitrary Serial 646Management Protocol (SMP) command to a device. 647The 648.Ic smpcmd 649function requires the 650.Fl r 651argument to specify the SMP request to be sent, and the 652.Fl R 653argument to specify the format of the SMP response. 654The syntax for the SMP request and response arguments is documented in 655.Xr cam_cdbparse 3 . 656.Pp 657Note that SAS adapters that support SMP passthrough (at least the currently 658known adapters) do not accept CRC bytes from the user in the request and do 659not pass CRC bytes back to the user in the response. 660Therefore users should not include the CRC bytes in the length of the 661request and not expect CRC bytes to be returned in the response. 662.Bl -tag -width 17n 663.It Fl r Ar len Ar fmt Op args 664This specifies the size of the SMP request, without the CRC bytes, and the 665SMP request format. If the format is 666.Sq - , 667.Ar len 668bytes of data will be read from standard input and written as the SMP 669request. 670.It Fl R Ar len Ar fmt Op args 671This specifies the size of the buffer allocated for the SMP response, and 672the SMP response format. 673If the format is 674.Sq - , 675.Ar len 676bytes of data will be allocated for the response and the response will be 677written to standard output. 678.El 679.It Ic smprg 680Allows the user to send the Serial Management Protocol (SMP) Report General 681command to a device. 682.Nm 683will display the data returned by the Report General command. 684If the SMP target supports the long response format, the additional data 685will be requested and displayed automatically. 686.Bl -tag -width 8n 687.It Fl l 688Request the long response format only. 689Not all SMP targets support the long response format. 690This option causes 691.Nm 692to skip sending the initial report general request without the long bit set 693and only issue a report general request with the long bit set. 694.El 695.It Ic smppc 696Allows the user to issue the Serial Management Protocol (SMP) PHY Control 697command to a device. 698This function should be used with some caution, as it can render devices 699inaccessible, and could potentially cause data corruption as well. 700The 701.Fl p 702argument is required to specify the PHY to operate on. 703.Bl -tag -width 17n 704.It Fl p Ar phy 705Specify the PHY to operate on. 706This argument is required. 707.It Fl l 708Request the long request/response format. 709Not all SMP targets support the long response format. 710For the PHY Control command, this currently only affects whether the 711request length is set to a value other than 0. 712.It Fl o Ar operation 713Specify a PHY control operation. 714Only one 715.Fl o 716operation may be specified. 717The operation may be specified numerically (in decimal, hexadecimal, or octal) 718or one of the following operation names may be specified: 719.Bl -tag -width 16n 720.It nop 721No operation. 722It is not necessary to specify this argument. 723.It linkreset 724Send the LINK RESET command to the phy. 725.It hardreset 726Send the HARD RESET command to the phy. 727.It disable 728Send the DISABLE command to the phy. 729Note that the LINK RESET or HARD RESET commands should re-enable the phy. 730.It clearerrlog 731Send the CLEAR ERROR LOG command. 732This clears the error log counters for the specified phy. 733.It clearaffiliation 734Send the CLEAR AFFILIATION command. 735This clears the affiliation from the STP initiator port with the same SAS 736address as the SMP initiator that requests the clear operation. 737.It sataportsel 738Send the TRANSMIT SATA PORT SELECTION SIGNAL command to the phy. 739This will cause a SATA port selector to use the given phy as its active phy 740and make the other phy inactive. 741.It clearitnl 742Send the CLEAR STP I_T NEXUS LOSS command to the PHY. 743.It setdevname 744Send the SET ATTACHED DEVICE NAME command to the PHY. 745This requires the 746.Fl d 747argument to specify the device name. 748.El 749.It Fl d Ar name 750Specify the attached device name. 751This option is needed with the 752.Fl o Ar setdevname 753phy operation. 754The name is a 64-bit number, and can be specified in decimal, hexadecimal 755or octal format. 756.It Fl m Ar rate 757Set the minimum physical link rate for the phy. 758This is a numeric argument. 759Currently known link rates are: 760.Bl -tag -width 5n 761.It 0x0 762Do not change current value. 763.It 0x8 7641.5 Gbps 765.It 0x9 7663 Gbps 767.It 0xa 7686 Gbps 769.El 770.Pp 771Other values may be specified for newer physical link rates. 772.It Fl M Ar rate 773Set the maximum physical link rate for the phy. 774This is a numeric argument. 775See the 776.Fl m 777argument description for known link rate arguments. 778.It Fl T Ar pp_timeout 779Set the partial pathway timeout value, in microseconds. 780See the 781.Tn ANSI 782.Tn SAS 783Protocol Layer (SPL) 784specification for more information on this field. 785.It Fl a Ar enable|disable 786Enable or disable SATA slumber phy power conditions. 787.It Fl A Ar enable|disable 788Enable or disable SATA partial power conditions. 789.It Fl s Ar enable|disable 790Enable or disable SAS slumber phy power conditions. 791.It Fl S Ar enable|disable 792Enable or disable SAS partial phy power conditions. 793.El 794.It Ic smpphylist 795List phys attached to a SAS expander, the address of the end device 796attached to the phy, and the inquiry data for that device and peripheral 797devices attached to that device. 798The inquiry data and peripheral devices are displayed if available. 799.Bl -tag -width 5n 800.It Fl l 801Turn on the long response format for the underlying SMP commands used for 802this command. 803.It Fl q 804Only print out phys that are attached to a device in the CAM EDT (Existing 805Device Table). 806.El 807.It Ic smpmaninfo 808Send the SMP Report Manufacturer Information command to the device and 809display the response. 810.Bl -tag -width 5n 811.It Fl l 812Turn on the long response format for the underlying SMP commands used for 813this command. 814.El 815.It Ic debug 816Turn on CAM debugging printfs in the kernel. 817This requires options CAMDEBUG 818in your kernel config file. 819WARNING: enabling debugging printfs currently 820causes an EXTREME number of kernel printfs. 821You may have difficulty 822turning off the debugging printfs once they start, since the kernel will be 823busy printing messages and unable to service other requests quickly. 824The 825.Ic debug 826function takes a number of arguments: 827.Bl -tag -width 18n 828.It Fl I 829Enable CAM_DEBUG_INFO printfs. 830.It Fl P 831Enable CAM_DEBUG_PERIPH printfs. 832.It Fl T 833Enable CAM_DEBUG_TRACE printfs. 834.It Fl S 835Enable CAM_DEBUG_SUBTRACE printfs. 836.It Fl X 837Enable CAM_DEBUG_XPT printfs. 838.It Fl c 839Enable CAM_DEBUG_CDB printfs. 840This will cause the kernel to print out the 841SCSI CDBs sent to the specified device(s). 842.It Fl p 843Enable CAM_DEBUG_PROBE printfs. 844.It all 845Enable debugging for all devices. 846.It off 847Turn off debugging for all devices 848.It bus Ns Op :target Ns Op :lun 849Turn on debugging for the given bus, target or lun. 850If the lun or target 851and lun are not specified, they are wildcarded. 852(i.e., just specifying a 853bus turns on debugging printfs for all devices on that bus.) 854.El 855.It Ic tags 856Show or set the number of "tagged openings" or simultaneous transactions 857we attempt to queue to a particular device. 858By default, the 859.Ic tags 860command, with no command-specific arguments (i.e., only generic arguments) 861prints out the "soft" maximum number of transactions that can be queued to 862the device in question. 863For more detailed information, use the 864.Fl v 865argument described below. 866.Bl -tag -width 7n 867.It Fl N Ar tags 868Set the number of tags for the given device. 869This must be between the 870minimum and maximum number set in the kernel quirk table. 871The default for 872most devices that support tagged queueing is a minimum of 2 and a maximum 873of 255. 874The minimum and maximum values for a given device may be 875determined by using the 876.Fl v 877switch. 878The meaning of the 879.Fl v 880switch for this 881.Nm 882subcommand is described below. 883.It Fl q 884Be quiet, and do not report the number of tags. 885This is generally used when 886setting the number of tags. 887.It Fl v 888The verbose flag has special functionality for the 889.Em tags 890argument. 891It causes 892.Nm 893to print out the tagged queueing related fields of the XPT_GDEV_TYPE CCB: 894.Bl -tag -width 13n 895.It dev_openings 896This is the amount of capacity for transactions queued to a given device. 897.It dev_active 898This is the number of transactions currently queued to a device. 899.It devq_openings 900This is the kernel queue space for transactions. 901This count usually mirrors 902dev_openings except during error recovery operations when 903the device queue is frozen (device is not allowed to receive 904commands), the number of dev_openings is reduced, or transaction 905replay is occurring. 906.It devq_queued 907This is the number of transactions waiting in the kernel queue for capacity 908on the device. 909This number is usually zero unless error recovery is in 910progress. 911.It held 912The held count is the number of CCBs held by peripheral drivers that have 913either just been completed or are about to be released to the transport 914layer for service by a device. 915Held CCBs reserve capacity on a given 916device. 917.It mintags 918This is the current "hard" minimum number of transactions that can be 919queued to a device at once. 920The 921.Ar dev_openings 922value above cannot go below this number. 923The default value for 924.Ar mintags 925is 2, although it may be set higher or lower for various devices. 926.It maxtags 927This is the "hard" maximum number of transactions that can be queued to a 928device at one time. 929The 930.Ar dev_openings 931value cannot go above this number. 932The default value for 933.Ar maxtags 934is 255, although it may be set higher or lower for various devices. 935.El 936.El 937.It Ic negotiate 938Show or negotiate various communication parameters. 939Some controllers may 940not support setting or changing some of these values. 941For instance, the 942Adaptec 174x controllers do not support changing a device's sync rate or 943offset. 944The 945.Nm 946utility 947will not attempt to set the parameter if the controller indicates that it 948does not support setting the parameter. 949To find out what the controller 950supports, use the 951.Fl v 952flag. 953The meaning of the 954.Fl v 955flag for the 956.Ic negotiate 957command is described below. 958Also, some controller drivers do not support 959setting negotiation parameters, even if the underlying controller supports 960negotiation changes. 961Some controllers, such as the Advansys wide 962controllers, support enabling and disabling synchronous negotiation for 963a device, but do not support setting the synchronous negotiation rate. 964.Bl -tag -width 17n 965.It Fl a 966Attempt to make the negotiation settings take effect immediately by sending 967a Test Unit Ready command to the device. 968.It Fl c 969Show or set current negotiation settings. 970This is the default. 971.It Fl D Ar enable|disable 972Enable or disable disconnection. 973.It Fl M Ar mode 974Set ATA mode. 975.It Fl O Ar offset 976Set the command delay offset. 977.It Fl q 978Be quiet, do not print anything. 979This is generally useful when you want to 980set a parameter, but do not want any status information. 981.It Fl R Ar syncrate 982Change the synchronization rate for a device. 983The sync rate is a floating 984point value specified in MHz. 985So, for instance, 986.Sq 20.000 987is a legal value, as is 988.Sq 20 . 989.It Fl T Ar enable|disable 990Enable or disable tagged queueing for a device. 991.It Fl U 992Show or set user negotiation settings. 993The default is to show or set 994current negotiation settings. 995.It Fl v 996The verbose switch has special meaning for the 997.Ic negotiate 998subcommand. 999It causes 1000.Nm 1001to print out the contents of a Path Inquiry (XPT_PATH_INQ) CCB sent to the 1002controller driver. 1003.It Fl W Ar bus_width 1004Specify the bus width to negotiate with a device. 1005The bus width is 1006specified in bits. 1007The only useful values to specify are 8, 16, and 32 1008bits. 1009The controller must support the bus width in question in order for 1010the setting to take effect. 1011.El 1012.Pp 1013In general, sync rate and offset settings will not take effect for a 1014device until a command has been sent to the device. 1015The 1016.Fl a 1017switch above will automatically send a Test Unit Ready to the device so 1018negotiation parameters will take effect. 1019.It Ic format 1020Issue the 1021.Tn SCSI 1022FORMAT UNIT command to the named device. 1023.Pp 1024.Em WARNING! WARNING! WARNING! 1025.Pp 1026Low level formatting a disk will destroy ALL data on the disk. 1027Use 1028extreme caution when issuing this command. 1029Many users low-level format 1030disks that do not really need to be low-level formatted. 1031There are 1032relatively few scenarios that call for low-level formatting a disk. 1033One reason for 1034low-level formatting a disk is to initialize the disk after changing 1035its physical sector size. 1036Another reason for low-level formatting a disk 1037is to revive the disk if you are getting "medium format corrupted" errors 1038from the disk in response to read and write requests. 1039.Pp 1040Some disks take longer than others to format. 1041Users should specify a 1042timeout long enough to allow the format to complete. 1043The default format 1044timeout is 3 hours, which should be long enough for most disks. 1045Some hard 1046disks will complete a format operation in a very short period of time 1047(on the order of 5 minutes or less). 1048This is often because the drive 1049does not really support the FORMAT UNIT command -- it just accepts the 1050command, waits a few minutes and then returns it. 1051.Pp 1052The 1053.Sq format 1054subcommand takes several arguments that modify its default behavior. 1055The 1056.Fl q 1057and 1058.Fl y 1059arguments can be useful for scripts. 1060.Bl -tag -width 6n 1061.It Fl q 1062Be quiet, do not print any status messages. 1063This option will not disable 1064the questions, however. 1065To disable questions, use the 1066.Fl y 1067argument, below. 1068.It Fl r 1069Run in 1070.Dq report only 1071mode. 1072This will report status on a format that is already running on the drive. 1073.It Fl w 1074Issue a non-immediate format command. 1075By default, 1076.Nm 1077issues the FORMAT UNIT command with the immediate bit set. 1078This tells the 1079device to immediately return the format command, before the format has 1080actually completed. 1081Then, 1082.Nm 1083gathers 1084.Tn SCSI 1085sense information from the device every second to determine how far along 1086in the format process it is. 1087If the 1088.Fl w 1089argument is specified, 1090.Nm 1091will issue a non-immediate format command, and will be unable to print any 1092information to let the user know what percentage of the disk has been 1093formatted. 1094.It Fl y 1095Do not ask any questions. 1096By default, 1097.Nm 1098will ask the user if he/she really wants to format the disk in question, 1099and also if the default format command timeout is acceptable. 1100The user 1101will not be asked about the timeout if a timeout is specified on the 1102command line. 1103.El 1104.It Ic sanitize 1105Issue the 1106.Tn SCSI 1107SANITIZE command to the named device. 1108.Pp 1109.Em WARNING! WARNING! WARNING! 1110.Pp 1111ALL data in the cache and on the disk will be destroyed or made inaccessible. 1112Recovery of the data is not possible. 1113Use extreme caution when issuing this command. 1114.Pp 1115The 1116.Sq sanitize 1117subcommand takes several arguments that modify its default behavior. 1118The 1119.Fl q 1120and 1121.Fl y 1122arguments can be useful for scripts. 1123.Bl -tag -width 6n 1124.It Fl a Ar operation 1125Specify the sanitize operation to perform. 1126.Bl -tag -width 16n 1127.It overwrite 1128Perform an overwrite operation by writing a user supplied 1129data pattern to the device one or more times. 1130The pattern is given by the 1131.Fl P 1132argument. 1133The number of times is given by the 1134.Fl c 1135argument. 1136.It block 1137Perform a block erase operation. 1138All the device's blocks are set to a vendor defined 1139value, typically zero. 1140.It crypto 1141Perform a cryptographic erase operation. 1142The encryption keys are changed to prevent the decryption 1143of the data. 1144.It exitfailure 1145Exits a previously failed sanitize operation. 1146A failed sanitize operation can only be exited if it was 1147run in the unrestricted completion mode, as provided by the 1148.Fl U 1149argument. 1150.El 1151.It Fl c Ar passes 1152The number of passes when performing an 1153.Sq overwrite 1154operation. 1155Valid values are between 1 and 31. The default is 1. 1156.It Fl I 1157When performing an 1158.Sq overwrite 1159operation, the pattern is inverted between consecutive passes. 1160.It Fl P Ar pattern 1161Path to the file containing the pattern to use when 1162performing an 1163.Sq overwrite 1164operation. 1165The pattern is repeated as needed to fill each block. 1166.It Fl q 1167Be quiet, do not print any status messages. 1168This option will not disable 1169the questions, however. 1170To disable questions, use the 1171.Fl y 1172argument, below. 1173.It Fl U 1174Perform the sanitize in the unrestricted completion mode. 1175If the operation fails, it can later be exited with the 1176.Sq exitfailure 1177operation. 1178.It Fl r 1179Run in 1180.Dq report only 1181mode. 1182This will report status on a sanitize that is already running on the drive. 1183.It Fl w 1184Issue a non-immediate sanitize command. 1185By default, 1186.Nm 1187issues the SANITIZE command with the immediate bit set. 1188This tells the 1189device to immediately return the sanitize command, before 1190the sanitize has actually completed. 1191Then, 1192.Nm 1193gathers 1194.Tn SCSI 1195sense information from the device every second to determine how far along 1196in the sanitize process it is. 1197If the 1198.Fl w 1199argument is specified, 1200.Nm 1201will issue a non-immediate sanitize command, and will be unable to print any 1202information to let the user know what percentage of the disk has been 1203sanitized. 1204.It Fl y 1205Do not ask any questions. 1206By default, 1207.Nm 1208will ask the user if he/she really wants to sanitize the disk in question, 1209and also if the default sanitize command timeout is acceptable. 1210The user 1211will not be asked about the timeout if a timeout is specified on the 1212command line. 1213.El 1214.It Ic idle 1215Put ATA device into IDLE state. Optional parameter 1216.Pq Fl t 1217specifies automatic standby timer value in seconds. Value 0 disables timer. 1218.It Ic standby 1219Put ATA device into STANDBY state. Optional parameter 1220.Pq Fl t 1221specifies automatic standby timer value in seconds. Value 0 disables timer. 1222.It Ic sleep 1223Put ATA device into SLEEP state. Note that the only way get device out of 1224this state may be reset. 1225.It Ic security 1226Update or report security settings, using an ATA identify command (0xec). 1227By default, 1228.Nm 1229will print out the security support and associated settings of the device. 1230The 1231.Ic security 1232command takes several arguments: 1233.Bl -tag -width 0n 1234.It Fl d Ar pwd 1235.Pp 1236Disable device security using the given password for the selected user according 1237to the devices configured security level. 1238.It Fl e Ar pwd 1239.Pp 1240Erase the device using the given password for the selected user. 1241.Pp 1242.Em WARNING! WARNING! WARNING! 1243.Pp 1244Issuing a secure erase will 1245.Em ERASE ALL 1246user data on the device and may take several hours to complete. 1247.Pp 1248When this command is used against an SSD drive all its cells will be marked as 1249empty, restoring it to factory default write performance. For SSD's this action 1250usually takes just a few seconds. 1251.It Fl f 1252.Pp 1253Freeze the security configuration of the specified device. 1254.Pp 1255After command completion any other commands that update the device lock mode 1256shall be command aborted. 1257Frozen mode is disabled by power-off or hardware reset. 1258.It Fl h Ar pwd 1259.Pp 1260Enhanced erase the device using the given password for the selected user. 1261.Pp 1262.Em WARNING! WARNING! WARNING! 1263.Pp 1264Issuing an enhanced secure erase will 1265.Em ERASE ALL 1266user data on the device and may take several hours to complete. 1267.Pp 1268An enhanced erase writes predetermined data patterns to all user data areas, 1269all previously written user data shall be overwritten, including sectors that 1270are no longer in use due to reallocation. 1271.It Fl k Ar pwd 1272.Pp 1273Unlock the device using the given password for the selected user according to 1274the devices configured security level. 1275.It Fl l Ar high|maximum 1276.Pp 1277Specifies which security level to set when issuing a 1278.Fl s Ar pwd 1279command. The security level determines device behavior when the master 1280password is used to unlock the device. When the security level is set to high 1281the device requires the unlock command and the master password to unlock. 1282When the security level is set to maximum the device requires a secure erase 1283with the master password to unlock. 1284.Pp 1285This option must be used in conjunction with one of the security action commands. 1286.Pp 1287Defaults to 1288.Em high 1289.It Fl q 1290.Pp 1291Be quiet, do not print any status messages. 1292This option will not disable the questions, however. 1293To disable questions, use the 1294.Fl y 1295argument, below. 1296.It Fl s Ar pwd 1297.Pp 1298Password the device (enable security) using the given password for the selected 1299user. This option can be combined with other options such as 1300.Fl e Em pwd 1301.Pp 1302A master password may be set in a addition to the user password. The purpose of 1303the master password is to allow an administrator to establish a password that 1304is kept secret from the user, and which may be used to unlock the device if the 1305user password is lost. 1306.Pp 1307.Em Note: 1308Setting the master password does not enable device security. 1309.Pp 1310If the master password is set and the drive supports a Master Revision Code 1311feature the Master Password Revision Code will be decremented. 1312.It Fl T Ar timeout 1313.Pp 1314Overrides the default timeout, specified in seconds, used for both 1315.Fl e 1316and 1317.Fl h 1318this is useful if your system has problems processing long timeouts correctly. 1319.Pp 1320Usually the timeout is calculated from the information stored on the drive if 1321present, otherwise it defaults to 2 hours. 1322.It Fl U Ar user|master 1323.Pp 1324Specifies which user to set / use for the running action command, valid values 1325are user or master and defaults to master if not set. 1326.Pp 1327This option must be used in conjunction with one of the security action commands. 1328.Pp 1329Defaults to 1330.Em master 1331.It Fl y 1332.Pp 1333Confirm yes to dangerous options such as 1334.Fl e 1335without prompting for confirmation. 1336.Pp 1337.El 1338If the password specified for any action commands doesn't match the configured 1339password for the specified user the command will fail. 1340.Pp 1341The password in all cases is limited to 32 characters, longer passwords will 1342fail. 1343.It Ic hpa 1344Update or report Host Protected Area details. 1345By default 1346.Nm 1347will print out the HPA support and associated settings of the device. 1348The 1349.Ic hpa 1350command takes several optional arguments: 1351.Bl -tag -width 0n 1352.It Fl f 1353.Pp 1354Freeze the HPA configuration of the specified device. 1355.Pp 1356After command completion any other commands that update the HPA configuration 1357shall be command aborted. 1358Frozen mode is disabled by power-off or hardware reset. 1359.It Fl l 1360.Pp 1361Lock the HPA configuration of the device until a successful call to unlock or 1362the next power-on reset occurs. 1363.It Fl P 1364.Pp 1365Make the HPA max sectors persist across power-on reset or a hardware reset. 1366This must be used in combination with 1367.Fl s Ar max_sectors 1368. 1369.It Fl p Ar pwd 1370.Pp 1371Set the HPA configuration password required for unlock calls. 1372.It Fl q 1373.Pp 1374Be quiet, do not print any status messages. 1375This option will not disable the questions. 1376To disable questions, use the 1377.Fl y 1378argument, below. 1379.It Fl s Ar max_sectors 1380.Pp 1381Configures the maximum user accessible sectors of the device. 1382This will change the number of sectors the device reports. 1383.Pp 1384.Em WARNING! WARNING! WARNING! 1385.Pp 1386Changing the max sectors of a device using this option will make the data on 1387the device beyond the specified value inaccessible. 1388.Pp 1389Only one successful 1390.Fl s Ar max_sectors 1391call can be made without a power-on reset or a hardware reset of the device. 1392.It Fl U Ar pwd 1393.Pp 1394Unlock the HPA configuration of the specified device using the given password. 1395If the password specified doesn't match the password configured via 1396.Fl p Ar pwd 1397the command will fail. 1398.Pp 1399After 5 failed unlock calls, due to password miss-match, the device will refuse 1400additional unlock calls until after a power-on reset. 1401.It Fl y 1402.Pp 1403Confirm yes to dangerous options such as 1404.Fl e 1405without prompting for confirmation 1406.Pp 1407.El 1408The password for all HPA commands is limited to 32 characters, longer passwords 1409will fail. 1410.It Ic fwdownload 1411Program firmware of the named SCSI device using the image file provided. 1412.Pp 1413Current list of supported vendors: 1414.Bl -bullet -offset indent -compact 1415.It 1416HITACHI 1417.It 1418HP 1419.It 1420IBM 1421.It 1422PLEXTOR 1423.It 1424QUANTUM 1425.It 1426SAMSUNG 1427.It 1428SEAGATE 1429.El 1430.Pp 1431.Em WARNING! WARNING! WARNING! 1432.Pp 1433Little testing has been done to make sure that different device models from 1434each vendor work correctly with the fwdownload command. 1435A vendor name appearing in the supported list means only that firmware of at 1436least one device type from that vendor has successfully been programmed with 1437the fwdownload command. 1438Extra caution should be taken when using this command since there is no 1439guarantee it will not break a device from the listed vendors. 1440Ensure that you have a recent backup of the data on the device before 1441performing a firmware update. 1442.Bl -tag -width 11n 1443.It Fl f Ar fw_image 1444Path to the firmware image file to be downloaded to the specified device. 1445.It Fl y 1446Do not ask for confirmation. 1447.It Fl s 1448Run in simulation mode. 1449Packet sizes that will be sent are shown, but no actual packet is sent to the 1450device. 1451No confirmation is asked in simulation mode. 1452.It Fl v 1453Besides showing sense information in case of a failure, the verbose option 1454causes 1455.Nm 1456to output a line for every firmware segment that is sent to the device by the 1457fwdownload command 1458-- the same as the ones shown in simulation mode. 1459.El 1460.It Ic help 1461Print out verbose usage information. 1462.El 1463.Sh ENVIRONMENT 1464The 1465.Ev SCSI_MODES 1466variable allows the user to specify an alternate mode page format file. 1467.Pp 1468The 1469.Ev EDITOR 1470variable determines which text editor 1471.Nm 1472starts when editing mode pages. 1473.Sh FILES 1474.Bl -tag -width /usr/share/misc/scsi_modes -compact 1475.It Pa /usr/share/misc/scsi_modes 1476is the SCSI mode format database. 1477.It Pa /dev/xpt0 1478is the transport layer device. 1479.It Pa /dev/pass* 1480are the CAM application passthrough devices. 1481.El 1482.Sh EXAMPLES 1483.Dl camcontrol eject -n cd -u 1 -v 1484.Pp 1485Eject the CD from cd1, and print SCSI sense information if the command 1486fails. 1487.Pp 1488.Dl camcontrol tur da0 1489.Pp 1490Send the SCSI test unit ready command to da0. 1491The 1492.Nm 1493utility will report whether the disk is ready, but will not display sense 1494information if the command fails since the 1495.Fl v 1496switch was not specified. 1497.Bd -literal -offset indent 1498camcontrol tur da1 -E -C 4 -t 50 -v 1499.Ed 1500.Pp 1501Send a test unit ready command to da1. 1502Enable kernel error recovery. 1503Specify a retry count of 4, and a timeout of 50 seconds. 1504Enable sense 1505printing (with the 1506.Fl v 1507flag) if the command fails. 1508Since error recovery is turned on, the 1509disk will be spun up if it is not currently spinning. 1510The 1511.Nm 1512utility will report whether the disk is ready. 1513.Bd -literal -offset indent 1514camcontrol cmd -n cd -u 1 -v -c "3C 00 00 00 00 00 00 00 0e 00" \e 1515 -i 0xe "s1 i3 i1 i1 i1 i1 i1 i1 i1 i1 i1 i1" 1516.Ed 1517.Pp 1518Issue a READ BUFFER command (0x3C) to cd1. 1519Display the buffer size of cd1, 1520and display the first 10 bytes from the cache on cd1. 1521Display SCSI sense 1522information if the command fails. 1523.Bd -literal -offset indent 1524camcontrol cmd -n cd -u 1 -v -c "3B 00 00 00 00 00 00 00 0e 00" \e 1525 -o 14 "00 00 00 00 1 2 3 4 5 6 v v v v" 7 8 9 8 1526.Ed 1527.Pp 1528Issue a WRITE BUFFER (0x3B) command to cd1. 1529Write out 10 bytes of data, 1530not including the (reserved) 4 byte header. 1531Print out sense information if 1532the command fails. 1533Be very careful with this command, improper use may 1534cause data corruption. 1535.Bd -literal -offset indent 1536camcontrol modepage da3 -m 1 -e -P 3 1537.Ed 1538.Pp 1539Edit mode page 1 (the Read-Write Error Recover page) for da3, and save the 1540settings on the drive. 1541Mode page 1 contains a disk drive's auto read and 1542write reallocation settings, among other things. 1543.Pp 1544.Dl camcontrol rescan all 1545.Pp 1546Rescan all SCSI busses in the system for devices that have been added, 1547removed or changed. 1548.Pp 1549.Dl camcontrol rescan 0 1550.Pp 1551Rescan SCSI bus 0 for devices that have been added, removed or changed. 1552.Pp 1553.Dl camcontrol rescan 0:1:0 1554.Pp 1555Rescan SCSI bus 0, target 1, lun 0 to see if it has been added, removed, or 1556changed. 1557.Pp 1558.Dl camcontrol tags da5 -N 24 1559.Pp 1560Set the number of concurrent transactions for da5 to 24. 1561.Bd -literal -offset indent 1562camcontrol negotiate -n da -u 4 -T disable 1563.Ed 1564.Pp 1565Disable tagged queueing for da4. 1566.Bd -literal -offset indent 1567camcontrol negotiate -n da -u 3 -R 20.000 -O 15 -a 1568.Ed 1569.Pp 1570Negotiate a sync rate of 20MHz and an offset of 15 with da3. 1571Then send a 1572Test Unit Ready command to make the settings take effect. 1573.Bd -literal -offset indent 1574camcontrol smpcmd ses0 -v -r 4 "40 0 00 0" -R 1020 "s9 i1" 1575.Ed 1576.Pp 1577Send the SMP REPORT GENERAL command to ses0, and display the number of PHYs 1578it contains. 1579Display SMP errors if the command fails. 1580.Bd -literal -offset indent 1581camcontrol security ada0 1582.Ed 1583.Pp 1584Report security support and settings for ada0 1585.Bd -literal -offset indent 1586camcontrol security ada0 -u user -s MyPass 1587.Ed 1588.Pp 1589Enable security on device ada0 with the password MyPass 1590.Bd -literal -offset indent 1591camcontrol security ada0 -u user -e MyPass 1592.Ed 1593.Pp 1594Secure erase ada0 which has had security enabled with user password MyPass 1595.Pp 1596.Em WARNING! WARNING! WARNING! 1597.Pp 1598This will 1599.Em ERASE ALL 1600data from the device, so backup your data before using! 1601.Pp 1602This command can be used used against an SSD drive to restoring it to 1603factory default write performance. 1604.Bd -literal -offset indent 1605camcontrol hpa ada0 1606.Ed 1607.Pp 1608Report HPA support and settings for ada0 (also reported via 1609identify). 1610.Bd -literal -offset indent 1611camcontrol hpa ada0 -s 10240 1612.Ed 1613.Pp 1614Enables HPA on ada0 setting the maximum reported sectors to 10240. 1615.Pp 1616.Em WARNING! WARNING! WARNING! 1617.Pp 1618This will 1619.Em PREVENT ACCESS 1620to all data on the device beyond this limit until HPA is disabled by setting 1621HPA to native max sectors of the device, which can only be done after a 1622power-on or hardware reset! 1623.Pp 1624.Em DO NOT 1625use this on a device which has an active filesystem! 1626.Sh SEE ALSO 1627.Xr cam 3 , 1628.Xr cam_cdbparse 3 , 1629.Xr cam 4 , 1630.Xr pass 4 , 1631.Xr xpt 4 1632.Sh HISTORY 1633The 1634.Nm 1635utility first appeared in 1636.Fx 3.0 . 1637.Pp 1638The mode page editing code and arbitrary SCSI command code are based upon 1639code in the old 1640.Xr scsi 8 1641utility and 1642.Xr scsi 3 1643library, written by Julian Elischer and Peter Dufault. 1644The 1645.Xr scsi 8 1646program first appeared in 1647.Bx 386 0.1.2.4 , 1648and first appeared in 1649.Fx 1650in 1651.Fx 2.0.5 . 1652.Sh AUTHORS 1653.An Kenneth Merry Aq ken@FreeBSD.org 1654.Sh BUGS 1655The code that parses the generic command line arguments does not know that 1656some of the subcommands take multiple arguments. 1657So if, for instance, you 1658tried something like this: 1659.Bd -literal -offset indent 1660camcontrol cmd -n da -u 1 -c "00 00 00 00 00 v" 0x00 -v 1661.Ed 1662.Pp 1663The sense information from the test unit ready command would not get 1664printed out, since the first 1665.Xr getopt 3 1666call in 1667.Nm 1668bails out when it sees the second argument to 1669.Fl c 1670(0x00), 1671above. 1672Fixing this behavior would take some gross code, or changes to the 1673.Xr getopt 3 1674interface. 1675The best way to circumvent this problem is to always make sure 1676to specify generic 1677.Nm 1678arguments before any command-specific arguments. 1679