Linux mount for 'ipcas' or generic USB 100 floppy disk emulator


Recommended Posts

Years ago, I got a USB emulator off ebay for use in my SNES GD7. The model I got is brandless and has the floppy connections on the back, with 2x7-segment displays on the front, a USB port and buttons to change the floppy number (00-99 = 100 images) which I use with a 256MB generic USB drive.

It's not fast, and literally is the same speed a floppy unfortunately. Another downside is the software to configure the USB drive is windows only and was sent as a ZIP when I won the auction via email...

I looked earlier and found this; http://www.ipcas.com/products/usb-floppy-emulator-fdd-to-udd.html - it looks to be EXACTLY the same (looks-wise) as the model I have, only mine is grey and doesn't have the IPCAS sticker on the front, oh and it was about ~?95 not ?250!

Anyway, I thought I'd go about finding out how to get this working in linux (not formatting, just accessing and modifying the files), so I fired up my hex editor and this is what I came up with... The FS's are all 'virtual' FAT12s inside a larger FAT12/16 (it mentions both), and for the example I (it's more a POC) make 100 folders and mount the drives in each. (n.b. I found the first 'virtual' FAT12 offset for the VD0 to be at position (int) 32256B (which parted also shows), with a gap of 1572864 between all the virtual FAT12 file systems, and used it to make this):

mkdir VD1
mkdir VD2
mkdir VD3
mkdir VD4
mkdir VD5
mkdir VD6
mkdir VD7
mkdir VD8
mkdir VD9
mkdir VD10
mkdir VD11
mkdir VD12
mkdir VD13
mkdir VD14
mkdir VD15
mkdir VD16
mkdir VD17
mkdir VD18
mkdir VD19
mkdir VD20
mkdir VD21
mkdir VD22
mkdir VD23
mkdir VD24
mkdir VD25
mkdir VD26
mkdir VD27
mkdir VD28
mkdir VD29
mkdir VD30
mkdir VD31
mkdir VD32
mkdir VD33
mkdir VD34
mkdir VD35
mkdir VD36
mkdir VD37
mkdir VD38
mkdir VD39
mkdir VD40
mkdir VD41
mkdir VD42
mkdir VD43
mkdir VD44
mkdir VD45
mkdir VD46
mkdir VD47
mkdir VD48
mkdir VD49
mkdir VD50
mkdir VD51
mkdir VD52
mkdir VD53
mkdir VD54
mkdir VD55
mkdir VD56
mkdir VD57
mkdir VD58
mkdir VD59
mkdir VD60
mkdir VD61
mkdir VD62
mkdir VD63
mkdir VD64
mkdir VD65
mkdir VD66
mkdir VD67
mkdir VD68
mkdir VD69
mkdir VD70
mkdir VD71
mkdir VD72
mkdir VD73
mkdir VD74
mkdir VD75
mkdir VD76
mkdir VD77
mkdir VD78
mkdir VD79
mkdir VD80
mkdir VD81
mkdir VD82
mkdir VD83
mkdir VD84
mkdir VD85
mkdir VD86
mkdir VD87
mkdir VD88
mkdir VD89
mkdir VD90
mkdir VD91
mkdir VD92
mkdir VD93
mkdir VD94
mkdir VD95
mkdir VD96
mkdir VD97
mkdir VD98
mkdir VD99
mkdir VD100

mount -o ro,offset=32256 /dev/sdf ./VD1/
mount -o ro,offset=1605120 /dev/sdf ./VD2/
mount -o ro,offset=3177984 /dev/sdf ./VD3/
mount -o ro,offset=4750848 /dev/sdf ./VD4/
mount -o ro,offset=6323712 /dev/sdf ./VD5/
mount -o ro,offset=7896576 /dev/sdf ./VD6/
mount -o ro,offset=9469440 /dev/sdf ./VD7/
mount -o ro,offset=11042304 /dev/sdf ./VD8/
mount -o ro,offset=12615168 /dev/sdf ./VD9/
mount -o ro,offset=14188032 /dev/sdf ./VD10/
mount -o ro,offset=15760896 /dev/sdf ./VD11/
mount -o ro,offset=17333760 /dev/sdf ./VD12/
mount -o ro,offset=18906624 /dev/sdf ./VD13/
mount -o ro,offset=20479488 /dev/sdf ./VD14/
mount -o ro,offset=22052352 /dev/sdf ./VD15/
mount -o ro,offset=23625216 /dev/sdf ./VD16/
mount -o ro,offset=25198080 /dev/sdf ./VD17/
mount -o ro,offset=26770944 /dev/sdf ./VD18/
mount -o ro,offset=28343808 /dev/sdf ./VD19/
mount -o ro,offset=29916672 /dev/sdf ./VD20/
mount -o ro,offset=31489536 /dev/sdf ./VD21/
mount -o ro,offset=33062400 /dev/sdf ./VD22/
mount -o ro,offset=34635264 /dev/sdf ./VD23/
mount -o ro,offset=36208128 /dev/sdf ./VD24/
mount -o ro,offset=37780992 /dev/sdf ./VD25/
mount -o ro,offset=39353856 /dev/sdf ./VD26/
mount -o ro,offset=40926720 /dev/sdf ./VD27/
mount -o ro,offset=42499584 /dev/sdf ./VD28/
mount -o ro,offset=44072448 /dev/sdf ./VD29/
mount -o ro,offset=45645312 /dev/sdf ./VD30/
mount -o ro,offset=47218176 /dev/sdf ./VD31/
mount -o ro,offset=48791040 /dev/sdf ./VD32/
mount -o ro,offset=50363904 /dev/sdf ./VD33/
mount -o ro,offset=51936768 /dev/sdf ./VD34/
mount -o ro,offset=53509632 /dev/sdf ./VD35/
mount -o ro,offset=55082496 /dev/sdf ./VD36/
mount -o ro,offset=56655360 /dev/sdf ./VD37/
mount -o ro,offset=58228224 /dev/sdf ./VD38/
mount -o ro,offset=59801088 /dev/sdf ./VD39/
mount -o ro,offset=61373952 /dev/sdf ./VD40/
mount -o ro,offset=62946816 /dev/sdf ./VD41/
mount -o ro,offset=64519680 /dev/sdf ./VD42/
mount -o ro,offset=66092544 /dev/sdf ./VD43/
mount -o ro,offset=67665408 /dev/sdf ./VD44/
mount -o ro,offset=69238272 /dev/sdf ./VD45/
mount -o ro,offset=70811136 /dev/sdf ./VD46/
mount -o ro,offset=72384000 /dev/sdf ./VD47/
mount -o ro,offset=73956864 /dev/sdf ./VD48/
mount -o ro,offset=75529728 /dev/sdf ./VD49/
mount -o ro,offset=77102592 /dev/sdf ./VD50/
mount -o ro,offset=78675456 /dev/sdf ./VD51/
mount -o ro,offset=80248320 /dev/sdf ./VD52/
mount -o ro,offset=81821184 /dev/sdf ./VD53/
mount -o ro,offset=83394048 /dev/sdf ./VD54/
mount -o ro,offset=84966912 /dev/sdf ./VD55/
mount -o ro,offset=86539776 /dev/sdf ./VD56/
mount -o ro,offset=88112640 /dev/sdf ./VD57/
mount -o ro,offset=89685504 /dev/sdf ./VD58/
mount -o ro,offset=91258368 /dev/sdf ./VD59/
mount -o ro,offset=92831232 /dev/sdf ./VD60/
mount -o ro,offset=94404096 /dev/sdf ./VD61/
mount -o ro,offset=95976960 /dev/sdf ./VD62/
mount -o ro,offset=97549824 /dev/sdf ./VD63/
mount -o ro,offset=99122688 /dev/sdf ./VD64/
mount -o ro,offset=100695552 /dev/sdf ./VD65/
mount -o ro,offset=102268416 /dev/sdf ./VD66/
mount -o ro,offset=103841280 /dev/sdf ./VD67/
mount -o ro,offset=105414144 /dev/sdf ./VD68/
mount -o ro,offset=106987008 /dev/sdf ./VD69/
mount -o ro,offset=108559872 /dev/sdf ./VD70/
mount -o ro,offset=110132736 /dev/sdf ./VD71/
mount -o ro,offset=111705600 /dev/sdf ./VD72/
mount -o ro,offset=113278464 /dev/sdf ./VD73/
mount -o ro,offset=114851328 /dev/sdf ./VD74/
mount -o ro,offset=116424192 /dev/sdf ./VD75/
mount -o ro,offset=117997056 /dev/sdf ./VD76/
mount -o ro,offset=119569920 /dev/sdf ./VD77/
mount -o ro,offset=121142784 /dev/sdf ./VD78/
mount -o ro,offset=122715648 /dev/sdf ./VD79/
mount -o ro,offset=124288512 /dev/sdf ./VD80/
mount -o ro,offset=125861376 /dev/sdf ./VD81/
mount -o ro,offset=127434240 /dev/sdf ./VD82/
mount -o ro,offset=129007104 /dev/sdf ./VD83/
mount -o ro,offset=130579968 /dev/sdf ./VD84/
mount -o ro,offset=132152832 /dev/sdf ./VD85/
mount -o ro,offset=133725696 /dev/sdf ./VD86/
mount -o ro,offset=135298560 /dev/sdf ./VD87/
mount -o ro,offset=136871424 /dev/sdf ./VD88/
mount -o ro,offset=138444288 /dev/sdf ./VD89/
mount -o ro,offset=140017152 /dev/sdf ./VD90/
mount -o ro,offset=141590016 /dev/sdf ./VD91/
mount -o ro,offset=143162880 /dev/sdf ./VD92/
mount -o ro,offset=144735744 /dev/sdf ./VD93/
mount -o ro,offset=146308608 /dev/sdf ./VD94/
mount -o ro,offset=147881472 /dev/sdf ./VD95/
mount -o ro,offset=149454336 /dev/sdf ./VD96/
mount -o ro,offset=151027200 /dev/sdf ./VD97/
mount -o ro,offset=152600064 /dev/sdf ./VD98/
mount -o ro,offset=154172928 /dev/sdf ./VD99/
mount -o ro,offset=155745792 /dev/sdf ./VD100/

So in this case, /dev/sdf is the overall USB device (NOT /dev/sdf1 which is one of the virtual FAT12 filesystems, #33 for me) and I'm mounting them as read only (haven't tried in read-write mode but I don't currently need it).

So I hope this is useful to someone because it took me a long time to work it out and there's absolutely nothing about it on google.

Good luck and enjoy! (I haven't tried this with the IPCAS drive only my generic one which might be the same or it might be different or it might be a chinese clone, not a clue) So if you have an IPCAS drive and can try it and reply if it works or not, that'd be great, or heck, if you've got a generic emulator and it does/doesn't work, reply and I'll see if I can get it working for you.

Link to comment
Share on other sites

Ok for others like me that were like WTF would you want/need something like this for ;) Save you some google time

http://www.ipcas.com...fdd-to-udd.html

Many machines and devices are still using floppy disk drives as the only means of data input. CNC, milling, injection mold, or embroidery machines, laser cutting devices and integrated control systems, just to mention a few, are still being fed data with floppy disks several times a day

usb-floppy-ports.jpg

Now it makes perfect sense - good post, for those that might need this sort of thing!

  • Like 2
Link to comment
Share on other sites

We actually have one of those installed at college. I was really surprised seeing a floppy disk icon on the desktop since the computer didn't have a floppy drive installed. Mystery solved! :D

Link to comment
Share on other sites

This topic is now closed to further replies.