fdrawcmd(1)                 General Commands Manual                fdrawcmd(1)

       fdrawcmd - send raw commands to the floppy disk controller

       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 represen-
       tation  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  fol-
              lowing commands:

                     ./configure; make dvi; dvips fdutils.dvi

       *      To generate a HTML copy,  run:

                     ./configure; make html

              A       pre-made       HTML      can      be      found      at:

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

                     ./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.

          fdrawcmd [drive=drive] [rate=rate]
          [length=length] [repeat=repeat]
          [cylinder=physical-cyl] command [parameters ...] [mode]

       fdrawcmd  is  used  to send raw commands to the floppy disk controller,
       after having selected a given drive. You must have write permission  to
       the selected drive.

       When  writing to a disk, data is read from stdin; when reading, data is
       printed to stdout.  Diagnostic messages, return values  from  the  con-
       troller,  and  the  value of the disk change line after the command are
       printed to stderr.

       All numbers may be given in octal (0211), decimal (137), or hexadecimal

              Selects the drive.  The default is drive 0 (`/dev/fd0').

              Selects  the data transfer rate. Use 0 for high density disks, 1
              for double density 5 1/4 disks (or 2 Mbps tapes, if  the  appro-
              priate  rate  table is selected), and 2 for double density 3 1/2

              Describes the length of the transferred data for commands  read-
              ing  from  and  writing to the disk.  The default is to continue
              until end of file.

              Repeat the command count times.  This only works  correctly  for
              commands which don't do any data transfer.

              Seek to the given cylinder before executing the command

              The  name  of the command to send.  command may be a spelled out
              name (like read or write), or a number representing the commands
              floppy  disk  controller  opcode.  A named command has already a
              mode associated with it, whereas for a number the mode parameter
              should be described using the mode option.

              The  parameters for the command (optional, not all commands need

       mode   Various flags or'ed together describing the  properties  of  the

       The description of the various floppy commands given in this manpage is
       very sketchy. For more details get the 82078 spec sheet  which  can  be
       found at:


       Look for the chapter COMMAND SET/DESCRIPTIONS.  Older FDCs only support
       a subset of the commands described therein, but the syntax for the com-
       mands that do exist is the same.

   Commands available on all FDCs
       read drvsel cyl head sect szcod spt rw-gap szcod2
              Reads  length  bytes of data from the disk.  drvsel is the drive
              selector. Bit 0 and 1 describe the drive, and  bit  2  describes
              the  head.   The  remaining  parameters  give the cylinder, head
              (yes, again), sector, size of the sector (128 * 2 ^ szcod), sec-
              tors  per  track (spt, this is used to switch to the second head
              when the first side has been read), and size of  the  read-write
              gap.  szcod2  should  be 0xff.  read returns ST0 ST1 ST2 and cyl
              head  sect  szcod  of  the  next  sector   to   be   read;   see
              `/usr/include/linux/fdreg.h' .

              N.B. Certain newer floppy disk controllers are buggy, and do not
              correctly recognize the end of transfer when operating  in  vir-
              tual  DMA mode.  For these, you need to set spt to the id of the
              last sector to be read (for example, if you intend to read  sec-
              tors  2, 3, 4, set spt to 4, even if the disk has more sectors),
              and set the no-mt flag.

       write drvsel cyl head sect szcod spt rw-gap szcod2
              Analogous to read.

       sense drvsel
              Returns the third status byte (ST3)

       recalibrate drvsel
              Recalibrates the drive and returns ST0 ST1.

       seek drvsel cyl
              Moves the head to cyl and returns ST0 ST1.

       specify drvsel spec1 spec2
              Specify various parameters to the drive.

       format drvsel szcod sect-per-track fmt-gap fmt-fill
              Formats the cylinder. The new sectors are filled with  fmt-fill.
              The header information comes from the input, which is made up of
              cyl head sect szcod quadruples. The  szcod  parameter  from  the
              command line is used to describe the actual size of the sectors,
              and the szcod from the input is used to write into  the  header.
              However,  the  first  write to these sectors will use the header
              information, and might overwrite the following  sectors  if  the
              szcod parameter from the command line was too small.

       readid drvsel
              reads the first sector header that comes and returns ST0 ST1 ST2
              and cyl head sect szcod of the encountered header.

   Commands available on 82072 and later
              Prints the contents of the FDCs registers, if supported.

   Commands available on 82072A and later
       configure conf1 conf2 conf3
              Configures FIFO operation.

   Commands available on 82077 and later
              Echoes 0x90 if the FDC is more recent than 82072A, and 0x80 oth-

       perpendicular rate
              Sets  the  perpendicular  mode.  Use 0 for normal, 2 for 500kb/s
              perpendicular, and 3 for 1 Mb/s perpendicular.

       seek_out drvsel n
              does a relative seek of n cylinders towards cylinder 0.

       seek_in  drvsel n
              does a relative seek of n cylinders away from cylinder 0.

   Commands available on 82077AA and later
       lock   Locks the FIFO configuration, so that it survives a FDC software

              Unlock the FIFO configuration

   Commands available on 82078
              echoes a byte describing the type of the FDC in the 3 high bits,
              and the stepping in the three low bits.

       powerdown powerconf
              configures automatic power down of the FDC. The  old  configura-
              tion is echoed

       option iso
              enables/disables  ISO  formats.  Odd  values of iso enable these
              formats, whereas even values disable  them.  ISO  formats  don't
              have  index headers, and thus allow to fit slightly more data on
              a disk.

       save   prints out 16 internal registers of the FDC.

       restore r1 r2 r3 ... r16
              restores the 16 internal registers of the FDC.

       format_n_write drvsel szcod sect-per-track fmt-gap fmt-fill
              formats the cylinder and writes initial data to  it.  The  input
              data  is  made  up  of a sequence of headers (4 bytes) and data:
              header1 data1 header2 data2 ... headern datan

       drivespec dspec1 dspec2 ... specn terminator
              chooses  rate  tables  for  various  drives.  Each  dspec   byte
              describes  one drive. Bits 0 and 1 say which drive is described.
              Bits 2 and 3 describe the rate table. Only tables 0  and  2  are
              interesting.  Both  tables only differ in the meaning of rate 1.
              For table 0 (the default) rate 0 is 300 kb/s (used for 5 1/4  DD
              disks),  whereas  for table 1 it is 2 Mbps (used for fast floppy
              tape drives). Bit 4 is the precompensation table select bit.  It
              should be set to 0. Bit 5-7 should be zero as well. The termina-
              tor byte ends the drivespec command. It is either 0xc0 or  0x80.
              If  it is 0xc0, no result phase follows; if it is 0x80, the cur-
              rent data rate  table  configuration  for  the  four  drives  is

       The  mode  option  is  only  needed  when you describe the command as a
       numerical value. Some mode names are also valid command names. They are
       considered  as command name if the command name has not yet been given,
       and as mode name otherwise.

        If you give a command  name  followed  by  explicit  modes,  both  the
       implicit  flags  of  the command name, and the explicit modes are or'ed

        If on the other hand you give a  command  name  preceded  by  explicit
       modes, only the explicit modes are or'ed together.

       read   Read data from disk using DMA.

       write  Write data to the disk.

       intr   Wait for an interrupt.

       spin   wait for the disk to spin up

       disk   Aborts the operation if no disk is in the drive. This only works
              if you also chose a physical cylinder to seek to.

              Don't switch on the drive motor while issuing the command

              Switch off the motor immediately after the command returns.

       fm     Uses the FM version of the read, readid, write and  format  com-

       no-mt  Do  not  use MT (multitrack) mode for the read, readid and write
              commands. This is needed on certain  broken  FDC's  which  don't
              recognize  end  of transfer when running in nodma mode. In order
              to use these safely, set no-mt, and chose the  id  of  the  last
              sector to be read as sect-per-track.

       fdrawcmd  opens  the  device node with the NDELAY flag. This means that
       the driver should not try to autodetect the disk type (it might not  be
       formatted),  and  that  it  should  not  reset  the FDC. If a reset was
       needed, the command simply fails. If that happens,  execute  floppycon-
       trol --resetnow 0 , and try again.

See Also
       Fdutils' texinfo doc

fdutils-5.5                         03Mar05                        fdrawcmd(1)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2022 Hurricane Electric. All Rights Reserved.