Home ]   [ Kermit 95 ]   [ C-kermit ]   [ Scripts ]   [ Current ]   [ New ]   [ FAQ ]   [ Support ]

KERMIT 95 - FREQUENTLY ASKED QUESTIONS

As of K95 Version: 2.1.3
This File Last Updated: Fri Dec 7 14:33:18 2007

Please fill out a brief survey on Kermit 95.
It will help us to obtain approval to create a new release and to find out what changes you would like to see. CLICK HERE -- it will only take a minute or two. Thanks.     2006/12/12

CONTENTS

Invoking Kermit 95 from:   [ Visual Basic ]   [ Java ]   [ C++ ]

Keyboard:   [ Kermit 95 Keycodes ]   [ Kermit 95 Keyboard Verbs (Kverbs) ]

STATUS OF KERMIT 95 FOR WINDOWS

[ Next ] [ Previous ] [ Top ]

The current release of Kermit 95 is 2.1.3. It operates under Windows 95, 98, ME, NT, 2000, XP, 2003, and Vista, in regular sessions on your local PC, as well as Windows Terminal Server. Any problems that might surface in any of these environments are noted below, in most cases with diagnoses and workarounds. Kermit 95 also operates under IBM OS/2 3.0 and later. Kermit 95 does not operate under "mini" versions of Windows such as Windows CE or Pocket PC, nor can it be used in Windows 3.1 or earlier.

Kermit 95 3.0
The Kermit Project is presently negotiating with the relevant parties to fund a new release of Kermit 95. To read about the next release, CLICK HERE. You can help move the process along by filling out a brief survey indicating how and why you use Kermit 95 and what you would like to see in a new release; PLEASE CLICK HERE to fill out the survey. Thanks.

BUGS

[ Next ] [ Previous ] [ Top ]

Like all software, Kermit 95 can have bugs. It can also "tickle" bugs in the underlying Windows operating system, network stack, drivers, etc. As bugs are discovered or reported, we document and fix them and/or provide workarounds whenever possible. K95's bug history (bugs and fixes) through the current release is HERE. Bugs discovered since the last release are documented HERE.

Several problems, not exactly bugs, have appeared recently and are worth mentioning up front:

  1. Kermit 95's default terminal emulation is VT320, the Digital Equipment Corporation VT320 terminal, long an industry standard. Recently this terminal type has begun disappearing from Unix terminal (termcap/terminfo) databases. If you use Kermit 95 to log in to such a Unix system and try to use any application that formats the screen (EMACS, Vi, etc), you will get a message to the effect that your terminal type is unknown. Workaround: Change Kermit's terminal type to VT220, which is still supported on most Unix platforms. The default type will be changed to VT220 in the next release.

  2. You might also have to change Kermit 95's character set from LATIN1 to CP1252, to avoid having your session hung when viewing text originating from Microsoft Windows (CLICK HERE for a discussion).

  3. SSH connections can fail with "no matching comp found: client zlib, server none,[email protected]". This happens because (a) Kermit 95 uses SSH compression by default, and (b) new SSH server releases have changed their compression method. Client Workaround: tell Kermit 95 to "set ssh compression off" and/or uncheck the "Data Compression" box on the SSH page of the Dialer entry for any host where this happens. Server Fix: Change the server's SSH compression parameter in sshd_config from "Delayed" to "Yes".

  4. When making an SSH connection using password authentication, the user/password dialog box can lose focus (become greyed out), so you can't type into it. This is the most common symptom of a problem that occurs if Kermit 95 is started in such a way that its window would be wider or taller than the physical screen size at the configured resolution. In this case Windows constantly pops the main K95 window into focus because it "needs attention". This can happen if K95 is in the background, or indeed, even when it is in the foreground but displaying a dialog box (e.g. for the SSH password). A quick workaround is to maximize the K95 window, which forces K95 to adjust the font size to the screen size and resolution. The real solution is to set the monitor to a higher resolution (if possible) in the Display section of the Windows Control Panel, or else to use a smaller font size and/or smaller screen dimensions (rows and/or columns); if you are using the Dialer to set up the connection, you can configure the screen dimensions on the entry's Terminal page, and the font and font-size on the GUI page.

A very simple way to work around problems 1-3 is to create a plain-text file on your Windows desktop containing the following commands:

set terminal type vt220   ; Or other desired type that is supported on the host
set terminal char cp1252  ; Set terminal character-set to Microsoft CP1252
set ssh compression off   ; Disable SSH compression

Give this file a name that ends with ".ksc". This associates it with Kermit 95. If you double-click this file, it starts K95 in such a way that K95 executes the commands in it. Of course this file can contain any other desired K95 commands, such as to resize the screen, set special colors, whatever you want.

Suppose you customarily make connections to several different computers. Then you can make one such file for each computer, and add the lines at the end of the file needed to make the connection. Here's one example we use here at Columbia University, where the central timesharing cluster is called "cunix", and is accessed by SSH. Note that when making SSH connections and certain other kinds of network connections, K95 assumes that your user ID on the host is the same as that on your PC. If this is not the case, you need to let Kermit know what your host ID is, as in this example (the file is called "cunix.ksc"):

set terminal type vt220   ; Or other desired type that is supported on the host
set terminal char cp1252  ; Set terminal character-set to Microsoft CP1252
set ssh compression off   ; Disable SSH compression
set login user fdc        ; My user ID on the host 
ssh cunix                 ; Make an SSH connection to Cunix.

KERMIT 95 AND WINDOWS VISTA

[ Next ] [ Previous ] [ Top ]

Preliminary testing with Windows Vista RC2 shows no new problems with K95. It seems to operate the same as in Windows XP, except when you install it, and the first time you use it to make an Internet connection.

Installation
K95 2.1 installs itself with InstallShield:

Using the Dialer
The Dialer seems to function normally. In a new Vista installation, you might be forced to configure your area code and dialing prefix the first time you start the Dialer or K95 itself. This is normal and happens in all Windows versions, not just Vista.

Using K95.EXE and K95G.EXE
Both the GUI and Console versions of Kermit 95 seem to work normally, except the first time you make a Internet connection. When you try to do this, Windows says: "Windows Live OneCare has blocked a program from accessing the internet." In the dialog box, choose "Allow this program (always allow this program to access the Internet)". Several more dialogs in this vein pop up. Tell them "Continue", "Allow" or whatever is required to go ahead and make the connection. You should go through these steps with K95G.EXE (the GUI version) and K95.EXE (the console version), whichever one(s) you will be using. You should only have to do this once.

Probably similar things will happen the first time you try to accept an incoming network connection with Kermit 95 in Windows Vista. For safety, you should test this "by hand" prior to installing WIKSD, the Windows Internet Kermit Service (which has not yet been checked on Vista).

If you have difficulties accessing other computers with SSH, or with terminal-screen formatting or character sets, these are not problems with Vista; see the previous section. If you come across any other problems with Kermit 95 under Windows Vista, please report them.

The Console version of K95 can not be used in fullscreen mode (Alt-Enter) because the Windows Vista video drivers no longer support support this; this is true for any Console application, not just K95. You can achieve nearly the same effect by choosing the appropriate combination of font size and terminal dimensions, or by using the GUI version instead, in which case fullscreen mode is entered via the Maximize box on the right side of the Toolbar.

Mysteries of Windows Dept:  One user reported that, on three identical machines, configured identically with Windows Vista, K95G.EXE (the GUI version) loses its cursor at certain screen positions on one of the machines but not on the other two, accessing the same application on the same host, using the same communication method and terminal emulation. So far we have not been able to diagnose this problem, but K95.EXE (the console version) displays its cursor correctly on the same machine.

CLICK HERE for further information about Kermit 95 and Windows Vista.

KERMIT 95 AND WINDOWS TERMINAL SERVER

[ Next ] [ Previous ] [ Top ]

The trial version of K95 can not be installed on Windows Terminal server because it requires read/write access to the Registry, which is not permitted in Terminal Server (click here for details).

As required by all applications on Windows Terminal Server, Kermit 95 must be installed by the Domain Administrator via the Add/Remove Programs Control Panel. The Phone and Modem Options Control Panel settings must be initialized on each user's PC. If the machine is locked down to prevent those settings from being manipulated, then Kermit 95 will hang for almost two minutes on startup while the Telephone API attempts to initialize its state. This is true on any machine not just Terminal Server.

Normally you would use the GUI version of Kermit 95 in a Terminal Server session, but the Console versions should work too, except in fullscreen mode. In the GUI version, if the screen size and font need adjustment, use the dialogs in the Toolbar and/or size the screen using the mouse to drag the edges or lower-right corner of the K95 screen; read more about K95's GUI controls and options HERE.

Slow Kermit sessions through Windows Terminal Server (especially newer releases) could be explained by increased network traffic requirements of with each new release and increased CPU and memory requirements on the client and on the server.

Make sure the Terminal Server client and server versions are the the same (e.g. 2003). For example, the terminal server client for 2003 is different from the one that ships with XP and 2000. For the 2003 environment, users should be installing the 2003 Terminal Server client which is available from Microsoft for download. You can also make it available via Group Policy if you are using a managed environment.

THE NATURE OF THE PRODUCT

[ Next ] [ Previous ] [ Top ]

What is the Difference between the Console Versions and GUI Version of K95?
Kermit 95 is an adaptation of C-Kermit to Windows. C-Kermit is a text-mode application portable to many platforms precisely because it is a text-mode application. Version 1 of Kermit 95 (1995-2002) ran only in the Windows Console environment, which is commonly (but erroneously) referred to as the "DOS window", and because of this it suffered many limitations and second-class-citizen status for reasons that can best be seen if you look at the Bug List.

Version 2 of K95 is still available in a Console version (K95.EXE), but now there is also a Graphical User Interface (GUI) version (K95G.EXE). They are the same program. They both do the same things, they both have the same commands, they are both driven by commands. The main differences are that (a) the GUI version works better because it does not have to suffer the bugs and limitations of the Console environment; and (b) the GUI version has some additional controls and conveniences (task bar, scroll bars, font selection, resizing, etc).

There is very little, if any, reason to use the Console version any more and indeed, in the next release, there will be no Console version.

In the Kermit 95 survey, some respondents indicated they were still using the Console version because "they don't need bells and whistles" or because "I prefer the command line". Again: the GUI version is the same as the console version, except it works better and gives you more control.

Does Kermit 95 Allow Remote Access to My PC?
"Remote access" in the sense of pcAnywhere, no. Remote access in the sense of incoming connections for the purposes of file transfer and management? Yes, Kermit 95 lets you make your PC available in various ways to various types of incoming connections:

  1. Kermit 95 comes with a Host Mode script that can be set up to accept direct serial-port (null-modem) connections, dialup modem connections, or Telnet connections. It presents a menu to the caller allowing various file-transfer and management services, and a configuration menu for the PC owner for management. Read about Host Mode HERE.

  2. Kermit 95 2.0 and later on Windows NT, 2000, XP, and 2003 can be run as a Service to accept incoming Internet connections on a well-known TCP port, as defined in Internet RFCs 2839 and 2840. This is called the Internet Kermit Service Daemon (IKSD) and is described HERE

  3. You can write your own scripts to accept incoming modem calls or incoming Internet connections. For details, see the Serial Ports and Modems and Network Connections sections of this document, as well as the Kermit Script Library

Incoming connections have access only to the answering Kermit process and its text-based menus or commands and its file transfer protocols. Kermit is not a "remote desktop" or graphical client or pcAnywhere replacement, nor does it give you access to the Windows shell (for technical and security reasons which are explained in the Host Mode documentation).

What Exactly Is the Documentation for Kermit 95?
Unlike most other Windows-based communication software, K95 is not a Windows-only product, but just one of a suite of similar programs for many platforms: Linux, AIX, VMS, Solaris, etc. Collectively, these programs are called C-Kermit (a portable Kermit program written in the C programming language). Most of the features of these programs are shared and identical across all platforms. These features are documented in:

Using C-Kermit
A 622-page book describing C-Kermit 6.0 (December 1996) and the platform-independent aspects of the concurrent version of K95 (1.1.8) including the command language, serial and network connections, file transfer, client/server operation, character set conversion, and script writing for automation, plus sections on troubleshooting, tutorials on data communications, and tons of reference material. Until a new edition is published, this book remains the fundamental reference for the command and scripting language of C-Kermit and Kermit 95. You can also find a scripting tutorial with lots of examples HERE.

C-Kermit 7.0 Supplement
Thorough documentation of the new features of C-Kermit 7.0 (January 2000) and the platform-independent aspects of K95 1.1.17, which was the first version to include secure authentication and encryption, and in which the command language was greatly extended by the addition of "switches" (command modifiers), and which was the first version to support Unicode (the Universal Character Set), plus other changes too numerous to list here.

C-Kermit 8.0 Supplement
Thorough documentation of the new features of C-Kermit 8.0 (February 2002 - April 2004) and the platform-independent aspects of K95 2.1, principally the new FTP, SSH, and HTTP clients or interfaces, plus tons of scripting improvements.

At some point this information will be consolidated in some form.

Then, each major C-Kermit platform (Unix, VMS, Windows, ...) has its own platform-specific documentation. The manual for Kermit 95 is included with K95 itself, and is accessible from Kermit 95 by:

The Kermit 95 manual concentrates on the Dialer (how to graphically set up and launch connections) and the Terminal Emulator (terminal types, scrollback, key mapping, colors, local printing, character sets, etc).

In addition to the K95 manual, K95 also includes a great deal of other documentation, including the C-Kermit 7.0 and 8.0 manual supplements, linked to from the K95 manual. You can also find a brief tutorial for K95 HERE and another for C-Kermit HERE.

Those who purchased shrink-wrapped copies of K95 through version 1.1.17 received a printed copy of Using C-Kermit. Those who purchased shrinkwrapped copies of K95 1.1.20 received a PDF version of the book on CDROM. Due to renegotiated agreements between publishers, the Kermit 95 2.1 package (January 2003) does not include the PDF version of Using C-Kermit, but it does include a license key to let you download it (note: this applies ONLY to owners of the K95 2.1 shrinkwrap). Electronically delivered versions of K95 from e-academy.com do not include the Using C-Kermit book because:

  1. It would triple the size of the download;
  2. It would increase the price, since each copy of the book (printed or electronic) must be paid for;
  3. The new GUI version of K95 does not require users to know the command language for normal operation.

This is the primary reason that the cost of the electronically delivered version of K95 is so low. The shrinkwrapped version costs more. In any case, the printed book can still be purchased separately.

The Kermit Project Website contains hundreds of pages of information about Kermit software, including Kermit 95 and C-Kermit. Sometimes it might be hard to find what you are looking for, but it almost certainly is somewhere in the C-Kermit manual (which is well indexed) or the Kermit 95 manual (which can be searched with the search feature of your Browser) or on the Website. To search the website, go to the Kermit Project home page:

http://www.columbia.edu/kermit/
and use the Search box.

Is Kermit 95 Buzzword-1.0 Compliant?
Most likely. It is Year-2000 Compliant, Euro Compliant, it uses all the latest open security standards and libraries. It implements numerous open Internet protocols. It is Common Off The Shelf commercial software (COTS) and therefore automatically complies with most procurement rules. It is approved for export to all but the seven embargoed countries. For vendor qualifications and data, CLICK HERE.

What's going on with the OS/2 version?
K95 2.1.2 is available for IBM OS/2 3.0 and later with certain restrictions: Console only (no GUI); no SSH, no Kerberos. K95 1.1.21 and 2.0 were not available for OS/2, but we did succeed in building version 2.1.2 for OS/2, complete with FTP client, and the Kermit 95 2.1 shrinkwrap package includes the OS/2 version. (2.1.3 is not available for OS/2 but most of the changes relate to the GUI controls, which the OS/2 version doesn't have anyway.) The OS/2 version does not include SSH because OpenSSH libraries are not available that are compatible with the OS/2 K95 development tools.

Why isn't Kermit 95 free?
Kermit 95 is developed, documented, and supported by full-time computer professionals at Columbia University's nonprofit Kermit Project. Revenue from Kermit 95 sales and licenses is the only source of funding for its continued development and support. Paying for Kermit 95 gives you the right to the time, attention, support, and respect of Kermit professional staff, which is something you can't count on with free software nor, as some of our users tell us, with much commercial software either. For more about Kermit and free software, CLICK HERE.

Why is the product (still) called Kermit 95?
All Kermit Project software has "Kermit" in its name. Kermit 95 was originally written in 1995 for Windows 95, and was therefore given the obvious name. However, unlike Microsoft, we chose to stick with the original name as new versions came out because it's quite difficult to refer to a product generically, regardless of version, when each version has a different name. Those who feel that the "95" in "Kermit 95" dates it should think of the "95" as a part number or model designation rather than a year or version number, and of K95 as a faithful and effective tool in the spirit of the similarly named P38 (Army tool for opening C-rations).

As for "Kermit"... This name was chosen on a whim back in 1981, before we had any idea that Kermit protocol or software would ever escape the bounds of Columbia University or remain current and popular for decades. The whim, in turn, was based on (a) a Muppets calandar on the wall when we were searching for a name, and (b) the fact that some of us had small children addicted to The Muppet Show. Although a name like "Kermit" might have certain drawbacks in today's fast-paced, high-powered software marketplace, it also has (we think) a certain charm and simplicity: It's easy to say, easy to spell, and utterly lacking in hyperbole and condescension. But if you prefer, feel free to refer to K95 as:

UltraHyperExtremeTurboCyberOpenEnterpriseSmartSecureE-CommercePowerPro-2007 Gold

Can I use MS-DOS Kermit instead of Kermit 95?
Under certain conditions, yes, but not for TCP/IP connections, not with Plug-n-Play or PCMCIA or USB modems or ports, not with Winmodems or RPI modems, not with ISDN modems, not with nonstandard communication ports, not with devices that are owned by TAPI, etc. Even then, remember it is a DOS program, not a Windows or OS/2 program, and can not take advantage of, or access, special features of Windows or OS/2 -- long filenames, the mouse, the clipboard, secure connections, etc. If it works for you, meets your requirements, and requires no technical support then by all means use it on your own PC or within your company, but remember, you can't furnish MS-DOS Kermit to customers or clients without a license, any more than you could K95 or C-Kermit.

Do Kermit 95 and the Dialer work in all 32-bit varieties of Windows?
Yes, except for Windows CE (Pocket PC). The same executables run on Windows 95, 98, ME, NT, 2000, and XP on Intel (PC) architecture. In previous releases, K95 was also available for Windows NT on the Alpha and PowerPC architectures, but those Windows versions have been discontinued.

Why not Windows CE or Pocket PC?
Because Windows CE and Pocket PC do not offer the full range of Win-32 APIs. Many of those that are missing are required by Kermit 95.

Can K95 be used with speech and Braille devices?
Kermit 95 should be compatible with any speech or Braille device that can be used in a Console or GUI window. Typical settings are:

  set bell audible                     ; Make sure Ctrl-G is audible
  set terminal margin-bell on 72       ; Margin bell like typewriter
  set terminal statusline off          ; For scroll detection
  set terminal screen-update smooth    ; Or "fast" - depends on screen reader
  set terminal screen-optimization on  ; This is the default anyway
  set terminal mouse off               ; Might be required by some readers

In addition, certain keys might need to be set to \Kignore, so they can be used as controls for the screen reader or Braille software. Depending on the specific screen reader, these might be the keys on the numeric keypad. The method for doing all this is illustrated in the ASAP.KSC file, for setting K95 up to be used with the ASAP screen reader.

For related resources, see our links page.

INSTALLING, USING, AND REGISTERING THE TRIAL VERSION

[ Next ] [ Previous ] [ Top ]

A full-featured 21-day trial version of K95 is packaged and distributed by our electronic sales and delivery agent, e-academy.com. You can download it from one of two places:

  1. e-academy
  2. Columbia University

The two are the same. If you have trouble downloading one, try the other. At e-academy, you will notice different buying options and configurations:

Academic vs Non-Academic
This is strictly a pricing issue. If you are a student or faculty or staff member at an academic institution (according to definitions and procedures of e-academy) you pay a lower price.

Crypto vs Non-Crypto
These are separate and distinct versions of the software. The "crypto" version is the normal one, which includes security features that use strong encryption; for example an SSH client, secure Telnet and FTP clients, etc. However, strong cryptography is controlled by USA law and can not be exported to certain embargoed countries; the non-Crypto version exists so that Kermit 95 can be exported to those countries in compliance with the governing statutes.

The trial version is the regular release version (available in both Crypto and Non-Crypto versions) with a "Vbox" front end applied to it by e-academy, which consists of a "nag screen" with "Try" and "Buy now" buttons. The Buy Now button lets you pay for and obtain a licensed version of Kermit 95. This version is discounted since (a) there is no physical package and (b) the book Using C-Kermit is not included.

The 21-day trial period can not be extended. A second trial version can not be installed on the same computer. If your trial period expired before you could finish your testing, you must either purchase a copy or install a fresh trial version on a different computer.

The normal procedure for registering the trial version is: When you get the "nag screen" upon startup of the trial version, click "Buy Now". This takes you to the e-academy site where you order and pay securely. Once payment is processed, you can download the nontrial version, and you are sent to a page at e-academy to pick up your registration keys (serial numbers), one for each copy you have purchased. To install the registered version:

  1. First Remove the trial version (in Add/Remove Programs). Don't worry, this will not interfere with any of your customizitions.

  2. After removing the trial version, run the install package you have just downloaded (e.g. by double-clicking on its icon).

When you run the install procedure, which is the same as the one for the regular shrinkwrapped retail version, at some point you are asked to enter the serial number. YOU MUST ENTER THE WHOLE SERIAL NUMBER, including the prefix and suffix, for example:

K95-00007654321-2.1
That's "K95", a dash (hyphen), 11 decimal digits, another dash, and the software version, in this case "2.1" (two point one). Leading zeros in the numeric part can NOT be omitted.

Problems That Can Occur with the Vbox Mechanism

Vbox Error: Failed to initialize Vbox!(0002-0053-0081)
Windows NT, 2000, or XP only, when logged in as a nonprivileged user. Vbox requires Administrator privilege due to the rental feature and the need to update certain files and Registry entries. Furthermore, Vbox is incompatible with Terminal Server even when running as Administrator. Vbox requires read/write access to the global registry and the %WINDIR% directory. Terminal Server explicitly prevents this access by giving each user instance a private copy. Therefore, the actual global lock data is unavailable. Licensed copies of K95 do not use Vbox and do not have these restrictions, but there is no getting around these issues with the trial version.

Vbox Error: Export function: Duplicate TokenEx could not be found in dynamic library:ADVAPI32.dll. Error code: 127
Most likely you are running original Windows 95 and have never installed any updates. Apparently the "Vbox" registration component uses Windows features that were added after original Windows 95 (Error 127 means that something cannot be loaded). Usually you can work around this by installing updates from Microsoft, such as a newer version of Internet Explorer, which would replace your version of ADVAPI32.DLL with a newer one. Licensed copies of K95 do not include Vbox and do not have this problem.

Other random errors and crashes running the Trial version
Perhaps your download was incomplete. It's a large file, and FTP traffic is one-way only. Maybe your ISP thought your session was idle and disconnected you prematurely. Try checking your mail or browsing the Web in a separate window periodically to make sure your ISP does not think your session is idle.

I can't uninstall the trial version
Depending on how it was installed, you might need to be logged in as Administrator to uninstall it. Note that after uninstalling the trial version, you can't install a new one on the same computer. For more on this topic, read the next section.

Detailed Instructions from E-Academy

Occasionally we receive reports of problems upgrading from the trial version to the regular registered version; for example, when attempting to install the registered version, it complains that the trial version was not uninstalled, even though it was. (begin quote) Usually we recommend our customers to ensure the following before beginning the installation:

Please note that you will need to uninstall ALL previous Kermit software you may have installed already (including the 21 day evaluation).

Please try the following steps to delete the previous Kermit program.

Once you remove previous Kermit program, please re-download "KERMIT" as following.

OTHER INSTALLATION AND UPGRADE ISSUES

[ Next ] [ Previous ] [ Top ]

Kermit 95 2.1 is distributed as a full upgrade installation to those who have earlier K95 versions, no patching required.

Kermit 95 1.1.17 and later are distributed on CDROM. Version 1.1.16 was distributed only in patch form. Versions 1.1.15 and earlier were distributed on diskette. Since the last diskette release was in 1997, we've removed the longwinded discussion of problems with diskettes and diskette drives from the FAQ.

I can't uninstall K95 1.1.xx
Version 1.1.20 and earlier were not installed with InstallShield, and so can't be uninstalled using "Add or Remove Programs"; you have to do it the old-fashioned way: (1) Make sure K95 is not running; (2) Start a Command (CMD) or "MS-DOS" window; (3) type "cd \k95" (or CD to whatever other directory you installed K95 in); (4) Type "cd .." to go up one level; (5) Type "deltree k95" or "del /s /q k95" (depending on which OS you have). If this fails, you might have to reboot and try again.

CDROM installation doesn't start
In Windows 95/98/ME/NT/2000/XP, loading the Kermit 95 CDROM into your CDROM drive should activate the Windows "Autorun" feature: a few moments after Windows has compiled the CDROM directory, it pops up the Kermit 95 installation procedure automatically. If this does not happen to you, access the CDROM as though it were a regular disk, CD to the I386 (Windows/Intel) or other appropriate directory, and start the Setup program.

CDROM installation fails
Typical example: Installation starts, web page comes up; upon clicking back to InstallShield Wizard, it is solid grey, except for the title bar, and the cursor is an hourglass. Shut down all your applications, reboot, and try again, making sure that your anti-virus and intrusion detection software is disabled. Antivirus software often panics when a software package is being installed.

My PC doesn't have a CDROM drive!
If you purchased the K95 retail package but your PC does not have a CDROM drive, please contact us for instructions.

I downloaded a K95 upgrade but it won't install!
Did you download the right upgrade? Read the download page carefully to make sure you picked the right file to download. If the upgrade file failed to execute at all, be sure you downloaded it in binary mode and that the download completed successfully. Remember that you can't install the upgrade unless you have a previous Kermit version installed on the same PC. If the installer can't find the Kermit program directory, it gives you an opportunity to specify its location. It must also be able to find various other K95 files in their normal places, which can vary with the K95 version and the Windows version. In K95 1.1.20 and earlier, all K95 files are in a single directory tree, normally rooted at C:\K95. For K95 1.1.21 and later, the layout is described in the README file.

Occasionally it happens that the Upgrade Installer reports it can't find a licensed version, and offers to let you browse to the location, but even when you choose the registered copy of the K95.EXE executable, it reports failure. This seems to happen only when you chose the "Don't make Registry entries" option when you installed your original version. If you remove your old version and reinstall it, but this time choose to make Registry entries, then the Upgrade Installer should be able to find it.

If you are upgrading from K95 2.0 or later and the upgrade fails for a spurious reason (e.g. "This update requires that you have an eligible Crypto-enabled Kermit 2.0 or 2.1 version installed", when that is the case), download the larger "full" upgrade and use that.

One user reported that the Upgrade Installer complained (on Windows 2000) "No valid Kermit 95 installation in C:\K95, try a different path". Repeated attempts to run the installer said the same thing. Rebooting didn't help. Downloading a fresh copy of the installer didn't help. He shut down and turned off the machine and went home. The next morning when he turned on the machine and tried the procedure again, it worked. The Mysteries Of Windows.

If you are one of the unfortunate few who can't get the upgrade installer to locate and verify your old copy of K95, the best course is to visit our electronic sales and distribution provider, e-academy.com, and purchase the new version; it's only $64 (less for academic institutions), which is probably less than the value of the time you would spend continuing to pursue the upgrade.

I installed K95 2.x but the icons didn't appear on the desktop
Click your mouse on the desktop and then press the F5 key to refresh the desktop, or right-click on the desktop and choose Refresh.

I can't reinstall from my original K95 media!
In case you uninstalled K95 for some reason and then want to reinstall it (e.g. so you can upgrade to K95 2.1), you might run into problems. For example, if you bought Kermit 95 prior to version 1.1.17, it was distributed on diskette; maybe you don't have a diskette drive any more. Another problem is that the K95 SETUP program for version 1.1.10 and earlier doesn't work on disks larger than 2GB; in that case you can manually unzip the K95PACK*.EXE files and then run CKREG.EXE to register it. Then you can install the upgrade.

If all else fails, we would appreciate it if you would simply buy a new version; discounted copies are available on the Web from e-academy.com. Due to the harsh economic conditions, we no longer have sufficient staff to help people one-on-one with relatively ancient Kermit releases. Most other companies would have made you pay for upgrades all these years, and we never have -- which might be part of the problem!

I have my K95 media but I lost my serial number!
If you sent in your registration card, we have a record of your serial number. If not, you'll have to provide convincing proof of purchase before we can help you.

I bought K95 electronically from E-Academy but then lost it!
If you bought Kermit 95 from E-Academy but then lost the serial number, lost the download, or have problems installing, please contact E-Academy technical support.

Kermit 95 starts but is hung
The first time you start Kermit 95 on a PC that has never had a modem configured, Windows pops up a dialog box for you to fill in your country and area codes and Kermit can't finish starting up until you complete this dialog. If the dialog box is hidden behind another window and you don't see it, it will seem that Kermit is hung. Use Alt-Tab, Alt-Esc, or the menu bar to cycle the dialog to the front, fill in the requested information and close the dialog box, then Kermit 95 will finish starting.

Kermit 95 starts but has weird dimensions
Kermit 95's screen presentation (GUI version, K95G) depends on the font and size, which are selectable in its Toolbar. Depending on your monitor, driver, and Windows display settings, some font/size combinations result in an ugly, useless, and/or bizarre presentation. The first time you start K95G, it picks a font and size for you, and the choice can't always be optimal. Choose a font and size that gives good results on your monitor. K95G remembers your choices and, absent instructions to the contrary, uses them next you start it.

INITIALIZATION AND CUSTOMIZATION FILES

[ Next ] [ Previous ] [ Top ]

How do I edit my K95 customization file?
Kermit 95 1.1.20 and earlier had all their files in one simple directory tree, typically C:\K95, which made it very easy to find your K95 initialization and customization files. Subsequent versions changed to the complex structure mandated by newer versions of Windows, in which the program files go in one place, program data for all users goes in another, and program data for each user goes in yet another. The names of these places vary from one Windows version to another, and from one country to another.

When people ask how to accomplish a certain customization, we give them a command (or list of commands) to do it. The next question is invariably, "where do I put these commands?" The answer is, "If you want them in effect for all your K95 sessions, put them in your customization file," meaning: edit your K95CUSTOM.INI file to include the desired commands. In early K95 versions, you could find this file in the same directory as K95 itself. But now where is it??? This is thoroughly explained in in the K95 Read Me document, but here is a simple recipe for how to edit your K95CUSTOM.INI file, wherever it is, in K95 1.1.21 or later. Start K95G or K95, then:

K-95> kcd appdata
K-95> run start notepad k95custom.ini

Remember, Kermit command files should be edited only by plain-text editors such as Notepad, DOS EDIT, or EMACS, not word processors like MS Word.

THE K95 DIALER

[ Next ] [ Previous ] [ Top ]

The Dialer is the graphical front end for Kermit 95. It is built using a portable GUI builder that creates versions for both Windows and OS/2.

Do I have to use the Dialer?
No. If you are comfortable typing commands (or creating command files, macros or scripts) for Kermit 95, you don't need to use the Dialer at all. The Dialer is recommended to newcomers to Kermit, since it makes it easy to set up any kind of connection. Some Kermit veterans prefer to use Kermit 95 directly.

What happened to the nice entry notebooks that we had in K95 1.1?
All the new pages (SSH, GUI, FTP, etc) made the notebook too big for Windows 9x/ME. For a detailed explanation CLICK HERE.

Why does it take a few seconds for the Dialer to start?
Because:
  • The portable GUI builder has some extra overhead (the Dialer runs on OS/2 too).
  • The Dialer makes backup copies of its database files for your protection every time it starts.

How do I get rid of unwanted Dialer entries?
You can not remove an individual predefined entry with the Remove button. However you can hide all the predefined entries by going into the Dialer's Options menu, selecting View, and then unchecking "Pre-defined". If you want to keep some of the predefined entries, just edit the ones you want to keep; this makes copies of them that are still visible even if you uncheck Pre-Defined. NOTE: This question is largely irrelevant in K95 1.1.21 and later, in which all the old and mostly defunct predefined entries (hundreds of them) were retired.

What are all the .DAT files?
Most of .DAT files in the Kermit 95 directory are used by the K95 Dialer:

DIALER.DAT
Contains the GUI screen definitions for the Dialer. It must not be renamed or deleted. A particular version of K95DIAL.EXE is keyed to a particular version of the DIALER.DAT file.

DIALINF.DAT
Contains the preloaded Dialer entries. This file is "read-only", primarily because it contains templates that are used for constructing other entries. (NOTE: In version 1.1.20 and earlier, this file contained hundreds of BBS and Telnet sites that by now are defunct; these have been removed to reduce the clutter -- if you need them send us e-mail.

DIALORG.DAT
(If any) Contains the preloaded Dialer entries for your organization. This file can be created by organizations that have K95 bulk or site licenses. Like DIALINF.DAT, this file is read-only.

DIALUSR.DAT
Contains (a) entries that you have added; (b) preloaded entries that you have edited; and (c) the information from your File and Options pages.

The remaining .DAT files are associated with the GUI setup and registration programs.

Why is my K95CUSTOM.INI ignored when I launch a connection from the Dialer?
Your K95.INI and K95CUSTOM.INI files are indeed executed, but the commands that come from the Dialer are executed after them, so when there is a conflict the Dialer settings override the INI-file settings. Make sure your Dialing Options menu notebook contains the desired settings, and also the notebook pages for the entries in question. The primary purpose of the INI files in K-95 is for when you start K95.EXE without the Dialer (or for key or macro definitions that you always want to be in effect and that don't conflict with settings made in the Dialer). As a last resort, you can enter commands into the Login Script text box in the Dialer entry -- the commands in this box are executed last.

STARTING, STOPPING, AND PASSING ARGUMENTS TO KERMIT 95

[ Next ] [ Previous ] [ Top ]

Why does Kermit 95 take a few seconds to start?
K95.EXE can take a while to start because:
  • K95 performs a census of all the DLLs it needs to use -- TAPI, Kerberos, OpenSSL, Zmodem -- and then adapts itself automatically when any of the DLLs or required entry points within them are missing, rather than just crashing like most other applications would do.
  • One user found that a 2.5-minute startup delay was due to a new Bluetooth installation and found that "If I stop my Bluetooth device, Kermit immediately 'boots' when started. After Kermit starts, I enable Bluetooth again and all is okay. I'm not sure why this is a problem except, I think, Bluetooth wants to own all unused ports." Later this was confirmed: "I removed my HP / Widcomm Bluetooth stack and replaced it with a Toshiba Bluetooth stack. I no longer have the problem of Kermit having a several minute delay to 'boot' unless Bluetooth is temporarily disabled. (I do have other problems with this new stack but, at least, it doesn't interfere with Kermit.)"
  • If a SET PORT TAPI (Microsoft Telephony) or other TAPI-related command appears in your K95CUSTOM.INI, TAPI must be initialized, which takes some time, especially if your modem is turned off or not connected.
  • An incorrect DNS configuration on the PC might cause the Kerberos DLL to take a long time trying to initialize itself.
  • The initialization and customization file(s) are read unless you have started K95 with the "-Y" command-line option.
  • Lack of physical memory might require that Windows 95 allocate swap space on the hard disk.

If you use K95 to make different types of connections, not just TAPI, take the TAPI-related commands out of your K95CUSTOM.INI file.

The following command-line options can be used to tell K95 not to load certain DLLs; this can speed startup:

  • -# 2: Do not load Network DLLs (such as Winsock).
  • -# 4: Do not load TAPI DLLs (for dialing out).
  • -# 8: Do not load Security DLLs (for Kerberos, OpenSSL, encryption).
  • -# 16: Do not load XYZMODEM DLLs (for XYZMODEM file transfer).

These numbers are powers of 2, representing single bits, and can be added to form a "bit mask" of options. Thus "-# 30" means don't load any of the above. On a 90 MHz PC, starting K95 1.1.16 with "-# 30" took about 1 second; without it about 4 seconds. You can omit the network DLLs if you will not be making network connections. You can omit TAPI if (a) you will not be making dialout connections, or (b) you will be using COM1 or COM2 directly rather than the TAPI modem device (i.e. the Control Panel name for the modem). You can omit Kerberos DLLs if you will not be making secure connections with Kerberos authentication. You can omit the XYZMODEM DLLs if you will not be transferring files with XMODEM, YMODEM, or ZMODEM.

Kermit 95 won't start at all!
Sometimes it seems that Kermit 95 "just sits there" when you start it for the first time after installing it, showing a blank black screen, or a toolbar and menu bar with nothing below it. In some cases this happens only on unprivileged user accounts, whereas K95 starts normally on accounts with Administrator privilege. This problem is frequently reported when running Kermit 95 on a remote desktop via Windows Terminal Services. Diagnosis: Part of Kermit 95's startup sequence is to query Microsoft Telephony (TAPI) to obtain a list of installed modems, as well as area and country codes and other dialing information. If the machine's Phone and Modem options in the Control Panel have not been set and the user does not the necessary privileges to set them (as is usually the case with Terminal Server), then Kermit 95 will hang for almost two minutes on startup while the Telephony API attempts to initialize its state. This is true on any machine, not just Terminal Server. Cure: When installing Kermit 95, the Administrator should ensure the machine's Phone and Modem Control Panel settings are filled in appropriately. About Terminal Services, one user also comments, "I used the setup launch icon from the kermit setup directory while logged in as Administrator [but] apparantly, when using Terminal Services, most (if not all) applications need to be installed using Add/Remove Software, otherwise it misses some setting which I have no clue about."

K95 won't start because "Cannot create crypto provider service"
The PROV_RSA_FULL Cryptographic Service Provider, which is one of the sources of randomness used to secure SSL/TLS and SSH, is either not installed on your machine (when it should be) or is inaccessible to your account. If you get this message, first make sure you have the current release of K95; if not, upgrade; if so, contact us.

Why does it take K95 several seconds to exit?
K95.EXE might take a while to exit because:

  • K95 is careful to release all resources that it allocates.
  • K95 is careful to close connections properly instead of just shutting down the subsystems (TAPI, Winsock, ...)

It can take Windows 20-30 seconds to release the TAPI device if your modem is disconnected or powered off. When it is connected and turned on, it still can take 5-10 seconds. That's Windows, not Kermit, being slow. If you can use the SET PORT COMx / SET MODEM TYPE xxx interface instead of the TAPI one (which is possible only for standard COM ports, not Winmodems, etc), opening and closing of modems will be faster.

How can I make K95 start in a given screen location?
The GUI version (K95G) accepts --xpos: and --xpos: command-line options. Arguments are in pixels and so depend on your PC's graphics resolution. You can put these in a .bat file or a shortcut. The GUI version also has a SET GUI WINDOW POSITION x y command to let you specify the screen location in a script. You can also specify the startup location for any connection in your Dialer database, on each entry's GUI Settings page.

How can I run a K95 script with arguments?
From a command window or Batch file:

  k95 scriptfilename = arg1 arg2 arg3 ... 

The equal sign (=) is necessary. arg1 becomes \%1; arg2 becomes \%2, etc. Note that you can not pass arguments on the command line if you invoke the script directly:

  scriptfilename.KSC arg1 arg2 arg3 ... 
  scriptfilename.KSC = arg1 arg2 arg3 ... 

Neither one of these forms works because Windows does not pass the arguments along when the application is invoked through the filename extension of a "data file" (.KSC in this case).

Specify the full pathname of K95 (or K95G) if it is not in the PATH. Specify the full pathname of the script file if it is not in the current directory.

In a shortcut to K95 or K95G you can put the script file name and arguments after the Kermit 95 executable name in the Target box of the Shortcut properties.

In a shortcut to a Kermit 95 script file, you can put the arguments to the script after the script file name in the Target box of the Shortcut properties.

From the Kermit 95 prompt, or within a Kermit 95 script, you can use the TAKE command, followed by the script file name, followed by its arguments.

How can I mix K95 arguments and script arguments on the command line?
Give the script file name as the first command-line argument. Then the K95 command-line arguments. Then an equal sign (=), and finally the arguments for the script. Example:

  k95g oofa.ksc --xpos:500 --ypos:500 = "This is script arg 1" scriptarg2

How can I run a K95 script by clicking on a URL?
Just make sure the script file name ends in ".ksc". Then use a URL (ftp:, http:, file:, whatever) that points to the script. Examples:

  http://www.columbia.edu/kermit/helper.ksc
  ftp://kermit.columbia.edu/kermit/scripts/ckermit/helper.ksc

How can I start K95 minimized?
You can do this in a Shortcut -- edit the properties and Choose Minimized (Console version only, not GUI). You can also start the Console version minimized with the Windows command START /MIN. This is useful for running Kermit scripts that don't need to interact with the user:

  @start /w /min "C:\Program Files\Kermit 95 2.1\k95.exe" scriptname = args...

K95 2.1.3 and later also have a --minimized command-line option (--maximized too).

Can I run K95 in a shell window of Windows EMACS?
Yes. You have to use the Console version (K95.EXE, not K95G.EXE). Start it like this (96 = 32 + 64, the codes for "use standard input" and "use standard output"):

  k95 -# 96

You can use it to make any kind of connection that you could make from a regular window: Telnet, SSH, Dialout, FTP, etc, and you can transfer files over the connection in the normal way.

The only fly in the ointment is that your keystrokes are read by EMACS, not K95, and EMACS intercepts Alt keys, F keys, and all Control characters, and furthermore, doesn't pass your keystrokes to Kermit until after you press the Enter key, so command-line editing (e.g. Ctrl-U), completion (Esc or Tab), ?-help, etc, don't work as they do when K95 has "direct access" to the keyboard. Escaping back from CONNECT mode is a bit tricky too; you have to type:

  Ctrl-Q Ctrl-] c CR

That's Ctrl-Q followed by Ctrl-Rightbracket, then the letter C, then press the Enter key. In fact, every control character is intercepted by EMACS, so to pass it through to Kermit you have to quote it with Ctrl-Q, and you probably also have to hit Enter afterwards.

And of course, when K95 is using stdio, there is no terminal emulation, so you can't (for example) run EMACS in your CONNECT session to the host :-)

But on the plus side, your CONNECT session is an EMACS buffer, so you can move around in it, edit it, etc, with regular EMACS commands.

 

SERIAL CONNECTIONS, MODEMS, AND DIALING

[ Next ] [ Previous ] [ Top ]

The Two Ways to Access a Serial Port or Modem
DOS veterans are accustomed to addressing serial ports (and modems through them) as COM1, COM2, etc, and to some extent Windows supports this model, at least when the PC actually has a real serial port. Increasingly, however, serial ports are becoming more abstractions than actual hardware, and Windows' DOS-like COM-port driver tends not to work with them: Winmodems, USB ports or modems, etc. The native Windows model for accessing serial ports and modems is called TAPI (Telecommunications Application Program Interface). You should be able to refer to any Windows serial port or modem through its Control Panel name. All TAPI devices are listed in the Modems tab of the Phone and Modem Options folder of the Windows Control Panel. A TAPI device is referred to in Kermit 95 by the name listed there, but with all spaces replaced by underscores.

Kermit 95 lets you use either the DOS-like interface or the TAPI interface. The rule of thumb is: if one doesn't work, try the other. Example:

DOS-Like Method TAPI Method
set modem type usrobotics  
set port com1
set speed 57600
dial 18007654321
set port tapi Courier_V.Everything_EXT_PnP_(V90-x2)
set speed 57600
dial 18007654321

If you have only one TAPI device, that is the default device name for the SET PORT TAPI command; in that case you don't have to spell out the device name, you can just use:

set port tapi

For more about TAPI, consult the document TAPI - Microsoft Telephony included with the Kermit 95:

Help→Kermit 95 Manual→TAPI Command Reference

plus the other relevant items in this section, especially the next two:

How do I connect Kermit 95 to another device that's not a modem?
Such as router, a microcontroller, some piece of medical or factory-floor equipment:

  1. You will need the appropriate cable, with the right connector on each end (9-pin or 25-pin or whatever), the right gender (male or female), and with various wires crossed, at minimum Receive and Transmit, rather than straight through. This is called a NULL MODEM cable, in contrast to modem cable, which is used to connect a computer or terminal to a modem, in which all the wires are straight through. Presumably the maker of the device will provide information about the required cable. If you can't get a null modem cable, you can use one or two modem cables plus a Modem Eliminator (also called a Null Modem Adapter) of the appropriate shape and genders. CLICK HERE to read more about null modem cables and modem eliminators.

  2. Connect the PC to the device with the null modem cable.

  3. Start K95G.EXE and give it the following commands:

    set port com1           ; Or COM2 or whatever the port is
    set carrier-watch off   ; Assume there is no carrier signal
    set flow none           ; Assume there is no flow control
    set speed 9600          ; Or whatever the speed has to be
    connect                 ; Begin terminal emulation
    

If the "set port" command gets an error messags, then read the next sections. Otherwise now you're in the (usually blue) "terminal screen". If you press the Enter key, you should see an intelligible response from the device -- a login or other prompt, a menu, or somesuch. If not:

  • Maybe the PC port your cable is plugged in to is not the one you think it is. If you tried COM1, try COM2, and vice versa.
  • Maybe the speed is wrong. Try different speeds: 1200, 2400, 4800, 9600, 19200, 38400, 57600.
  • Maybe the port on the device is not configured for interaction. Check the documentation for the device.
  • Maybe the cable is not appropriate, or is loose, or has broken or missing wires.

There are many tools and techniques you can use for troubleshooting -- breakout boxes, loopback connectors, data scopes, etc -- but that's beyond the scope of this document. See, for example, Appendix II of Using C-Kermit.

Can I Use Kermit to Connect Two PCs by Their Serial Ports?
Yes. You need a null modem cable, as described in the previous item. Then start Kermit 95 on each PC, give an appropriate SET PORT command to each copy of K95, set each port to the the same speed, and give a CONNECT command to each. At this point, whatever you type on one PC's keyboard should appear on the other PC's screen. This demonstrates a successful connection. At this point you can (for example) put one copy in server mode, and give client commands to the other copy, or write a script for the client, in which it gives commands to the server, whatever you want. (Read the next few items about SET PORT commands.)

SET PORT COM1 doesn't work!
There are several possibilities. The most obvious one is that you have plugged your cable into (say) COM2 but you have told Kermit to use (say) COM1. The COM ports are not labeled on some PCs, so trial and error will be necessary. Try SET PORT COM1, and if that doesn't work, SET PORT COM2, SET PORT COM3, and so on. You can also look in the Control Panel to see what COM ports are actually defined on your PC (the dialog may vary from one Windows version to another):

Control PanelSystemHardware tabDevice ManagerPorts

Another possibility is that some other process has the desired port open already; Windows won't let Kermit open it at the same time.

Let's assume you have a cable connecting your serial port to another computer or to a modem, and that is is the appropriate kind of cable (null modem or modem, respectively), and no other process is using it. If the SET PORT command identifies the physical port you are using, then SHOW COMM should say that at least one of the following modem signals is "On": DSR, CTS, or CD. Example:

[C:\tmp\] K-95> set port 1
[C:\tmp\] K-95> show comm

Communications Parameters:
 Port: com1, speed: 1200, mode: local, modem: generic
 Parity: none, stop-bits: (default) (8N1)
 Duplex: full, flow: rts/cts, handshake: none
 Carrier-watch: auto, close-on-disconnect: off
 Terminal bytesize: 8, escape character: 29 (^])
 Priority: regular

 Carrier Detect      (CD):  Off
 Dataset Ready       (DSR): On
 Clear To Send       (CTS): On
 Ring Indicator      (RI):  Off
 Data Terminal Ready (DTR): (unknown)
 Request To Send     (RTS): (unknown)
[C:\tmp\] K-95>

In that case, you probably have the correct port and now you can start experimenting with the speed, flow control, and parity. If they are all Off or Unknown, you probably have the wrong port or the wrong kind of cable (modem instead of null modem, or vice versa). HINTS:

  1. If CD is Off, you have to tell Kermit to SET CARRIER-WATCH OFF before you can use the connection (see manual for explanation).

  2. If CTS is Off, you have to tell Kermit to SET FLOW NONE or SET FLOW XON/XOFF, otherwise communication will not be possible (see manual).

  3. When changing COM ports, you have to re-issue your SET SPEED, SET FLOW, and SET CARRIER-WATCH commands because these settings are particular to each port. Give the SET PORT command first, then the settings that go with that port, e.g.:

    SET PORT COM2
    SET SPEED 9600
    SET FLOW NONE
    SET CARRIER-WATCH OFF
    CONNECT

A second possibility is that the port on the other computer is not configured to do anything. For example, if it's a Unix computer, you have to configure it for logins, or else you won't see anything when you connect to it. See previous item in this FAQ.

A third possibility is that the port is a Windows-only device that can't be accessed through the COM port drivers because the underlying hardware (if any) is not the same as a real COM port, so you have to use the native Windows software interface, called TAPI, rather than the direct device ("DOS") interface to access it. So, for example, rather than:

SET PORT COM1

you might have to use:

SET PORT TAPI Communications_cable_betwee_two_computers

Look in the Control Panel's Modems folder and see what's there (in Windows XP, it's the Phones and Modems folder, and then you have to choose the Modems tab). Look at the list of modems. Do you see "Communications cable between two computers"? If so, try the SET PORT TAPI command shown just above. If not:

  1. Click the Add button.
  2. When the Wizard appears, click the check box that says "Don't detect my modem..."
  3. Click Next.
  4. Under (Standard Modem Types) you should see: "Communications cable between two computers" listed; select this and then click Next.
  5. Choose the COM port you want to use (such as COM1), then click Next.
  6. Once the Wizard completes, click Finish, you should see the new item.
  7. Close out of the Phone and Modem options, close Control Panel.

Finally, if you have more than two COM ports, or a serial mouse, or any other devices that use IRQ 3 or 4, you might also have an interrupt conflict. Solving PC interrupt conflicts is WAY beyond the scope of this document.

Kermit vs TAPI Dialing
There are two ways to dial TAPI modems. The default method is to have the Windows Telephony (TAPI) subsystem configure and dial the modem (SET TAPI MODEM-DIALING ON). If you want Kermit to dial the modem itself (or you want to interact with the modem by hand in CONNECT mode) you must tell Kermit to SET TAPI MODEM-DIALING OFF before you open the port:

SET TAPI MODEM-DIALING OFF
SET PORT TAPI device-name
SET SPEED 57600                   ; Or other desired speed
DIAL number

Or if you want to dial the number by hand:

SET TAPI MODEM-DIALING ON
SET CARRIER-WATCH OFF
SET PORT TAPI device-name
SET SPEED 57600                   ; Or other desired speed
CONNECT                           ; Enter terminal screen
AT                                ; Now maybe you can type modem commands
OK

By-hand dialing is not guaranteed to work with TAPI modems. Who knows, maybe the modem and its driver use some secret dialing protocol instead of AT commands.

For a variety of reasons, one dialing method might work when another one doesn't. If TAPI dialing doesn't work, try Kermit dialing. And vice versa.

Will K95 Let My PC Accept Incoming Calls?
Normally you can't dial and log in to Windows and get a text-based shell like you can do with VMS, Unix, and other conventional operating systems -- Windows was not designed to allow that. But you can still set up Kermit on Windows to accept incoming calls and provide a file-transfer and management service. There are various ways to do this, of which the most user-friendly, called host mode, is described HERE and, in more detail, in Chapter 9 of your Kermit 95 manual (HelpKermit 95 ManualChapter 9: Host Mode).

You can also write a Kermit script that awaits and handles incoming calls. Here's a simple example:

set port tapi             ; Or "set port com1", "set modem type usr", etc
set speed 57600           ; Or other speed
set flow rts/cts          ; Always use hardware flow control if available
set carrier-watch auto    ; (see below)
disable cd                ; (if desired) Don't let client change to other directories
while true {              ; Loop to wait for any number of calls
    cd some-directory     ; Change to desired directory
    answer 0              ; Wait for call to come in
    if success server     ; If answered successfully, enter server mode
}

SET CARRIER-WATCH AUTO means that Kermit does not require a carrier signal from the modem while waiting for a call to come in, but then requires the carrier signal after the call is answered so it can detect a disconnection and automatically exit from server mode and go back to await another call. Meanwhile, the ANSWER command automatically hangs up the phone and resets the modem before putting the modem into answer mode. Obviously many variations and refinements are possible; for example, you can DISABLE SEND to allow only uploads, or DISABLE RECEIVE to allow only downloads.

Suppose the script shown above is named ANSWER.KSC. The ".KSC" filetype associates it automatically with Kermit 95, so you can "run" it the same way you would run any program -- double-click on its icon or shortcut, put it in your Startup folder, put it in the System Startup folder, type its pathname at a CMD prompt, add it to your Start menu, etc.

Should I Use Host Mode or an ANSWER Script?
Host Mode lets people dial up your PC and interact with a menu, whereas the ANSWER script above is strictly for file transfer, and suitable for automated transfers. The ANSWER script requires no authentication, whereas host mode requires you to set up a multiple-user pseudo-user-ID/password system, in which each user must give a username and password to get the menu. The tradeoffs -- simple ANSWER script versus Host Mode -- are many, but remember, both are just scripts. You can change them to do whatever you want, or write your own. The basic mechanism for accepting incoming calls is shown in the ANSWER script above; whatever else you want to do is up to you.

Can I Always Have Host Mode (or an ANSWER Script) Running?
The simplest way to do this is to put the script in the System Startup folder, e.g. HOSTMDM.KSC or ANSWER.KSC. Make sure the script does not require interaction from the PC keyboard. If you don't want the Kermit window showing you can include the appropriate command-line option for that, as described HERE, e.g.:

"C:\Program Files\Kermit 95 2.1\k95g.exe" "path of script" --minimize

On Windows NT, 2000, and XP, you can make any application into a Service. Go to the Microsoft Download Center and search for the Resource Kit that goes with your version of Windows. Within the kit you will find a program called SRVANY.EXE and a Microsoft Word documentation file call SRVANY.DOC. Follow the directions provided in SRVANY.DOC for installing a non-service as a service. If you want to run a Kermit script as a service, you have to put the scriptfile pathname as the first argument to the pathname of the Kermit 95 executable (as shown above) in the service setup dialog. Also include "-# 128" (Do not terminate process in response to Session Logoff, "help options -#"). Example:

path\k95g.exe scriptfilepathname -# 128 [ = any parameters for script... ]

My connection is horrible, my scripts don't work
We often get complaints that a dialup script that worked correctly on one PC fails miserably when run on another PC. The answer is usually that the new PC does not have a real and properly functioning modem; instead it has a cheap simulated modem, or "Winmodem", explained HERE. Serial-port / modem communications can't be expected to work well unless your PC is equipped with a reliable internal modem, or a true buffered serial port (16550A UART) and a reputable external modem. "But" (you say) "Internet connections with the same modem work fine!" That's an illusion. The modem is getting gobs of errors but you don't see them because TCP/IP hides them from you; the only effect you see is slowness caused by repeated retransmissions.

Problems with Winmodems surface most frequently during script execution (as opposed to online interactive sessions) because OUTPUT commands can overdrive the Winmodem. Winmodems don't expect fast output from the PC but typing (at 10cps or less) doesn't bother them. You can work around this problem by adding a SET OUTPUT PACING command to your script to slow down the rate at which OUTPUT sends characters to the modem.

My connection fails with "ttsetspd failed"
When you make a connection with a modem, the modem reports the connection speed with a message like "CONNECT 31000". Usually this is the speed between the two modems, not the speed between your modem and your PC. In some cases, however, it can be the speed between your modem and your PC, depending on your modem make and model and configuration. In that case, Kermit has to change its interface speed to match the one reported by the modem. The classic example is the Hayes 2400 SmartModem -- if you dial it at 2400 bps, but the other modem supports only 1200 bps, your modem has to drop its speed down to match. This was many years ago, before the days of hardware flow control and "speed buffering". Nevertheless, Kermit has a setting to provide for this behavior, since some people still need it. The setting is:

set modem speed-matching { on, off }

SPEED-MATCHING ON means that Kermit should change its interface speed to match what the modem reports. Of course this setting is OFF by default for compatibility with modern modems.

The problem happens when Kermit's SPEED-MATCHING setting in ON but the modem is not really changing its interface speed. Then Kermit tries to change its interface speed to the one reported in the modem's CONNECT message. If it succeeds, you won't have any useful communication because the two interfaces are set to different speeds. If it fails ("ttsspd failed") it's because the reported speed (e.g. 31000) is not a legal interface speed (you can get a list of legal interface by typing "set speed ?" at the K-95> prompt).

The "ttsspd failed" problem happens most commonly when you SET PORT TAPI to use Microsoft's built-in modem database, but the database erroneously calls for speed matching. The solution is to tell Kermit to SET MODEM SPEED-MATCHING OFF after you have selected the TAPI modem:

set port tapi
set modem speed-matching off

Can K95 dial my ISP?
Because of Kermit 95's flexibility and programmability, many people ask us if there is a way that Kermit 95 can be used to make Dial Up Networking connections, in place of the standard Windows way. A variation on this question is: since Kermit can make modem calls, can I use it to make dialed connections to FTP servers? Unfortunately, the answer is no; Microsoft does not provide a way to let an application make a connection to a PPP or SLIP or FTP server (or Microsoft Windows Terminal Server) and then turn the connection over to the TCP/IP (or other network protocol) stack. The only way in Windows 95/98/ME or NT/2000/XP to make a dialup networking connection is with the built-in Dialup Networking dialer or (in Windows NT) RAS (see notes about RAS HERE). OS/2, on the other hand, allows this and Kermit 95 for OS/2 has this feature for both PPP and SLIP.

How do I use K95 with Cincinnati press brake machines?
We have a whole FAQ for just this topic; CLICK HERE to read it.

How can I make credit-card calls?
This applies when you have defined a dialing location in TAPI that includes a credit card number.

If you are using the K95 Dialer:

  1. In the Dialer's main menu, choose Options.
  2. Choose Dialing.
  3. Make sure that both TAPI Modem Dialing and TAPI Phone Number Conversions are checked.

Then when placing a call, make sure:

  • Your current modem is a TAPI device (not COM1, COM2, etc).
  • Your current location is the one with the credit card information.
  • The phone number is portable format, e.g. +1 (212) 7654321.

If the phone number is not in portable format, neither Kermit nor TAPI will be able to apply any prefixes or suffixes, including the credit card number. (This process is referred to as "Phone number conversions" in the menus.)

To create a new TAPI Location that uses a Credit Card:

  • In the K95 Dialer choose "TAPI->Dialing Properties..." to display the dialog box.
  • Click on the "New" button to create a new entry.
  • Fill in the appropriate "area code" and numbers to use for getting an external line
  • Check the "Dial using Calling Card" box and then press "Change"
  • Select the appropriate Calling Card company and service from the list.
  • Fill in the Calling Card number.
  • Close all the dialogs to return to the K95 Dialer.
  • To make the new location the active location, use the "Location->Current->" list to check the new location.

Now when you dial, these dialing rules -- including the calling card number -- will be used.

Can K95 make connections through the parallel port?
In Windows NT, no; in Windows 95, 98, ME, 2000, and XP, yes. In Windows NT, it is not possible to "set port lpt1" -- i.e. to use a parallel port as a communications device, because bidirectional parallel ports are not supported by the NT drivers. But they are in Windows 95, 98, ME, 2000, and XP, which include a COM-to-LPT interface. So in those Windows versions, you can:

  SET PORT LPT1

(or other parallel-port device). Only DOS names are allowed. Parallel ports (like Serial ports) are not automatically installed as TAPI devices since they are not modems. If you want a parallel port installed as TAPI device you must manually install it as a "Direct Serial Connection" device.

Can K95 use dialout modems on Telnet terminal servers?
Yes, this has always been possible. The command sequence is:

  set host hostname port
  set modem type name
  ...
  dial phone-number

However, since the modem is at the other end of a Telnet connection, you would not normally be able to control its serial-port settings. But if the terminal server supports RFC2217 Telnet COM Port Control K95 can do everything it could do with a local PC COM port: set the serial port interface speed and flow control method, sense modem signals, control the DTR signal, send BREAK, etc.

Can K95 be used with ADSL modems?
ADSL modems are generally used to make Internet connections. Kermit 95 can be used as a Telnet, SSH, Rlogin, FTP, or HTTP client over any Internet connection: SLIP, PPP, ADSL, DSL, Ethernet, you name it.

Does K95 work with Novell NASI modem sharing?
K95 works with any software that provides a TAPI interface or a COM port interface, and should work with any software that exports a Win32 device name. According to the Novell Support Website, http://support.novell.com/ on 24 July 1998, "In order for NT to access the modem pool, WIN2NCS version 2.11 must be used. . . . Windows NT is now supported. However, there is still an issue with the interaction of Win2NCS with Microsoft's TAPI which may cause problems with Host mode on some Remote Control applications. This is currently under investigation." (The download link provided for WIN2NCS no longer works.)

One user reported trouble using NASI until they selected "use hardware flow control always" in the NASI Workstation Global Settings configuration dialog.

Can K95 be used with ISDN?
ISDN (Integrated Services Digital Network) is a digital alternative of the analog telephone system. CLICK HERE for an ISDN tutorial. Kermit 95 can be used with ISDN in the following ways:

  • Kermit 95 works with any ISDN connection that provides TCP/IP services. In this case, K95 is simply a Telnet or Rlogin client, as it would be on any other kind of TCP/IP connection.

  • Kermit 95 works with any ISDN device that provides a Windows Telephony Service Provider Interface (TSPI). In this case, Kermit can place ISDN calls using TAPI. Example: the AVM Fritz!Card with CapiPort driver, or the Teles X.75 Modem TAPI device for Windows 95.

  • Kermit 95 works with any ISDN device that provides a 32-bit COM-port emulator, such as the version of Teles CAPI for Windows NT.

Kermit 95 does not include a direct CAPI interface.

NETWORK CONNECTIONS

[ Next ] [ Previous ] [ Top ]

Will K95 let my PC accept incoming network connections?
Yes. The preferred method for this in Windows NT, 2000, and XP is to install K95 as an Internet Kermit Service, explained HERE. You can also use host mode, which can be used in Windows 95/98/ME as well as NT/2000/XP, and is explained HERE. You can also execute a command such as:

set host /server * 3000

to tell K95 to wait for an incoming TCP/IP connection on port 3000 (or other port) and then automatically enter server mode when the connection comes in.

How do I tell which network interface to use?
On PCs that have more than one network interface (e.g. one for DSL to the outside world, another for a local network) you can force K95 to use a particular one with the SET TCP ADDRESS command, specifying the address that is associated with the desired interface.

In the Dialer on TCP/IP Settings page you will find a checkbox labeled "Use Default IP Address on Local Machine". If you uncheck the box, you will be allowed to specified an address which Kermit 95 should bind to when establishing connections.

Under almost all circumstances there will be no reason for you to use this. The only reason you should use this is if you have multiple network adapters which each can route to the destination address. For instance, you have a direct path and an alternate path over a VPN connection and the VPN software has not properly configured the routing tables to make the VPN be the default. Then you could enter the IP address assigned to the VPN and Kermit 95 will ensure that it uses the VPN for outbound packets. (However, Kermit 95 cannot force inbound packets to be delivered via the VPN.)

Kermit 95 Won't Connect to Certain TCP Ports
Kermit does not disallow connection to any TCP port. If the connection is failing (but connections to other ports succeed) it is being blocked by something outside Kermit. This could be a firewall anywhere along the path from your PC to the ultimate destination. In your own PC, you might find your Internet Connection Firewall or antivirus product (such as McAfee ViruScan Enterprise) is blocking connections to certain ports, such as 25, which is not unreasonable in these times of e-mail viruses.

Can Kermit 95 dial my PPP (or SLIP or ADSL) connection?
In OS/2: yes. In Windows, no. Windows provides no mechanism for a user application to turn a modem connection over to the Windows TCP/IP stack. This question is answered in more detail in the previous section.

Can Kermit 95 be the Telnet helper for my Web Browser?
Yes. This gives you many advantages over the regular Telnet program. Just to name a few: you can transfer files while in your Telnet session; you have more and better terminal emulations to choose from; and you have colors, scrollback, key mapping, and local printing. Simply point your Browser at the TELNET.EXE program in the Kermit 95 directory instead of at regular system Telnet.

Why does Dialup networking pop up whenever I make a Telnet connection?
This is not a Kermit problem -- the same thing would happen with any Internet application, such as Microsoft Telnet or FTP. To fix: open your Windows 95 Dial Up Networking folder (should be in your "My Computer" folder), go to Connections .. Settings .. General and choose "Don't prompt to use Dial-Up Networking".

Why does my Dialup Networking Connection freeze occasionally?
Most likely because you have "Allow OS to power down the NIC to save power" checked in the Control Panel.

How can I force the Telnet server to issue a login prompt?
When K-95 is used to Telnet to a host that whose Telnet server supports the TELNET NEW-ENVIRONMENT option or certain other options, K-95 sends your Windows user ID automatically, unless you have done something to prevent this from happening. In this case, the host does not prompt you for a user ID, but just a password.

If your Windows user ID is the same as your ID on the host you are Telneting to, you only need to supply your password on the host, since it already has your user ID.

However, if they are not the same, or if you want to ensure predictable behavior, e.g. in a script program, you can instruct K-95 not to send your user ID with the command:

  set login userid

(without a user ID). Then the host will give its normal login: or Username: prompt. Put this command in your K95CUSTOM.INI file or your script file, depending on where/when you want it to apply.

How do I make secure Internet connections?
Kermit 95 can make secure TCP/IP connections using SSH v1 or v2 (K95 1.1.21 and later), SSL, TLS, Kerberos 4, Kerberos 5, and Secure Remote Password (SRP) (CLICK HERE for information about secure Telnet servers). The secure connection methods are documented in the Kermit 95 Manual and in several supplementary documents. Secure connections are usually configured by network administrators rather than end users; consult your network administrator to see what forms of security are available at your site and to find out how to configure Kermit 95 to use them if they are among the methods supported by K95. If you are the network administrator and you need assistance, send email to [email protected]. CLICK HERE for details about Kermit's security methods.

Why doesn't K95 support SOCKS5?
Although SOCKS5 is an open protocol (RFC 1928), the SOCKS5 reference implementation must be licensed for use, which would drive the cost, and therefore the price, of K95 up considerably. To add SOCKS5 to K95 would require a new implementation be written from scratch, something we have not had time to do. If you're a programmer and you want SOCKS5 added to K95, feel free to do the work (by adding it to C-Kermit; K95 shares the same network code); if you're interested in doing this, send us e-mail.

Can I make Kerberized Telnet connections through a Network Address Translator (NAT)?
An addressless ticket is required. But the version of MIT Kerberos for Windows which ships with Kermit 95 does not support addressless tickets in the Leash ticket manager. Future upgrades of Kermit 95 (when available) will include versions of MIT Kerberos for Windows which do. The first version of KfW to support addressless tickets is 2.5. You can download a zip file of the KfW binaries from http://web.mit.edu/kerberos/. The MIT binaries must replace those installed in the Kermit 95 program directory.

Can I use Kerberized FTP through a NAT?
No, Kerberized FTP uses channel bindings. You cannot successfully use it over a NAT. This is a limitation of Kerberos protocol design.

Also see: The FTP Client FAQ and Integrating Kermit 95 with Other Applications.

TERMINAL EMULATION

[ Next ] [ Previous ] [ Top ]

Why Does My VT220 or VT320 Session Get Stuck?
Short answer: It's a conflict between the VT220/VT320 architecture, which is designed to work with character sets that follow the ISO standard structure, and Microsoft character sets found in emails and other text originating from Windows that violate that structure. When Kermit 95 seems to be hung, look in the status line in the bottom of the screen and you will see something like "DCS String" on the right. Kermit is waiting for the rest of the DCS string, which, if you are reading Microsoft-style text, will never come.

  • To clear this condition, use Alt-R to reset the terminal emulator.
  • To avoid it altogether, change Kermit's terminal character set from Latin-1 (ISO 8859-1) to CP1252.

Longer answer: In the modern age, in which all the hard-fought standards of past decades have flown out the Window, I've had to switch from Latin-1 as my normal character set to CP1252, in order to keep my terminal emulator from getting wedged hundreds of times a day by "smart quotes" and other atrocities stuffed into the C1 control area. Sad to say, ISO 8859-1 and the other ISO Latin alphabets are next to useless now in the terminal-host environment because of Microsoft code page pollution. (It's fine that companies have their own proprietary code pages, but these should not be used for interchange on the open network, but too bad, it's already happened; the Internet is full of this stuff, and to make matters worse, as often as not it's labeled as ISO-8859-x.)

This, in turn, makes the Kermit's emulation of DEC VT220 and VT320 terminals problematic, because they were designed to use the 8-bit C1 controls of ISO 6449 and hosts that know about these terminals can and sometimes do use those controls (VMS in particular).

This is especially unfortunate since K95's default terminal emulation is VT320. New users will often find their very first terminal session getting stuck or going crazy, which does not leave a very good first impression. Just remember what terminal emulation means: it means doing what a particular terminal would do. If you were using a real VT220 (or 320, 420, or 520) terminal in the same situation, it would become totally wedged.

To adapt Kermit 95 to the new way of the world, change the character set from Latin1 to CP1252 (or from any other Latin alphabet that you are using to the corresponding Windows Code Page). This, by the way, is something you could not do with a real VT terminal! To change K95's terminal character set to CP1252:

  • In the K95 GUI Toolbar, choose CP1252 in the character-set combo box; or:
  • At the K-95> command prompt, type the command SET TERMINAL CHARACTER-SET CP1252 (which may be abbreviated SET TERM CHAR CP1252); or:
  • Put this command in your K95CUSTOM.INI file; or:
  • Add this command to any connection scripts that might need it; or:
  • Choose CP1252 in the Character Set box of the Terminal page in the Dialer entry for each connection where it is necessary.

VMS poses a particular problem because it is perhaps unique among host platforms in actually using the standard 8-bit C1 control characters to control the terminal. You can tell VMS not to do this with the following DCL command:

$ SET TERM /NOEIGHT

This should inhibit VMS from sending 8-bit controls (in which case it sends the corresponding 7-bit two-character sequences, such as ESC P instead of DCS), but still allows the display of 8-bit text.

How Do I Find Out What K95's Current Keymap Is?
For some background on Kermit key mapping, see the K95 manual:

Toolbar → Help → Kermit 95 Manual → Contents → Using the Terminal Emulator → Key Mapping

Here is a complete and current list of Kermit's "keyboard verbs" for each terminal family:

http://www.columbia.edu/kermit/kverbs.html

Kverbs start with \K, followed by a descriptive name, like "\Kkp9", meaning "Send what the Numeric Keypad 9 key would send", or "\Kdecf07", "Send what what the DEC (VT220/320) F7 key would send". The first group of Kverbs in the table are strictly local in function, such as "\Kpaste", "\Kholdscrn", and the various local scrolling keys that allow you to move around in K95's scrollback buffer. Then come the Kverbs for each terminal family. In these lists, each Kverb is shown together with the actual terminal key to which it corresponds, for example, in the Wyse terminal section, "\Kwyreplace" corresponds to the Wyse terminal Replace key.

In Kermit 95, you can see what a particular key is mapped to as follows:

  1. First make sure K95 is set to emulate the desired type of terminal. You can make this selection on the K95 Toolbar (which also shows the current emulation).

  2. Use Alt-x (if necessary) to get to the K95 command screen (the command screen is shown above; it is usually white on black, with the K-95> prompt visible, as shown).

  3. At the K-95> prompt type:

    show key

    and then press the desired key or key combination.

To find out what all the key assignments are at once use:

save keymap k95keymap.ksc

Now the file k95keymap.ksc (in K95's current directory) contains the current key assignments (of course you could give this file any other name you want, and you can put it in any directory you want). You can use this file in conjunction with the Kverbs table to find out which PC key corresponds to which terminal key. Once you know how the keys are mapped, you can test them against your application and satisfy yourself that they work. Then, if you wish, you can remap them to suit your preferences, simply by editing the k95keymap.ksc file using a plain-text editor such as Notepad. Read the next item for instructions on loading a keymap.

How Do I Load a Keymap File?
A key map file is like any other Kermit command file; it's just a file containing commands for Kermit. You have to tell Kermit, somehow, to execute the commands from that file. There are many ways to do this, including:

  • At the K-95> prompt, give a TAKE command for the file, e.g.:

    K-95> take k95keymap.ksc
    

    If the file is not in K-95's current directory, you have to include the relative or full pathname, sufficient to let K-95 know where it is. HINT: use "forward slash" as the directory separator to avoid quoting problems, and if the file specification includes any spaces, enclose it in doublequotes:

    K-95> take "C:/Documents and Settings/fdc/Application Data/Kermit 95/k95keymap.ksc"
    

  • If you always want the key map to be in effect, put the TAKE command in your K95CUSTOM.INI file (CLICK HERE for how to do this or see the README FILE for a thorough orientation to Where Things Are).

  • If you always want to use a given key mapping for certain connections but not others, specify it in the desired Dialer entries. On the Keyboard page, under Key Map, click the button next to Read from file, then click Browse to find the file, then use the file browser to locate the file, then click Open. A copy of the file will appear in the text window of the Keyboard page and will be used whenever you launch this entry.

    Alternatively, make sure the file that contains the key mapping commands has the filetype ".KSC", and then put it (or a link to it) on your desktop, and then launch Kermit 95 by double clicking its icon.

  • If you have custom-made scripts for certain applications or hosts, you can add a TAKE command for the keymap to those scripts.

For samples of Kermit 95 Key Mapping files see:

  • The key maps that are distributed with Kermit 95, which are also available HERE.
  • Some additional ones in the C-Kermit Script Library.

Arkansas Medicare Key Map
Health-care providers in Arkansas who previously had been using ProComm to access the state Medicare site have been instructed to switch to Kermit 95 since ProComm is not supported on Windows XP. Unfortunately they are not given clear instructions on how to configure Kermit 95 for this service. The missing instructions are:

  1. Set the terminal emulation to VT100.
  2. Load the custom key map created by Arkansas Medicare. CLICK HERE to download a copy of this map.

See previous item about how to load a key map file. In the K95 Dialer, you can make an entry for Arkansas Medicare if you don't already have one.

By the way, the instructions given out by Arkansas Blue Cross / Blue Shield are much too complicated and elaborate. Arkansas Medicare/Medicaid users who would like to replace all that by a simple script, please send email to [email protected] or call our tech support number, 1-212-854-5126.

My Backspace Key Doesn't Work!
Please read THIS.

My Arrow Keys Don't Work!
Arrows are not normal characters. There are no arrow characters in (e.g.) the ASCII character set. Therefore terminal makers had to invent codes or sequences for arrow keys to send. Each kind of terminal sends its own special codes or sequences. So the first step in making arrow keys work is to make sure Kermit's terminal type agrees with the host computer's (or application's) idea of what kind of terminal you have. See the Backspace page for details.

To complicate the situation, on certain common types of terminals, notably the DEC VT100 series (VT100, VT102, VT220, VT320, etc), arrow keys can be in one of two modes: "Cursor" or "Application". In each mode, they send different codes. Thus, not only must Kermit's terminal type agree with the host, but so must the arrow keypad mode.

By default (that is, unless you give SET KEY commands to change things), Kermit uses the PC keyboard arrow keys as the VT terminal arrow keys. Each key has a "verb" assigned to it:

Key Keycode Assignment Description
Up Arrow \4390 \Kuparr Sends what the terminal's Up-Arrow key sends
Down Arrow \4392 \Kdnarr Sends what the terminal's Down-Arrow key sends
Right Arrow \4391 \Krtarr Sends what the terminal's Right-Arrow key sends
Left Arrow \4389 \Klfarr Sends what the terminal's Left-Arrow key sends

The \Kxxxx's are Kermit Keyboard Verbs (Kverbs). The arrow-key Kverbs track the arrow keypad mode automatically. For example, in VT100-series terminals:

Kverb Cursor Mode Application Mode
\Kuparr CSI A SS3 A
\Kdnarr CSI B SS3 B
\Krtarr CSI C SS3 C
\Klfarr CSI D SS3 D

CSI is ESC (ASCII 27) followed by left bracket ([) on a 7-bit connection or decimal 155 on an 8-bit connection, and SS3 is ESC followed by O (uppercase letter O) on a 7-bit connection and decimal 143 on an 8-bit connection. Thus, as you can see, in VTxxx emulation each arrow key can send any of four different code sequences depending on the arrow keypad mode (Cursor or Application) and Terminal Controls Mode (7-bit or 8-bit).

How does the arrow keypad mode change? The host can change it by sending special escape sequences, or you can change it yourself by using the command:

SET TERMINAL ARROW-KEYS { CURSOR, APPLICATION }

Ditto for Terminal Controls Mode:

SET TERMINAL CONTROLS { 7, 8 }

My Numeric Keypad Doesn't Work!
Essentially the same story as the previous items (Arrow keys). Like the cursor (arrow) keypad, the numeric keypad can be in one of two modes: Numeric or Application. In Numeric mode, it sends what is printed on the keytop (except the Num Lock key). In Application mode it sends special escape sequences. The default assignments of the numeric keypad keys are Kverbs: \Kkp0, \Kkp1, \Kkp2, ... \Kkp9, \Kkp0 for the digits, and:

Key Keycode Assignment Description
Num Lock \4496 \Kgold Sends what the terminal's "Gold" (PF1) key sends
Keypad Slash (/) \4463 \Kpf2 Sends what the terminal's PF2 key sends
Keypad Asterisk (*) \362 \Kpf3 Sends what the terminal's PF3 key sends
Keypad Minus (-) \365 \Kpf4 Sends what the terminal's PF4 key sends
Keypad Plus (+) \363 \Kpcoma Sends what the terminal's keypad comma key sends
Keypad Enter \4365 \Kpenter Sends what the terminal's keypad Enter key sends

Problems occur when the terminal types don't match, the numeric keypad modes don't match, and/or the terminal controls modes don't match. Sometimes when the terminal receives "garbage" from the host, this can change the keypad mode. Relevant commands:

SET TERMINAL TYPE name
SET TERMINAL KEYPAD-MODE { NUMERIC, APPLICATION }
SET TERMINAL CONTROLS { 7, 8 }

The Kverbs that are assigned to the non-digit keypad keys by default vary with the terminal type. This example shows VT100-series terminal assignments. Other types of terminals do not have Gold or PFn keys and therefore have different verbs assigned.

Depending on the terminal type, the digit keys themselves can affected by the keypad mode. When the keypad is in Application mode, they send escape sequences (e.g. in VT100 emulation, the '4' key sends ESC, uppercase letter 'O', then lowercase letter 't'). When the keypad is in numeric mode, they send the digits that appear on their keytops (the '4' key sends the digit '4').

K95's numeric is in numeric mode by default. It can be changed by the SET TERMINAL KEYPAD command or by an escape sequence from the host (or "garbage" that mimics the escape sequence). To get the keypad back in numeric mode, you can:

  • Press Alt-r (hold down the Alt key, press the 'R' key). This is the RESET Key (kverb \Kreset, unless you've reassigned it).
  • Give the command SET TERMINAL KEYPAD MODE NUMERIC at the K-95> prompt.
  • Have the host application send the appropriate escape sequence.

CLICK HERE for a diagram of the DEC editing and numeric keypads.

My Function Keys Don't Work!
Kermit 95 automatically assigns the right codes or sequences to the function keys for the terminal you are emulating. If function keys like F1, F2, etc, don't work, then:

  1. Kermit's terminal type does not match that of the application on the other end of the connection. You have to choose matching terminal types.

  2. Kermit's has been told to emulate a kind of terminal that does not have function keys, such as VT100 or ANSI. If you want to have function keys (e.g. because the host application expects you to use them), you must choose a terminal type that supports them, that is also supported by the host application. CLICK HERE for a list.

  3. Kermit's terminal emulation is in 8-bit-controls mode and the host isn't receiving or understanding the 8-bit characters (VT220 or VT320 only).

Of course you can also assign anything else you want to function keys with the SET [TERMINAL] KEY command -- commonly-used shell commands, whatever. For detailed information about Kermit 95's Function key mapping for DEC VT220 and VT320 emulation, CLICK HERE.

DEC VT100-series terminals (VT100, VT101, VT102, VT125, etc) do not have F keys. But they do have PF keys as the top row of the numeric keypad: PF1-PF4. PF1 is also called the "Gold Key".

DEC VT200-series terminals (VT220, VT320, etc), have function keys F1 through F20, but F1-F5 are reserved for local use by the terminal. If you have host software that wants you to "press F1" (or F2-F5) on a VT220 or higher, that software would not work with a terminal because those keys don't send anything. These terminals, the like VT100-series, have PF1-PF4; try using them instead of F1-F4. Otherwise some investigation will be needed to find out what the host application expects to receive from the DEC F1-F5 keys! (This is always possible, but sometimes difficult.)

Higher-numbered function keys can be problematic. For example DEC VT220-series terminals have function keys up to F20, but the PC keyboard only has them up to F12. In this case there must be a mapping. Kermit's default mapping is Alt-F1 → F11, Alt-F2 → F12, ... Alt-F10 → F20.

My Editing Keypad Doesn't Work!
In most terminal emulations, notably VT100 and above but also many others, Kermit's editing keypad performs local functions: Page Up scrolls the screen up to access the Kermit's scrollback buffer, and so on. Here are the default assignments for VTxxx emulation:

PC Key Unmodified With Alt Key With Shift Key With Ctrl Key
Insert Undefined DEC Find (\KdecFind) Paste (\Kpaste) \KmarkCopyClip
Home Top of Scrollback buffer (\Khome) DEC Insert Here (\KdecInsert) Undefined Undefined
Page
Up
Local scroll up one screen (\KupScn) DEC Remove (\KdecRemove) Undefined Local scroll up one line (\KupOne)
Delete Sends DEL (\127) DEC Select (\KdecSelect) Sends DEL (\127) Sends Backspace (\8)
End Bottom of scrollback buffer (\Kend) Sends DEL (\127) DEC Prev Screen (\KdecPrev) Undefined
Page Down Local scroll down one screen (\KdnScn) DEC Next Screen (\KdecNext) Undefined Local scroll down one line (\KdnOne)
If you want the editing keypad to act like the DEC VT220 (or VT320, VT420, or VT520) keypad, you can use the Alt Key in combination with these keys. By default, K95's VT220 and VT320 emulators assign the editing keys positionally, rather than according to keytop labels:

DEC Keys:
Find Insert
Here
Remove
Select Prev
Screen
Next
Screen
PC Keys:
Insert Home Page
Up
Delete End Page
Down  

So on the PC keyboard, Alt-Insert = DEC Find; Alt-Home = DEC Insert Here, etc.

Of course you can remap these functions any way you want, for example:

set key \4397 \KdecFind    ; Gray Insert    = DEC Find
set key \4388 \KdecInsert  ; Gray Home      = DEC Insert Here
set key \4385 \KdecRemove  ; Gray Page Up   = DEC Remove
set key \4398 \KdecSelect  ; Gray Delete    = DEC Select
set key \4387 \KdecPrev    ; Gray End       = DEC Prev Screen
set key \4386 \KdecPrev    ; Gray Page Down = DEC Next Screen

This map assigns the functions to the same keys, but without requiring you to use the Alt key. The map is "positional", corresponding to the VT220 keys. Of course you can also assign them any other way you want, e.g. according to the keytop labels (to the extent they correspond). Put these commands in an appropriate place (see the the first couple items in this section for details).

Help! My Keyboard Has Gone Crazy!
The most likely explanation is that you accidently typed one of the following key combinations:

  • Left-Alt-Left-Shift: This is a Windows function that Kermit never sees. If you have more than one keyboard language defined, this toggles your keyboard among them. You can undo this by typing Left-Alt-Left-Shift again, as many times as needed to return to the desired keyboard language (the number depends on how many keyboard languages you have defined). Or you can open the keyboard icon on the Windows Taskbar and explicitly select the desired language. Or if you really don't need to have multiple keyboard languages defined: use Control Panel → Regional and Language Options → Languages → Text services and input languages to remove keyboard languages; if you have only one defined, there will be no mysterious keyboard-language switching.

  • Right-Ctrl-Right-Shift: Depending on what Windows version you have, this one might might also toggle among keyboard languages.

  • Ctrl-CapsLock: This toggles PCTERM mode in Kermit's emulator, in which each key sends separate up/down codes. If you get into this mode by accident, Kermit's Terminal Screen status line says:

     PCTERM  Ctrl-CAPSLOCK to deactive.
    

    (if your current emulation includes a status line). In any case, you can restore the keyboard to normal with another Ctrl-CapsLock or, in K95G, in the Actions menu ("PCterm Keyboard", which toggles the PCterm keyboard on and off).

How Do I Defeat Idle Session Termination?
If you have a terminal session to another computer and you don't transmit any characters to it for a certain amount of time, your session might be terminated by the remote computer or by something between it and Kermit (but not by Kermit!) -- network address translators, firewalls, routers, etc.

To defeat this, you can tell Kermit to "do something" automatically every so often after you haven't transmitted anything on the connection for a given amount of time. The commands are:

SET TERMINAL IDLE-TIMEOUT number
Sets the limit on idle time in CONNECT mode to the given number of seconds. 0 (the default) means no limit.

SET TERMINAL IDLE-ACTION { EXIT, HANGUP, OUTPUT [ text ], RETURN }
Specifies the action to be taken when a CONNECT session is idle for the number of seconds given by SET TERMINAL IDLE-TIMEOUT. The default action is to RETURN to command mode. EXIT exits from Kermit; HANGUP hangs up the connection, and OUTPUT sends the given text to the host without leaving CONNECT mode; if no text is given a NUL (0) character is sent.

And for Telnet connections:

SET TERMINAL IDLE-ACTION { TELNET-NOP, TELNET-AYT }
Sends the indicated Telnet protocol message: No Operation (NOP) or "Are You There?" (AYT).

If you have a Telnet connection, try one of these; it is preferable to sending characters to the host session, since these Telnet messages are intercepted by the Telnet server and never reach your host session, yet they count as activity on the connection and should defeat any idle monitors between here and there.

Example 1: Suppose a certain Telnet connection has a five-minute idle limit; If you don't transmit anything to the host for five minutes (300 seconds) your session is closed. To defeat this, do:

set terminal idle-timeout 270        ; 4.5 minutes
set terminal idle-action telnet-ayt  ; Send Telnet "Are You There?"

Example 2: Suppose a certain dialup connection has a 10-minute idle limit; If you don't transmit anything to the host for ten minutes (600 seconds) your session is closed. Since it's not a network connection, you can't send network protocol messages; you have to send an actual character. Pick a character that is least likely to cause anything to happen on the remote end, such as NUL (ASCII 0) or Space (ASCII 32):

set terminal idle-timeout 570        ; 9.5 minutes
set terminal idle-action output      ; Send NUL

or:

set terminal idle-timeout 570        ; 9.5 minutes
set terminal idle-action output " "  ; Send Space

If you want these commands to be in effect for all sessions, put them in your K95CUSTOM.INI file. If you want them to be in effect for certain connections only, put them in the text box of the Login Settings page of the Dialer entry for each desired connection, or just type the commands at the K-95> prompt.

How do I Assign Colors to Screen Attributes?
Terminals (depending on which kind) are capable of showing characters with all sorts of different attributes: bold, dim, blinking, reverse video, underlined, italic, protected, etc. Kermit 95 supports all these. and more.

Sometimes people want to have certain attributes shown as colors of their choice. K95 supports this for the following attributes: Blink, Protected, Reverse, and Underline. You need two commands for this. First disable normal treatment of the given display attribute with:

SET TERMINAL ATTRIBUTE name-of-attribute OFF
Tells K95 not to display the named attribute. Choices include: BLINK, PROTECTED, REVERSE, and UNDERLINE. Example: SET TERMINAL ATTRIBUTE UNDERLINE OFF.

Then specify the colors to be used to simulate the attribute:

SET TERMINAL COLOR attribute-type foreground background
Chooses the fore- and background colors for items of the named type, including REVERSE-VIDEO and UNDERLINED-TEXT. Example: SET TERMINAL COLOR UNDERLINE RED BLACK.

We don't support color substitution for all attributes (such as Bold, Dim, Italic, Invisible) since that gets into combinatorial problems: what happens when a character has multiple attributes, e.g. Bold, Blinking, Underlined, and Reverse? Plus that fact that color itself can be attribute. Similarly, assigning colors to a combination of attributes is not supported either.

Problems with Linux Terminal Emulation
The definition of the Linux "terminal" is constantly changing and must be updated in Kermit 95 every time it changes, all the while trying to ensure it still works with the previous definitions. It's a moving target. One item to be aware of: recent editions of the Linux Console terminfo/termcap command your terminal into a particular character set, which depends on your Linux locale. This happens silently and invisibly when you log in to Linux, and perhaps also at other times. You should also be aware that the Linux console does not support IBM PC code pages or Windows code pages.

Problems with SCO ANSI Terminal Emulation
This is a long story, to be fleshed out later. Very briefly: Old SCO operating systems, particularly SCO UNIX 3.2v4.x and OSR5 versions through 5.0.4, have an ANSI terminal type that is not compatible with everybody else's ANSI terminal type. In Kermit we call this SCOANSI. But older SCO operating systems do not recognize SCOANSI (or "scoansi") as a valid terminal type name. Therefore, when making Telnet, Rlogin, or SSH connections to SCO, you have to tell Kermit to lie about its terminal type:

set terminal type scoansi        ; What I am
set telnet terminal-type ansi    ; What I say I am

The same might (or might not) apply to some or all releases of UnixWare and Open Unix 8. It's necessary in any SCO operating system that uses SCO ANSI but does not have a terminal type called "scoansi".

UNFORTUNATELY there are still some complications:

  1. You can configure this setup in the Dialer for Telnet connections, on the Terminal page and the Telnet page. But for SSH (and possibly Rlogin) connections, the Telnet page is grayed out (this will be fixed in K95 2.1.4). In that case, put the SET TELNET TERMINAL-TYPE command in the Keyboard page script text box.

  2. Under certain as-yet unknown circumstances (but we suspect this happens when a Telnet, Rlogin, or SSH client announces its terminal emulation as ANSI or SCOANSI), the SCO operating system activates "mapchan", which interferes with both terminal emulation and file transfer by "mapping" certain characters to other characters. To see if this has happened to you, type "mapchan" at the shell prompt after logging in. If the response is a bunch of data (rather than the word "null"), you must turn off mapchan with the following shell command:

    mapchan -n
    

How Do I Access the Microsoft VTNT Telnet Server?
Use Kermit 95's built-in VTNT terminal type and then make a Telnet connection to the Windows machine where the Microsoft SFU Telnet server is running. Note that VTNT is a private and undocumented Microsoft protocol, which we had to reverse engineer. K95 1.1.20 supports VTNT as it existed at the time (1999), called SFU V1. After 1.1.20 was released, Microsoft changed VTNT for Windows 2000 and Windows XP; this is SFU V2. Thus if you are using K95 1.1.20 to make a VTNT connection to Windows 2000 or XP, it won't work right and you need to upgrade to the current version of K95.

VTNT is Unicode based. If you are using a Console version of K95, you must select a Unicode-based TrueType font such as Lucida Console.

Also see the section discussing Microsoft Windows Telnet Server and Kermit 95 in http://www.kermit-project.org/telnet.html.

How Do I Swap the Ctrl and Caps Lock keys?
Old timers and touch typists like the Ctrl key to be where Caps Lock is, and Esc to be above Tab and left of "1". Kermit 95 does not access the keyboard at level that would allow moving shift/modifier functions like Ctrl, Caps Lock, Shift, or Alt, but several methods are available external to K95:

Software Drivers
At least two are available: CTRL2CAP and REMAPKEY. The current versions of both of these seem to be for Windows NT (2000, XP) only but an earlier version of CTRL2CAP also worked for Windows 95/98/ME.

Replacement Keyboards
IBM-like keyboards from Unicomp, Avant, LinuXcare, and elsewhere that specialize in swapping Ctrl and Caps Lock, Esc and Grave/Tilde, and in some cases allowing for user customizations. The advantage of doing it in the keyboard itself rather than in the software means you don't have to change the software every time you upgrade or switch operating systems. Also (in some cases) the keytops are labeled appropriately.

Digital Part number LK-461-A2 from Digital Parts Source 1-800-225-5385, $75.00 USD: a PC-compatible version of the DEC VT 220/320/420/520 keyboard that has 20 function keys and Ctrl left of the 'A'. (Digital Equipment Corporation has since been bought by Compaq Computer Corporation, which was then bought by Hewlett Packard; it is not known if they still sell this part, but a search of the Compaq website in early 2002 for "LK-461" turned up 60 references.)

How Do I Access IBM Mainframes?
Presently, Kermit 95 does not include IBM 3270 terminal emulation, nor a tn3270 client. The only way it can have IBM mainframe fullscreen sessions is through an intermediate 3270 protocol converter:

  • Dialup to a Series/1, 7171, 4994, or the like.
  • Dialup or Telnet to a Cisco terminal server; tn3270 from there.
  • Dialup/Telnet/Rlogin/SSH to any Unix host that has a tn3270 program; tn3270 from there to the mainframe.

Most IBM mainframe operating systems support "linemode" sessions, which are similar to hardcopy sessions -- no screen formatting. Unless your IBM mainframe has linemode disabled, you should be able to establish a regular Telnet session to it. You can transfer files between K95 and Kermit-370 over any of these kinds of connections.

How Do I Disable Scrollback?
In Kermit 95 2.1.3 you can disable the GUI scroll bars, as well as the keyboard verbs that accomplish scrolling -- no matter what keys they are assigned to -- with the new NOSCROLL command or the new --noscroll command-line option. In earlier releases:

In the Console version, you can simply remap all the scrollback keys to execute the \Kignore verb:

set key \4385 \Kignore  ; Gray Page Up
set key \4386 \Kignore  ; Gray Page Down
set key \4388 \Kignore  ; Gray Home
set key \5409 \Kignore  ; Ctrl Gray Page Up
set key \5410 \Kignore  ; Ctrl Gray Page Down

You can do this in the GUI version too, but that doesn't remove the scrollbar. However, it's harder to scroll back by accident with the mouse than it is to hit the wrong key by mistake.

In both the Console and GUI version, you can limit the scrollback capacity with:

  set terminal scrollback number-of-lines  ; (Terminal screen)
  set command scrollback number-of-lines   ; (Command screen)

However, the minimum number of lines is 256.

How Do I Clear the Screen without Saving it in Scrollback?
Material is saved in scrollback whenever (a) a line scrolls off the top of the screen or (b) the whole screen is cleared. To clear the screen without having it saved in scrollback, have the host send an escape sequence like this:

  <ESC>[2;1H<ESC>[J<ESC>[1;1H<ESC>[K

(replace <ESC> with an actual Esc character). What it does:

  1. Puts cursor on the second screen line, left margin.
  2. Clears from cursor to end of screen.
  3. Puts cursor in home position.
  4. Clears from cursor to end of line.

These forms of clearing do not enter anything into the scrollback buffer.

Where is the technical documentation for xxx emulation?
The specifications for each terminal, such as VT320, HPTERM, AIXTERM, etc, might be several hundred pages long, and many of them are proprietary.

Purchase the manuals from the current marketer of the terminal. Manuals are still being sold for all Wyse and DEC VT terminals. Note that (a) DEC sold off its terminal products division years ago, and it has probably changed hands several times since then, and (b) DEC was sold to Compaq, and later Compaq was bought by Hewlett Packard. DEC and Wyse terminal manuals tend to be quite expensive.

  • Documentation for the DEC VT5xx terminal can be purchased from Boundless Technologies.
  • Wyse terminal documentation can be found at wyse.com.
  • QANSI, QNX, Linux, and BeTERM, are documented in the man pages of the appropriate operating system.
  • AT386 is documented in the SCO Unixware man pages.
  • The SCOANSI specification can be found at the SCO website (sorry, seems to be defunct).
  • The AIXTERM manual is published on the Web by IBM (this one doesn't work any more either, sorry).
  • The HFT manual is also somewhere at ibm.com (try searching).
  • SNI manuals are published by Siemens/Nixdorf (this one is gone too).
  • Avatar is documented in the Fido database.
  • VT52/100/102/220/320 sequences are included in Using MS-DOS Kermit, 2nd Edition.

For further information, visit Richard Shuford's Video Terminal Information site.

Why does scrolling or echoing seem slow?
They don't to most people. But on certain PCs, under certain circumstances, there might be a perceptible delay in scrolling or in echoing of the characters you type. This delay can have several components:

  1. Delays in the connection itself;
  2. How heavily loaded Windows is;
  3. Whether you have a client or a server edition of Windows;
  4. Windows scheduling of K95's several threads and its semaphore management;
  5. An extra (double) layer of overhead imposed by CONAGENT.EXE (Windows 95/98/ME only).
  6. Peculiarities of your video adapter and driver;
  7. Certain other applications that might be running;
  8. Windows TCP/IP policies or heuristics;
  9. K95's own screen update algorithm.

Kermit 95 virtualizes the display. This is how it is capable of functioning as both a console and a GUI application not to mention supporting other operating systems such as OS/2. Any perceptible delays are usually due to thread allocation algorithms within the OS. If you are using K95 on a Windows Server edition, you should be aware that the OS is tuned to favor server, rather than client, applications, e.g. by allocating longer timeslices, and of course it runs an increased number of processes with "service" priority, which can result in some jumpiness between the threads.

Normally K95 refreshes the entire screen every 100 milliseconds, i.e. 10 times per second. This has proven to provide the best overall throughput, which is always a tradeoff between (a) responsiveness to keystrokes, and (b) speed of displaying large amounts of scrolling text. You can change the balance and the frequency with the command:

SET TERMINAL SCREEN-UPDATE { FAST, SMOOTH } [ milliseconds ]
Chooses the mechanism used for screen updating and the update frequency. Defaults are FAST scrolling with updates every 100 milliseconds.

A smaller interval might produce snappier echoing, but probably at the expense of scrolling speed. SMOOTH forces screen refresh with every incoming character, and so turns the balance to totally favor fast echoing.

In version 1.1.16, K95's echoing strategy was redesigned to give snappier echoing on modem connections, virtually eliminating any delay that can not be attributable to external causes. Echoing of a character from the local modem's command processor now takes less than 0.001 second, compared to about 0.110 second in 1.1.15.

Also, beginning in 1.1.16, screen updates are optimized. This results in noticeable speed improvements on most PCs, but paradoxically, slows down some others. To disable optimization, use:

  SET TERMINAL SCREEN-OPTIMIZE OFF

On TCP/IP connections (Telnet, SSH, Rlogin) you might be able to speed up echoing by disabling the "Nagle algorithm" in Windows TCP/IP, which saves up characters for a while before deciding to send them in case any more will be added to the queue, thus allowing more efficient transmission (more characters per TCP packet) but, obviously, slower response to keystrokes. To do this, give the command:

  SET TCP NODELAY OFF

This command must be given before the connection is made because it affects how the connection is opened.

One user reported severe sluggishness on a certain PC but not on others. Eventually the problem was traced to a new monitor he had just installed, which came with a utility called Display Switcher (DS4.EXE), which had been installed as an autostart "service" as part of the monitor installation, and which tended to run wild and consume excessive CPU cycles. Although it seemed at first to affect only Kermit 95, as the day progressed, other applications slowed down too. Rebooting didn't help, of course, so it had to be removed from the Startup folder.

Does Kermit 95 Support Arabic Terminal Emulation?
As a terminal emulator, Kermit 95 has no explicit support for Right-to-Left text presentation or for automatic switching of print direction based on character properties.

Traditionally, these matters would be left to the host computer and its applications. For example, with Hebrew (another RTL language), Unix applications such as the ALEPH bibliographical systems, or special versions of the Vi text editor, would take care of character presentation by sending escape sequences to position each character at the right place on the screen. You can read more about this in the Kermit 95 manual:

Help → Kermit 95 Manual → Index to Reference Materials → Character Sets → Hebrew Terminal Emulation

The same would be true for Arabic, but I don't know the situation for host applications and software. If your host computers have software that takes responsibility for positioning each character, then you should be able to use Kermit 95 for Arabic if (a) you choose an appropriate font, (b) you have activated an appropriate keyboard driver, and (c) the host is using one of the following character sets:

  1. PC Code Page 864
  2. PC Code Page 1256
  3. ISO 8859-6
  4. UTF-8

There is also the complication that Arabic (unlike "square Hebrew") has complex shaping rules based on context. Kermit 95 would not handle this, any more than any character-cell terminal which it emulates would. (I am aware that terminals designed specifically for Arabic existed in the past, but Kermit does not emulate any of them, because we have never been able to obtain technical details.)

Does Kermit 95 Support Hebrew Terminal Emulation?
See the previous question. Also see text and sample screen shots HERE. Kermit 95 supports the following Hebrew terminal character sets:

  1. Hebrew-7
  2. PC Code Page 862
  3. PC Code Page 916
  4. PC Code Page 1255
  5. ISO 8859-8
  6. UTF-8

In addition, Kermit 95 has a built-in Hebrew Keyboard Mode, that can be used to enter Hebrew letters from (e.g.) a US keyboard without having to load a Windows Hebrew keyboard driver. See:

Help → Kermit 95 Manual → Index to Reference Materials → Character Sets → Hebrew Terminal Emulation

PRINTING

[ Next ] [ Previous ] [ Top ]

Be sure to read the sections on printing in the Kermit 95 manual:

Why did my printer suddenly start printing?
The most likely explanation is that you accidently typed one of the following key combinations: Alt-P (print screen), Alt-O (start Copy-to-Printer), Alt-E (force printer page eject / formfeed), or the Print Screen key. Also, the host might have sent a "transparent print" escape sequence, or noise or binary data arrived at the terminal emulator that is the same as such a sequence. Use Alt-R to reset the terminal and cancel Copy-to-Printer or transparent printing.

Can Kermit 95 use Winprinters?
As noted in the documentation, Kermit 95 can print only on printers capable of printing either raw text and/or PostScript. Kermit does not support Graphical Device Contexts for Printer output, used by Winprinters. From Chapter 7 of the Kermit 95 online manual:

So-called "WinPrinters" are presently not supported by Kermit 95. These printers are marketed specifically for use with Microsoft Windows operating systems, and work only with Microsoft Windows. It might seem strange that Kermit 95 does not support them, since Kermit 95 is a native Windows 32-bit application, but "WinPrinters" require the print job to be formatted by the Win32 application. Transparent printing material, however, contains escape sequences or other non-textual data that can not be formatted as text.

Ironically, WinPrinters come with a 16-bit driver for use by DOS applications, but since K95 is a 32-bit application, it can't see this driver. Presently, the only way to print on a WinPrinter from Kermit 95 is to:

  set printer xxx

where xxx is a filename, and then to:

  run copy /b xxx prn

(i.e. run the DOS command to copy the print file in binary mode to the DOS printer). A series of macros can be defined to accomplish this, and can be assigned to hot keys to make printing to Windows printers relatively painless.

KERMIT FILE TRANSFER

[ Next ] [ Previous ] [ Top ]

How Do I Upload a File?
The current version of Kermit 95 does not have a GUI file upload dialog. We hope to add one in the next release. When the computer on the other end of the connection is a general-purpose timesharing system like Unix or VMS, everything can be controlled from the far end and, as explained in the K95 Tutorial, in that case you don't really need an upload dialog in K95.

But increasingly, the thing on the other end of the connection is something else entirely, such as a menu, e.g. for uploading insurance claims or purchase orders. Most of these menu systems do not know how to command Kermit 95, automatically through its terminal screen, to upload a given file (they could do this but they don't). So once you choose the "upload" item on menu, you have to return to K95 and tell it which file(s) to send. This is where an upload dialog would come in handy. Until such time as one is added, you'll need to do it the old-fashioned way:

  • Change the K95 window from the Terminal Screen to the Command Screen. You can do this by clicking the second Toolbar button (the one with the two arrows), or by entering Alt-x on your keyboard (hold down the Alt key and press the x key).

  • At the K-95> prompt, type the word "send", then a space, then the filename, and the press the Enter key. For example (the part you type is underlined):

    K-95> send invoice.doc
    

  • You will see a file-transfer progress display something like this:

    Kermit 95 2.1.3, 1 Jan 2003, This_PC [000.000.000.000]
    
       Current Directory: C:/fdc/tmp9/xx_files/
            Network Host: somehost.xyzcorp.com (UNIX)
            Network Type: SSH (SECURE)
                  Parity: none
             RTT/Timeout: 08 / 00
                 SENDING: Invoice.doc
               File Type: BINARY
               File Size: 311372
            Percent Done: 100                 
         Kermit Protocol:     ...10...20...30...40...50...60...70...80...90..100
            Elapsed Time: 00:00:17
      Transfer Rate, CPS: 10699
            Window Slots: STREAMING
             Packet Type: D
            Packet Count: 84
           Packet Length: 8
             Error Count: 0
              Last Error:
    

  • When the bar reaches 100%, the K-95> prompt reappears. You can return to the the terminal screen by clicking the same Toolbar button or entering Alt-x again, or by giving the CONNECT command at the prompt (type "c" or "connect") and then press the Enter key.

This example assumes the file you want to upload is in K95's current directory, and you only want to upload one file. If that's not the case, keep reading.

How do I Upload a File That's in Another Folder?
In the SEND command, you can specify the file's entire pathname, for example:

K-95> send c:\business\invoice.doc

But if the pathname contains any spaces, as often happens in Windows, you have to enclose the whole thing in doublequotes:

K-95> send "C:\Documents and Settings\myname\My Documents\invoice.doc"

Well this is a lot of stuff to type so there is a shortcut:

K-95> kcd personal
K-95> send invoice.doc

or:

K-95> send \v(personal)invoice.doc

This is only one example, which applies only to your "My Documents" directory. These shortcuts are explained in the Kermit 95 README file, in the Files and Directories section.

How do I Upload Multiple Files at Once?
To send multiple files with a single command, you can use "wildcard" notation, in which special characters such as asterisk are used to "match" one or more characters from a filename. For example:

K-95> send *.doc

tells K95 to send all the files in the current directory whose names end with ".doc". For details about wildcard syntax. type "help wildcard" at the K-95> prompt.

Another way to send multiple files at once is to use the MSEND command, which lets you name one, two, three, or more files to be sent:

K-95> msend invoice.doc revenue.xls addresses.txt

How Do I Choose a Different File Transfer Protocol?
On terminal connections, Kermit 95 supports Kermit, Xmodem, Ymodem, and Zmodem protocols (it also supports FTP transfers but those don't take place on a terminal connection). The file sender and the file receiver have to use the same protocol or the transfer will fail. The default protocol is Kermit. You can choose a different protocol in various ways, including:

  • On the File Transfer page of the Dialer entry for the connection; or:

  • By giving a SET PROTOCOL command in the K95 command window, e.g.:

    K-95> set protocol zmodem
    K-95> send invoice.doc
    

  • Or by including a protocol selection switch in a SEND command:

    K-95> send /protocol:zmodem invoice.doc
    
Problems Uploading Files?
Kermit 95 as well as C-Kermit 7.0 and later, when using Kermit protocol, default to high-performance file-transfer settings: long packets, sliding windows, "cautious" (rather than "paranoid") control-character prefixing, and -- on connections that allow it -- streaming. But, as we point out in the documentation, these settings are less likely to work everywhere than the normal conservative settings that are the default in most other Kermit programs, and which are the cause of the widely held misconception that "Kermit is slow".

Sometimes file transfers -- especially uploads of binary files -- fail using these settings. Such failures can almost always be fixed by restoring full control-character prefixing:

  SET PREFIXING ALL

Or in the Dialer, edit the connection's File Transfer page. Change Performance to Custom, and change Control Char Prefixing to Never.

If that doesn't help, then give this command:

  CAUTIOUS

If you still have problems, give this command:

  ROBUST

(You can choose these on the Dialer's File Transfer page too).

If none of that helps, then consult Chapter 10 of Using C-Kermit, 2nd Edition: "Solving File Transfer Problems". And if that doesn't help, maybe K95's file-transfer partner has a defective Kermit implementation. Kermit 95 offers workarounds for most of the implementation bugs we know about in other products; click HERE and HERE for details.

Problems transferring files with the Cincatti Press Brake?
Please read our Cincinnati Press Brake FAQ .

Problems transferring files with the HP-48?
HP-48 Series calculators included an embedded Kermit protocol allowing programs and data to be imported from and exported to your PC. The procedures for using it are documented HERE.

THE BUILT-IN FTP CLIENT

[ Next ] [ Previous ] [ Top ]

This section has been moved to: The Kermit FTP Client FAQ.

ASSORTED HINTS AND TIPS

[ Next ] [ Previous ] [ Top ]

How Do I Capture the Output of a K95 Command?
Of course you can use the mouse to copy text from the command screen and paste it into any other application. This includes not just the visible screen; K95 also lets you scroll back while copying. Or you can scroll back first and copy downwards, etc.

Some Kermit commands have options to write their output to a file. For example, REMOTE commands allow Unix-like redirectors at the end, for example:

remote directory *.jpg > jpglist.txt

The DIRECTORY, GREP, and TYPE commands include /OUPUT: switches that tell them to write their output to the given file, e.g.:

directory /recursive /after:-5days /sort:date /output:recent.txt *.[ch]

K95 also lets you clear and save both command and terminal screens and scrollback into a file with the CLEAR and SAVE commands. To create a file showing the results of one or more commands, do this:

set command more-prompting off
clear command scrollback
(execute desired commands here)
save command scrollback filename

Using K95 with Host-Based E-Mail Programs
As described HERE, in these days of e-mail viruses, it is not a bad idea to avoid PC-based email programs and read all your email with a host-based plain-text e-mail client like Pine, Rmail, or MM. When you do this, you see MIME enclosures in their raw encoded format; for example base-64 encoding: many, many lines of:

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYF
BgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAQNBgADASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA

So how to view that snapshot that Aunt Hilda sent you? The labor-intensive method is to save the message in a separate file, edit out the base-64 encoded picture, save that to still another file, decode it into its original JPG, GIF, or BMP format into yet another file using the appropriate decoder, and then either put it on your own host-based website and (after setting the permissions appropriately) and view it from your PC browser, or download it to your PC and tell K95 to "run start hilda.jpg" or whatever.

Here's an easier method, but one that's not quite as safe:

  1. Make sure the message doesn't contain any enclosures besides .jpg, .gif or .bmp. Also make sure it's from someone you know and that it contains text that they wrote that makes sense to you, like "Here's a cute picture of little Otto at the beach". Just because it SAYS it's from somebody you know doesn't mean it really is! (Any mail that you receive these days, even from a friend or family member, is just as likely to have been generated automatically by a virus program.)

  2. Tell your mail program to copy the message to a file, xxx.eml. Substitute whatever you want for xxx, but you must use the ".eml" extension because that's the one Windows associates with its e-mail client.

  3. Exit from your e-mail program and download the .eml file to windows:

      kermit -s xxx.eml                (Substitute actual file name)
    

  4. Escape back to the Kermit prompt with Alt-x and type:

      run start xxx.eml                (Substitute actual file name)
    

This starts your Windows e-mail client (e.g. Outlook Express) with the mail message in it so you can see the picture(s). But again: be careful! If the message contained any enclosures other than pictures (such as Visual Basic scripts, Microsoft Word documents, HTML, ActiveX, etc), they could give your PC a virus, as explained in the Safe Computing document. In more recent versions of Windows, particularly those with security patches, the Microsoft mail client might refuse to show you any enclosures that are not pictures.

Accessing a Port-Blocked Mail Server with SSH Port Forwarding
Suppose you're on a business trip with your Windows laptop that you normally use to read your email using a Windows-based mail client. You find that you can't get at the mail server because you're outside the corporate firewall. But you can still make SSH connections through the firewall. Here's how you can use Kermit 95 to "tunnel" through your SSH connection to mail server. Before making your SSH connection, give a command such as:

  ssh add local-port 25 email.xyzcorp.com 25

in which email.xyzcorp.com should be replaced by the hostname of your own mail server, and 25 is the Simple Mail Transfer Protocol (SMTP, i.e. mail server) Internet port. This sets up TCP port 25 on your PC to forward to port 25 on the e-mail host through the SSH tunnel.

Now SSH to your login host. In your mail program, set the SMTP server to "localhost". Then as long as you keep the SSH connection open, you can use your mail program in the usual way.

The same trick can be used for any other TCP service that might be blocked from normal access.

INTEGRATING KERMIT 95 WITH OTHER APPLICATIONS

[ Next ] [ Previous ] [ Top ]

Also see: What Is Kermit? by Ishakawa, Section "Embedded System Development and Kermit".

If you have a C or C++ or Java application that already includes communications i/o and you just want to add Kermit file transfer protocol to it, you can use Embedded Kermit. If you need more than that, read on.

How do I embed Kermit in my application?
Many software makers ask us for Kermit software in special forms that can be embedded in their applications, to provide file transfer or other communications functions to their customers. But each software maker wants something different:

  • Connection establishment but no data transfer
  • Data transfer using pre-existing connection
  • Connection establishment and data transfer
  • File transfer only without "bells and whistles"
  • Scripting but not terminal emulation
  • Terminal emulation but not file transfer
  • Serial communication but not networking
  • Networking but not serial communications
  • Binary file transfer but not text
  • Greek character-set conversion but not Cyrillic
  • Access to shell escapes allowed
  • Access to shell escapes forbidden
  • Secure authentication and strong encryption
  • No need for security
  • A pretty display
  • No display at all

and on and on. And they desire this functionality to be packaged as a link library for this or that platform, a DLL, an OCX, a VBX, an Active X control, a .NET component, a COM object, a Delphi component, a Netscape Plugin, a Java object, a Visual FoxPro object, a Windows Service, etc etc etc. The combinations of functionality and interface are many, and there is no way we can satisfy them without warehouses full of programmers, which nobody can afford to pay for.

Consequently we recommend that software makers who wish to embed Kermit functionality in their products (communications, scripting, file transfer, terminal emulation, character-set translation, etc) license and use the programs we already have available. See the next item for an example.

The "API" (Application Program Interface) is the command language. It is more fully expressive, precise, comprehensive, and portable than any other API that could be designed (look at all the commands in C-Kermit or MS-DOS Kermit or Kermit 95; each one is there for a reason). As new releases of the Kermit program come out, your product can be easily updated and will benefit from all the new features, fixes, and speedups automatically.

The recommended method of embedding Kermit in another application is via command-line invocation. The Kermit command line can contain a selection of simple commands, and it can also refer to more complex command files or scripts composed by or for your application. Kermit can be configured to create any kind of log you need, and it can return the status of its operations in various ways that can be used by your application.

When you license Kermit software for embedding in your application, we are happy to work with you to ensure it meets your needs. And if Kermit protocol transfers are important to you, then it should also be important to you to come to the source -- we designed and created the protocol, we continue to improve it, we believe in it, and we stand behind it.

Following this advice allows each party to concentrate on what they are good at, rather than unnecessarily duplicating efforts and "reinventing the wheel". You concentrate on your application; we'll do the communications. We support our software, you support yours, everybody is happy.

Kermit 95 version 2.1.3 (January 2003) includes new "lockdown" features of special interest to those who which to integrate Kermit 95 sessions with their own applications. For details, see the release notes.

How do I invoke Kermit 95 from Visual Basic?
Easy. First refer to Using C-Kermit, "Starting and Stopping C-Kermit". Note that you can invoke K95 with a command-line argument specifying the name of a file containing commands to execute; this filename must be the first argument after the program name. Suppose, for example, K95.EXE is in the PATH, and the command file is called UPDATE.KSC. Then the command line would be, simply:

  k95 update.ksc

The command file can be prefabricated, or it can be created dynamically by your application. If it is not in the current directory, of course you must specify the full path:

  k95 d:\scripts\update.ksc

If you want K95 to exit automatically when the script is complete, put EXIT commands in the script wherever you want to return control to your VB program.

To invoke K95 from VB, use:

  Shell (commandline, windowstyle)

where commandline is the command with which to invoke Kermit 95, such as "k95 update.ksc", and windowstyle is one of the following:

  0 - Hidden
  1 - Window has focus and is restored
  2 - Window is an icon with focus
  3 - Window is maximized with focus
  4 - Window is restored, current window keeps focus
  6 - Window is an icon, current window keeps focus

The Shell() function returns Kermit 95's task ID.

How do I Make Kermit 95 use an existing connection?
Invoke Kermit 95 with a command-line option that specifies the file handle for the open connection. The format depends on whether it is a serial or network connection:

For serial-port or modem connections
Use the command-line option "-l" with the numeric file handle of the open port or modem as an argument. Example:

"C:\Program Files\Kermit 95 2.1\k95g.exe" -l 664

For Telnet Connections
Use "-j" (lowercase) or "-J" (uppercase) with the numeric socket handle as an argument, perhaps prefixed by an underscore or dollar sign:

-j _number
The -j _number option is similar to -l one, except a TCP/IP connection is assumed for the open handle. Kermit 95 is prepared to accept Telnet negotiations but does not initiate them.

-J _number
-J $number
When started this way, K95 treats the number as a TCP/IP socket handle. If the number is prefaced with an underscore, the socket is being used as a telnet client connection. If the number is prefaced by a U.S. currency (dollar) sign, the socket is being used as a telnet server connection.

Example:

"C:\Program Files\Kermit 95 2.1\k95g.exe" -j _636

If you want to invoke Kermit to perform only one action, such as receiving a file (as you might do when using Kermit as a file-transfer agent within another application), put the desired action option after the -l or -j argument:

"C:\Program Files\Kermit 95 2.1\k95g.exe" -j _636 -r

In this case you might also want to include other command-line options to inhibit execution of the initialization file (-Y), loading of unneeded DLLs (-#), suppress unwanted messages (-Q), etc. See the Kermit 95 manual or type "help options" at the K-95> prompt for documentation of K95's command-line options.

When you invoke Kermit with an open file or socket handle on the command line, Kermit does NOT close the connection when it exits.

For testing, you can use Kermit 95 to make a connection and then invoke a second copy of itself to use it. Example for serial-port connection:

K-95> set port com1
K-95> set speed 57600
K-95> run start \v(exedir)k95g.exe -l \v(ttyfd)

Kermit's \v(exedir) variable contains the full path of the directory containing the Kermit executable, complete with trailing directory separator. The \v(ttyfd) variable contains the numeric file handle of the open connection.

Example for Telnet connection:

K-95> set host xyzcorp.com
K-95> run start \v(exedir)k95g.exe -j _\v(ttyfd)

When the spawned copy of Kermit exits, it does NOT close the connection; thus it should still be open and usable by the original process that spawned Kermit.

How do I invoke K95 on a Raw Socket Connection?
Telnet ports are 23 and 1649. If you want Kermit to open the connection, simply specify a non-Telnet TCP port (socket) number in the -j or -J argument, e.g.:

"pathname\k95g" -j xyzcorp.com:3000

then Kermit does not send Telnet negotiations. Obviously the target host must have a service listening on that port. Alternatively, you can use a short script such as the following:

set login userid               ; Don't try to send authentication info
set network directory          ; Skip host lookups
set network type tcp/ip        ; It's a TCP/IP connection
if fail end 1 TCP/IP Failed    ; Make sure Kermit supports this
set exit on-disconnect on      ; (or OFF as desired)
set host \%1:\%2 /raw-socket   ; "Open" the connection as a raw socket
if success connect             ; (or whatever else you wish Kermit to do)

Suppose this script is called "rawsocket.ksc", it's in the PATH, and Kermit 95 is the registered application for ".ksc" files. Then your application can invoke it like this:

rawsocket.ksc = hostname port

Suppose you wanted to make K95, executing this script, the Telnet application for your browser, to force raw-socket connections for all "telnet://" URLs. In that case you would define the Telnet invocation string as:

"pathname\k95g.exe" rawsocket.ksc = hostname port

where pathname is the location of the Kermit 95 executable and hostname and port are in whatever notation required by your browser to indicate parameter substitution. This assumes your browser allows you to extract the hostname and protocol from the "telnet://" URL (as opposed to, say, passing the entire URL, which would force Kermit to use Telnet protocol).

If you wish to pass the socket handle of an already-open raw socket connection to Kermit, you can't do it as described in the previous section because at present there is no command-line option to specify the protocol (or lack of one), nor can you include a port number with a socket handle; thus when given a -j or -J command-line option with a socket handle number, Kermit assumes a Telnet connection and sends Telnet negotiations. To force Kermit to treat the connection as a raw (no-protocol) socket, you can create a short script, such as this:

set network directory ""  ; Don't look anything up
set telnet wait off       ; Don't wait for Telnet negotiations
set exit hangup off       ; Don't close the socket upon exit
set host _\%1 7777 /raw   ; "Open" the already-open socket

and then instead of invoking Kermit 95 directly with the -j or -J command line option, you would invoke the script like this:

"pathname\k95g.exe" openrawsocket.ksc = socketnumber

replacing socketnumber by the numeric socket number. This replaces the \%1 formal parameter in the script so, for example, if you invoke the script as follows:

"C:\Program Files\Kermit 95 2.1\k95g.exe" rawsocket.ksc = 644

the SET HOST command becomes:

set host _644 7777 /raw   ; "Open" the already-open socket

When any SET HOST class command is given a numeric argument preceded by an underscore (or a dollar sign), this indicates an already-open socket. The port number (7777 in this example) must be given but is ignored. The SET EXIT HANGUP command in the script prevents Kermit from closing the connection when it exits, so the invoking process will still have it available.

How do I invoke Kermit 95 from C++?
The following code snippet illustrates how to start K95.EXE (the console version) from a C++ application that wants to open the serial port itself. This might be done, for example, to keep a call open while invoking Kermit 95 several different times on the same connection. Of course many variations and refinements are possible. The Kermit 95 invocation is like this:

k95.exe -l 1234

where "1234" is the numeric file handle of the open serial port. Of course you can add any other desired command-line options; for example, the name of a script file to be executed:

k95.exe -l 1234 -C "take makethecall"

This tells Kermit the port is already open gives it the handle to use, and then has it execute the file called "makethecall", which contains Kermit commands (e.g. to make a modem call). This file should include the command SET EXIT HANGUP OFF, to prevent Kermit from hanging up when exiting. Here is the C++ code illustrating how to do this:

char buf[64];
SECURITY_ATTRIBUTES sec;
STARTUPINFO si;
PROCESS_INFORMATION StartKermitProcessInfo;

sec.nLength = sizeof(sec);                // Set security parameters
sec.lpSecurityDescriptor = NULL;
sec.bInheritHandle = TRUE;                // Let new process inherit handle

memset(&si, 0, sizeof(STARTUPINFO));      // Set desired startup info
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = ShowCmd;

HANDLE                                    // Open real serial port
hComm = CreateFile( "COM1",
                    GENERIC_READ|GENERIC_WRITE,
                    0,                    // NOT exclusive access
                    &sec,                 // security attributes
                    OPEN_EXISTING,        // device must exist
                    FILE_FLAG_OVERLAPPED, // use overlapped i/o
                    NULL                  // hTemplate
                  ); 
if (hFile == INVALID_HANDLE_VALUE) {
    // handle error...
}

sprintf(buf,"k95.exe -l %ul",hComm);      // K95 invocation command line

if (CreateProcess(  NULL,                 // Start K95
                    buf,
                    NULL,
                    NULL,
                    TRUE,
                    CREATE_NEW_CONSOLE|CREATE_NEW_PROCESS_GROUP,    
                    NULL,
                    NULL,
                    &si,
                    &StartKermitProcessInfo
                 ) {
    // handle error...
} else {
    CloseHandle(StartKermitProcessInfo.hProcess);
    CloseHandle(StartKermitProcessInfo.hThread);
}

Replace "k95.exe" with "k95g.exe" if you prefer the GUI version, and include the full path if necessary.

For further information, see the Microsoft Windows API Reference.

How do I invoke Kermit 95 from Java?
You have to use the GUI version of Kermit 95 2.0 or later for this (K95G.EXE, not K95.EXE).

If you need to use the Console version (K95.EXE) for some reason, you have to work around problems with how javaw.exe starts Console applications, you must begin with a Console window, run java.exe in it, and then start K95.EXE from there.

If you want Kermit to use an existing network connection (one that was made from your Java application), the socket must be inherited from the parent process. Here's an example that starts K95G to have it receive a file (-r) on an open socket connection. In this case, it was found that the "$" prefix to the socket handle was required to prevent Windows from "aborting" the socket before control was returned to the Java process:

private void RunKermit_ReceiveFile(int socketHandle) {
    Process p = null;
    try {
        p = Runtime.getRuntime().exec(
                "C:\\Program Files\\Kermit 95 2.1\\k95g.exe -j $" +
                Integer.toString(socketHandle) +
                " -r"
            );
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        p.waitFor();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

Here's the code snippet from the same application that returns the socket handle by using java.lang.reflect to extract the protected socket file descriptor, so it can be passed to Kermit 95:

private int getSocketHandle(Socket clientSocket) throws Exception {

    // Get the SocketImpl impl object from the client socket
    Field socketImplField = getFieldFromClass("java.net.Socket","impl");
    socketImplField.setAccessible(true);			
    SocketImpl impl = (SocketImpl)socketImplField.get(clientSocket);
	
    // Get the FileDescriptor fd object from the impl object
    Field fileDescriptorField = getFieldFromClass("java.net.SocketImpl","fd");
    fileDescriptorField.setAccessible(true);	
    FileDescriptor fd = (FileDescriptor)fileDescriptorField.get(impl);
	
    // Get the int fd from the fd (FileDescriptor) object
    Field socketHandleField = getFieldFromClass("java.io.FileDescriptor","fd");
    socketHandleField.setAccessible(true);
    int socketHandle = socketHandleField.getInt(fd);
	
    return socketHandle;
}

private Field getFieldFromClass(String className, String fieldName)
  throws Exception {

    Class tempClass = Class.forName(className);
    Field[] classFields = tempClass.getDeclaredFields();

    for (int i = 0; i<fields.length; i++)
    {
        if (fields[i].getName().equals(fieldName))
          return fields[i];
    }
    return null;
}

Thanks to Marcus Mullins for the Java code samples.

If your application contains all the necessary communications functions (connection establishment, i/o, etc) and you prefer to integrate Kermit file-transfer protocol code directly into your Java application, you can use the Java version of E-Kermit; contact us for details.

[ Top ] [ Kermit 95 Home ]


Kermit 95 FAQ / The Kermit Project Columbia University / [email protected]