|
|
Subscribe / Log in / New account

One more hop for Kermit

By Jonathan Corbet
June 22, 2011
Way back in the Good Old Days, when your editor was a VMS system administrator, the ARPAnet was small, slow, and extremely limited in access. While some of the cooler folks were building USENET around uucp-based links, Unix systems were still not readily available to most of us. But we were beginning to get personal computers, bulletin-board systems were being set up, and the fortunate among us could afford 1200 baud modems. The tool of choice for using those modems in those days was often a little program called "Kermit," which was freely downloadable even then. Your editor doesn't remember when he last used a modem, but he was still interested to see that this 30-year-old project is about to go through a final transition; it will, among other things, be free software at last.

For many systems in those days - especially systems without a government budget behind them - the "network interface" was the serial port. That's how we connected to The Computer at work; that's also how we got onto the early services which were available in those days. The first thing any RS232 networking user needed was a way to move keystrokes between one interface (where they sat) and the interface connected to the modem. Unix systems often came with a tool called "cu" for that purpose, but, even on those systems, users tended to gravitate toward a newish tool called Kermit instead.

Kermit has its roots at Columbia University, where it was developed as a way to communicate between computers on a heterogeneous network. It would fit easily onto a floppy and was (unlike cu) easy to set up and use; one just needed to figure out how many data bits, how many stop bits, and what kind of parity to use (RS232 is a fun "standard"), type an appropriate ATD command at the modem, and go. Kermit could even handle things like translating between different character sets; talking to that EBCDIC mainframe was not a problem.

Over a short period of time, Kermit developed some reasonable file transfer capabilities. Its protocol was efficient enough, but it was also designed to deal with serial ports which might interpret control characters in unexpected ways, turn eight-bit data into seven-bit data, and more. The robustness of the protocol meant it "just worked" between almost any two arbitrary types of machines. So it's not surprising that, in those pre-Internet days, Kermit became a popular way of moving files around.

Columbia distributed a number of versions of Kermit in source form; it could be had from bulletin board sites, DECUS tapes, and more. The program was never released as free software, though. When Kermit was first coming into use, free software licenses as such didn't exist yet. The university considered releasing the code into the public domain but decided that it wasn't a good idea:

Because we wanted Kermit software to be shared openly, we did not place our Kermit programs into the public domain. While this might seem contradictory, we felt that by copyrighting the programs, we could prevent them from being taken by entrepreneurs and sold as commercial products, which seemed necessary since we had heard stories of other universities that had been enjoined from using programs which they themselves had written by firms that had taken their public domain work and copyrighted it for themselves.

The license for Kermit varied over time, but was always of the "you may make noncommercial use of this program" variety. The final version of the Kermit license allowed bundling the program with free operating systems, but did not allow modifications to the source without permission. As a result, despite the fact that Kermit's license allowed distribution with systems like Linux, most distributors eventually shied away from it because it was not truly free software.

Anybody other than free operating system projects wanting to distribute Kermit commercially had to buy per-seat licenses (at a cost of $3-10 each) from Columbia.

Kermit has proved remarkably durable over the years. During Kermit's lifespan, the Internet has taken over, even our phones can run ssh, and RS232-based communications have mostly fallen by the wayside. Kernel developers are still known to use serial consoles for some types of debugging, but your editor would predict that a substantial portion of the rest of LWN's readership has never had to wonder where that null modem cable went to. Kermit's user base must certainly be shrinking, but it is still being maintained and sold to those who need it.

Or, it least, it was; in March the university announced that it was unable to continue supporting the Kermit project. One assumes that commercial license sales had finally dropped to the point where they weren't worth the administrative overhead of dealing with them. As of July 31, 2011, the university will put no further development effort into Kermit and will no longer provide support and maintenance services. A three-decade project is coming to a close.

Columbia University is doing one more thing with Kermit before the end, though - it is releasing the software under the BSD license. C-Kermit 9.0 will carry that license; the first beta release was made on June 15. The 9.0 release will also support the FORCE-3 packet protocol ("for use under severe conditions"), improved scripting, various fixes, and more. So the 9.0 release, presumably scheduled for sometime close to the July 31 deadline, will not just have new features; it will be free software for the first time.

As a result of this change, Kermit may soon show up in a distribution repository near you; most Linux users are, at this point, unlikely to care much. But, for many of us, there will yet come a time when the only way to talk to a system of interest is through a serial connection. Kermit is far from the only option we have at this point, needless to say, but it's a good one. Kermit's hop into the the free software community is more than welcome.


to post comments

One more hop for Kermit

Posted Jun 23, 2011 0:54 UTC (Thu) by daney (guest, #24551) [Link] (5 responses)

This is welcome news.

I use Kermit every day to communicate with little embedded systems (and the serial ports of x86 PCs when capturing console output to debug kernel crashes), and find it superior to minicom for this. Or perhaps I just can't be bothered to learn how to use minicom.

One more hop for Kermit

Posted Jun 23, 2011 2:54 UTC (Thu) by lutchann (subscriber, #8872) [Link] (3 responses)

If all you want to do is configure /dev/ttyS2 and then move characters between it and your terminal, minicom is surely overkill.

Do you use GNU Screen? Try `screen /dev/ttyS2 115200` from inside your screen session.

You get all the nifty screen features like the scrollback buffer and logging, without having to learn anything new.

One more hop for Kermit

Posted Jun 23, 2011 7:17 UTC (Thu) by jengelh (guest, #33263) [Link]

The command also works from outside screen.

One minor problem...

Posted Jun 23, 2011 13:40 UTC (Thu) by kena (subscriber, #2735) [Link] (1 responses)

Screen does great -- but it lacks (I think?) trivia such as stop bits, parity bits, handshaking, etc. That being said, I find out something new about screen roughly once a week. It's got one of the two or three scariest manpages, IMHO -- it's just SO freaking useful.

man screen...

Posted Jun 23, 2011 15:09 UTC (Thu) by iam.TJ (guest, #56644) [Link]

If a tty (character special device) name (e.g. "/dev/ttya") is specified as the first parameter, then the window is directly
connected to this device. This window type is similar to "screen cu -l /dev/ttya". Read and write access is required on the
device node, an exclusive open is attempted on the node to mark the connection line as busy. An optional parameter is
allowed consisting of a comma separated list of flags in the notation used by stty(1):

<baud_rate>
Usually 300, 1200, 9600 or 19200. This affects transmission as well as receive speed.

cs8 or cs7
Specify the transmission of eight (or seven) bits per byte.

ixon or -ixon
Enables (or disables) software flow-control (CTRL-S/CTRL-Q) for sending data.

ixoff or -ixoff
Enables (or disables) software flow-control for receiving data.

istrip or -istrip
Clear (or keep) the eight bit in each received byte.

I've always been confused by the ixon/ixoff option names and purpose since ixon/ixoff look like a complementary pair for enable/disable of a single function - I'd always thought the initial "i" was for "input" and the second pair would use "o" for "output", e.g: oxon/oxoff.

One more hop for Kermit

Posted Jun 23, 2011 9:00 UTC (Thu) by leighbb (subscriber, #1205) [Link]

I recently started using picocom, and have found it does exactly what I need and nothing more. Give it a try...

ReGIS / Sixel

Posted Jun 23, 2011 4:48 UTC (Thu) by tstover (guest, #56283) [Link]

This might be the first bsd licensed viewer for these terminal types.

These control characters let serial terminal graphics happen with actual pixel control. (I also think this is what the old Prodigy service used for its drawing)

One more hop for Kermit

Posted Jun 23, 2011 5:12 UTC (Thu) by nlucas (guest, #33793) [Link]

A bit before 2000, my monitor broke, and while it was repairing I used an Amstrad PPC640¹ as a terminal to my linux system, using an hacked serial cable.

The only thing needed for that was, off course, kermit (and a bootable DOS disk, because the Amstrad didn't have any hard-drive, only two 3.5' floppy's).

At the time, terminals were already becoming scarce, so it took some effort finding information about it (and I had no monitor :).

------
¹) http://en.wikipedia.org/wiki/PPC_512

One more hop for Kermit

Posted Jun 23, 2011 5:59 UTC (Thu) by kena (subscriber, #2735) [Link]

It is safe to say that I haven't used Kermit extensively since my early college years when, just like our dear editor, I needed to use it on the DEC Rainbows to talk to the VAX. As today is the 27th anniversary of my high school graduation, that gives you an idea of the timeframe involved.

I do have to differ with Jon, though: I love reading about kernel stuff, but a kernel hacker I am not. Nevertheless, hardware labs are a place where RS-232 lives on strongly, and as an IT guy supporting hardware engineers, I always keep a couple spare null modems, gender-benders, 9-to-25 converters, USB-to-9-pin, etc., lying around.

In a real sense, the end of Kermit's commercial release, though, heralds the day in the foreseeable future when RS-232 will, finally, be defunct. It's had a good run -- I remember rather ecstatically when I got a *1200* baud modem; I was finally faster than my neighbor with the acoustic coupler! And (IMHO, in order) Modem-7, X-Modem, K-Modem, Kermit and Z-Modem had good runs, but I suppose it's best to look forward to what the wonderful world of truly networked protocols will deliver.

One more hop for Kermit

Posted Jun 23, 2011 8:50 UTC (Thu) by eru (subscriber, #2753) [Link]

Kermit is one of those programs useful to have at hand Just In Case. A few years ago, such a situation materialized when I had to move files between a modern PC and an ancient 16-bit Xenix system. I could compile an old version of unix kermit for it, loaded to it via the only other available interface, a 360k floppy drive. Using Kermit was not really faster than using the floppies, but at least that way I could make the computers transfer large archives unattended.

One more hop for Kermit

Posted Jun 23, 2011 9:48 UTC (Thu) by copsewood (subscriber, #199) [Link]

I remember using Kermit on ancient PCs to enable these to talk to Eclipse minicomputers around 1990 to download files and obtain email via Janet homebrew Coloured Book protocols to the UK academic Internet gateway at London University.

To get an Apollo workstation to do the same trick I had to obtain the Kermit Pascal source code for it and compile it. I seem to remember the source code did need a minor modification to compile it.

As to future uses, in computer museums Kermit will probably be a very useful tool for enabling artefacts to communicate with each other.

One more hop for Kermit

Posted Jun 23, 2011 13:25 UTC (Thu) by mtk (subscriber, #804) [Link]

after frank da cruz, the primary force behind kermit, wrote the kermit book, he was walking around the halls of watson labs, columbia's computer center at the time, asking for suggestions on who should write the forward to the book. being a young wise-ass (now an old wise-ass :-), i said "why don't you get knuth to write it??" so frank asked knuth and knuth said yes. oy.

One more hop for Kermit

Posted Jun 23, 2011 14:21 UTC (Thu) by rfunk (subscriber, #4054) [Link]

I'm glad for the relicensing, though a little disappointed that the reason is that they can't support it anymore.

I first used Kermit about 20 years ago to transfer files from a Unix server to my Atari computer. Later I used it to transfer files between my Linux computer and my HP-48 calculator. (An emulator of the latter now runs on my phone.) I think the last time I used it, though, was to turn an old DOS 386 laptop into a serial terminal, and that was nearly a decade ago.

I must protest the disparagement of cu, however; I'm quite a fan of the simplicity of using "cu -l /dev/ttyS0" to talk to a serial port.

One more hop for Kermit

Posted Jun 23, 2011 18:29 UTC (Thu) by mleu (guest, #73224) [Link] (1 responses)

I use /dev/ttySx nearly every day on HP servers by SSHing into iLO and launching the Virtual Serial Port. Couldn't live without it :-)

One more hop for Kermit

Posted Jun 24, 2011 19:03 UTC (Fri) by diederich (subscriber, #26007) [Link]

Hello mleu. If you're willing, I'd like to ask you a couple of questions about what you're doing with HP iLOs and Virtual Serial Port. :-) My e-mail address is diederich@gmail.com. Thanks.

rz and sz

Posted Jun 23, 2011 22:06 UTC (Thu) by rwmj (subscriber, #5474) [Link] (1 responses)

Has to be said, I always thought "rz" and "sz" (an implementation of the zmodem protocol) were a lot better ...

But it's still great that kermit is finally free software!

rz and sz

Posted Jun 24, 2011 0:50 UTC (Fri) by vapier (guest, #15768) [Link]

zmodem is faster, but not as portable/robust as kermit. if your line doesnt have all the restrictions that kermit works around, then zmodem probably makes sense.

One more hop for Kermit

Posted Jun 24, 2011 11:01 UTC (Fri) by brouhaha (subscriber, #1698) [Link]

I've been using ckermit since its early days, and was disappointed when it had to be removed from the Fedora distribution (sometime around FC6) due to the license. I've continued to update an RPM package for my own use, and now that 9.0 beta is under the BSD license, I've submitted a package review request to get it back into the Fedora repository.

RS232

Posted Jun 30, 2011 11:07 UTC (Thu) by robbe (guest, #16131) [Link]

Serial ports are alive in datacenters. Most appliances (plus network gear, i.e. everything but servers), having no graphics card, will use it for initial configuration, or sometimes give you more access on the serial console.

It is also useful to troubleshoot servers if you happened to hose even the management ethernet port. (If you have no clue about the IP address the management reacts to, e.g. it beats connecting a PC with a cross-over LAN cable and doing "nmap -sP 0.0.0.0/0".)

Maybe these will switch to acting as a USB gadget in the future, but there seems no pressing need. 9600 bps is still almost universal for this kind of use, so speed is not an issue. Maybe when UARTs become a significant cost...

Never used kermit, myself, being brought up with telix on DOS; minicom is a natural progression then.

One more hop for Kermit

Posted Jun 30, 2011 11:36 UTC (Thu) by jpfrancois (subscriber, #65948) [Link]

Hourray !
I too uses kermit daily to talk to small embededd board, and upload
code to them.

I find it much better (or at least intuitive) than minicom.
The kermit file transfer protocol never let's me down.

This is great news, since it means we will probably have distribution packages again :)

serial is far from dead since all processor I know has an UART, and lot of them can boot from it. You don't need RS-232 connector and cables, usb cables, and micro usb dongles with a three pin connector, and you are all set-up to start hacking with your board.

I used kermit scripting, until I started to know some python and switched to pyserial. However, I still launch kermit from this script to do some file transfer :)


Copyright © 2011, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds