1.\" 2.\" Copyright (C) 1994, 2001 by Joerg Wunsch, Dresden 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.\" 14.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY 15.\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 17.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE 18.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 20.\" OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 21.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 22.\" LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 24.\" USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 25.\" DAMAGE. 26.\" 27.\" $FreeBSD$ 28.\" 29.Dd December 25, 2001 30.Os 31.Dt FDCONTROL 8 32.Sh NAME 33.Nm fdcontrol 34.Nd display and modify floppy disk parameters 35.Sh SYNOPSIS 36.Nm 37.Op Fl F 38.Op Fl d Ar dbg 39.Op Fl f Ar fmt 40.Op Fl s Ar fmtstr 41.Op Fl v 42.Ar device 43.Sh DESCRIPTION 44The 45.Nm 46utility allows the modification of the run-time behavior of the 47.Xr fdc 4 48driver for the device specified by 49.Ar device . 50.Pp 51Commands are implemented to query the current device density settings 52as well as the underlying device hardware as registered with the 53driver, to manipulate debugging levels, and to adjust the device 54density settings. 55All the operations that manipulate the kernel 56settings are restricted to the superuser (by the device driver), while 57all inquiry requests only require read access to 58.Ar device . 59.Pp 60The 61.Ar device 62argument should always be given as a full path name, e.g.\& 63.Pa /dev/fd0 . 64.Ss Inquiry Commands 65Running the 66.Nm 67utility without any of the optional flags will report the drive type 68that is registered with the device driver. 69In the shortest form, a single string describing the drive type will 70be returned. 71Possible values are: 72.Dq Li 360K , 73.Dq Li 1.2M , 74.Dq Li 720K , 75.Dq Li 1.44M , 76.Dq Li 2.88M , 77or 78.Dq Li unknown . 79This information is primarily intended to be easily parsable by 80scripts. 81.Pp 82In order to add some descriptive text that makes the output better 83human readable, the flag 84.Fl v 85can be added. 86.Pp 87Specifying flag 88.Fl F 89will report the device's density settings in a form that is suitable 90as input to the 91.Fl s Ar fmtstr 92option (see below). 93Again, together with 94.Fl v , 95some more text will be returned, including the total capacity of the 96density settings in kilobytes. 97.Ss Debug Control 98If the 99.Xr fdc 4 100driver was configured with the 101.Dv FDC_DEBUG 102option, by default, device debugging information is still disabled 103since it could produce huge amounts of kernel messages. 104It needs to 105be turned on using 106.Nm 107together with 108.Dq Fl d Li 1 , 109usually immediately before starting an operation on the respective 110device the debug information is wanted for, and later turned off again 111using 112.Dq Fl d Li 0 . 113Note that debugging levels are a driver's global option that will 114affect any drives and controllers using the 115.Xr fdc 4 116driver, regardless which 117.Ar device 118was specified on the 119.Nm 120command line. 121.Ss Density Control 122The 123.Xr fdc 4 124control utilities support two different options how to specify device 125density settings. 126The first form uses 127.Fl f Ar fmt 128to specify the format of the medium in kilobytes. 129Depending on the 130underlying drive type, the value is compared against a table of known 131commonly used device density settings for that drive, and if a match 132is found, those settings will be used. 133Currently, the following 134values for the respective drive types are acceptable: 135.Bl -item 136.It 1372.88M and 1.44M drives: 138.Bd -ragged -offset indent -compact 139.TS 140lB lB lB lB lB lB lB 141r l l l l l l. 142KB sectrac secsize ncyls speed heads flags 1431721 21 2 (512) 82 500 2 MFM 1441476 18 2 (512) 82 500 2 MFM 1451440 18 2 (512) 80 500 2 MFM 1461200 15 2 (512) 80 500 2 MFM 147820 10 2 (512) 82 250 2 MFM 148800 10 2 (512) 80 250 2 MFM 149720 9 2 (512) 80 250 2 MFM 150.TE 151.Ed 152.It 1531.2M drives: 154.Bd -ragged -offset indent -compact 155.TS 156lB lB lB lB lB lB lB 157r l l l l l l. 158KB sectrac secsize ncyls speed heads flags 1591200 15 2 (512) 80 500 2 MFM 1601232 8 3 (1024) 77 500 2 MFM 1611476 18 2 (512) 82 500 2 MFM 1621440 18 2 (512) 80 500 2 MFM 1631200 15 2 (512) 80 500 2 MFM 164820 10 2 (512) 82 300 2 MFM 165800 10 2 (512) 80 300 2 MFM 166720 9 2 (512) 80 300 2 MFM 167360 9 2 (512) 40 300 2 MFM,2STEP 168640 8 2 (512) 80 300 2 MFM 169.TE 170.Ed 171.It 172720K drives: 173.Bd -ragged -offset indent -compact 174.TS 175lB lB lB lB lB lB lB 176r l l l l l l. 177KB sectrac secsize ncyls speed heads flags 178720 9 2 (512) 80 250 2 MFM 179.TE 180.Ed 181.It 182360K drives: 183.Bd -ragged -offset indent -compact 184.TS 185lB lB lB lB lB lB lB 186r l l l l l l. 187KB sectrac secsize ncyls speed heads flags 188360 9 2 (512) 40 250 2 MFM 189.TE 190.Ed 191.El 192.Pp 193The second form to specify a device density uses 194.Fl s Ar fmtstr 195to explicitly specify each parameter in detail. 196The argument 197.Ar fmtstr 198is a comma-separated list of values of the form: 199.Pp 200.Sm off 201.Ar sectrac , secsize , datalen , gap , ncyls , speed , 202.Ar heads , f_gap , f_inter , offs2 , flags 203.Sm on 204.Pp 205The meaning of the parameters is: 206.Bl -tag -width ".Ar secsize" 207.It Ar sectrac 208The number of sectors per track. 209.It Ar secsize 210The sector size code, 0 = 128 bytes (or less), 1 = 256 bytes, 2 = 512 211bytes, 3 = 1024 bytes. 212.It Ar datalen 213The actual sector size if the size code is 0, or the (ignored) value 2140xFF for larger size codes. 215.It Ar gap 216The length of the gap 3 parameter for read/write operations. 217.It Ar ncyls 218The number of cylinders. 219.It Ar speed 220The transfer speed in kilobytes per second. 221Can be 250, 300, 500, or 2221000, but each drive type only supports a subset of these values. 223.It Ar heads 224The number of heads. 225.It Ar f_gap 226The length of the gap 3 when formatting media. 227.It Ar f_inter 228The sector interleave to be applied when formatting. 2290 means no 230interleave, 1 means 1:1 etc. 231.It Ar offs2 232The offset of the sector numbers on side 2 (i.e. head number 1). 233Normally, sector numbering on both sides starts with 1. 234.It Ar flags 235A list from one of the following flag values: 236.Pp 237.Bl -tag -width ".Cm +perpend" -compact 238.It Cm +mfm 239Use MFM encoding. 240.It Cm -mfm 241Use FM (single-density) encoding. 242.It Cm +2step 243Use 2 steps per each cylinder (for accessing 40-cylinder media in 24480-cylinder drives). 245.It Cm -2step 246Do not use 2 steps per cylinder, i.e. access each physical cylinder 247of the drive. 248.It Cm +perpend 249Use perpendicular recording (for 2.88 MB media, currently not 250supported). 251.It Cm -perpend 252Use longitudinal recording. 253.El 254.El 255.Pp 256For any missing parameter, the current value will be used, so only 257actual changes need to be specified. 258Thus to turn off a flag bit 259(like 260.Cm +mfm 261which is the default for all drive types), the form with a leading 262minus sign must explicitly be used. 263.Sh EXAMPLES 264A simple inquiry about the drive type: 265.Bd -literal 266$ fdcontrol /dev/fd0 2671.44M 268.Ed 269.Pp 270Same as above, but with verbose output. 271Note that the result is about 272the 273.Em "drive type" , 274as opposed to a 275.Em "device density" , 276so it is independent from the actual subdevice being used for 277.Ar device . 278.Bd -literal 279$ fdcontrol -v /dev/fd0 280/dev/fd0: 1.44M drive (3.5" high-density) 281.\" " <- this one is for Emacs :) 282.Pp 283Inquiry about the density settings 284.Bd -literal 285$ fdcontrol -F /dev/fd0 28618,512,0xff,0x1b,80,500,2,0x6c,1,0,+mfm 287.Ed 288.Pp 289The verbose flag makes this human readable 290.Bd -literal 291/dev/fd0: 1440 KB media type 292 Format: 18,512,0xff,0x1b,80,500,2,0x6c,1,0,+mfm 293 Sector size: 512 294 Sectors/track: 18 295 Heads/cylinder: 2 296 Cylinders/disk: 80 297 Transfer rate: 500 kbps 298 Sector gap: 27 299 Format gap: 108 300 Interleave: 1 301 Side offset: 0 302 Flags <MFM> 303.Ed 304.Pp 305As indicated, trailing commas in the parameter list may be omitted. 306.Pp 307In order to access archaic 160 KB single-density (FM encoded) 5.25 308media in a modern 1.2M drive, something like the following definition 309would be needed. 310(Note that not all controller hardware is actually 311capable of handling FM encoding at all.) 312.Bd -literal 313# fdcontrol -s 16,128,0x80,0x2,40,300,,0x10,,,-mfm,+2step /dev/fd1.1 314.Ed 315.Pp 316It is still possible to hook up 8" drives to most modern floppy 317controllers, given the right cable magic. 318(On PC hardware, tell the bios that it is a 5.25" drive) 319The classical 128/26/2/77 format can be read with this entry 320.Bd -literal 321fdcontrol -s 26,128,0x80,0x2,77,500,2,0x10,,,-mfm /dev/fd0 322.Ed 323Sh SEE ALSO 324.Xr fdc 4 325.Sh HISTORY 326The 327.Nm 328utility appeared in 329.Fx 2.0 , 330and was vastly overhauled in 331.Fx 5.0 . 332.Sh AUTHORS 333The program and this man page was contributed by 334.An J\(:org Wunsch , 335Dresden. 336