Giter Site home page Giter Site logo

wl2k-go's People

Contributors

as3ii avatar cbs228 avatar la3qma avatar larsks avatar martinhpedersen avatar t-o-k avatar xylo04 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wl2k-go's Issues

CLI client for manual WL2K commands?

While operating remotely I have concerns that a user might unintentionally send a large file or email that becomes too slow to download over ARDOP HF.

Q8510 How do I access the WL2K system, using Keyboard Access?
A8510 Connect to a RMS Packet Station (you will be asked to supply your radio secure password):
LM List all messages for me.
RM Read all messages for me.
KM Kill (delete) all messages for me.
Rxx Read content of message number xx.
Kxx Kill message number xx. (don’t forget any underscore which may be in the number!) SP Send a message (see A8520)
H Help File (very condensed)
Bye Disconnect

RMS lists commands to run to help in this case - but as ARDOPC has no keyboard mode like pactor I believe it would require an ARDOP client to perform these actions. It would be super nice if there was a super basic REPL that a user could type these commands into manually for the ARDOP case.

I imagine it working something like:

wl2k-cli --url ardopc://blahblahblah
LM
 <RMS lists messages>
K<message id>
ctrl+d to terminate session

I had a quick look at the code, but it's really beyond my Go skill level to attempt to build something like this. Looking around I haven't seen any other tools to kill messages using ARDOPC, so this will would be super super handy!

fbb: Support ISO-8859-1 encoded headers (subject)

Although the winlink message format specification says that the headers should be ASCII-only characters, RMS Express encodes the subject header as ISO-8859-1.

If we use https://golang.org/pkg/mime/#WordDecoder and #WordEncoder for the headers, we should be able to properly decode ISO-8859-1 headers as well as conforming with RFC 2047 on encode.

Currently, fbb encodes/decodes the headers as UTF-8... which is clearly wrong.

transport: Add pactor support

Documentation and information regarding communicating with a pactor modem is needed.

Maybe bluetooth interface should be a priority?

ARDOP: Enable FSKONLY mode

I've gone on a bit of a mission to see if it is possible to use the QRP-Labs QDX with Winlink. As the QDX only supports single carrier modes, I'd like to be able to only enable FSK modes with ardopc.

I asked on the bpq32 mail list, and there is command to enable FSK only in ardopc already, "FSKONLY 1".

In the pactor modem, the ability to send init commands is available in this format:

pat connect "pactor:///HB9AK?init=PTCH%204"

So, going on the above example I would like to be able to run:

pat connect "ardop:///VK2IO?freq=7045&init=FSKONLY%201"

Or even just set a config option.

While I do understand some of the code here, I am by no means a Go programmer, or completely understand the codeflow for pat.

Connection failure using agwpe implementation

EDIT: Apparently I lied about the situation under which I am seeing this behavior. I've updated the description.


I'm trying to use the agwpe transport to establish a connection between two Direwolf instances. The connection is established correctly, but I'm seeing the following behavior:

  1. Local system sends SABME frame
  2. Remote system sends UA frame
  3. Remote system sends several I frames with content (these are received correctly)
  4. Remote system sends RR frame
  5. Local system replies with DM-.

The code looks broadly like this:

port, err := agwpe.OpenPortTCP(options.TncAddress, 0, options.MyCallsign)
...
conn, err := port.DialContext(context.TODO(), targetCallsign)
...
go func() { io.Copy(os.Stdout, conn) }()
io.Copy(conn, os.Stdin)

Is this...

  • A bug in wl2k-go?
  • A bug in direwolf?
  • A bug in my understand in how this is supposed to work?

If it helps, here's are Direwolf logs of the connection:

[0.3] N1LKS-4>N1LKS:(SABME cmd, p=1)
[0L] N1LKS>N1LKS-4:(UA res, f=1)
[0L] N1LKS>N1LKS-4:(I cmd, n(s)=0, n(r)=0, p=0, pid=0xf0)<0xf0><0x0d>ERROR; /var/lib/ax25/node/loggedin: Permission denied<0x0d>
N1LKS audio level = 35(18/22)    6________
[0.0] N1LKS>N1LKS-4:(UA res, f=1)
[0L] N1LKS>N1LKS-4:(I cmd, n(s)=1, n(r)=0, p=0, pid=0xf0)<0xf0>URONode v2.15 - Welcome to XX#XX-#<0x0d>Type "?" for commands or H <command> for more detailed help on a c>
N1LKS audio level = 4(8/10)    3+_______
[0.0] N1LKS>N1LKS-4:(I cmd, n(s)=0, n(r)=0, p=0, pid=0xf0)<0x0d>ERROR; /var/lib/ax25/node/loggedin: Permission denied<0x0d>
[0L] N1LKS>N1LKS-4:(I cmd, n(s)=2, n(r)=0, p=0, pid=0xf0)<0xf0> Please use the Info and ? commands.<0x0d><0x0d>
N1LKS audio level = 0(3/3)    _+_______
[0.1] N1LKS>N1LKS-4:(I cmd, n(s)=1, n(r)=0, p=0, pid=0xf0)URONode v2.15 - Welcome to XX#XX-#<0x0d>Type "?" for commands or H <command> for more detailed help on a comman>
[0L] N1LKS>N1LKS-4:(I cmd, n(s)=3, n(r)=0, p=0, pid=0xf0)<0xf0><0x0d>=><0x20>
[0L] N1LKS>N1LKS-4:(RR cmd, n(r)=0, p=1)<0x01>
N1LKS audio level = 0(2/2)    2________
[0.0] N1LKS>N1LKS-4:(I cmd, n(s)=2, n(r)=0, p=0, pid=0xf0) Please use the Info and ? commands.<0x0d><0x0d>
N1LKS audio level = 0(1/2)    41|______
[0.1] N1LKS>N1LKS-4:(I cmd, n(s)=3, n(r)=0, p=0, pid=0xf0)<0x0d>=><0x20>
N1LKS-4 audio level = 26(16/16)    0000000__
[0.3] N1LKS-4>N1LKS:(XID cmd, p=1) Half-Duplex REJ SREJ Multi-SREJ modulo-128 I-Field-Length-Rx=256 Window-Size-Rx=32 Ack-Timer=3000 Retries=10
N1LKS-4 audio level = 18(14/13)    0000000__
[0.3] N1LKS-4>N1LKS:(DM res, f=1)
N1LKS-4 audio level = 18(12/11)    0000000__
[0.3] N1LKS-4>N1LKS:(DM res, f=1)
N1LKS-4 audio level = 18(11/10)    0000000__

Issue with Hurricane form

There seems to be a problem with the Hurricane form not opening back up once attached.

STR

  1. pat http
  2. Action -> Compose
  3. Template -> WEATHER Forms -> Hurricane Report
  4. Fill out some info and press submit
  5. Go to your sent folder
  6. Open message
  7. Click on Hurricane Report Initial button

Result:

  • A browser window opens and says: "open: no such filed or directory"

Expected result:

  • Form should show up in browser again

Looking at the saved message on the file system, it does contain the form

Possible that the form name having white spaces is messing things up.

Support for KISS over TCP

It would be great if wl2k-go would support connecting to a TNC in KISS mode over TCP. With LAN attached Raspberry Pi 3's running Direwolf, this is a great, sharable alternative to running the software on individual PCs wired to radios.

transport: Native KISS+AX.25 support

Several discussions regarding this topic has been started. I'm opening this issue for future discussions regarding:

  • KISS over TCP/UDP/Serial
  • Native AX.25 support (AX.25 on any platform supported by Go)

KISS refers to a protocol to transfer raw bytes (as they should be transmitted on air) to a modem. KISS is usually used to encapsulate AX.25 packets in order to send it to a packet modem (hardware KISS TNC, DireWolf etc).

It merely serves to encapsulate the protocol frames in a way that can successfully pass over a serial link to the TNC.

AX.25 is a data link layer protocol, responsible for establishing link-layer connections, transferring data between nodes, detecting errors and handle re-transmission of lost packets. AX.25 is an ARQ protocol.

In order to support KISS-only TNCs (like DireWolf, TNC-X, Kenwood TH-D74 etc) natively in Go, we will first need a full AX.25 implementation for the link-layer stuff.

KISS should be trivial to implement, but writing a decent AX.25 implementation is a more challenging task.

Some open source implementations exists, but only a few of them have been used and tested extensively.

Non-exhaustive list of implementations with (more or less) open source code:

All of these implementations have their strength and weaknesses which should be identified before considering which could be the basis for an eventual port to Go.

More info on this topic:

Related issues:

wl2k: Parse ax25 URLs with proper path syntax

The documented syntax (wl2k connect help) for connecting via a digipeater does not work:
ax25://[axport]/DIGI-1/TARGET.

Instead, the user must use "ax25://[axport]/TARGET via DIGI-1".

This should be fixed in the connect string parser in cmd/wl2k/connect.go.

Linux NetROM support

I'm interested in having NetROM support for outbound connections. I'm really not a go programmer, so some of the knowledge I'd need to start this project are missing -- building pat + wl2k-go with local mods, etc.

From a brief investigation, I think the changes would mostly consist of using AF_NETROM for the socket, calling nr_config_load_ports instead of the ax_ version, adding a netrom: url scheme, not using digis. Not sure whether this would be better done as a separate transport, or as conditionals in the ax25 path.

Thoughts?

ardrop: Data lost in transmission

I am experiencing data loss while transferring data between two wl2k-go nodes over ardop.

Running ARDOP_WIN_0.4.1 under Wine.

The ARDOP TNCs are not reporting any CRCFault and I have verified that the data is actually written to the TNC as valid ARQ type data-frames. It seems likely this is an ARDOP bug.

I have tested multiple times with the same traffic (message) and the error occurs at arbitrary/random positions in the data stream.

Using 1000MAX ARQ bandwidth for the session over VHF (single sideband).

Below is a data dump (in decimals) showing content of data-frames sent/received. 2 125 is the message chunk headers in b2f.

Data sent (data not showing up at the remote is strikethrough)

2 125 18 238 174 29 238 155 79 216 147 219 161 126 238 91 207 42 144 63 215 153 170 162 35 238 220 8 152 118 239 102 90 71 90 120 71 224 106 239 231 241 62 71 79 205 211 169 249 47 123 253 145 61 67 223 186 181 11 146 63 7 7 223 46 216 69 120 124 10 156 159 165 127 125 250 18 63 201 38 239 5 55 63 219 70 205 203 203 46 102 154 179 123 83 193 137 62 182 180 4 128 238 115 150 165 65 210 6 0 21 50 165 145 176 189 101 165 175 248 1 170 80 26 96 158 211 2 125 170 183 215 179 223 112 61 31 54 103 142 21 229 66 129 6 194 84 166 125 1 196 249 181 52 167 253 147 154 155 173 230 227 211 116 201 77 232 231 147 246 114 247 255 111 5 107 26 33 162 235 34 191 69 130 25 3 178 176 94 89 108 59 86 94 173 198 218 251 20 153 187 241 18 220 139 72 10 33 84 161 213 147 31 236 251 110 24 130 151 102 65 38 186 120 77 169 199 176 70 70 240 204 38 130 67 94 9 127 227 135 250 95 103 252 142 102 45 59 114 231 139 245 6 92 2 125 56 27 185 177 235 102 169 5 231 206 219 99 255 83 175 71 223 78 253 131 164 49 53 63 50 210 211 202 150 39 137 58 253 39 218 68 184 134 85 250 64 51 13 160 52 163 210 120 230 120 96 214 75 82 122 78 211 220 144 116 117 210 22 133 180 58 186 221 69 2 148 3 37 108 241 77 2 94 17 208 91 45 175 36 219 140 143 217 246 149 136 49 221 26 242 37 203 164 11 28 99 11 27 39 2 148 101 29 158 191 19 120 88 29 147 66 204 13 43 47 207 83 112 59 155 2 125 82 27 36 206 2 171 120 196 253 93 100 171 126 203 153 211 100 245 127 78 141 34 183 173 3 53 46 222 107 225 184 157 220 221 39 198 56 212 222 107 61 205 10 121 0 126 140 136 48 200 111 236 20 31 64 38 35 111 130 2 62 102 69 137 230 47 255 56 205 186 71 239 50 71 223 203 35 209 76 121 165 180 26 34 15 65 119 164 97 104 166 100 184 240 213 55 170 163 140 131 89 202 228 188 62 169 26 134 204 162 106 76 68 27 15 135 53 178 232 98 24 211 254 185 0 2 125 35 157 212 159 237 102 135 233 225 57 156 104 112 42 89 191 86 90 46 6 3 128 214 115 208 78 159 205 124 83 199 178 28 214 164 15 231 120 102 111 71 134 53 75 115 246 224 178 49 100 19 194 199 134 69 20 120 222 98 196 231 134 207 123 125 66 202 132 97 175 93 39 172 86 78 61 201 20 17 73 13 61 6 91 199 87 95 40 252 121 20 191 151 108 1 50 75 21 0 195 252 227 228 48 96 115 138 208 17 116 192 10 223 149 47 221 17 137 215 99 251 254 253 107 67

Data received (missing data location is strikethrough)

2 125 18 238 174 29 238 155 79 216 147 219 161 126 238 91 207 42 144 63 215 153 170 162 35 238 220 8 152 118 239 102 90 71 90 120 71 224 106 LOST DATA 134 53 75 115 246 224 178 49 100 19 194 199 134 69 20 120 222 98 196 231 134 207 123 125 66 202 132 97 175 93 39 172 86 78 61 201 20 17 73 13 61 6 91 199 87 95 40 252 121 20 191 151 108 1 50 75 21 0 195 252 227 228 48 96 115 138 208 17 116 192 10 223 149 47 221 17 137 215 99 251 254 253 107 67

fbb: Support yet another undocumented date header layout (2006-01-02 15:04)

I've encountered yet another undocumented date header layout while playing around with winlink's Radio Only network.

The original message was sent with RMS Express to LA3F X-Rms-Originator: LA3F.

When downloaded via LA3F (one of my pickup points), the Date format was YYYY.MM.DD HH:MM. This is the previously seen undocumented/incorrect layout seen earlier (#29).

When downloaded via SM5RVH running RMS Relay-3.0.30.0, the date header was encoded using the layout YYYY-MM-DD HH:MM.

We need to support decoding messages with this layout. I really hope WDT will fix their code and/or the specification some day(!!).


For the record:

The Date: field is the UTC date and time the message was originated and is in the format YYYY/MM/DD HH:MM.

http://winlink.org/b2f

Add support for ICS forms

Winlink Express allows the operator to fill in the fields for standard ICS and ARRL message forms, then sending only the data of the form to reduce the message size. Pat could use this functionality to improve its utility for emergency communications, especially if the forms are compatible with Winlink Express.

  • KM6DOV

Ft897 on serial port

Ubuntu 14.04 - 64 bit
Ft897 connected to /dev/ttyUSB0 at 38400
Command:

wl2k connect winmor:DB0ZAV@7048500

give:

2015/10/07 21:14:24 ft897 ready. Dial frequency is 17.870.00 MHz.
2015/10/07 21:14:24 QSY winmor: 7048500
2015/10/07 21:14:24 Unable to QSY: Hamlib rig not loaded.

Initial rig frequency is correct so I suppose that rig config is OK.
Winmor TNC is running under Wine.
It is my fault or a bug?

Regards
Franco Spinelli
IW2DHW

ax25: serial-tnc (DialKenwood) is broken

The serial-tnc scheme and it's DialKenwood function is badly designed and needs to be rewritten.

The scheme (serial-tnc) assumes too much of the TNC and the serial package used for IO could be much better.

The next implementation needs to allow scriptable TNC-up and TNC-down commands. It should also support flow control and have better error handling.

FBB: More lenient date\time parsing

There's a bug report on the BPQ forum: https://groups.io/g/bpq32/message/35117. I don't know what the spec says about the date\time format, but BPQ evidently uses a different format than other RMS's.

MID: 7975_W7WXV
Date: 20220513002343 <<<< generated from BPQ web browser, blows up PAT clients
Type: Bulletin
From: W7WXV
To: kg7av
Subject: test 3
Mbo: W7WXV
Body: 56
File: 194 or-wxv-22-014.k2s

vs

Date: 2022/05/13 00:27 <<<< generated from RMS Express, all clients handle this fine

Error handling B2F message with leading CRLFs

While testing an unrelated PR I encountered a bug that caused a received message to get lost "in transit" to disk without reporting the failure as an error to the remote station. This resulted in message loss.

So I did some more digging, and found a case where we would end up writing an empty .b2f file that could explain the bug I observed.

If the B2F message we receive is a headerless message (or a message starting with the header delimiter CRLFx2), we end up not reporting any error and just writing an empty message to disk. The empty file written to disk as a result will produce the error I observed when testing this PR. Unfortunately, since the buggy message was lost I can't confirm my theory.

Originally posted by @martinhpedersen in la5nta/pat#426 (comment)

fbb: ParseDate fails on msgs forwarded by RMS Relay

RMS Relay seems to break the Date format of messages it forwards by
re-formatting it as "YYYY.MM.DD HH:MM". This format clearly violates
the Winlink Message Format specification:

The Date: field is the UTC date and time the message was originated and is in the format YYYY/MM/DD HH:MM.

We need to support parsing of this format in order to support RMS Relay
forwarded messages.

Consider adding support for other common email date formats also, just in case.

ardop: panic: close of closed channel

pat connect ardop:///HB9AK
... session data ...
FQ
panic: close of closed channel

goroutine 1 [running]:
github.com/la5nta/pat/vendor/github.com/la5nta/wl2k-go/transport/ardop.(*broadcaster).Close(...)
	/home/martinhpedersen/go/src/github.com/la5nta/pat/vendor/github.com/la5nta/wl2k-go/transport/ardop/ctrl_broadcast.go:148
github.com/la5nta/pat/vendor/github.com/la5nta/wl2k-go/transport/ardop.(*TNC).close(0x1a190540)
	/home/martinhpedersen/go/src/github.com/la5nta/pat/vendor/github.com/la5nta/wl2k-go/transport/ardop/tnc.go:357 +0x63
github.com/la5nta/pat/vendor/github.com/la5nta/wl2k-go/transport/ardop.(*TNC).Close(0x1a190540, 0x84df968, 0x1a143c04)
	/home/martinhpedersen/go/src/github.com/la5nta/pat/vendor/github.com/la5nta/wl2k-go/transport/ardop/tnc.go:343 +0x6e
main.cleanup()
	/home/martinhpedersen/go/src/github.com/la5nta/pat/main.go:406 +0x55
main.main()
	/home/martinhpedersen/go/src/github.com/la5nta/pat/main.go:308 +0x654

ardop: Host interface changed yet again

From the updated host interface specification document:

Commands and data are no longer acknowledged by a “RDY” reponse as in prior versions but all commands and data are buffered and processed on a first in first out basis.

This means the ARDOP developer(s) yet again broke compatibility, and this must be fixed in order to continue support for ardop.

I am strongly considering to stop working on ARDOP support until they promise a stable host interface specification, which I assume will be their v1.0.0 release.

transport/ax25: libax25 socket is not properly closed (on failure?)

--------- some log output ------

2015/03/10 17:42:17 Connecting to ax25:LA1B-10...
2015/03/10 17:42:59 Connected to AX.25:LA1B-10
2015/03/10 17:42:59 Exchange failed: EOF
2015/03/10 17:43:17 Connecting to ax25:LA1B-10...
2015/03/10 17:43:17 Unable to establish connection to remote: Unable to connect: address already in use
2015/03/10 17:43:21 Connecting to ax25:LA1B-10...
2015/03/10 17:43:21 Unable to establish connection to remote: Unable to connect: address already in use
2015/03/10 17:43:28 Connecting to ax25:LA1B-10...
2015/03/10 17:44:00 Connected to AX.25:LA1B-10
2015/03/10 17:44:00 Exchange failed: EOF
2015/03/10 17:45:00 Connecting to ax25:LA1B-10...
2015/03/10 17:45:02 Connected to AX.25:LA1B-10
[WL2K-2.8.5529.14476-B2FWIHJM$]
Brentwood CMS via LA1B >

FF
FQ
Waiting for remote node to close the connection...
2015/03/10 17:45:25 Disconnected.
2015/03/10 17:45:32 Connecting to ax25:LA1B-10...
2015/03/10 17:45:32 Unable to establish connection to remote: Unable to connect: address already in use
2015/03/10 17:45:35 Connecting to ax25:LA1B-10...
2015/03/10 17:45:35 Unable to establish connection to remote: Unable to connect: address already in use
2015/03/10 17:45:43 Connecting to ax25:LA1B-10...
2015/03/10 17:45:44 Connected to AX.25:LA1B-10
[WL2K-2.8.5529.14476-B2FWIHJM$]
Wien CMS via LA1B >
FF
FQ
Waiting for remote node to close the connection...
2015/03/10 17:46:07 Disconnected.

transport/ax25: nil pointer dereferenced in ax25.(*Conn).RemoteAddr()

This bug emerged when I added the event-log, which tries to access the conn's RemoteAddr after connect. I don't know if the connect was successful or not, but conn was clearly not nil.

2015/10/04 18:10:00 Connecting to ax25:LA1B-10...
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x5447a1]

goroutine 50 [running]:
github.com/la5nta/wl2k-go/transport/ax25.(*Conn).RemoteAddr(0x0, 0x0, 0x0)
        /media/Diverse/Development/Go/src/github.com/la5nta/wl2k-go/transport/ax25/ax25.go:60 +0x81
main.(*EventLogger).LogConn(0xc82000f970, 0xc82039ca40, 0x14, 0x0, 0x7f6a955a31c0, 0x0, 0x7f6a9861f028, 0xc820387a20)
        /media/Diverse/Development/Go/src/github.com/la5nta/wl2k-go/cmd/wl2k/event_log.go:43 +0x266
main.Connect(0xc82000f820, 0xc, 0xc82000f800)
        /media/Diverse/Development/Go/src/github.com/la5nta/wl2k-go/cmd/wl2k/connect.go:107 +0x884
main.connectAny(0xc820012500, 0x4, 0x4, 0x7)
        /media/Diverse/Development/Go/src/github.com/la5nta/wl2k-go/cmd/wl2k/connect.go:21 +0x85
main.Connect(0xc82000f7f8, 0x7, 0x914700)
        /media/Diverse/Development/Go/src/github.com/la5nta/wl2k-go/cmd/wl2k/connect.go:34 +0x115
main.execCmd(0xc82000f7f0, 0xf, 0xc820041e00)
        /media/Diverse/Development/Go/src/github.com/la5nta/wl2k-go/cmd/wl2k/interactive.go:48 +0x357
main.scheduleLoop.func1(0xc820178000, 0x1, 0x1)
        /media/Diverse/Development/Go/src/github.com/la5nta/wl2k-go/cmd/wl2k/schedule.go:38 +0x23f
created by main.scheduleLoop
        /media/Diverse/Development/Go/src/github.com/la5nta/wl2k-go/cmd/wl2k/schedule.go:42 +0x2cb

Add support for "secure login"

As RMS Express v1.3.4.0 enables secure login by default (ftp://ftp.winlink.org/WL2K_Secure.txt) I think it's time to support it.

I have not been able to find official documentation for this feature yet, but it's seems to be supported by paclink-unix (see compute_secure_login_response function).

wl2k: Add LM (list message) support

If client sends LM after prompt the remote should respond with a list of messages (with subject).

This is how the "Review message list before downloading" feature of RMS Express works.

Example with pending message:

[WL2K-3.2-B2FWIHJM$]
Perth CMS >
  LM
LE1OF541Q32N 2015/10/31 12:38 1710 SERVICE Your Winlink Password

Perth CMS >

Don't know what "1710" means, it is not the seen as uncompressed/compressed message size in the b2f proposal after.

But other than that the format seems to be: MID DATE TIME UNKNOWN FROM SUBJECT\r
(I don't know if the blank line at the end is important).

Example with no pending messages:

[WL2K-3.2-B2FWIHJM$]
Perth CMS >
  LM
No pending messages found...
Perth CMS >

Dangling socket on failed connection

This Pat connection attempt:

L[ax25]> connect seoc
2022/05/04 17:18:03 Connecting to W8CMN-2 (ax25)...
2022/05/04 17:18:05 Connected to W8CMN-2 (AX.25)
*** Failed to Connect
2022/05/04 17:18:10 Exchange failed: connection lost

whose packets look like this:

nino: fm KB8ZQZ to W8CMN-2 ctl SABM+ 17:18:03.775245 
nino: fm W8CMN-2 to KB8ZQZ ctl UA- 17:18:05.343934 
nino: fm W8CMN-2 to KB8ZQZ ctl I00+ pid=F0(Text) len 22 17:18:08.020993 
0000  *** Failed to Connect
nino: fm KB8ZQZ to W8CMN-2 ctl RR1- 17:18:08.038677 
nino: fm W8CMN-2 to KB8ZQZ ctl DISC+ 17:18:10.157056 
nino: fm KB8ZQZ to W8CMN-2 ctl UA- 17:18:10.177195 

leaves this dangling socket:

Active AX.25 sockets
Dest       Source     Device  State        Vr/Vs    Send-Q  Recv-Q
W8CMN-2    KB8ZQZ-0   ax0     LISTENING    001/000  0       0

Exiting pat interactive and restarting clears the dangling socket.

cmd/wl2k: Versioning builds

As the alpha milestone is almost finished, It's time to think about proper versioning.

Not sure if we're ready to release binary builds yet, but it probably time to start maintaining a stable master-branch and maybe start tagging releases.

There should at least be a "version" command that prints a version ("unreleased" maybe?) and more importantly, the commit hash it was built from.

ardop: support version 2

Specifications for ARDOP version 2 were released 15 May 2018. This new version breaks both RF and TNC compatibility with ARDOP version 1. Since then, "beta" implementations of ARDOP 2 have been released for Windows and Linux. Version 1 is still around, and at least some RMS nodes continue to operate it. But it is likely that version 2 is the future. We should update wl2k-go to support the new TNC.

An initial reading of the new TNC specification indicates that the following commands have changed:

  • DIRTYDISCONNECTABORT
  • ARQBW arguments
  • CONNECTARQCALL
  • ARQTIMEOUT
  • BUSYLOCKBUSYBLOCK
  • BUSYDET
  • ENABLEPINGACK
  • FECMODE arguments
  • MONITOR
  • NEGOTIATEBW
  • PING
  • OVER removed
  • PING
  • PURGEBUFFER
  • A variety of RADIO commands were added
  • RESTOREBUFFER
  • SENDCQ
  • TUNERANGE

The following responses have changed:

  • CANCELPENDING
  • CONNECTED arguments
  • CQ
  • RADIOFREQUENCYFREQUENCY
  • NEWSTATE arguments
  • PENDING
  • PING
  • PINGACK
  • PTT new behavior
  • REJECTED...

And probably others. The TNC interface is almost completely different. In addition, CRCs are not used on TCP/IP. (If they ever were.)

lzhuf: port to Go

The current implementation of lzhuf is a cgo wrapper around lzhuf.c from jnos2.

Porting the code to Go would eliminate the need for cgo, thus making the wl2k-go framework even more portable. It will also allow us to further improve the code, getting rid of the intermediate temp files and other rough edges.

I've already added some more tests that will help us ensure that we don't break compatibility with other Winlink software.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.