Skip to content

Conversation

@jsmemfault
Copy link

The MDS protocol was originally designed for BLE where packet length is implicit in the notification. When adapted to USB HID with fixed 64-byte reports, zero padding was corrupting multi-packet payloads like coredumps.

Protocol changes:

  • Add length byte at position 1 (after sequence byte)
  • Data now starts at position 2
  • Max payload reduced to 61 bytes (report[3..63])

Gateway improvements:

  • Buffered packet reading to prevent HID buffer overflow
  • Pre-flush stale data before enabling streaming
  • Sequence gap detection for debugging
  • Added User-Agent header for Memfault tracking

🤖 Generated with Claude Code

jrsharp and others added 19 commits December 15, 2025 15:42
The MDS protocol was originally designed for BLE where packet length is
implicit in the notification. When adapted to USB HID with fixed 64-byte
reports, zero padding was corrupting multi-packet payloads like coredumps.

Protocol changes:
- Add length byte at position 1 (after sequence byte)
- Data now starts at position 2
- Max payload reduced to 61 bytes (report[3..63])

Gateway improvements:
- Buffered packet reading to prevent HID buffer overflow
- Pre-flush stale data before enabling streaming
- Sequence gap detection for debugging
- Added User-Agent header for Memfault tracking

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Demo gateway (mds_gateway_demo.c):
- Colorized terminal output with status boxes and emojis
- Auto-reconnect after device faults/resets
- Continuous operation without manual restart
- Session and total packet tracking

Demo support files:
- README-DEMO.md: Comprehensive FAE guide with setup, troubleshooting, demo script
- QUICK-START.md: One-page cheat sheet for booth staff
- VIDEO-SCRIPT.md: 60-second video script and slide content for marketing
- run-demo.sh: Linux auto-detection launcher
- run-demo-macos.sh: macOS auto-detection launcher
- setup-permissions.sh: Linux udev rules setup

Target hardware: nRF5340-DK

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
60x20 terminal-friendly layout showing:
- Left pane: MDS USB-HID Gateway
- Lower pane: UART Console (nRF54LM20-DK)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
10 slides using maaslalani/slides framework:
1. Title - MDS + nRF Cloud branding
2. The Problem - crashes with no visibility
3. The Solution - streaming diagnostics
4. How It Works - device → gateway → cloud diagram
5. Zero-Touch Capture
6. USB HID Transport
7. Continuous Operation (auto-reconnect)
8. Instant Cloud Analysis
9. Live Demo layout
10. Closing CTA

Run with: slides demo/slides.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Two options for running auto-advancing slides:

slides-loop.sh - Uses named pipe (simpler, no tmux needed)
slides-video.sh - Uses tmux (more reliable, better for recording)

Both auto-advance every 6 seconds (configurable) and loop
back to the first slide after completing all 10 slides.

Usage:
  ./slides-video.sh        # 6 sec/slide (default)
  ./slides-video.sh 5      # 5 sec/slide (50 sec loop)

For recording: use asciinema, ttyrec, or OBS

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
slides-auto.sh uses macOS osascript to send keystrokes,
works with iTerm2 panes or any macOS terminal.

Usage: ./slides-auto.sh [seconds-per-slide]

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Professional 60-90 second video script highlighting:
- Chip-to-cloud observability
- Built for embedded systems
- nRF Cloud + Memfault integration
- Zero-friction USB HID transport
- Fleet management at scale

Includes production notes, visual direction, and tagline options.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Redesigned for no-audio monitor above demo station:
- 8 frames with timing and motion notes
- Text-driven visual storyboard
- Seamless loop point
- Points down to live demo below
- Design notes (colors, typography, animation)
- Production specs (1080p/4K, 30fps, MP4)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Restructured to make USB-HID demo the centerpiece:
- Frames 3-7: 4-step demo walkthrough (36s)
- Frame 8: Scales to fleet (6s)
- 10 frames total, demo-focused

Steps now explicitly map to live demo:
1. TRIGGER - button press
2. STREAM - USB HID packets
3. GATEWAY - terminal output (points down)
4. CLOUD - dashboard analysis

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
~77 words total across 60 seconds:
- Short, punchy phrases
- Scannable at a glance
- No paragraphs, just headlines

Each frame now 4-12 words max.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Ready-to-paste prompt for Microsoft Copilot to generate
the 60-second silent looping video in ClipChamp.

~600 words, includes all frame content, timing, and style notes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1,947 characters - fits Copilot's limit.
All 10 frames with timing and animation notes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants