Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

UniFi EEPROM Patcher - TypeScript/Electron Version

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.

🚀 Functionaliteit

  • ✅ 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

📋 Ondersteunde UniFi Apparaten

De tool ondersteunt momenteel 52+ geverifieerde UniFi apparaten:

Wireless Apparaten (Origineel ondersteund)

  • 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

Switches (Experimenteel)

  • UniFi Switch Flex Mini (USW-Flex-Mini) - Geverifieerd
  • Meer modellen kunnen toegevoegd worden na hardware verificatie

⚠️ Belangrijk over Device Support

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.

🔧 Dual Device Support

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

⚠️ Waarschuwing

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.

📋 Vereisten

  • Node.js 14.0 of hoger
  • npm of yarn package manager

🛠️ Installatie

  1. Clone de repository of download de bestanden
  2. Installeer de dependencies:
npm install

Of met yarn:

yarn install

🚀 Gebruik

GUI Desktop Applicatie

Start 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 electron

CLI Versie

Start de interactieve command-line interface:

npm run cli

De 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

Productie build

Maak standalone executables voor verschillende platformen:

# Bouw eerst TypeScript
npm run build

# Maak dan distributables voor de GUI
npm run dist

De builds worden gegenereerd in de build folder.

📖 Gebruikersinstructies

GUI Versie

  1. Open een bestand: Klik op "Open" om een EEPROM bestand te selecteren
  2. 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)
  3. Bereken nieuwe CRC: Klik op "Calculate CRC" na het maken van wijzigingen
  4. Pas CRC toe: Klik op "Apply CRC" om de nieuwe checksum te gebruiken
  5. Sla op:
    • "Save" - overschrijft het huidige bestand (maakt een backup)
    • "Save As" - sla op als nieuw bestand

CLI Versie

  1. Start met npm run cli
  2. Gebruik de pijltjestoetsen om door het menu te navigeren
  3. Volg de prompts voor het bewerken van waarden
  4. De CLI valideert automatisch alle invoer

🔧 Technische details

  • 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

📁 Project structuur

├── 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

🎯 TypeScript voordelen

  • 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

🤝 Bijdragen

Voel je vrij om issues te openen of pull requests te maken voor verbeteringen.

📜 Licentie

Dit project is gelicenseerd onder de MIT licentie.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages