diff options
| author | info@mode42.com <info@mode42.com> | 2026-08-07 18:25:13 +0000 |
|---|---|---|
| committer | info@mode42.com <info@mode42.com> | 2026-08-07 18:25:13 +0000 |
| commit | 04d965d67a7264a1c7c211494aebda1953df7603 (patch) | |
| tree | 0ebd700a6e219f84a26a656f4bee8778bc75da7b /plugins/devices | |
Initial push
Diffstat (limited to 'plugins/devices')
| -rw-r--r-- | plugins/devices/audio-dummy/README.md | 41 | ||||
| -rw-r--r-- | plugins/devices/audio-dummy/plugin.yaml | 26 | ||||
| -rw-r--r-- | plugins/devices/bayc-plugin/README.md | 7 | ||||
| -rw-r--r-- | plugins/devices/baycom-kiss/README.md | 7 | ||||
| -rw-r--r-- | plugins/devices/baycom-kiss/plugin.yaml | 31 | ||||
| -rw-r--r-- | plugins/devices/max25-sniffport/README.md | 5 | ||||
| -rw-r--r-- | plugins/devices/max25-terminal/plugin.yaml | 16 | ||||
| -rw-r--r-- | plugins/devices/max25-vcom/README.md | 5 | ||||
| -rw-r--r-- | plugins/devices/pktnc2/README.md | 16 | ||||
| -rw-r--r-- | plugins/devices/pktnc2/plugin.yaml | 37 | ||||
| -rw-r--r-- | plugins/devices/soft-crdop/README.md | 26 | ||||
| -rw-r--r-- | plugins/devices/soft-crdop/plugin.yaml | 77 | ||||
| -rw-r--r-- | plugins/devices/tmodem/README.md | 15 | ||||
| -rw-r--r-- | plugins/devices/tmodem/plugin.yaml | 33 | ||||
| -rw-r--r-- | plugins/devices/tnc2c/README.md | 25 | ||||
| -rw-r--r-- | plugins/devices/tnc2c/plugin.yaml | 40 |
16 files changed, 407 insertions, 0 deletions
diff --git a/plugins/devices/audio-dummy/README.md b/plugins/devices/audio-dummy/README.md new file mode 100644 index 0000000..4903d60 --- /dev/null +++ b/plugins/devices/audio-dummy/README.md @@ -0,0 +1,41 @@ +# Device: audio-dummy (acoustic bench) + +**Status:** `active` — development/test device for on-host acoustic signal evaluation. + +## Purpose + +Main **dummy device** for Bell 202 AFSK without RF: + +- **loopback** — full DSP encode/decode in process (CI default) +- **alsa** — capture from sound card, sniff/decode live +- **host** — TCP to `audio-dummyd` (M25 KISS host protocol, ports 8520/8521) + +## Tools + +```bash +# Internal loopback (no hardware): +stacks/crdop/tools/max25-signal-sniffer --loopback + +# ALSA capture sniff: +stacks/crdop/tools/max25-signal-sniffer -D plughw:1,0 -t 3 + +# Calibration tones (mark 1200 Hz / space 2200 Hz): +stacks/crdop/tools/max25-signal-sniffer -D plughw:1,0 --mark -t 1 +stacks/crdop/tools/max25-signal-sniffer -D plughw:1,0 --space -t 1 +``` + +## max25d + +```ini +[devices] +audio-dummy = audio:loopback + +[device.audio-dummy] +mode = loopback ; loopback | alsa | host +; capture = plughw:1,0 +; playback = plughw:1,0 +; sample_rate = 48000 +; host_port = 8520 +``` + +Docs: [docs/CRDOP.md](../../../docs/CRDOP.md) diff --git a/plugins/devices/audio-dummy/plugin.yaml b/plugins/devices/audio-dummy/plugin.yaml new file mode 100644 index 0000000..789c92b --- /dev/null +++ b/plugins/devices/audio-dummy/plugin.yaml @@ -0,0 +1,26 @@ +id: audio-dummy +type: device +parent_stack: MainAX25-Stack (MAX25-Stack) +hardware: acoustic-bench +label: Audio Dummy (acoustic bench) +status: active + +product: + name: MAX25-Audio-Dummy + purpose: sniff_test_evaluate_acoustic_signals_on_host + protocol: m25-kiss-host + license: GPL-3.0-or-later + +note: | + Main dummy device for Bell 202 AFSK bench — loopback, ALSA sniff, or host TCP. + No RF required. Used before field tests against TNC2C/BayCom. + +runtime: + modes: [loopback, alsa, host] + sniffer: stacks/crdop/tools/max25-signal-sniffer + daemon: stacks/crdop/tools/audio-dummyd + default_spec: audio:loopback + +docs: + - docs/CRDOP.md + - stacks/crdop/docs/AUDIO-ARCHITECTURE.md diff --git a/plugins/devices/bayc-plugin/README.md b/plugins/devices/bayc-plugin/README.md new file mode 100644 index 0000000..870f0c1 --- /dev/null +++ b/plugins/devices/bayc-plugin/README.md @@ -0,0 +1,7 @@ +# bayc-plugin — BayCom/based (max25d) + +**Role:** BayCom/based device plugin under **max25d** · host face **`max25e0`**. + +Experimental orch / soft-TNC / guest-PTY work is **not** shipped in this freigegeben tree. + +Thin stub only. Do not restore experimental orch tools here. diff --git a/plugins/devices/baycom-kiss/README.md b/plugins/devices/baycom-kiss/README.md new file mode 100644 index 0000000..c834c39 --- /dev/null +++ b/plugins/devices/baycom-kiss/README.md @@ -0,0 +1,7 @@ +# Device: BayCom KISS Serial + +USB or async serial BayCom firmware TNC. Uses `kiss-serial` backend — no kernel `baycom_ser_fdx`, no **bcpr** SER12 path. + +HyBBX `[transport.baycom1]` with `backend=kiss`, `device=/dev/ttyUSB0`. + +See [docs/BAYCOM.md](../../../docs/BAYCOM.md) (KISS vs BayCom/based) and [docs/PLUGINS-DEVICE-MODEL.md](../../../docs/PLUGINS-DEVICE-MODEL.md). diff --git a/plugins/devices/baycom-kiss/plugin.yaml b/plugins/devices/baycom-kiss/plugin.yaml new file mode 100644 index 0000000..78c8a1d --- /dev/null +++ b/plugins/devices/baycom-kiss/plugin.yaml @@ -0,0 +1,31 @@ +id: baycom-kiss +type: device +parent_stack: MainAX25-Stack (MAX25-Stack) +hardware: modems +label: BayCom KISS Serial (USB/async) +status: active + +hybbx: + plugin: baycom + backend: kiss + serial_baud: 9600 + +serial: + default_device: /dev/ttyUSB0 + +runtime: + kiss_link: /var/run/baycom-pr/kiss + +ini: + - stacks/baycom-pr/config/examples/baycom-pr.usb.ini + - share/baycom/baycom-pr.kiss-usb.ini.example + +client: + - share/clients/baycom-kiss.yaml + - share/clients/kiss-serial-usb.yaml + - share/clients/kiss-serial-rs232.yaml + +docs: + - stacks/baycom-pr/docs/GETTING-STARTED.md + +notes: USB KISS path — no kernel baycom driver required. Device alias pccom-kiss uses same backend. diff --git a/plugins/devices/max25-sniffport/README.md b/plugins/devices/max25-sniffport/README.md new file mode 100644 index 0000000..d0fcaa4 --- /dev/null +++ b/plugins/devices/max25-sniffport/README.md @@ -0,0 +1,5 @@ +# max25-sniffport + +Mode-A virt-COM / sniffport experimental work is **not** shipped in this freigegeben tree. + +Thin stub only. diff --git a/plugins/devices/max25-terminal/plugin.yaml b/plugins/devices/max25-terminal/plugin.yaml new file mode 100644 index 0000000..9f1289e --- /dev/null +++ b/plugins/devices/max25-terminal/plugin.yaml @@ -0,0 +1,16 @@ +id: max25-terminal +label: MAX25 Terminal +hardware: terminal +role: client +status: active +description: Official text-only operator UI — sole MAX25 client; M25/1 to max25d +docs: + - docs/MAX25-CLIENT.md + - docs/MAX25-TERMINAL.md + - docs/PACKET-RADIO.md + - include/max25/protocol.md +binaries: + - max25-terminal + - max25-client +protocol: m25/1 +default_port: 7325 diff --git a/plugins/devices/max25-vcom/README.md b/plugins/devices/max25-vcom/README.md new file mode 100644 index 0000000..ac6485a --- /dev/null +++ b/plugins/devices/max25-vcom/README.md @@ -0,0 +1,5 @@ +# max25-vcom + +vcom-port / PTY experimental work is **not** shipped in this freigegeben tree. + +Thin stub only. diff --git a/plugins/devices/pktnc2/README.md b/plugins/devices/pktnc2/README.md new file mode 100644 index 0000000..3b9dd2e --- /dev/null +++ b/plugins/devices/pktnc2/README.md @@ -0,0 +1,16 @@ +# Device: PK-TNC2 + +**Status:** Planned — probe serial port after hardware delivery. + +PK-TNC2 / TNC-2 (TheFirmware) profile for HyBBX `packet_radio` with `tnc=tnc2`. + +## Preparation + +```bash +# After delivery: edit stacks/tncs/pktnc2-serial.env +./stacks/tncs/pktnc2-boot-wait.sh +``` + +HyBBX: `share/hybbx/pktnc2-host.ini.example` + +Reuses `tnc2c-probe` for port scan. diff --git a/plugins/devices/pktnc2/plugin.yaml b/plugins/devices/pktnc2/plugin.yaml new file mode 100644 index 0000000..0e3dc79 --- /dev/null +++ b/plugins/devices/pktnc2/plugin.yaml @@ -0,0 +1,37 @@ +id: pktnc2 +type: device +parent_stack: MainAX25-Stack (MAX25-Stack) +hardware: tncs +label: PK-TNC2 / TNC-2 (TheFirmware) +status: planned + +hybbx: + plugin: packet_radio + profile: tnc2 + aliases: [pktnc2, pk-tnc2, tapr, thefirmware] + protocol: kiss + serial_line: 8n1 + kiss_entry: auto + +serial: + default_device: /dev/ttyUSB1 + default_baud: 9600 + +rf: + radio_baud: 1200 + band: cb + +scripts: + boot_wait: stacks/tncs/pktnc2-boot-wait.sh + probe: stacks/tncs/tnc2c-probe + +ini: + - share/hybbx/pktnc2-host.ini.example + +client: + - share/clients/pktnc2.yaml + +docs: + - stacks/tncs/docs/TNC2C-REFERENCE.md + +notes: Planned device — probe serial port after hardware inventory. diff --git a/plugins/devices/soft-crdop/README.md b/plugins/devices/soft-crdop/README.md new file mode 100644 index 0000000..fe44f9d --- /dev/null +++ b/plugins/devices/soft-crdop/README.md @@ -0,0 +1,26 @@ +# Device: soft-crdop (MAX25-SoftModem / CRDOP — MAX25-SoftModem) + +**CRDOP** = stack acronym for **MAX25-SoftModem** (device id `soft-crdop`). + +**Status:** `active` — MAX25-Stack **standard subproject** (`stacks/crdop/`). + +**Canonical rule:** [docs/CRDOP.md](../../../docs/CRDOP.md) · **License:** GNU GPL v3 + +## Summary + +| Topic | Policy | +|-------|--------| +| Type | Sound-card software modem subproject | +| Compatibility | **AX.25 / KISS / TNC / modem** (software-modem domain) | +| Mission | **Hardware solutions** (primary) + pure **software** on computers | +| Audio | Kernel ALSA + MAX25 sound-proxy — **no PulseAudio** | +| Build | Default ON — `-DMAX25_BUILD_CRDOP=OFF` to skip | + +## Quick start + +```bash +./scripts/build.sh +./scripts/max25-ctl start --hardware soft-modems --device soft-crdop +``` + +See [docs/CRDOP.md](../../../docs/CRDOP.md) for full project rules. diff --git a/plugins/devices/soft-crdop/plugin.yaml b/plugins/devices/soft-crdop/plugin.yaml new file mode 100644 index 0000000..a18a524 --- /dev/null +++ b/plugins/devices/soft-crdop/plugin.yaml @@ -0,0 +1,77 @@ +id: soft-crdop +type: device +parent_stack: MainAX25-Stack (MAX25-Stack) +hardware: soft-modems +label: MAX25-SoftModem (CRDOP — CB/AR Digital Open Protocol) +status: active + +product: + name: MAX25-SoftModem + phase: development_and_testing + development: in-house + baud_primary: 1200 + baud_max: 19200 + duplex: [half, full] + ax25_packet_radio: acoustically_compatible + use_like_hardware_modem: true + protocol_primary: max25-softmodem + audio_hardware: required + +note: | + CRDOP = CB/AR Digital Open Protocol (CB = Citizens Band, AR = Amateur Radio). + MAX25-Stack STANDARD subproject (stacks/crdop/) — GNU GPLv3. + Sound-card based; kernel ALSA + MAX25 sound-proxy; no PulseAudio. + Full AX.25/KISS/TNC/modem compatibility goal. Hardware-solution-first. + Static project rule: docs/CRDOP.md + +hybbx: + plugin: crdop + transport: tcp + control_port: 8515 + data_port: 8516 + profile: cb + +modem: + protocol: max25-softmodem + duplex: half + duplex_modes: [half, full] + default_speed_baud: 1200 + max_speed_baud: 19200 + ax25_acoustic: true + packet_radio_compatible: true + audio: alsa + audio_backend: alsa-kernel + audio_path: max25-sound-proxy + no_pulseaudio: true + audio_required: true + coupling: [line_level, acoustic] + +runtime: + ctl_start: stacks/crdop/scripts/crdopc + default_ini: stacks/crdop/share/crdop.ini.example + env: + - CRDOP_INI + cmake_option_off: MAX25_BUILD_CRDOP + shipped_default: true + +ini: + - stacks/crdop/share/crdop.ini.example + - stacks/crdop/share/crdop-dual.ini.example + - stacks/crdop/share/crdop-amateur.ini.example + - share/hybbx/crdop-host.ini.example + +client: + - share/clients/soft-crdop.yaml + +license: GPL-3.0-or-later + +docs: + - docs/CRDOP.md + - stacks/crdop/docs/SOFTMODEM.md + - stacks/crdop/docs/AUDIO-ARCHITECTURE.md + - stacks/crdop/docs/CONFIG.md + - stacks/crdop/ROADMAP.md + +scripts: + build: stacks/crdop/scripts/build-crdop.sh + start: stacks/crdop/scripts/crdopc diff --git a/plugins/devices/tmodem/README.md b/plugins/devices/tmodem/README.md new file mode 100644 index 0000000..0ac2772 --- /dev/null +++ b/plugins/devices/tmodem/README.md @@ -0,0 +1,15 @@ +# Device: T-Modem-c1224 (`tmodem`) + +USB CDC **KISS half-TNC** from [T-Modem-c1224](https://github.com/ngteq/T-Modem-c1224) Pico firmware. Chip does AFSK; Pico does HDLC + bitbang. **Not** BayCom/based. **Not** softmodem. + +| Item | Value | +|------|--------| +| Device id | `tmodem` | +| Backend | `kiss-raw-serial` | +| Default path | `/dev/ttyACM0` | +| Feature | `[features] tmodem=yes` (default **no**) | +| Terminal | `max25-terminal -d tmodem` | + +HyBBX: attach to max25d only — no L1 inside HyBBX. + +See [docs/DEV/TMODEM-C1224.md](../../../docs/DEV/TMODEM-C1224.md). diff --git a/plugins/devices/tmodem/plugin.yaml b/plugins/devices/tmodem/plugin.yaml new file mode 100644 index 0000000..dd093fd --- /dev/null +++ b/plugins/devices/tmodem/plugin.yaml @@ -0,0 +1,33 @@ +id: tmodem +type: device +parent_stack: MainAX25-Stack (MAX25-Stack) +hardware: tncs +label: T-Modem-c1224 (USB KISS half-TNC) +status: prototype + +hybbx: + attach: max25d + note: HyBBX attach-only via MAX25 — no L1 in HyBBX + +serial: + default_device: /dev/ttyACM0 + default_baud: 115200 + line: 8n1 + dtr_rts: no + +runtime: + backend: kiss-raw-serial + +ini: + - share/max25/max25d.tmodem.ini.example + +client: + - share/clients/tmodem.yaml + +docs: + - docs/DEV/TMODEM-C1224.md + +notes: > + T-Modem-c1224 Pico presents USB CDC KISS (HDLC on Pico + TCM3105 chip AFSK). + Not BayCom/based. Feature gate [features] tmodem=yes (default off). + First client path: max25-terminal -d tmodem. diff --git a/plugins/devices/tnc2c/README.md b/plugins/devices/tnc2c/README.md new file mode 100644 index 0000000..4ddd19d --- /dev/null +++ b/plugins/devices/tnc2c/README.md @@ -0,0 +1,25 @@ +# Device: Landolt TNC2C + +**Status:** Active (v1). + +| Parameter | Value | +|-----------|-------| +| Serial | `/dev/ttyUSB0` or `/dev/ttyS4` (site-specific) | +| Host line | 19200 8N1, RTS+DTR | +| RF | 2400 AFSK | +| HyBBX | `tnc=tnc2c`, `protocol=kiss` | + +## Boot sequence + +DTR must be high during power-on: + +```bash +./stacks/tncs/tnc2c-boot-wait.sh +./stacks/tncs/tnc2c-integration-test.sh +``` + +HyBBX INI: `share/hybbx/tnc2c-host.ini.example` + +## Safety + +No `kiss on` or TX tests without dummy load when antenna connected. diff --git a/plugins/devices/tnc2c/plugin.yaml b/plugins/devices/tnc2c/plugin.yaml new file mode 100644 index 0000000..d822c4a --- /dev/null +++ b/plugins/devices/tnc2c/plugin.yaml @@ -0,0 +1,40 @@ +id: tnc2c +type: device +parent_stack: MainAX25-Stack (MAX25-Stack) +hardware: tncs +label: Landolt TNC2C +status: active + +hybbx: + plugin: packet_radio + profile: tnc2c + protocol: kiss + serial_line: 8n1 + rts_dtr: yes + kiss_entry: kiss_on + +serial: + default_device: /dev/ttyS4 + default_baud: 19200 + env_file: stacks/tncs/tnc2c-serial.env + +rf: + modem: tcm3105 + radio_baud: 2400 + band: cb + +scripts: + boot_wait: stacks/tncs/tnc2c-boot-wait.sh + health: stacks/tncs/tnc2c-health.sh + integration: stacks/tncs/tnc2c-integration-test.sh + +ini: + - stacks/tncs/hybbx-tnc2c.ini + - share/hybbx/tnc2c-host.ini.example + +client: + - share/clients/tnc2c.yaml + +docs: + - stacks/tncs/docs/TNC2C-OPERATIONS.md + - stacks/tncs/docs/HYBBX-TNC2C.md |
