Open Source browser-based GUI for KFDtool.Build on Modern TypeScript/React Framework. This is a complete rewrite of the original KFDweb by grover556 with significant improvements.
Compliant with P25 standards (TIA-102.AACD-A).
- Automatic Error Recovery: Handles stuck radio states automatically
- Enhanced Performance: Optimized communication with reduced timeouts
- Modern UI: Clean, responsive interface built with React and Tailwind CSS and shadcn/ui
- Type Safety: Full TypeScript implementation prevents runtime errors
- Better UX: Seamless operation without manual reconnections, mobile responsive.
- Clean Architecture: Modular, maintainable codebase
KFD Online interfaces with KFDtool and compatible hardware adapters via Three Wire Interface (TWI/3WI).
Supported Manual Rekeying Features (TIA-102.AACD-A):
- ✅ 2.3.1 Keyload - Load encryption keys to radio
- ✅ 2.3.2 Key Erase - Remove specific keys from radio
- ✅ 2.3.3 Erase All Keys - Clear all keys from radio
- ✅ 2.3.4 View Key Info - Display active keys on radio
- ✅ 2.3.5 View Individual RSI - Show Radio Set Identifiers
- ✅ 2.3.6 Load Individual RSI - Configure RSI settings
- ✅ 2.3.7 View KMF RSI - Display Key Management Facility settings
- ✅ 2.3.8 Load KMF RSI - Configure KMF settings
- ✅ 2.3.9 View MNP - Show Message Number Period
- ✅ 2.3.10 Load MNP - Configure Message Number Period
- ✅ 2.3.11 View Keyset Info - Display keyset information
- ✅ 2.3.12 Activate Keyset - Switch active keysets
- Create Keys: Generate new encryption keys with validation
- Key Containers: AES-256 encrypted key storage (.ekc files)
- Key Groups: Organize keys into logical groups
- Batch Operations: Load multiple keys efficiently
- Key Validation: Automatic validation for weak/invalid keys
- AES-256 (Algorithm ID 0x84) - Advanced Encryption Standard
- AES-128 (Algorithm ID 0x85) - Advanced Encryption Standard
- DES-OFB (Algorithm ID 0x81) - Data Encryption Standard
- DES-XL (Algorithm ID 0x9F) - Extended DES
- ADP/RC4 (Algorithm ID 0xAA) - Advanced Digital Privacy
- Type 1 Algorithms (0x00-0x41) - NSA Suite A/B algorithms
- Load Containers: Import encrypted key container files
- Export Containers: Save keys to encrypted files
- Container Groups: Organize keys into groups
- Key Regeneration: Generate new keys while preserving metadata
- Container Reset: Clear all keys and groups
Officially Supported Devices:
- KFDtool (Original Duggard) - Requires firmware v1.4.0+
- KFDshield (OmahaCommSys) - Full support
- KFDMicro (W3AXL) - Full support
- KFDPico (Arduino-based) - Full support
Connection Methods:
- Web Serial API (Primary) - Direct USB connection
- WebUSB API (Fallback) - Browser compatibility layer
- Chrome 89+ (Recommended)
- Microsoft Edge 89+
- Opera 75+
- Chrome for Android 109+ (Limited support)
- Windows 10/11
- macOS 10.15+
- Linux (Ubuntu, Debian, Fedora)
- Android 11+ (Chrome browser only)
- Secure Context: HTTPS or localhost required
- Web Serial API: Built-in browser support
- Modern JavaScript: ES2020+ features
# Clone the repository
git clone [repository-url]
cd kfdOnline
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build- Connect Device: Click "Connect Device" and select your KFD hardware
- Load Container: Import an existing .ekc key container file (optional)
- Create Keys: Generate new keys or load from container
- Manage Radio: View/modify radio configuration
- Load Keys: Transfer keys to connected radio
- React 19: Modern React with hooks
- TypeScript 5.8: Full type safety
- Vite 7: Fast development and build tool
- Tailwind CSS 3: Utility-first styling
- Radix UI: Headless component primitives
- shadcn/ui: Beautiful, accessible components
- Lucide React: Modern icon library
- Custom Components: Purpose-built radio interfaces
- Web Serial API: Primary hardware communication
- WebUSB API: Fallback for compatibility
- Web Crypto API: Cryptographic operations
- File System API: Container file operations
- OTAR (Over-The-Air-Rekeying): Not implemented
- DLI features: DLI Not Supported due to browser limitations.
- Large key containers: May be slow to load (>1000 keys)
- WebUSB reliability: Web Serial preferred over WebUSB
- Mobile limitations: Limited functionality on mobile browsers
MIT License - see LICENSE for details.
- KFDweb - MIT License
- KFDtool - MIT License
- KFD-AVR - MIT License
- React - MIT License
- Radix UI - MIT License
- Tailwind CSS - MIT License
- shadcn/ui - MIT License
- Lucide React - MIT License
- web-serial-polyfill - Apache License
- webusb-ftdi.js - GNU General Purpose License
- webusb-cdcacm.js - GNU General Purpose License
- crypto-js - New BSD License
- pako - MIT License
