Man Linux: Main Page and Category List

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 crossreferences, 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       premade       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  refered  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 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