Fra tid til annen er Unifi skikkelig idiot og vil ikke adoptere et aksesspunkt (eller switch eller gateway) hvis den har vært adoptert til en site på samme kontroller tidligere og så blitt resatt uten å ha blitt glemt fra siten/kontrolleren. Det vises best ved at man ikke får adoptert enheten i det hele tatt, hvis den overhodet vises som adopsjonsklar.
Hvis man logger inn på Unifi-kontrolleren og ser på /var/log/unifi/server.log, så vil man da se flere linjer som dette:
WARN inform - dev[MACADDRESS] used default key in INFORM_ERROR state, reject it!
Dette skyldes som nevnt over at Unifi allerede vet om denne enheten og nekter å snakke med den siden har feil nøkkel i forhold til hva som forventes.
For å løse dette må vi manuelt fjerne enheten fra databasen. Unifi bruker mongoDB, så da må vi bruke mongosh for å koble til.
Før vi gjør det, ta et snapshot, backup, databasedump - hva som helst som gjør at du har en fungerende kopi av databasen. Gjør det nå og sett samtidig opp automatisk backup av Unifi.
Anyway. Koble til mongoDB:
mongosh --port 27117
Så må vi velge riktig database. Unifi sin defaultdatabase er "ace":
use ace
Nå må vi finne enheten:
db.device.find({ "mac" : "MACADDRESS" })
Da får man output lignende dette:
[ { _id: ObjectId('66cd71cca0436057d6179928'), required_version: '3.4.1', port_table: [], has_speaker: false, mesh_sta_vap_enabled: true, license_state: 'registered', type: 'uap', board_rev: 36, setup_id: '509d537f-91fd-40f3-bc3f-84cd0f1e403d', hw_caps: 2048, reboot_duration: 30, config_network: { ip: '10.16.1.108', type: 'dhcp' }, syslog_key: '25b9bf14580dc9edac73bb1e9406a062755bcca3480512891d3c5055ed64aac1', model: 'U7LT', manufacturer_id: 61, sysid: 58647, ip: '10.16.1.108', fw2_caps: 589824, support_wifi6e: false, last_connection_network_name: 'Default', version: '6.6.77.15402', adoption_completed: true, scan_radio_table: [], unsupported_reason: 0, x_vwirekey: 'ce840a6d115f7d0d9de7aa679cc87062', anon_id: 'a5bbe882-6188-4c7c-8d05-225a2ba26263', supports_fingerprint_ml: false, last_connection_network_id: '5beed224ed9fe506ba1dbd53', country_code: 0, wlangroup_id_na: '5beed224ed9fe506ba1dbd55', countrycode_table: [],
Okei, enheten finnes. Nå må den vekk.
For å slette en oppføring kjører man:
db.device.deleteOne({ "mac" : "MACADDRESS" })
Serveren kvitterer med:
{ acknowledged: true, deletedCount: 0 }
Wait, what? deletedCount: 0?
Vi sjekker en gang til om enheten finnes:
db.device.find({ "mac" : "MACADDRESS" })
Denne gangen fikk vi ikke noe output, med andre ord er enheten slettet.
Siden vi har herjet med et live system kan det være på sin plass å starte Unifi-kontrolleren på nytt. Jeg rebootet hele serveren siden for å være sikker på at både mongoDB og Unifi ble startet på nytt skikkelig.