Component: repeater/packet_router.py — PacketRouter.inject_packet()
When a companion sends a channel message (GRP_TXT), pyMC transmits it over the air via inject_packet() but never pushes the raw packet bytes to connected companion frame server clients via PUSH_CODE_LOG_RX_DATA (0x88). Apps that decrypt locally from raw RX — such as RemoteTerm — therefore never see companion-to-companion messages.
Injected TX packets should be pushed to companion frame server clients as raw RX frames (PUSH_CODE_LOG_RX_DATA 0x88), with RSSI=0 and SNR=0 to indicate local origin. This is consistent with how physical firmware behaves from the perspective of other nodes on the mesh.
Component: repeater/packet_router.py — PacketRouter.inject_packet()
When a companion sends a channel message (GRP_TXT), pyMC transmits it over the air via inject_packet() but never pushes the raw packet bytes to connected companion frame server clients via PUSH_CODE_LOG_RX_DATA (0x88). Apps that decrypt locally from raw RX — such as RemoteTerm — therefore never see companion-to-companion messages.
Injected TX packets should be pushed to companion frame server clients as raw RX frames (PUSH_CODE_LOG_RX_DATA 0x88), with RSSI=0 and SNR=0 to indicate local origin. This is consistent with how physical firmware behaves from the perspective of other nodes on the mesh.