I was trying to upgrade an older laptop from Windows 95 to 98 for someone when I discovered that he had no working optical drive. The PCMCIA drivers were also not working causing the NIC to fail. “No problem” I thought, I’ll just use my a link cable to backup his files to my machine, use a floppy to format his system and then just transfer the Windows setup files to the hard disk.
Unfortunately I found that they have removed the “Direct Cable Connection” in Vista. Not only that but all of the other software I have around (like PC Anywhere) does not run under Vista. I found out that Vista doesn’t support direct incoming connections anymore also. He also had an Iomega Zip Drive which connected through the parallel port, which also will not work under Vista. The direct cable transfer was the best solution for transferring the files between systems and I really had to find a way to make it work.
Background:
The Direct Cable Connection I’m talking about is an older method of linking two PC’s. Basically you connect the systems via their parallel or serial ports using a null serial cable or a parallel link cable. The cable must be one of those types, you can’t use a regular serial/parallel cable as the wires for send and receive will not line up properly. They are not expensive (Compusmart has one for $8.99 CDN) and can be bought at most computer stores that carry a variety of cables.
You then would use terminal or link software to transfer files between the systems. There is a variety of software which can do this, including Direct Cable Connection which is built into most versions of Windows (Windows 95 all the way up to XP).
This is a useful method of transferring large files between systems which do not have larger removable storage or proper ethernet connectivity.
The solution:
The direct cable file transfers still seem to work under the 16-bit MS-DOS subsystem (NTVDM). If you use an MS-DOS application for the transfer on Vista it can totally work. Of course, this only applies to 32-bit versions of Vista (64-bit Vista does not have the 16-but subsystem).
There are a lot of MS-DOS products which can do this. I personally have had great success with the free terminal program Conex. Although the interface might not be the easiest, it is small and can easily fit on a DOS boot disk and also runs under Vista. There are many more free terminal programs for DOS which you can try. There are also some commercial products (some which are available for download on abandonware sites).
There is a catch however. MS-DOS applications do not support long file names, you would need to access them by their 8.3 names and the long names will not be preserved across systems. In order to preserve filenames you should compress the files into an archive like ZIP or RAR. When you decompress them on the client system the names will be preserved regardless of the archive name. It’s also good to do because you can send many files in one file transfer and the compression can reduce transfer time.
Using Conex (for example):
You can press ALT-H for help anytime in the application. For starters you may want to use ALT-I to change your connection settings. Use the up and down arrows to select settings and the left and right arrows to change the option, ENTER to confirm. You want to make sure it is set to: COM->Host. If you press ENTER on that screen you can set your baud rate from 9600 to a higher speed (ie. 115200).
Press F9 to enter file transfer mode. Press “P” to set the protocol. You will most likely want to use ZMODEM which is fairly robust and can resume transfers if there are errors. You can press “I” to further configure the protocol options if you like.
You then use “S” to send a file over the link or “R” to receive a file. If you choose send then you will have to enter the path and filename. If you have the file(s) in the same directory as you run CONEX.EXE from it makes it easier. If one system is sending you can press “R” on the other system and it will wait for the transfer. If you use ZMODEM it should start the transfer automatically. If you need to stop the transfer at any time you can press ESC.
I have used this method with Conex a few times with a few different systems and it has worked well. Most other software should work too. The only problem I’ve seen is that the transfer can be very slow if the DOS window is not in the foreground.
More on configuring COM ports:
Your COM ports can be configured in Windows Device Manager (Start->Run and type in “devmgmt.msc”). There will be a section labeled Ports and there should be a Communications Port listed. In the device properties there will be a Port Settings tab where you can set their options. For serial ports the speed is often default “9600” baud even though they can actually use much faster speeds. “115200” is much faster and is a fairly standard speed for most serial ports. The rest of the settings should usually be N,8,1 (no parity, 8 data bits, 1 stop bit).
Under MS-DOS (or NTVDM) the ports can be configured via MODE.COM. If you enter the command “MODE COM1” it should display the port statistics:
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
C:USERSKEITHB~1>mode com1
Status for device COM1:
———————–
Baud: 9600
Parity: Even
Data Bits: 7
Stop Bits: 1
Timeout: OFF
XON/XOFF: OFF
CTS handshaking: OFF
DSR handshaking: OFF
DSR sensitivity: OFF
DTR circuit: OFF
RTS circuit: OFF
The actual syntax to configure the port settings is:
MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s]
[to=on|off] [xon=on|off] [odsr=on|off]
[octs=on|off] [dtr=on|off|hs]
[rts=on|off|hs|tg] [idsr=on|off]
So, for example to set COM1’s port speed to 115200 baud, you would use the command “mode com1 BAUD=115200”.
If you wish to use MODE.COM under Vista you will need to run COMMAND.COM not CMD.EXE to change COM port settings. Changing it under COMMAND.COM also changes the settings in Device Manager.
Conclusion:
The direct cable connection is not something I use often these days so I can’t say if it will work as well for everyone else. I have also not tried using a parallel port link and can only confirm that it works via serial port/null modem cable. I hope this will be useful to anyone with similar issues.