Provided by: fdutils_5.6-4_amd64 bug

Name

       floppycontrol - floppy driver configuration utility

Note

       This  manpage  has  been  automatically  generated  from  fdutils's texinfo documentation.  However, this
       process is only approximative, and some items, such as cross-references, footnotes and indices  are  lost
       in  this  translation  process.   Indeed,  these  items have no appropriate representation in the manpage
       format.  Moreover, only the items specific  to  each  command  have  been  translated,  and  the  general
       information about fdutils has been dropped in the manpage version.  Thus I strongly advise you to use the
       original texinfo doc.

       *      To generate a printable copy from the texinfo doc, run the following commands:

                     ./configure; make dvi; dvips fdutils.dvi

       *      To generate a HTML copy,  run:

                     ./configure; make html

              A pre-made HTML can be found at: `http://www.tux.org/pub/knaff/fdutils'

       *      To generate an info copy (browsable using emacs' info mode), run:

                     ./configure; make info

       The  texinfo doc looks most pretty when printed or as HTML.  Indeed, in the info version certain examples
       are difficult to read due to the quoting conventions used in info.

Description

          floppycontrol [-p] [--pollstate] [--printfdstate]
          [-a operation-abort-threshold] [-c read-track-threshold]
          [-r recalibrate-threshold] [-R reset-threshold]
          [-e reporting-threshold] [-f] [-x] [-d drive][-F] [-T]
          [-reset condition] [--debug] [--nodebug] [--messages]
          [--nomessages] [--broken_dcl] [--working_dcl] [--inverted_dcl]
          [--no_inverted_dcl] [--silent_dcl_clear] [--noisy_dcl_clear]
          [-ccmos-type] [-hlt hlt] [-hut hut] [-srt srt] [-o spindown]
          [-u spinup] [-s select-delay] [-rps rotations-per-second]
          [-O spindown-offset] [-track max-tracks] [-timeout seconds]
          [-C check-interval] [-n native-format]
          [-autodetect autodetection-sequence] [-P] [--clrwerror]
          [--printwerror] [-h]

       The floppycontrol program is used to configure the floppy driver.

General Options

       -h
       --help Print a help screen.

       -d drive
       --drive  drive
              Selects the drive to configure. The default is drive 0 (`/dev/fd0').

One time actions

       The following floppycontrol options don't set a configuration parameter, but perform a  one-time  action.
       They are available to anybody who has write access to the drive

       -f
       --flush
              Flushes (throws away) the dirty data buffers associated with this drive.

       -x
       --eject
              Ejects  the  disk  out  of the drive (Sparc). The dirty buffers are first committed to disk before
              ejecting it. Fails if the disk is mounted.

       --reset  condition
              Resets the FDC under condition . Condition may be one of the following:

              0      resets the FDC only if a reset is needed anyways,

              1      resets the FDC also if a raw command has been performed since the last reset, and

              2      resets the FDC unconditionally.

              This command may be needed after some failed raw commands (see section  fdrawcmd).

       -F
       --formatend
              Issues an end format ioctl. This might be needed after exiting  a  fdformat  in  an  unclean  way.
              superformat is not subject to this.

Printing current settings

       -T
       --type Print  out  the  drive name of a floppy device. This is used by the MAKEFLOPPIES script. The drive
              name is a letter (describing the drive type) followed by the capacity of the format in bytes.  The
              letter  is E for 3.5 ED drives, H for 3.5 HD drives, D for 3.5 DD drives, h for 5.25 HD drives and
              d for 5.25 DD drives. The drive type letter corresponds to the oldest drive  type  supporting  the
              format of this device node (not necessarily the type of the drive referred by this node.)  For the
              generic  format  nodes (/dev/fd0 et al.)  the name of "native format" of the drive is printed, and
              for the default formats, if a generic format has been redefined, its name becomes (null).

       -p
       --print
              Prints out the configuration of the drive. The names of the various fields are  the  same  as  the
              names of the option to set them, see below.

       -P
       --printstate
              Prints  out the cached internal state of the driver. The first line lists various attributes about
              the disk:

              drive present
              disk present
              disk writable
                     These are only updated when the drive is accessed.

              spinup
                     is the time when the motor became switched on for the last time.

              select
                     is the time when the drive became selected for the last time

              first_read
                     is the time when the first read request after the last spin up completed.

              probed_fmt
                     is the index of the autodetected format in the autodetection sequence for this drive.

              cylinder
                     is the cylinder where the drive head currently sits.  If this number is  negative,  it  has
                     the following meaning:

                     *      -1  means that the driver doesn't know, but the controller does (a seek command must
                            be issued).

                     *      -2 means that the controller doesn't know either, but is sure that it not beyond the
                            80th track.  The drive needs a recalibration.

                     *      -3 means that the head may be beyond the 80th track.  The drive needs two successive
                            recalibrations, because at each recalibration, the controller only  issues  80  move
                            head commands per recalibration.

              maxblock
                     is the highest block number that has been read.

              maxcylinder
                     is  a  boolean  which  is set when a sector that is not on cylinder 0/head 0 has been read.
                     These are used for smart invalidation of the buffer cache on geometry change.   The  buffer
                     cache of the drive is only invalidated on geometry change when this change actually implies
                     that  a  block that has already been read changes position. This optimization is useful for
                     mtools which changes the geometry after reading the boot sector.

              generation
                     is roughly the number of disk changes noticed since boot. Disk changes are noticed  if  the
                     disk  is  actually  changed,  or if a flush command is issued and for both cases if any I/O
                     to/from the disk occurs. (i.e. if you insert several disks, but don't do any I/O  to  them,
                     the generation number stays the same.)

              refs   is  number  of  open  file  descriptors  for this drive. It is always at least one, because
                     floppycontrol's file descriptor is counted too.

              device
                     is format type (as derived from the minor device number) which is currently being used.

              last_checked
                     is date (in jiffies) when the drive was last checked for a disk  change,  and  a  disk  was
                     actually in the drive.

       --pollstate
              Polls the drive and then prints out the internal state of the driver.(--Printstate only prints out
              the cached information without actually polling the drive for a disk change.)

       --printfdcstate
              Prints out the state of the controller where the target drive is attached to.

              spec1
              spec2  are the current values of those registers.

              rate   is current data transfer rate

              rawcmd
                     is  true  if  a  raw command has been executed since the last reset. If this is the case, a
                     reset will be triggered when a drive on the same FDC is next opened.

              dor    is the value of the digital output register. The 4 high bits  are  a  bit  mask  describing
                     which  drives  are  spinning,  the 2 low bits describe the selected drive, bit 2 is used to
                     reset the FDC, and bit 3 describes whether this FDC has hold of the interrupt and the  DMA.
                     If you have two FDCs, bit 3 is only set on one of them.

              version
                     is  the  version  of  the  FDC.  See `linux/include/linux/fdreg.h' for a listing of the FDC
                     version numbers.

              reset  is true if a reset needs to be issued to the FDC before processing the next request.

              need_configure
                     is true if this FDC needs configuration by the FD_CONFIGURE command.

              has_fifo
                     is set if the FDC understands the FD_CONFIGURE command.

              perp_mode
                     describes the perpendicular mode of  this  FDC.  0  is  non-perpendicular  mode,  2  is  HD
                     perpendicular mode, 3 is ED perpendicular mode, and 1 is unknown.

              address
                     is the address of the first I/O port of the FDC.  Normally, this is 0x3f0 for the first FDC
                     and 0x370 for the second.

Drive type configuration and autodetection

       The following options handle the different available drive types, such as double density vs. high density
       vs.  extra  density drives, and 5 1/4 drives vs 3 1/2 drives.  Usually the drive type is stored in a non-
       volatile memory, called CMOS, under the form of an integer ranging from 1 to 6.

       Different drive types are able to  handle  and  autodetect  different  formats  (different  autodetection
       lists).  They  also have different "native format name". The native format is the "usual" format with the
       highest capacity supported by the drive. (For example 720KB on a double density 3 1/2 drive, and 1.2MB on
       a high density 5 1/4 drive.)

       These settings are only changeable by the super user.

       -c cmos-type
       --cmos  cmos-type
              Set the virtual CMOS type of the floppy drive. This is useful if

              *      the physical CMOS type is wrong (this may happen  with  BIOSes  which  use  a  non-standard
                     mapping),

              *      you have more than two drives (the physical CMOS may only describe up to two drives).

              *      you have a BIOS that allows swapping drives A: and B: for DOS.

       Right  now,  this  CMOS  parameter  is  not  used  by  the  kernel,  except  for feeding it back to other
       applications (for instance superformat, floppymeter or MAKEFLOPPIES).  It is also possible  to  supply  a
       virtual  CMOS  type  with  the  cmos  boot  option (see section  Boottime configuration).  If possible, I
       recommend you use the boot option, rather than floppycontrol, because  the  boot  option  also  sets  any
       parameters  derived  from  the  CMOS  type, such as the autodetection list and the native format, whereas
       floppycontrol does not.

       -A  autodetect-seq
       --autodetect  autodetect-seq
              Set the autodetection sequence (see section  Autodetection) The autodetection sequence is a comma-
              separated list of at most eight format descriptors. Each format  descriptor  is  a  format  number
              optionally  followed  by  the letter t.  For drive 0, the format number is the minor device number
              divided by 4.  The autodetection sequence is used by the driver to find out the format of a  newly
              inserted  disk.  The  formats  are  tried  one  after  the other, and the first matching format is
              retained. To test the format, the driver tries to read the first sector on the first track on  the
              first  head  when  t  is  not given, or the whole first track when t is given. Thus, autodetection
              cannot detect the number of tracks. However, this information is contained  in  the  boot  sector,
              which  is  now  accessible.  The  boot  sector can then be used by mtools to configure the correct
              number of tracks.

              Example:

                 7,4,24t,25

              means to try out the formats whose minor device numbers are 28 (1.44M), 16 (720KB),  96  (1.76MB),
              and 100 (1.92MB), in this order. For the 1.76MB format, try to read the whole track at once.

              Reading the whole track at once allows you to distinguish between two formats which differ only in
              the number of sectors. (The format with the most sectors must be tried first.)  If you use mtools,
              you do not need this feature, as mtools can figure out the number of sectors without any help from
              the floppy driver, by looking at the boot sector.

              Reading the whole track at once may also speed up the first read by 200 milliseconds. However, if,
              on  the  other  hand, you try to read a disk which has less sectors than the format, you lose some
              time.

              I suggest that you put the most often used format in the first place (barring other  constraints),
              as each format that is tried out takes 400 milliseconds.

       -n native-format
       --native_format  native-format
              Set  the  native format of this drive. The native format of a drive is the highest standard format
              available for this drive. (Example: For a 5 1/4 HD drive it is the usual 1200K  format.)  This  is
              format  is used to make up the format name for the generic device (which is the name of the native
              format). This drive name is read back from the kernel by the MAKEFLOPPIES script which uses it  to
              decide which device nodes to create.

Configuration of the disk change line

       --broken_dcl
              Assumes  that  the  disk  change  line  of  the drive is broken.  If this is set, disk changes are
              assumed to happen whenever the device node is first opened.  The  physical  disk  change  line  is
              ignored.

              This  option should be used if disk changes are either not detected at all, or if disk changes are
              detected when the disk was actually not changed.  If this option fixes the problem, I'd  recommend
              that  you  try  to  trace  the root cause of the problem.  Indeed, this options results in reduced
              performance due to spurious cache flushes.

              The following hardware problems may lead to a bad disk change line:

              *      If the floppy cable is not inserted straight, or if it is kinked, the disk change  line  is
                     likely  to  suffer,  as it is on the edge of the cable.  Gently press on both connectors of
                     the cable (drive and controller) to insure that all wires make contact.   Visually  inspect
                     the cable, and if it shows obvious traces of damage, get a new one.

              *      On some drives, the locations disk change line may be chosen by jumper. Make sure that your
                     floppy controller and your drive agree on which line is the disk change line.

              *      Some  older  drives (mostly double density 5 1/4 drives) don't have a disk change line.  In
                     this case, you have no choice other than to leave the broken_dcl option on.

       --working_dcl
              Assumes that the disk change line works all right. Switching from broken to working  may  lead  to
              unexpected results after the first disk change.

       --inverted_dcl
              Assumes  that  this  disk drive uses an inverted disk change line. Apparently this is the case for
              IBM thinkpads.

       --no_inverted_dcl
              Assumes that this drive follows the standard convention for the disk change line.

       --noisy_dcl_clear
              Switches off silent disk change line clearing for this drive.

Timing Parameters

       This section describes how to configure drive timings.  To  set  these  parameters,  you  need  superuser
       privileges. All times are in "jiffy" units (10 milliseconds), unless otherwise specified.

       --hlt  hlt
              Set  the head load time (in microseconds) for this floppy drive.  The head load time describes how
              long the floppy controller waits after seeking or changing  heads  before  allowing  access  to  a
              track.

       --hut  hut
              Set  the head unload time (in microseconds) for this floppy drive.  The head unload time describes
              how long the floppy controller waits after an access before directing its attention to  the  other
              head, or before seeking.

       --srt  srt
              Set  the  step rate (in microseconds) for this floppy drive.  The step rate describes how long the
              drive head stays on one cylinder when seeking.  Setting this value to low  (too  fast  seeks)  may
              make seeks fail, because the motor doesn't follow fast enough.

       -u spinup-time
       --spinup  spinup-time
              Set  the spinup time of the floppy drive. In order to do read or write to the floppy disk, it must
              spin. It takes a certain time for the motor to reach enough speed to read or write. This parameter
              describes this time. The floppy driver doesn't try to access the drive before the spinup time  has
              elapsed. With modern controllers, you may set this time to zero, as the controller itself enforces
              the right delay.

       -o spindown-time
       --spindown  spindown-time
              Set  the  spindown  time  of  this  floppy  drive.  The motor is not stopped immediately after the
              operation completes, because there might be more operations following. The spindown  time  is  the
              time the driver waits before switching off the motor.

       -O spindown-offset
       --spindown_offset  spindown-offset
              Set  the spindown offset of this floppy drive. This parameter is used to set the position in which
              the disk stops. This is useful to minimize the next access time. (If the first sector is just near
              the head at the very moment at which the disk has reached enough speed, you win  200  milliseconds
              against the most unfavorable situation).

              This  is  done  by clocking the time where the first I/O request completes, and using this time to
              calculate the current position of the disk.

       -s select-delay
       --select_delay  select-delay
              Set the select delay of this floppy drive. This is the delay that the driver waits after selecting
              the drive and issuing the first command to it. For modern controllers/drives, you may set this  to
              zero.

       -C check-interval
       --checkfreq  check-interval
              Set  the  maximal  disk change check interval.  The disk change line is checked whenever a read or
              write to the device is issued, and it has not been checked for more than interval jiffies.

Debugging messages

       This subsection describes how to switch the available debugging messages on and off.

       --debug
              Switch debugging output on. The debugging information includes  timing  information.  This  option
              might  be  useful  to  fine-tune  the  timing  options for your local setups. (But for most normal
              purposes, the default values are good enough.)

       --nodebug
              Switch debugging output off.

       --messages
              Print  informational  messages  after  autodetection,  geometry   parameter   clearing   and   dma
              over/underruns.

       --nomessages
              Don't print informational messages after these events.

Error Handling Options

       The  following options configure the behavior of the floppy driver in case of read/write errors. They may
       be used by any user who has write privileges for the drive. Whenever  the  floppy  driver  encounters  an
       error,  a  retry  counter  is  incremented.  If the value of this counter gets bigger than the thresholds
       described below, the corresponding actions are performed at the next retry. The counter is reset when the
       read or write finally terminates, whether successfully or not.

       -a operation-abort-threshold
       --abort  operation-abort-threshold
              Tell the floppy driver to stop trying  to  read/write  a  sector  after  operation-abort-threshold
              retries, and signal the I/O error to the user.

       -t read-track-threshold
       --readtrack  read-track-threshold
              Tell  the  floppy  driver  to  switch from track-reading mode to sector-at-a-time-mode after read-
              track-threshold retries.

       -r recalibrate-threshold
       --recalibrate  recalibrate-threshold
              Tell the floppy driver to recalibrate the drive after recalibrate-threshold retries.

       -R reset-threshold
       --reset  reset-threshold
              Tell the floppy driver to reset the controller after reset-threshold retries. After  a  controller
              reset, the floppy driver also recalibrates all drives connected to that controller.

       -e error-report-threshold
       --reporting  error-report-threshold
              Tell  the  floppy  driver  to  start  printing  error  messages to the console after error-report-
              threshold retries.

Write error reporting

       Due to the buffer cache, write errors cannot always be reported to the writing user program  as  soon  as
       the write system call returns.  Indeed, the actual writing may take place much later. If a write error is
       encountered,  the floppy driver stores information about it in its per drive write error structure.  This
       write error structure stays until explicitly cleared.  It can for example be queried by a backup  program
       which wants to make sure that the data has been written successfully.

       --clrwerror
              Clears the write error structure.

       --printwerror
              Prints the contents of the write error structure:

              write_errors
                     is a count of how many write errors have occurred since the structure was last cleared.

              badness
                     is  the  maximal number of retries that were needed to complete an operation (reads, writes
                     and formats).

              first_error_sector
                     is where the first (chronologically) write error occurred.

              first_error_generation
                     is the disk change generation in which did the first write error occurred.  The disk change
                     generation is a number which is incremented at each disk change.

              last_error_sector
                     and

              last_error_generation
                     are similar.

Other drive configuration options

       This subsection lists per drive configuration options, which don't fit in any other category.   They  are
       available only to the superuser:

       --tracks  max-tracks
              Set  the  maximal numbers of physical tracks that this drive may handle. If you have a drive which
              is only able to handle 80 tracks (making strange noises when you try to format or read a disk with
              more than 80 tracks), use this option to prevent unprivileged users  of  damaging  your  drive  by
              repeatedly reading disks with more than 80 tracks.

              If  you  trust  your users and your disks, you don't need this. With most drives you don't need to
              worry anyways. See section More cylinders, for details.

       -i sector-interleave
       --interleave sector-interleave
              Set the number of sectors beyond which sector interleaving will be used.  This option will only be
              used by the FDFMTTRK ioctl.  The fdformat command, which is now considered obsolete, uses FDFMTTRK
              ioctl, but superformat does not.

See Also

       Fdutils' texinfo doc

fdutils-5.6                                          27Jan21                                    floppycontrol(1)