Isehäälestumine (Plug and play, lühend PnP) on arvuti oskus tuvastada ja seadistada uut riistvara automaatselt – ilma et kasutaja peaks seadet enne füüsiliselt seadistama. Plug and play võeti IBM-ühilduvates arvutites kasutusele alates Windows 95-st. Apple on oma Macintoshi arvutites alati toetanud võimalust automaatselt riistvara tuvastada ja installida.[1]
Algselt oli riistvara lihtsalt moodulite kogum, mille eri funktsioone pidi omavahel siduma, et saavutada erinevaid arvutusoperatsioone. Üldotstarbeliste arvutite arenedes kasutati selliseid ühendusi hoopis laiendseadmete asukoha määramiseks, et protsessor oleks neid võimeline üles leidma ning nendega suhtlema. Kui ühte arvutisse oli seadistatud kaks või rohkem sama tüüpi seadet, siis oli väga tähtis määrata teisele seadmele eraldi aadress, mis ei kattuks esimesega. Muidu ei olnud võimalik mõlema seadmega samaaegselt suhelda.
Mõiste Plug and play viitas algselt laiendplaatidele ja teistele välisseadmetele, mida oli võimalik paigaldada ilma käsitsi seadistamata. Sel ajal olid laiendplaatidel enamasti DIP-lülitid, mida oli vaja enne käsitsi seadistada, et seade õigesti töötaks. See oli aga üsna keeruline ning väiksemgi viga võis muuta kas terve süsteemi või kindla laiendusseadme täiesti kasutuskõlbmatuks.[2]
1995. aastal avaldas Microsoft Windows 95, mis proovis võimalikult suures osas automatiseerida seadme tuvastamise ja seadistamise. Viperuste korral oli aga võimalik kasutada ka käsitsi seadistamist. Kuna automaatne tuvastus oli veel uus kontseptsioon, siis kirjutati pidevalt kogu protsessist logifaili. Kui juhtus, et seadme tuvastamine ebaõnnestus ja süsteem hangus, siis oli võimalik arvuti rebuutida, taaskäivitada tuvastusprotsess ja jälgides logi, jättis protsess hangumise tekitanud hetke vahele.
Sel ajal leidus nii seadmed, mis olid automaatselt tuvastatavad, kui ka seadmeid, mida tuli täiesti käsitsi seadistada. Selle tõttu oli võimalik seadmeid paigaldada kolmel viisil:
Plug and play ülesanne on sobitada kokku füüsilised seadmed ja tarkvara ehk seadmedraiverid, mis neid juhivad, ning luua iga seadme ja tema draiveri vahel suhtluskanaleid. Kasutades standardiseeritud protokolle, suhtleb PnP füüsilises seadmes asuvate konfiguratsioonireeglitega. Selle saavutamiseks eraldab ja seadistab PnP järgmisi ressursse:[3]
PnP säilitab kõik andmed selle kohta, mida ta on teinud, ning lubab draiveritel seda informatsiooni kasutada.[3]
Plug and play täielikuks rakendamiseks on vajalikud kolm asja:[4]
PnP säilitab seadmepuu, mis sisaldab informatsiooni kõikide süsteemiga ühendatud seadmete kohta. Igal alglaadimisel koostatakse uus puu, mida uuendatakse pidevalt. See tähendab, et iga seadme eemaldamine või lisamine on kohe seadmepuus näha. Seadmepuu on hierarhiline, kus ühendatud seadmed asuvad kõige madalamal tasemel. PnP kasutab seadmepuu hierarhiat, et kindlaks teha, kas kindla seadme eemaldamine mõjub kuidagi ka teistele seadmetele ning kas see on turvaline. Seda hierarhiat on võimalik Windowsis näha seadmehalduris (Device Manager), kui valida vaade, kus saab kuvada seadmeid ühenduse järgi.[5]
Praegu on kasutusel mitut tüüpi automaatliideseid, mis üksi ei vaja kasutajapoolset seadistamist:[6]
Ka teised tööstusharud kasutavad terminit Plug and play sarnaste omadustega seadmete kirjeldamiseks. Näiteks tarvitatakse seda kõik-ühes-videomängude seadmete kirjeldamisel. Tihti kasutatakse sellistes seadmetes sama toote vanemate generatsioonide riistvara ja tarkvara, sest seda on suhteliselt odav taastoota. Riistvara ja tarkvara on koondatud koos kontrolleriga üheks tervikuks ning seda saab teleriga ühendada ja esitada ilma lisavarustuseta.[2]
Linuxil on varem olnud PnP-ga tõsiseid probleeme, aga nüüdseks on enamik neist lahendatud. Kõik sõltub loomulikult kerneli koostamisel tehtavatest valikutest. Linuxis teeb traditsiooniliselt iga seadme draiver ise teatud madalatasemelise seadistamise. See oli üsna keeruline kuni ajani, mil Linux varustas kernelit tarkvaraga, mis draiverite töö lihtsamaks muudab. Nüüd tegelevad draiverid ikka seadistusega, aga nad teevad seda Linuxi abiga, kus võivad õiged seaded/konfiguratsioonid juba olemas olla.[3]
Leides oma seadme, pärivad draiverid, millistele aadressidele ja katkestusnõuetele nad on määratud, ning tavaliselt nõustuvad sellega. Aga draiveril on võimalik kerneli varustatud käskudega aadresse ka muuta. Loomulikult ei aktsepteeri kernel aadresse, mis on juba välja jagatud või millega seade ei ühildu.[3]