karn@mouton.UUCP (08/31/84)
To: TAPR TNC owners: Fm: NK6K Re: Software updates. Since a TAPR software maintanence release will be out soon, I'd like to make sure we have all bug reports and requests for changes in. I'll list the ones I know about here, along with a disposition, if known. Please feel free to make comments on any part of the TNC, hardware or software. Please keep in mind the following though: There are now at least 1300 TAPR TNCs (Beta + kit) in the world today. Many people have written code to match the current user interface, mailboxes, bulletin boards, host systems, gateways, etc. Ask yourself if your proposed change will require a change in user software. If your sugestion would cause recoding of other ham's software, unless it has a major benefit, we would probably have to turn it down. This is called the real world, which is something you get into when 1300 hams are involved. A few of the discussions below will seem long and involved. That is because some of the bugs are in more advanced features. The majority of the bugs in the more common features were wrung out in the beta test. On with the bugs: 1) If RETRY is not 0, the TNC will sometimes disconnect before the retry count has expired. This problem took a long time to find, because we couldn't reproduce it. Someone in the field came up with a reliable way to make it happen. The symptom was affected by both the number of frames in flight, and the number of frames in the buffer waiting to be sent. KD4NL has made a patch, we are testing it in the LA area now and will release it next week. This should make some people very happy. 2) TNC "locks up". This is a difficult symptom to trace. Most of them are caused by a fault in the hardware. We have found a bug in the software that causes this, to my knowledge only one person has fallen in to this particular hole. This is also patched along with the retry bug. 3) TNC prints garbage on the screen, 64k worth, then comes back. I have heard rumors that the GLB board can send a frame which causes this to occur when it is received by a TAPR TNC. If anyone has firm information on this, please send it in. Sometimes the rumor comes in as "The GLB sends an illegal protocol frame", possibly an I or UI frame with no PID byte. Based on that, and the symptom, we have fixed a problem that would occur if that type of frame was received. If you have any info on this, send it in. This will be fixed in the next software update, i.e. it is not patched. 4) The beacon is not started even if a non zero value for beacon time is stored in novram. True enuff. You must give a BEACON command after every reset. This bug will be fixed in the next software update. 5) The 400 and 800 baud rates for HBAUD that were there in 2.1 disappeared in 3.1. A patch is available for this, and has been sent to the AMSAT guys who needed it. They use 400 baud PSK thru Oscar 10. Fixed in next software update. 6) *** connect request comes out in transparent mode. I can't make this happen. It will happen if CONMODE is CONV, you are currently unconnected, and you manually go into transparent mode by saying TRANS. When a connect occurs, you will go into convers mode and will see all messages. If you want to do this, and remain in transparent mode on connect, say CONMODE TRANS. If anyone has another way of making this happen, please let me know. 7) If your terminal overruns the TNC's input buffer by ignoring an <xoff> character, the TNC will never try to <xoff> you again. Serves you right, too! This bug should be fixed in the next software update. See also improvement #11 below. 8) TRACE 2xxx bit doesn't work. Non-header data is always dumped. 9) Autobaud is a bit flakey. Since the hardware has no specific baud rate measuring capability, an easy fix is simply to limit the autobaud choices to 300 and 1200 baud. If this would have caused a great deal of difficulty in getting your board up the first time, please let us know. This is the end of the known bugs, i.e. those things which work counter to the way we intended, or counter to the way things were documented. Following are change requests. 1) Store a line to be transmitted when your TNC is connected to by another TNC. E.g. CTEXT I'M IN THE SHOWER, PLEASE RING BELL. That message would be sent automatically when a connect occured. This one stands a good chance of getting in. 2) Store a line to be transmitted when your TNC refuses a connect from another TNC. You'd like the other guy to see *** WB6UUT busy: MAILBOX IS DOWN. This is a little more iffy. Since the frame used for a connect nak, DM, has no I field, we have to put the text in a UI frame. The connecting TNC would have to have MON ON, and the UI frame would have to follow the same digipeater path back, which may be a different path than UNPROTO packets usually take. Thus, even if you used this facility, you stand a finite chance of it not working. Is this worth the effort to implement? Comments please. 3) Link status check. You'd like the TNC to automatically send a frame to see if the other TNC is still there. If not, your TNC would timeout based on RETRY. The command would be CHECK EVERY/AFTER n, where n is some convenient interval. It would not apply if RETRY was 0. This will require a protocol change or update. Right now, with the poll/final controversy, there is no way to prod the other end into giving a response, short of sending a zero length (PID byte only) Iframe. This seems a bit tacky. This is on the list of things to get resolved at the next protocol review in September. 4) Discard unacknowledged I frames when a disconnect occurs. Currently, if there are outstanding frame, i.e. frames waiting to be acked or resent, or frames that are in the terminal input queue but as yet unsent, we dump them as UI frames to the UNPROTO address list. This is listed under improvements because this is as we intended it to be, i.e. this is a feature, not a bug. We feel this is a useful diagnostic aid. WE in this paper, by the way, is various combinations of KV7D, KD4NL, and NK6K, depending on which of us is responsible for that part of the code. Comments on this one, please. 5) Implement a TNC resident file transfer protocol. When it comes to file transfers, the TNC was designed to be transparent, just like a modem. In fact, if you go into transparent mode, you can run any program that assumes it's talking to a modem and get the desired results. (And no, it doesn't dial the phone on ATDT commands, wise guy). Note that if you want to transfer 8 bit data you must set the AWLEN and PARITY options correctly, otherwise we'll trash the high order bit. Most data transfer programs will run correctly thru the TNC, as long as their internal timers can handle the inherent delays in packet transmission and digipeating. Implementing a TNC based file transfer protocol would please a small number of users, who would still have to write code on their computer to interface with the TNC's file transfer mechanism. I think the current scheme is the right choice, and is more in line with the division of tasks set out in the ISO seven layered OSI model. Comments? 6) Confirm entry into CONVERS mode. You want a warm fuzzy feeling that the TNC has done your bidding in response to the CONV command. This would require a change that would bother the mailbox/host/gateway crowd. They do a lot of popping in and out of command mode to check status, paths, and other things. An extra message might put the warm fuzzy message into a file, unless they modified their code. Comments? 7) Go back into command mode after a disconnect initiated by the other TNC. Currently, you are left in CONVERS or TRANS mode. This should not both mailbox/host types since ctl-C in command mode is ignored. Comments? 8) Implement a watchdog timer. Have the software pulse a bit on the parallel port at some inner point only reached if the software is running correctly. This is so mountain top digipeaters can reset themselves if something bad happens. Note that this is different than the hardware transmit timer. Good idea, and it will probably be in the next release. 9) Print the digipeat list when a) Someone connects to you b) When you get a connect request c) When monitoring the frequency. I think a) and b) should be done all the time. c) would add to an already cluttered monitor mode. Anybody see a better way of doing it. Adding another command to enable this would add to an already lengthy command list. MPATH has been suggested. 10) Print connect and disconnect packets in monitor mode. How about NK6K>WB6YMH <C> WB6YMH>NK6K <D> There are connect ack and disconnect ack frames, but that might be getting carried away. 11) Increase the number of bytes that the TNC will handle from the terminal after the TNC signals <xoff>. Currently, you must stop within five bytes. After that, the TNC sends another <xoff> after each of the following five bytes. After that, any characters received before the TNC sends an <xon> are discarded. While this has not been a problem for users writing file dumpers in assembler or some high level languages, it has been a problem for programs which dump a line, then look in their input buffer for <xoff>. We will probably increase the guard space to at least 80 characters. Anyone need more? 12) Output <CR> after the callsigns on monitor lines. This would give more room for digipeat paths and not break up data lines as much. 13) Echoing xoff and xon. Currently, if the terminal sends a flow control character out of sequence (xon before xoff, 2 xoffs in a row, etc.), the TNC treats such characters as data and echos them. This has the interesting effect of locking some terminals. It has been suggested that we eliminate this feature and ignore those characters. That's the list as I know it to be. Submit any others to the TAPR PO box. Now that we've got a secretary, she's in charge of not loosing them. Remember, the TRACE command is handy for looking at the protocol and seeing exactly what the TNC sent/received, including user data. Please include hardcopy of traces for protocol error reports. NK6K for KV7D and KD4NL, TAPR Software Group.