LICENSED TECHNOLOGY IMPSPRGM™ is proprietary technology of LLC IMPSPRGM · supplied under a written Licence Agreement on a per-unit basis.
Licensing & IP →
IMPSPRGM technology stack · architecture specification

IMPSPRGM · Fabric 2.0

A chip-independent interprocessor runtime for autonomous telemetry. It unites heterogeneous MCUs and communication modules behind one service contract, picks the available transport, and automatically restores distributed services after a node fails — carried by the IFP/2 wire protocol.

Chip-independentUART / USB / SPI / SDIOCapability discoveryRPC + EventsLease-based servicesSelf recovery
Licensed technology · IFP/2 protocol specification v1.0 · international PCT application PCT/UZ2022/050001

Status of this page

Fabric 2.0 is presented as an architecture specification and the plan for the next validation cycle. The Generation-2 protocol (IFP/2) is frozen, while hardware qualification continues on the bench. SPI/USB bulk transport and any specific new chip pair are not marked as production-validated until their throughput, fault-recovery and power budgets have been measured. This page builds on IMPSPRGM · Interprocessor OS →, which proved the underlying idea on the SIM800C + STM8 pair.

Why a second stack

The first reference — SIM800C + STM8 — proved that two processors can share resources over a single board. It also exposed four systemic limits. Fabric 2.0 lifts the idea off one specific chip pair and turns it into a formalised runtime.

LimitationWhat it wasFabric 2.0 answer
01 · PortabilityThe Translator and bus logic were too close to the exact capabilities of SIM800C/STM8.Capability + Adapter model. Each new chip ships a compact HAL/Provider Adapter and publishes a capability descriptor; the service model and Translator 2.0 stay unchanged.
02 · ThroughputLogical streams competed for one UART; 115 200 Bd is enough for telemetry but not for bulk data.Multi-transport fabric. UART stays the guaranteed control plane; the bulk plane moves to SPI/USB/SDIO when the transport is supported and validated by both sides.
03 · Modem runtimeNot every modem lets user code run inside the baseband (EAT/OpenCPU).Three provider modes. Embedded/OpenCPU, AT-only, and Linux/USB providers expose the same logical services over different backends.
04 · Fault domainLosing one processor temporarily stripped the other of its exported services.Recovery Supervisor. Heartbeat + leases + fault isolation + peer reset + re-negotiation + state journal + degraded mode turn dependency into a managed failure.

Generation 2 — two independent reference pairs

Generation 2 fixes one protocol (IFP/2) and one service model across two independent hardware stacks. That separates the application architecture from any particular modem or MCU vendor.

IMPSPRGM Fabric 2.0 Generation 2 reference pairs — Quectel+ST and SIMCom+Renesas
Fig. 1 · Two independent Generation-2 reference stacks running the same IFP/2 protocol and service model.
G2-R1 · Primary reference
Quectel EC200U + STM32U575
LTE Cat-1 bis, QuecOpen, UART/USB, ultra-low-power Cortex-M33. Used for the first Translator 2.0 implementation and fast-transport checks.
G2-R2 · Independent reference
SIMCom SIM7672 + Renesas RA6M5
A second stack on different modem and MCU vendors. Its job is to confirm portability of the Service Registry, Translator 2.0, recovery logic and application API.

Qualification status

The protocol specification is frozen for Generation 2. Hardware qualification and tuning continue on the bench; transport timings and power thresholds may be adjusted without changing the application service model.

Stack architecture

Fabric 2.0 does not create hardware shared memory between chips. It virtualises remote resources as services — the network stack, storage, Bluetooth, GNSS, cryptography or a compute function.

IMPSPRGM Fabric 2.0 architecture layers
Fig. 2 · The Fabric 2.0 stack: chip profiles and adapters below, a versioned RPC/event protocol in the middle, capability-addressed services above.
  1. Chip Profile. Static description of a node: chip family, transport endpoints, MTU, clocks, power states, reset path, available service providers.
  2. Translator 2.0. Versioned RPC/event protocol: service ID, opcode, sequence, payload length, flags, CRC, ACK/NACK, timeout and idempotency.
  3. Service Registry. An application requests a capability — net.socket, storage.object, ble.gatt, compute.math — never a vendor-specific modem API.
  4. Transport Manager. Separates control and bulk traffic, chooses the physical transport, tracks credits and priority queues, and can fall back to UART.
  5. Power Orchestrator. Never keeps the second node powered for a rare function: wake → service burst → checkpoint → sleep/off.
  6. Recovery Supervisor. Tracks service liveness, invalidates stale handles, restarts the peer and restores session/state.

IFP/2 — the wire protocol

IFP/2 is the transport-neutral protocol that connects a deterministic control node (MCU) with one or more service-provider nodes (modem / OpenCPU / Linux gateway / compute node) without exposing vendor APIs to the application. Its rules are deliberately strict:

Frame format · fixed 20-byte header

OffSizeFieldMeaning
02MAGIC0x4950 ("IP")
21VERSION0x20 for IFP/2.0
31HEADER_LEN20
41TYPEframe type
51FLAGSbehaviour flags
62SERVICE_IDlogical service namespace
82OPCODEoperation inside service
104SEQUENCErequest/event sequence
142SESSION_IDnegotiated session
162PAYLOAD_LENbytes after header
182HEADER_CRC16header integrity

The tail carries the payload (0…65535 bytes) and a PAYLOAD_CRC32. Multibyte fields are little-endian. On UART the frame is wrapped as COBS(frame) + 0x00; on USB the raw frame is used, relying on endpoint boundaries.

Frame types, flags and services

TYPE

0x01 HELLO      0x02 CAPS
0x03 SELECT     0x04 READY
0x10 RPC_REQUEST
0x11 RPC_ACK    0x12 RPC_RESULT
0x13 EVENT      0x20 HEARTBEAT
0x21 LEASE_RENEW
0x30 BULK_OPEN  0x31 BULK_DATA
0x32 BULK_CLOSE 0x7F ERROR

FLAGS (bits)

0 ACK_REQUIRED
1 IDEMPOTENT
2 URGENT
3 ENCRYPTED
4 MORE_FRAGMENTS
5 BULK_REFERENCE
6 RETRY
7 reserved

Core service IDs

0x0001 SYSTEM  0x0002 HEALTH
0x0003 POWER   0x0010 TIME
0x0020 LOG     0x0100 NETWORK
0x0101 SOCKET  0x0102 MQTT
0x0103 HTTP    0x0110 SMS
0x0120 GNSS    0x0200 STORAGE
0x0300 BLUETOOTH 0x0400 CRYPTO
0x0500 COMPUTE 0x0600 FOTA

Service-ID ranges: 0x0000–0x0FFF IMPSPRGM core · 0x1000–0x7FFF standardized extensions · 0x8000–0xBFFF vendor-specific · 0xC000–0xFFFF experimental. Every service may implement the common opcodes GET_CAPS / GET_STATUS / CONFIGURE / START / STOP / RESET.

↓ IFP/2 Reference SDK & firmware — Release v1.0   ↓ IFP/2 Specification v1.0 (PDF)

Boot & capability negotiation

IFP/2 boot and capability negotiation sequence
Fig. 3 · A session is negotiated in four messages before any service is used.
1. CONTROL_NODE -> HELLO(proto_version, node_id, supported_transports, max_frame)
2. PEER         -> CAPS(service_catalog, versions, MTU, power_modes, security)
3. CONTROL_NODE -> SELECT(control_transport, bulk_transport, QoS, heartbeat)
4. PEER         -> READY(session_id, credits, heartbeat_period, lease_defaults)
5. Both sides create service leases.
6. The application starts only services actually discovered at runtime.

RPC and bulk transfer

request = { version, service_id, opcode, sequence,
            flags /* ACK_REQUIRED, IDEMPOTENT, BULK_REFERENCE… */,
            payload_length, payload, crc }

Client -> enqueue by priority -> transmit -> ACK -> async RESULT / EVENT
Timeout -> retry if IDEMPOTENT
        -> otherwise query transaction status
        -> escalate to Recovery Supervisor if the peer is unresponsive

Large objects never block control commands: the control plane stays on UART/LPUART while a bulk object is streamed in segments over the best shared transport, with credit-based flow control so a slow receiver cannot overflow buffers. On transport failure the transfer resumes or restarts on the fallback UART per policy.

Automatic recovery

IFP/2 automatic recovery state machine
Fig. 4 · Recovery state machine: RUNNING → SUSPECT → ISOLATE → RECOVER_PEER → RENEGOTIATE → RESYNC → RUNNING, or → DEGRADED if recovery fails.

The heartbeat checks not only "is the processor alive" but the lease of each remote service. After a fault, stale handles are invalidated immediately — the application never keeps working against a phantom resource.

Baseline timeout profile

Generation-2 baseline values for bench qualification. They may be tuned without changing the wire protocol.

EventBaselineAction
UART ACK150 msretry
Local RPC result2 squery status / retry policy
Socket connect30 snetwork recovery
Active heartbeat1 s3 misses ⇒ SUSPECT
Idle heartbeat10 s3 misses ⇒ SUSPECT
Software peer restart2 shardware reset if no response
Peer boot10 sDEGRADED if it fails
Network registration120 soffline / degraded

True deep-sleep uses an expected wake time / lease deadline instead of a periodic heartbeat.

Independence from Embedded AT

Provider modeWhen it is usedWhat Fabric sees
Embedded / OpenCPUThe modem lets user code run inside the module.The richest set of internal services with minimal external traffic.
AT-onlyOnly documented AT commands are available.The same service IDs, but the backend is an AT transaction engine on the MCU. Unavailable capabilities are simply not published.
Linux / USB / QMIThe modem is attached to a Linux-capable host or gateway.The provider works over USB serial / QMI / network interface; the rest of the system does not change.

Universality therefore comes not from a specific vendor's EAT, but from having at least one adapter able to satisfy the required service contract.

References & validation plan

SIM800C + STM8 remains the legacy reference. The next references specifically test portability, high throughput and automatic recovery.

ProfilePurposeWhat is validated
R1 · Legacy
SIM800C + STM8
Minimal autonomous telemetry nodeUART/CMUX, Embedded-AT provider, low-memory profile, wake/sleep
R2 · Modern
LTE Cat-1/Cat-1 bis + 32-bit ULP MCU
New primary referenceAdapter portability, fast bulk transport, FOTA-aware services, recovery
R3 · AT-only
LTE modem without embedded customer runtime + MCU
Prove independence from EAT/OpenCPUAT provider, capability reduction, same application API

Qualification gates (Generation 2)

Protocol freeze is not hardware qualification. The Generation-2 acceptance targets below are measured on the bench, and the exact thresholds may be revised by test results — any revision is versioned in the qualification matrix.

  • UART 115 200 application throughput ≥ 8 KiB/s; USB bulk ≥ 400 KiB/s when negotiated.
  • RPC p95 for a local service < 50 ms; protocol re-sync after peer boot < 10 s.
  • 72 h continuous traffic with no protocol deadlock and no measurable long-run memory growth.
  • 1 000 peer-reset cycles · 1 000 link interruptions · 500 full power cycles.
  • Zero duplicate non-idempotent actions; recovery success target ≥ 99.9% under the injected-fault set.

Practical effect for autonomous telemetry

What Fabric 2.0 changes

1protocol across chip vendors
3provider modes, one service API
UART→USBbulk without losing control plane
lease-based recovery, no phantom handles

Technical basis

The architecture relies on publicly documented capabilities of existing platforms; the exact capabilities are always defined by the chosen model and its SDK. No vendor-specific API reaches the application layer — it ends inside the Provider Adapter. That is the core contract of Fabric 2.0.

Licensing & Intellectual Property

IMPSPRGM™ is proprietary technology of LLC IMPSPRGM (Tashkent, Republic of Uzbekistan). The technology — including the reference firmware, the Translator mechanism, the IFP/2 protocol, the provider-adapter model and the supporting design files — is distributed exclusively under a written Licence Agreement on a per-unit (per-device) basis. Source code, architectural diagrams and the protocol remain the sole property of LLC IMPSPRGM; reverse engineering, redistribution and derivative works require prior written consent.

Commercial inquiries and per-unit quotations: impsprgm@umail.uz

Application NumberPCT/UZ2022/050001
Date of Receipt29 December 2022
Receiving OfficeIntellectual Property Agency under the Ministry of Justice of the Republic of Uzbekistan (RO/UZ)

← Interprocessor OS   Back to home