1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
# Changelog · MAX25-Stack-Lite
All notable changes to MAX25-Stack-Lite are documented here. Historical
entries below may still name the upstream MAX25-Stack product.
## [MAX25-Stack-Lite 1.8.0]
Version file `1.8.0`. Aligned with upstream MAX25-Stack 1.8.0 features that
apply on one localhost host. BayCom/based default ON. Localhost TCP enforced.
| Change | Detail |
|--------|--------|
| **Product version** | `1.0.0-lite` → **`1.8.0`** (CMake + `VERSION`) |
| **Localhost TCP** | `tcp_host` must be loopback (`127.0.0.1` / `::1` / `localhost`); LAN/`0.0.0.0` refused at start |
| **Software TOT** | Time-on-target policy for max25-bcpr via `max25d.ini` |
| **1.5 s TX gap** | Minimum gap between RF/KISS frame sends |
| **max25-bcpr** | BayCom/based SER12 stack; device **`max25e0`**; default build **ON** |
| **tmodem device** | T-Modem USB KISS half-TNC entry |
| **privilege_drop** | `privilege_drop.py` installed with max25d |
| **Out of Lite** | Web UI, HyBBX co-host, multi-RF / LAN terminal (use full MAX25-Stack) |
## [MAX25-Stack 1.8.5-fallback_untested-upcoming#3-2]
Version file .
| Change | Detail |
|--------|--------|
| Docs | Move → (development material home) |
## [MAX25-Stack 1.8.5-fallback_untested-upcoming#3]
Version file `1.8.5-fallback_untested-upcoming#3` (after `#2-workhard-session_night`).
| Change | Detail |
|--------|--------|
| Release mark | **fallback_untested** · upcoming **#3** |
| CI | `max25_web_smoke` offline — `--no-stack --no-serial`, ephemeral ports, no UART |
| Docs | Ship [TNC-MODEM-DEV.md](TNC-MODEM-DEV.md) (TNC/modem bring-up) |
| Tests | Dual-device protocol smoke uses allowlisted `baycom-kiss`/`pccom-kiss` (not legacy `baycom-a`) |
| Carry-forward | Live RF fallback path not fully re-certified under this tag |
## [MAX25-Stack 1.8.5-fallback_untested-upcoming#2-workhard-session_night]
Version file `1.8.5-fallback_untested-upcoming#2-workhard-session_night` (operator night-session mark after `1.8.5-fallback_untested-upcoming#1`).
| Change | Detail |
|--------|--------|
| Release mark | **fallback_untested** · upcoming **#2** · **workhard-session_night** |
| Carry-forward | Same consistency gate posture as `1.8.5-fallback_untested-upcoming#1` — live RF fallback path not fully re-certified under this tag |
| Device face | BayCom/based SER12 → **`max25e0`** (internal `stacks/max25-bcpr/`) |
| TX/RX | Live TX gated on RX (`scripts/tx-rx-test.sh`, §0.20) |
## [MAX25-Stack 1.8.5-fallback_untested-upcoming#1]
Version file `1.8.5-fallback_untested-upcoming#1` (operator override of prior `1.8.0-upcoming#1` marking).
| Change | Detail |
|--------|--------|
| Release mark | **fallback_untested** — consistency gate green; live RF fallback path not fully re-certified under this tag |
| Device face | BayCom/based SER12 → **`max25e0`** (internal `stacks/max25-bcpr/`; never `bcpr-bc0` as product id) |
| Kernel baycom | Product path removed; vault legacy archive only |
| Start | `scripts/run-max25d.sh` — root only when ttyS/USB/SER12 needs it |
| TX/RX test | `scripts/tx-rx-test.sh` — live TX gated on RX (§0.20) |
## [MAX25-Stack 1.5.0]
Version file `1.5.0`. Product label **MAX25-Stack-v1.5.0**.
### HyBBX boundary matrix
| Change | Detail |
|--------|--------|
| `[features] baycom=no` | Default in max25d INI examples |
| `[features] pccom=no` | Default in max25d INI examples |
| Device filter | BayCom/PC-COM entries filtered unless features enabled |
| CMake | BayCom tools still built; runtime opt-in via INI |
### Platform and topology matrix
| Change | Detail |
|--------|--------|
| One RF device per Linux host | Design rule in INI examples |
| FreeBSD scaffold | `max25_platform.py`, OSS sound-proxy, FreeBSD INI |
| Modular TCP/IP server | `modular_tcp_server.py` for Main/Secondary split |
| New INI templates | `max25d.main.ini.example`, `max25d.secondary-linux.ini.example`, `max25d.freebsd.ini.example` |
### Docs matrix
| Item | Detail |
|------|--------|
| Operator docs | Updated for v1.5 boundary |
| New | `V2.0.0-SCOPE.md`, `MODULAR-TCPIP-SERVER.md`, `MASTER-GUIDE.md` |
## [MAX25-Stack 1.0.0] — 2026-07-13
Version file `1.0.0`. Product label **MAX25-Stack-v1.0.0**.
### Active devices matrix
| Device | Standalone | HyBBX |
|--------|------------|-------|
| **tnc2c** | `max25-ctl start --hardware tncs --device tnc2c` | `packet_radio` |
| **baycom-ser12** (superseded → **`max25e0`**/bcpr) | legacy kernel path removed | `baycom` via MAX25 |
| **soft-crdop** | `max25-ctl start --hardware soft-modems` | `crdop` |
### Architecture matrix
| Item | Value |
|------|-------|
| AX.25 codec | In-tree `ax25_codec.py` via `kiss_bridge.py` |
| `MAX25_BUNDLE_AX25` | OFF default |
| `MAX25_BUILD_CRDOP` | ON default |
| Daemon | `max25d` — Linux supervisor, M25/1 |
| Client | `max25-terminal` / `max25-client` — sole official operator client |
### Deferred to v1.1+ matrix
| Item | Status |
|------|--------|
| `pktnc2`, `baycom-par96`, `baycom-kiss` | deferred |
| CRDOP amateur / dual workflows | INI templates ship |
## Related
| Goal | Doc |
|------|-----|
| Release gates | [RELEASE-READINESS.md](RELEASE-READINESS.md) |
| v1 scope | [docs/V1.0.0-SCOPE.md](docs/V1.0.0-SCOPE.md) |
|