(Note that this question is only relevant for well designed clones of the NEC
and Intel chips - lots of broken clones don't support FM mode at all...)
Is it possible from user-space to either:
a) put the linux floppy driver permanently into FM recording mode for all
subsequent requests, or
b) do this temporarily for a per-command basis?
I suspect that b) *might* be possible via a raw command, but the man page for
fdrawcmd doesn't seem to mention being able to change the density bit (bit 6
of the first byte in the command).
Anyone know (without me pulling source apart) whether fdutils supports it -
and even whether the linux floppy driver supports it? (For all I know it may
do something 'broken' like hard-coding the top three flag bits in the first
byte of each command, and ignoring whatever gets sent from user space :)
cheers
Jules
_______________________________________________
fdutils mailing list
fdutils(a)tux.org
http://www.tux.org/mailman/listinfo/fdutils
Hi all,
Hope someone can point me in the right direction. I've been banging at
this thing for months off-and-on and I can't get it to work.
System is running Fedora Core 4, kernel is 2.6.14-1.1644_FC4smp. This is
with fdutils 5.5
I'm trying to format old 8 bit OS9 disks in my 1.44 meg /dev/fd0 drive.
The format is 720k, 80 tracks, 18 sectors, 256 bytes per sector, 2
sides. I'm using 720k media.
I can set the parameters fine:
[root@testbox bin]# setfdprm /dev/fd0 DS DD sect=18 cyl=80 ssize=256
but superformat has never worked for me, no matter what I do I get
output like this:
[root@testbox bin]# ./superformat /dev/fd0
Measuring drive 0's raw capacity
Fatal error while measuring raw capacity
0: 40
1: 01
2: 00
3: 00
4: 00
5: 01
6: 08
if I use regular old fdformat, it works, but it reports the wrong number
of sectors- so maybe it really doesn't work.
Note that I can format the disks in the actual system and transfer
images back and forth just fine. I just can't format them in linux.
thanks
-Mike
_______________________________________________
fdutils mailing list
fdutils(a)tux.org
http://www.tux.org/mailman/listinfo/fdutils
+-----------------------------------------------------------+
| David C Niemi (Reston, VA, USA) niemi at tuxers dot net |
+-----------------------------------------------------------+
---------- Forwarded message ----------
Date: Thu, 17 Nov 2005 21:45:57 +1100
From: John Floyd <jfloyd(a)bigpond.net.au>
To: fdutils-owner(a)tux.org
Subject: USB Floppy Formatting.
Hello,
Is this something that you would like to include in fdutils?
I have been looking for quite a while for a solution to this, and just
recently found this reference
http://www.geocities.jp/tedi_world/format_usbfdd_e.html
I tried it on a usb floppy that I have access to and it only appeared to
format the first track. I have modified the code to specifically
format each track and side. It appears to work but some specific
testing still needs to confirm this. USB formatting seems to operate
under the UFI spec and each drive has an internal list of the floppy
formats that it will accept (limiting I realise). So it will not work
genetically like superformat does. This appears to be a
hardware/firmware implementation limit.
Given the amount of trouble that I have had getting this info - I have
been trying to decide on the best way to advertise this - it seems that
fdutils is the best IMO.
Let me know please.
John.
_______________________________________________
fdutils mailing list
fdutils(a)tux.org
http://www.tux.org/mailman/listinfo/fdutils
Dear fdutils experts,
A friend of mine recently asked me to help him backup some 3.5"
floppies for an ancient musical instrument, the Ensoniq Mirage. I've
found bits and pieces of information on the net and I've successfully
come up with a couple of utilities to dump/restore such floppies, using
fdrawcmd to read/write each track separately.
Unfortunately I also need to low-level format new floppies, because the
device itself can't do it without some long lost formatting software.
That's when I found this list and the recent posts about this very
issue!
To sum up, the floppies are SS DD, 80 tracks. Each track has 5 1KB
sectors + 1 512 byte sector. Tracks and secors are zero-based.
Here's a snippet from the 'dump' utility, which successfully reads a
Mirage floppy:
for ((t=0; t<80; t++)) do
fdrawcmd read 0 $t 0 0 3 6 0x1b 0xff \
length=5120 rate=2 need_seek track=$t
fdrawcmd read 0 $t 0 5 2 6 0x1b 0xff \
length=512 rate=2 need_seek track=$t
done
(Code based on GPL'd work by Jean Zundel.)
I need help with formatting. Here's what I've come up so far, merging
what I already knew with the recent posts on this list:
for ((t=0; t<80; t++)) do
tx=$(printf %02x $t)
echo -ne "\x$tx\x00\x00\x03\x$tx\x00\x99\x00"
echo -ne "\x$tx\x00\x01\x03\x$tx\x00\x99\x00"
echo -ne "\x$tx\x00\x02\x03\x$tx\x00\x99\x00"
echo -ne "\x$tx\x00\x03\x03\x$tx\x00\x99\x00"
echo -ne "\x$tx\x00\x04\x03\x$tx\x00\x99\x00"
echo -ne "\x$tx\x00\x05\x02"
done |
fdrawcmd format 0 2 11 0 0 rate=2
It's not working. I get an error "raw cmd: Input/output error".
Moreover, I'm not sure how to compute the fmt-gap parameter.
Am I missing some crucial information?
Do I need to inizialize the drive somehow?
Toby
--
«Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it.» -Brian W. Kernighan
_______________________________________________
fdutils mailing list
fdutils(a)tux.org
http://www.tux.org/mailman/listinfo/fdutils
6/30/05, Craig A. Vanderborgh <craigv(a)voxware.com> wrote:
> I have already downloaded your installation .exe. Is there any documentation
> available for your Windows fdrawcmd?
That's the stand-alone driver installer, which is a run-once thing.
I've got a header file with some definitions and some documentation
describing how to use it - I'll email you with details once I've
uploaded the updated files (should be within the hour). Reading and
writing Mirage disks should be just as easy under Windows as Linux.
Late last night I had a look at formatting a Mirage-format disk, but
ran into a problem. It seems like the 5.5K disk format is too tight
to be formatted with the PC controller, which only gives control over
the gap3 length. Even with a gap3 of 1 byte, the end of the track was
wrapping round and overwriting the start of the first sector.
About the only standard controller solution I can think of is to write
the disk as 6*1024 sectors, and interrupt the controller sometime
after the final id header is written, but before the final data area
wraps to overwrite the first sector. This is similar to the technique
used to write (short) 8K sectors to 6K tracks, as demonstrated by the
DOS CPDWrite utility.
I've been experimenting with writing short sectors in my own driver,
with some promising results, but it's not ready to be used yet. I'm
not sure if/how the same thing can be achieved under Linux without
some kernel hacking.
Simon Owen
http://simonowen.com/
_______________________________________________
fdutils mailing list
fdutils(a)tux.org
http://www.tux.org/mailman/listinfo/fdutils
Alain Knaff wrote:
> On Thursday 30 June 2005 12:02, Simon Owen wrote:
>
>
>> cat > track_data
>> 00 00 01 03
>> 00 00 99 00
>> 00 00 99 00
>> 00 00 99 00
>> 00 00 02 02
>> 00 00 99 00
>> 00 00 03 01
>> ^D
>>
>> fdrawcmd format 0 2 7 0x2b 0xf6 track=0 < track_data
>>
>
>
> Just pointing out a minor error: fdrawcmd takes binary input, not
> ASCII. So your track data file would need to be filled with binary
> charachers, as follows (where echo is bash's or zsh's builtin echo
> command):
>
>
> echo -ne '\x00\x00\x01\x03' >track_data
> echo -ne '\x00\x00\x99\x00' >>track_data
> echo -ne '\x00\x00\x99\x00' >>track_data
> echo -ne '\x00\x00\x99\x00' >>track_data
> echo -ne '\x00\x00\x02\x02' >>track_data
> echo -ne '\x00\x00\x99\x00' >>track_data
> echo -ne '\x00\x00\x03\x01' >>track_data
>
> fdrawcmd format 0 2 7 0x2b 0xf6 track=0 < track_data
>
>
>
> Regards,
>
> Alain
>
>
>
Hello Again,
First - thanks a lot for Alain and Owen for the replies. Next - an
answer the obvious question of "why". Many Mirages including my own are
now over 20 years old. The floppy disk drive is the thing that always
fails, usually by refusing to format disks. Thus I have decided to
write some public-domain utilities to format, read, and populate Mirage
floppies on Linux.
There is one other thing that I did not mention, which is that the
Mirage appears to need zero-based track and sector numbering.
I have taken your proposed solution, and expressed it in the form of the
following 2 scripts:
#!/bin/bash
echo -ne '\x00\x00\x00\x03' > track_data
echo -ne '\x00\x00\x99\x00' >> track_data
echo -ne '\x00\x00\x01\x03' >> track_data
echo -ne '\x00\x00\x99\x00' >> track_data
echo -ne '\x00\x00\x02\x03' >> track_data
echo -ne '\x00\x00\x99\x00' >> track_data
echo -ne '\x00\x00\x03\x03' >> track_data
echo -ne '\x00\x00\x99\x00' >> track_data
echo -ne '\x00\x00\x04\x03' >> track_data
echo -ne '\x00\x00\x99\x00' >> track_data
echo -ne '\x00\x00\x05\x02' >> track_data
This creates the track data file, with zero-based (I hope) sector
numbering. Then, the following one-liner does the formatting:
#!/bin/sh
for i in `seq 0 79`
do
fdrawcmd format 0 2 11 0x2b 0xf6 track=$i < track_data
done
I believe that this is what you suggested, right Owen? The floppy
appears to format, but the Mirage doesn't like it (I can't save to it).
So the next question is this: What kinds of things can I do using
fdutils to compare this "new" format to a real Mirage format? What
could I look at to begin to determine what is going wrong?
Please advise if possible.
Thanks a lot to all!!
craig vanderborgh
voxware incorporated
> _______________________________________________
> fdutils mailing list
> fdutils(a)tux.org
> http://www.tux.org/mailman/listinfo/fdutils
>
>
>
_______________________________________________
fdutils mailing list
fdutils(a)tux.org
http://www.tux.org/mailman/listinfo/fdutils
Hello,
I just joined the fdutils list, hoping to figure out how to make use of
fdutils to create a command-line utility to format, read, and write 3.5
DD disks for the Ensoniq Mirage on Linux. The Mirage is a strange,
wonderful instrument - it's an 8-bit sampler from the 80's cursed by a
limited amount of storage on a very strangely arranged 3.5" DD disk.
Mirage disks are formatted this quite weird way:
o single-sided
o 80 tracks
o each track contains five type 3 sectors (1024 b) + one type 2 sector
(512 b)
So the real problem here is that the each track contains 2 sector
types. I have successfully *read* these disks, by dumping out each
sector. Here is a bash loop that dumps out the Mirage disk data:
do
fdrawcmd read 0 $i 0 0 3 6 0x1b 0xff \
length=5120 rate=2 need_seek track=$i \
> $REPERTOIRE/d$i.dmp 2> /tmp/mirage-data.err
fdrawcmd read 0 $(($i)) 0 5 2 6 0x1b 0xff \
length=512 rate=2 need_seek track=$i \
> $REPERTOIRE/s$i.dmp 2> /tmp/mirage-small.err
cat /tmp/mirage-data.err | xargs echo
cat /tmp/mirage-small.err| xargs echo
done
So we have gotten to the point where we can use some rustic "fdrawcmd"
invocations in a script to dump out the sample data. I have examined
the results. THIS DOES WORK. So at least we understand the disk format
to the point where we can dump out the wavesamples and other data using
a script.
What I'd like to do now is to be able to read, write, and format these
disks (cp, fdformat, etc.). I understand that the out-of-the-box
fdutils will probably not do what is needed for this disk format that
has 2 sector sizes on each track.
The question is this - what is the best way for me to proceed? Do I
need to write a program that does "fdrawcmd"-type stuff, or can I do
some driver/kernel level work to accomodate the Mirage format, and then
use the standard Linux utilities??
Please advise - I am ready to do some hard work on this and just need
some direction.
Thanks in advance,
craig vanderborgh
_______________________________________________
fdutils mailing list
fdutils(a)tux.org
http://www.tux.org/mailman/listinfo/fdutils
Background:
I am using pxelinux (with memdisk) on a linux server to allow some diskless clients
to boot an MS-DOS boot image from LAN.
This works fine for 1.44MB images.
I also succeeded in creating a 2.88MB (floppy image) with help
of
dd (grab the 1.44MB bootsector)
mtools (mformat a 2.88MB image file including the above bootsector)
copying io.sys, msdos.sys, command.com to the just created and mounted
image
But I need an even larger DOS-Partition via boot from LAN.
With my knowledges I reached the limit of 2.88MB by using mformat:
> mformat -t 80 -s 36 -h 2 -C -B fddbootsector x:
where x: is defined in ~/.mtoolsrc as the resulting image file.
I tried to increase the values in the mformat command, but the
resulting image was no longer bootable.
I tried to use an MBR of an existing HDD and the 8MB DOS-partition,
not bootable.
What am I doing wrong?
Any help possible?
At least, do I have the chance to go up to a 3.84MB floppy image? For
this I did not find any cylinder, sector, head numbers on the web. Do
you know the correct settings for such a floppy? And, very important,
I don't have any high capacity floppy disk drives at hand. I try to create
a floppy image to use it for boot from lan.
Thanks for any help.
__________________________________________________________
Mit WEB.DE FreePhone mit hoechster Qualitaet ab 0 Ct./Min.
weltweit telefonieren! http://freephone.web.de/?mc=021201
_______________________________________________
fdutils mailing list
fdutils(a)tux.org
http://www.tux.org/mailman/listinfo/fdutils
Hi There,
I really hope someone can help me get my 5.25" floppy drive working
(/dev/fd1). I am stuck with "Input/output error" and similar messages.
Here is my system (Redhat Fedora 2):
uname:
------
Linux localhost.localdomain 2.6.5-1.358custom #1 Thu Aug 26 22:25:19 BST
2004 i686 athlon i386 GNU/Linux
dmesg says:
-----------
ide-floppy driver 0.99.newide
.
.
.
inserting floppy driver for 2.6.5-1.358custom
Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M
FDC 0 is a post-1991 82077
floppycontrol
-------------
[root@localhost david]# floppycontrol -pP --printfdcstate
abort= 3
readtrack= 1
recalibrate= 0
reset= 2
reporting= 2
debug
cmos= 4
hlt= 16
hut= 16
srt= 4000
spindown= 3000
spinup= 400
select_delay= 20
rps= 5
spindown_offset= 10
cylinders= 83
tracks= 83
timeout= 3000
interleave= 20
checkfreq= 1500
native_format= 7
autodetect seq.= 7,4,25,22,31,21,29,11
flags: debug
verify disk_changed
spinup= -257722
select= -257676
first_read= 0
probed_fmt= 0
cylinder= -3
maxblock= 0
maxcylinder= 0
generation= 0
keep data= 0
refs= 1
device= 0
last_checked= 0
spec1=ffffffff
spec2=ffffffff
rate=0
rawcmd=0
dor=d
version=52
reset=0
need_configure=1
has_fifo=0
perp_mode=1
address=3f0
devs
----
[root@localhost david]# ls -l /dev/fd[01]*
brw-rw---- 1 david floppy 2, 0 Mar 31 22:07 /dev/fd0
brw-rw---- 1 david floppy 2, 84 Mar 31 22:07 /dev/fd0u1040
brw-rw---- 1 david floppy 2, 88 Mar 31 22:07 /dev/fd0u1120
brw-rw---- 1 david floppy 2, 28 Mar 31 22:07 /dev/fd0u1440
brw-rw---- 1 david floppy 2, 124 Mar 31 22:07 /dev/fd0u1600
brw-rw---- 1 david floppy 2, 44 Mar 31 22:07 /dev/fd0u1680
brw-rw---- 1 david floppy 2, 60 Mar 31 22:07 /dev/fd0u1722
brw-rw---- 1 david floppy 2, 76 Mar 31 22:07 /dev/fd0u1743
brw-rw---- 1 david floppy 2, 96 Mar 31 22:07 /dev/fd0u1760
brw-rw---- 1 david floppy 2, 116 Mar 31 22:07 /dev/fd0u1840
brw-rw---- 1 david floppy 2, 100 Mar 31 22:07 /dev/fd0u1920
brw-rw---- 1 david floppy 2, 12 Mar 31 22:07 /dev/fd0u360
brw-rw---- 1 david floppy 2, 16 Mar 31 22:07 /dev/fd0u720
brw-rw---- 1 david floppy 2, 120 Mar 31 22:07 /dev/fd0u800
brw-rw---- 1 david floppy 2, 52 Mar 31 22:07 /dev/fd0u820
brw-rw---- 1 david floppy 2, 68 Mar 31 22:07 /dev/fd0u830
brw-rw---- 1 david floppy 2, 1 Mar 31 22:07 /dev/fd1
brw-rw---- 1 david floppy 2, 9 Mar 31 22:07 /dev/fd1h1200
brw-rw---- 1 david floppy 2, 41 Mar 31 22:07 /dev/fd1h1440
brw-rw---- 1 david floppy 2, 57 Mar 31 22:07 /dev/fd1h1476
brw-rw---- 1 david floppy 2, 73 Mar 31 22:07 /dev/fd1h1494
brw-rw---- 1 david floppy 2, 93 Mar 31 22:07 /dev/fd1h1600
brw-rw---- 1 david floppy 2, 21 Mar 31 22:07 /dev/fd1h360
brw-rw---- 1 david floppy 2, 49 Mar 31 22:07 /dev/fd1h410
brw-rw---- 1 david floppy 2, 65 Mar 31 22:07 /dev/fd1h420
brw-rw---- 1 david floppy 2, 25 Mar 31 22:07 /dev/fd1h720
brw-rw---- 1 david floppy 2, 81 Mar 31 22:07 /dev/fd1h880
Whatever I do (mount, superformat, fdformat...) , I get either "I/O
Error" or "not a valid device" type errors. I have tried things like
for f in `ls /dev/fd1*`
do
mount $f /mnt/floppy
done
On most of these commands the LED light comes on the drive, so it is
definiely alive. Also it works OK from DOS - I managed to write 3 Minix
boot disks with it which work fine, so the drive is physically OK. I am
also working with a batch of pristine diskettes which were never used
before I touched them, so I doubt they are a factor. Here is the
console after 'floppycontrol --debug' and a 'superformat /dev/fd1':
Apr 1 22:16:34 localhost kernel: floppy1: reschedule timeout lock fdc
Apr 1 22:16:34 localhost kernel: floppy1: reschedule timeout lock fdc
Apr 1 22:16:34 localhost kernel: floppy1: reschedule timeout floppy
start
Apr 1 22:16:34 localhost kernel: floppy1: setting NEWCHANGE in
floppy_start
Apr 1 22:16:34 localhost kernel: floppy1: calling disk change from
floppy_readyApr 1 22:16:34 localhost kernel: floppy1: checking disk
change line for drive 1Apr 1 22:16:34 localhost kernel: floppy1:
jiffies=899735
Apr 1 22:16:34 localhost kernel: floppy1: disk change line=0
Apr 1 22:16:34 localhost kernel: floppy1: flags=36
Apr 1 22:16:34 localhost kernel: floppy1: calling disk change from seek
Apr 1 22:16:34 localhost kernel: floppy1: checking disk change line for
drive 1Apr 1 22:16:34 localhost kernel: floppy1: jiffies=899735
Apr 1 22:16:34 localhost kernel: floppy1: disk change line=0
Apr 1 22:16:34 localhost kernel: floppy1: flags=32
Apr 1 22:16:34 localhost kernel: recalibrate floppy: dtime=20
Apr 1 22:16:34 localhost kernel: recal interrupt: dtime=20
Apr 1 22:16:34 localhost kernel: floppy1: calling disk change from
floppy_readyApr 1 22:16:34 localhost kernel: floppy1: checking disk
change line for drive 1Apr 1 22:16:34 localhost kernel: floppy1:
jiffies=899736
Apr 1 22:16:34 localhost kernel: floppy1: disk change line=0
Apr 1 22:16:34 localhost kernel: floppy1: flags=32
Apr 1 22:16:34 localhost kernel: floppy1: calling disk change from seek
Apr 1 22:16:34 localhost kernel: floppy1: checking disk change line for
drive 1Apr 1 22:16:34 localhost kernel: floppy1: jiffies=899736
Apr 1 22:16:34 localhost kernel: floppy1: disk change line=0
Apr 1 22:16:34 localhost kernel: floppy1: flags=32
Apr 1 22:16:34 localhost kernel: floppy1: checking whether disk is
write protected
Apr 1 22:16:34 localhost kernel: floppy1: wp=0
Apr 1 22:16:34 localhost kernel: rw_command: dtime=21
Apr 1 22:16:34 localhost kernel: floppy1: calling disk change from
watchdog
Apr 1 22:16:34 localhost kernel: floppy1: checking disk change line for
drive 1Apr 1 22:16:34 localhost kernel: floppy1: jiffies=899736
Apr 1 22:16:34 localhost kernel: floppy1: disk change line=0
Apr 1 22:16:34 localhost kernel: floppy1: flags=30
Apr 1 22:16:34 localhost kernel: floppy1: calling disk change from
watchdog
Apr 1 22:16:34 localhost kernel: floppy1: checking disk change line for
drive 1Apr 1 22:16:34 localhost kernel: floppy1: jiffies=899836
Apr 1 22:16:34 localhost kernel: floppy1: disk change line=0
Apr 1 22:16:34 localhost kernel: floppy1: flags=30
Apr 1 22:16:34 localhost kernel: floppy1: calling disk change from
watchdog
Apr 1 22:16:34 localhost kernel: floppy1: checking disk change line for
drive 1Apr 1 22:16:34 localhost kernel: floppy1: jiffies=899936
Apr 1 22:16:34 localhost kernel: floppy1: disk change line=0
Apr 1 22:16:34 localhost kernel: floppy1: flags=30
Apr 1 22:16:34 localhost kernel: floppy1: calling disk change from
watchdog
Apr 1 22:16:34 localhost kernel: floppy1: checking disk change line for
drive 1Apr 1 22:16:34 localhost kernel: floppy1: jiffies=900036
Apr 1 22:16:34 localhost kernel: floppy1: disk change line=0
Apr 1 22:16:34 localhost kernel: floppy1: flags=30
Apr 1 22:16:34 localhost kernel: floppy1: calling disk change from
watchdog
Apr 1 22:16:34 localhost kernel: floppy1: checking disk change line for
drive 1Apr 1 22:16:34 localhost kernel: floppy1: jiffies=900136
Apr 1 22:16:34 localhost kernel: floppy1: disk change line=80
Apr 1 22:16:34 localhost kernel: floppy1: flags=30
Apr 1 22:16:34 localhost kernel: floppy1: disk removed during i/o
Apr 1 22:16:34 localhost kernel: reset interrupt: dtime=422
Apr 1 22:16:34 localhost kernel: floppy1: reschedule timeout do wakeup
Apr 1 22:16:34 localhost kernel: floppy1: calling disk change from
raw_cmd ioctl
Apr 1 22:16:37 localhost kernel: floppy1: calling disk change from
set_dor
Apr 1 22:16:37 localhost kernel: floppy1: checking disk change line for
drive 1Apr 1 22:16:37 localhost kernel: floppy1: jiffies=903014
Apr 1 22:16:37 localhost kernel: floppy1: disk change line=80
Apr 1 22:16:37 localhost kernel: floppy1: flags=32
Not sure what other information I should supply. I have been trying to
get this to work for a long time, and am feeling a little insane now
with this problem. My 3.5" floppy drive (/dev/fd0) works fine, so the
controller is ok, I guess.
Anyone got any clues which may help me? Are there some cunning kernel
options I can try (building or booting with)? Or perhaps there is
something wrong with my devices (I have tried remaking them with the
MAKEFLOPPIES script).
Many thanks,
David.
_______________________________________________
fdutils mailing list
fdutils(a)tux.org
http://www.tux.org/mailman/listinfo/fdutils
Fdutils-5.5 is released. This is mainly a bug fix release, fixing the
following issues:
* Superformat disk verification works again in "verify after each
track" mode
* Misc minor fixes, especially compatibility with newer kernels
* File-descriptor handling
Fdutils can be found at the following locations:
http://www.fdutils.linux.lu/http://ftp.tux.org/pub/knaff/fdutils
and soon at:
ftp://ibiblio.unc.edu/pub/Linux/utils/disk-management
The md5sums are:
2b8b65f52378158a4a21e455566b456d fdutils-5.5.tar.gz
efc786d0f60693b90cd63ddb21193722 fdutils-5.5-1.i586.rpm
Alain
_______________________________________________
fdutils mailing list
fdutils(a)tux.org
http://www.tux.org/mailman/listinfo/fdutils