Een volledig functionele TypeScript/Electron versie van de UniFi EEPROM Patcher tool. Deze cross-platform applicatie kan gebruikt worden om UniFi device EEPROM bestanden te lezen, bewerken en opslaan. Beschikbaar als zowel GUI desktop applicatie als interactieve CLI tool.
- ✅ EEPROM bestanden openen en lezen
- ✅ Device informatie bewerken (Vendor, Device, SubVendor, SubDevice IDs)
- ✅ Dual device support (Device 1 & Device 2 voor multi-chip apparaten)
- ✅ MAC adressen aanpassen (LAN1, LAN2, WLAN)
- ✅ Model detectie uit een database van bekende UniFi apparaten
- ✅ CRC checksum berekeningen en toepassen
- ✅ Lock status detectie
- ✅ Bestanden opslaan met wijzigingen
- ✅ Automatische backup bij het opslaan
- ✅ Moderne web-based GUI met status meldingen
- ✅ Interactieve CLI met menu systeem
- ✅ Type-safe TypeScript implementatie
De tool ondersteunt momenteel 52+ geverifieerde UniFi apparaten:
- PowerStation series (2/5)
- NanoStation series (2/5/M2/M5)
- Bullet series (2/5/M2/M5)
- PicoStation series
- LiteStation series
- WispStation series
- Diverse XR en SR series radio's
- UniFi Switch Flex Mini (USW-Flex-Mini) - Geverifieerd
- Meer modellen kunnen toegevoegd worden na hardware verificatie
De originele device database bevat voornamelijk wireless apparaten met Atheros chipsets. Voor andere UniFi apparaten zoals moderne switches, access points, en gateways:
- Veel gebruiken andere hardware architecturen (ARM, MIPS, etc.)
- Kunnen een andere EEPROM structuur hebben
- De vendor/device IDs kunnen 0xFFFF zijn (niet-geïnitialiseerd)
- SubVendor 0x0777 is Ubiquiti's identificatie
Om nieuwe apparaten toe te voegen is hardware verificatie vereist om de correcte EEPROM waarden te bepalen.
UniFi apparaten bevatten vaak meerdere hardware componenten die elk hun eigen device ID's hebben:
- Device 1: Meestal de primaire chip (WiFi radio bij APs, switch ASIC bij switches)
- Device 2: Secundaire component (Ethernet controller, tweede radio bij dual-band, etc.)
Dit is waarom je beide devices kunt bewerken in de tool. Bij switches bijvoorbeeld:
- Device 1: Switch ASIC (Application-Specific Integrated Circuit)
- Device 2: Management CPU of Ethernet PHY
Het wijzigen van EEPROM data kan uw apparaat permanent beschadigen als het incorrect wordt gedaan. Gebruik deze tool op eigen risico. Er wordt automatisch een backup gemaakt met de extensie .backup bij de eerste keer opslaan.
- Node.js 14.0 of hoger
- npm of yarn package manager
- Clone de repository of download de bestanden
- Installeer de dependencies:
npm installOf met yarn:
yarn installStart de Electron GUI applicatie:
# Build TypeScript en start Electron
npm start
# Of voor continue TypeScript watching
npm run dev
# In een andere terminal
npm run electronStart de interactieve command-line interface:
npm run cliDe CLI biedt een volledig menu-gedreven interface met:
- 📁 Bestanden openen en opslaan
- 📊 EEPROM data bekijken
- ✏️ Device informatie bewerken (selecteer uit modellen of voer handmatig in)
- 🔌 MAC adressen wijzigen
- ⚙️ Andere instellingen aanpassen
- 🔢 CRC checksums berekenen en toepassen
Maak standalone executables voor verschillende platformen:
# Bouw eerst TypeScript
npm run build
# Maak dan distributables voor de GUI
npm run distDe builds worden gegenereerd in de build folder.
- Open een bestand: Klik op "Open" om een EEPROM bestand te selecteren
- Bekijk/bewerk data:
- Selecteer een model uit de dropdown om automatisch de device IDs in te vullen
- Of pas handmatig de hex waarden aan
- Wijzig MAC adressen (gebruik hex notatie zonder scheidingstekens)
- Bereken nieuwe CRC: Klik op "Calculate CRC" na het maken van wijzigingen
- Pas CRC toe: Klik op "Apply CRC" om de nieuwe checksum te gebruiken
- Sla op:
- "Save" - overschrijft het huidige bestand (maakt een backup)
- "Save As" - sla op als nieuw bestand
- Start met
npm run cli - Gebruik de pijltjestoetsen om door het menu te navigeren
- Volg de prompts voor het bewerken van waarden
- De CLI valideert automatisch alle invoer
- Geschreven in TypeScript voor type safety
- Strict mode enabled voor betere code kwaliteit
- Leest EEPROM data vanaf offset 0x7F0000
- Gebruikt little-endian byte order met byte swapping voor 16-bit waarden
- Automatische backup creatie bij eerste save
- Real-time validatie en status feedback
- Gedeelde utilities voor GUI en CLI
├── src/ # TypeScript bronbestanden
│ ├── main.ts # Electron main process (file I/O)
│ ├── renderer.ts # GUI logica en EEPROM parsing
│ ├── cli.ts # CLI applicatie
│ ├── eeprom-utils.ts # Gedeelde EEPROM utilities
│ ├── models.ts # Device model definities
│ └── types.ts # TypeScript type definities
├── dist/ # Gecompileerde JavaScript bestanden
├── package.json # NPM configuratie en dependencies
├── tsconfig.json # TypeScript configuratie
├── index.html # GUI interface
├── style.css # GUI styling
└── README.md # Deze documentatie
- Type Safety: Compile-time type checking voorkomt runtime fouten
- Better IntelliSense: Verbeterde code completion in IDEs
- Refactoring: Veiliger refactoren met type informatie
- Documentatie: Types dienen als inline documentatie
- Moderne JavaScript: Gebruik van ES2020 features
Voel je vrij om issues te openen of pull requests te maken voor verbeteringen.
Dit project is gelicenseerd onder de MIT licentie.