Working notes from building these apps. Mostly about protocols that behave differently from their documentation, and about what a host or a piece of plant equipment actually did when we measured it.
Newest first.
A Bluetooth keyboard sends keys rather than Unicode text. Korean input works by decomposing each syllable into Korean 2-set keystrokes and letting the host IME compose them.
The five standard keyboard actions behind a no-companion-app presentation remote, plus the focus, sleep, and one-way HID limits that explain missed commands.
How a phone trackpad becomes relative pointer movement, three mouse buttons, a wheel, and ordered Shift+wheel reports for horizontal scrolling over Bluetooth HID.
Combine TCP, mDNS, SSDP, WSD, NetBIOS, and vendor evidence without mistaking one weak clue for an identity—or a missing reply for an absent device.
Scan the local /24 for a selected port, keep credentials out of discovery links, and verify first-use or changed SSH host keys before authenticating.
SSDP discovery, approved SSAP pairing, a separate pointer socket, and why Wake-on-LAN needs a MAC address saved before the TV enters deep standby.
One UDP broadcast on port 2007 makes every LS PLC on the segment announce its own address — no subnet sweep. What it sends, and what to check when nothing answers.
What ports 102, 502, 44818, 9600, 5007 and 48898 imply, why a port number is a candidate rather than an answer, and where a discovery tool should stop.
Three subjects, because those are the three the apps run into.
What a host actually receives when a phone advertises itself as a keyboard or mouse — report descriptors, held-key state, and why Korean text has to be decomposed into jamo keystrokes rather than sent as finished syllables.
Identifying what answers on an unfamiliar subnet: which port implies which protocol, how industrial equipment responds to a discovery request, and where a scan should stop for safety rather than for lack of ability.
Where a plan was dropped because the hardware disagreed with it. These notes include the ones that failed — the measurement is the point, not the feature.