Native AX.25 on MacOS - Works, but not for Pat (so far)

18 views
Skip to first unread message

Robert Kincaid

unread,
Apr 4, 2026, 11:33:09 PM (4 days ago) Apr 4
to pat-users
I'm trying to get a native implementation of Pat and AX25 working on Apple Silicon. I've tried all Parallels, Crossover and other methods. While they work (somtimes) I'd really like a native implementation. I recently discovered this:
https://github.com/solariun/AX25Toolkit
I have it working on an Apple M4 Pro using bluetooth to a TH-D75. I have verfied it connects (using it's own command line tools) to my local RMS. Real progress! No sound cards, real serial-tnc to the TH-D75 on an M4 chip - even wireless via bluetooth.

The AX25Toolkit includes a program to bridge between the TNC ausing a "PTY" serial device to present a serial TNC. Besides being able to monitor incoming packets, I've had great success with YAAC to receive and send APRS messages with this interface. So I know the overall linkage works. The probem seems to be with Pat. When I try to set up Pat with a serial-tnc pointing to the created serial device (aliased by the bridge as /tmp/kiss), it throws an ioctl error on the serial device: "operating system error: inappropriate ioctl for device". I've tried rummaging through the go code but can't quite figuire out where it actually opens the tty port. So I have a few questions:

1. Does the serial TNC only work with the linux AX25 stack?
2. If this should work where is the actual serial-tnc connection code? I can't seem to find it in the go source.
3. Why the ioctl error? Any guesses?
4. I notice in the PAT log that it displays "PASSWORD", as if it's asking for one. I have it set in the config file, so I presume this is what it's using.

Below is the output of both ends of the software chain. I'm using the command line connect for Pat to get the log more easily. But it's the same message I get in the web-based UI.

Thanks,
Robert, AI6P

*********************
Below is the bridge running and showing a few received packets from a nearby RMS. 


./Documents/gitrepo/AX25Toolkit/bin/bt_kiss_bridge --bt --device TH-D75 --monitor

====================================================================
  BT KISS Serial Bridge + AX.25 Monitor
====================================================================
  Device     : TH-D75
  Transport  : BT
  RFCOMM ch  : auto (SDP)
--------------------------------------------------------------------
  PTY device : /dev/ttys001
  Symlink    : /tmp/kiss  -> /dev/ttys001

  Example:
      ax25tnc -c W1AW -r W1BBS-1 /tmp/kiss
--------------------------------------------------------------------
  Connecting to BT...
  Connecting to BT...
  Resolved "TH-D75" → 40-79-12-e4-ed-37 (TH-D75)
  SDP lookup for SPP on TH-D75...
  Opening baseband connection...
  SDP: found SPP on RFCOMM channel 2
  Connecting RFCOMM channel 2 on TH-D75...
  Connected.  RFCOMM channel=2
  Monitor on.  Ctrl-C to stop.
[15:08:48.754]  <- BT  KC6SSM-10 -> BEACON via N6ZX-10  [UI]
           ctrl=0x03  U/UI  P/F=0  (72 bytes)
           00000000  84 8a 82 86 9e 9c 60 96  86 6c a6 a6 9a 74 9c 6c  |......`..l...t.l|
           00000010  b4 b0 40 40 75 03 f0 57  49 4e 4c 49 4e 4b 3a 20  |..@@u..WINLINK: |
           00000020  4b 43 36 53 53 4d 2d 31  30 20 6f 6e 20 31 34 35  |KC6SSM-10 on 145|
           00000030  2e 36 33 30 20 4d 68 7a  2e 20 4b 65 6e 73 69 6e  |.630 Mhz. Kensin|
           00000040  67 74 6f 6e 2c 20 43 41                           |gton, CA|
[15:08:49.700]  <- BT  KC6SSM-10 -> BEACON via N6ZX-10  [UI]
           ctrl=0x03  U/UI  P/F=0  (72 bytes)
           00000000  84 8a 82 86 9e 9c 60 96  86 6c a6 a6 9a 74 9c 6c  |......`..l...t.l|
           00000010  b4 b0 40 40 f5 03 f0 57  49 4e 4c 49 4e 4b 3a 20  |..@@...WINLINK: |
           00000020  4b 43 36 53 53 4d 2d 31  30 20 6f 6e 20 31 34 35  |KC6SSM-10 on 145|
           00000030  2e 36 33 30 20 4d 68 7a  2e 20 4b 65 6e 73 69 6e  |.630 Mhz. Kensin|
           00000040  67 74 6f 6e 2c 20 43 41                           |gton, CA|
s
*****************************
Below is an attempt to connect from the commandline with Pat so. you can see the error.


pat connect ax25+serial-tnc:///WR6HMB-10
Password:
2026/04/04 15:00:27 Connecting to WR6HMB-10 (ax25+serial-tnc)...
2026/04/04 15:00:27 Unable to establish connection to remote: invalid serial port: operating system error: inappropriate ioctl for device

Corey Minyard

unread,
Apr 5, 2026, 2:05:32 PM (3 days ago) Apr 5
to Robert Kincaid, pat-users
You have two options I know of here.

Standard Pat will not connect to a TNC directly.  However, I believe direwolf works on MacOS, so that would be an option.  direwolf provides an AX.25 implementation and Pat can talk to direwolf through AGW.

If you are more adventurous, you can run a version of Pat I have at https://github.com/cminyard/pat which has the AX.25 stack and modem built in.  AX25 and a AFSK modem come from the gensio library at https://github.com/cminyard/gensio.  gensio is also available in homebrew.

-corey

--
You received this message because you are subscribed to the Google Groups "pat-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pat-users+...@googlegroups.com.
To view this discussion, visit https://groups.google.com/d/msgid/pat-users/a9407344-d5e3-47b7-85fa-54ef3bf1b1ddn%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages