---
title: Hoofdstuk 26. Seriële communicatie
part: Deel IV. Netwerkcommunicatie
prev: books/handbook/partiv
next: books/handbook/ppp-and-slip
showBookMenu: true
weight: 31
params:
  path: "/books/handbook/serialcomms/"
---

[[serialcomms]]
= Seriële communicatie
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 26
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/serialcomms/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[serial-synopsis]]
== Overzicht

UNIX(R) heeft altijd ondersteuning geboden voor seriële communicatie. Het is een feit dat de allereerste UNIX(R)-machines afhankelijk waren van seriële kabels voor gebruikersinvoer en -uitvoer. De dingen zijn flink veranderd sinds de tijd dat de gemiddelde "terminal" uit een 10-tekens-per-seconde seriële printer en een toetsenbord bestond. Dit hoofdstuk beschrijft enkele manieren waarop FreeBSD gebruik maakt van seriële communicatie.

Na het lezen van dit hoofdstuk weet de lezer:

* Hoe terminals met een FreeBSD-systeem te verbinden;
* Hoe een modem te gebruiken om naar computers op afstand te bellen;
* Hoe het mogelijk te maken voor gebruikers op afstand om met een modem op een systeem aan te melden;
* Hoe een systeem van een seriële console op te starten.

Veronderstelde voorkennis:

* Weten hoe een nieuwe kernel ingesteld en geïnstalleerd wordt (crossref:kernelconfig[kernelconfig,De FreeBSD-kernel instellen]);
* Begrijpen hoe rechten en processen in UNIX(R) werken (crossref:basics[basics,UNIX® beginselen]);
* De beschikking hebben over het technische handboek voor de hardware (modem of meerpoortige kaart) die gebruikt wordt met FreeBSD.

[[serial]]
== Inleiding

[WARNING]
====

Vanaf FreeBSD 8.0 zijn de seriële poorten hernoemd van [.filename]#/dev/cuadN# naar [.filename]#/dev/cuauN# en van [.filename]#/dev/ttydN# naar [.filename]#/dev/ttyuN#. FreeBSD 7.X gebruikers moeten de documentatie aanpassen naar deze wijzigingen.
====

[[serial-terminology]]
=== Terminologie

bps::
Bits per seconde: de snelheid waarmee gegevens verstuurd worden

DTE::
Data Terminal Equipment (apparatuur voor gegevensterminal): bijvoorbeeld een computer

DCE::
Data Communications Equipment (apparatuur voor gegevenscommunicatie): een modem

RS-232::
EIA standaard voor hardwarematige seriële communicatie

Deze sectie gebruikt niet de term "baud" als er over snelheden van gegevenscommunicatie gesproken wordt. Baud verwijst naar het aantal elektrische toestandsovergangen dat binnen een tijdsperiode gemaakt mag worden, "bps" (bits per seconde) is de _correcte_ term om te gebruiken (de oude mopperkonten schijnen zich er niet erg druk over te maken).

[[serial-cables-ports]]
=== Kabels en poorten

Om een modem of terminal met een FreeBSD-systeem te verbinden, dienen een seriële poort op een computer en een kabel om verbinding te maken met een serieel apparaat aanwezig te zijn. Indien kennis over hardware en de benodigde kabel reeds aanwezig is, kan deze sectie veilig worden overgeslagen.

[[term-cables]]
==== Kabels

Er zijn verschillende soorten seriële kabels. De twee meest voorkomende types in deze context zijn nulmodem-kabels en standaard ("rechte") RS-232-kabels. De documentatie van de hardware beschrijft het type kabel dat nodig is.

[[term-cables-null]]
===== Nulmodem-kabels

Een nulmodem-kabel geeft sommige signalen, zoals "Aardesignaal" recht door, maar kruist andere signalen. Bijvoorbeeld, de "Verzonden Gegevens"-pin aan de ene kant gaat naar de "Ontvangen Gegevens"-pin aan de andere kant.

Een nulmodem-kabel voor het gebruik met terminals kan ook zelf worden gemaakt (bijvoorbeeld voor kwaliteitsdoeleinden). Deze tabel toont de RS-232C <<serialcomms-signal-names,signalen>> en de pinnummers op een DB-25-aansluiting. De standaard vereist ook een _Aardebescherming_ rechte lijn van pin 1 naar pin 1, maar deze wordt vaak weggelaten. Sommige terminals werken goed met slechts pin 2, 3 en 7, terwijl andere instellingen eisen die afwijken van die in de onderstaande voorbeelden.

.DB-25 naar DB-25 nulmodem-kabel
[cols="1,1,1,1,1", frame="none", options="header"]
|===
<| Signaal
<| Pin #
| 
<| Pin #
<| Signaal

|SG
|7
|verbonden met
|7
|SG

|TD
|2
|verbonden met
|3
|RD

|RD
|3
|verbonden met
|2
|TD

|RTS
|4
|verbonden met
|5
|CTS

|CTS
|5
|verbonden met
|4
|RTS

|DTR
|20
|verbonden met
|6
|DSR

|DTR
|20
|verbonden met
|8
|DCD
|===

In de onderstaande tabellen volgen twee schema's die momenteel meer gebruikelijk zijn:

.DB-9 naar DB-9 nulmodem-kabel
[cols="1,1,1,1,1", frame="none", options="header"]
|===
<| Signaal
<| Pin #
| 
<| Pin #
<| Signaal

|RD
|2
|verbonden met
|3
|TD

|TD
|3
|verbonden met
|2
|RD

|DTR
|4
|verbonden met
|6
|DSR

|DTR
|4
|verbonden met
|1
|DCD

|SG
|5
|verbonden met
|5
|SG

|DSR
|6
|verbonden met
|4
|DTR

|DCD
|1
|verbonden met
|4
|DTR

|RTS
|7
|verbonden met
|8
|CTS

|CTS
|8
|verbonden met
|7
|RTS
|===

.DB-9 naar DB-25 nulmodem-kabel
[cols="1,1,1,1,1", frame="none", options="header"]
|===
<| Signaal
<| Pin #
| 
<| Pin #
<| Signaal

|RD
|2
|verbonden met
|2
|TD

|TD
|3
|verbonden met
|3
|RD

|DTR
|4
|verbonden met
|6
|DSR

|DTR
|4
|verbonden met
|8
|DCD

|SG
|5
|verbonden met
|7
|SG

|DSR
|6
|verbonden met
|20
|DTR

|DCD
|1
|verbonden met
|20
|DTR

|RTS
|7
|verbonden met
|5
|CTS

|CTS
|8
|verbonden met
|4
|RTS
|===

[NOTE]
====
Als een pin aan het ene eind verbonden is met een pinnenpaar aan het andere eind, is dit meestal geïmplementeerd met een korte draad tussen het pinnenpaar in de stekker en een lange draad naar de andere, enkele pin.
====

Bovenstaande ontwerpen lijken het populairst. In een andere variatie (uitgelegd in het boek _RS-232 Made Easy_) worden de volgende verbindingen gemaakt: SG met SG, TD met RD, RTS en CTS met DCD, DTR met DSR en vice-versa.

[[term-cables-std]]
===== Standaard RS-232C-kabels

Een standaard seriële kabel laat alle RS-232C-signalen recht door. Dit betekent dat de "Verzonden Gegevens"-pin aan de ene kant naar de "Verzonden Gegevens"-pin aan de andere kant gaat. Dit type kabel wordt gebruikt om een modem met een FreeBSD-systeem te verbinden en is ook geschikt voor sommige terminals.

[[term-ports]]
==== Poorten

Seriële poorten zijn apparaten die gebruikt worden om gegevens te versturen tussen een FreeBSD gastcomputer en een terminal. Deze sectie beschrijft de bestaande soorten poorten en hoe deze aangesproken worden in FreeBSD.

[[term-portkinds]]
===== Soorten poorten

Er bestaan verschillende soorten seriële poorten. Controleer of een kabel past op de poorten van een terminal en een FreeBSD-systeem alvorens deze te kopen of te maken.

De meeste terminals hebben DB-25-poorten. PC's, inclusief PC's die FreeBSD draaien, hebben DB-25- of DB-9-poorten. Indien een meerpoortige seriële kaart voor een PC beschikbaar is, kan het zijn dat er RJ-12- of RJ-45-poorten aanwezig zijn.

In documentatie die bij hardware zit, staan specificaties over het soort poort dat gebruikt wordt. Vaak volstaat ook een visuele inspectie van een poort.

[[term-portnames]]
===== Poortnamen

In FreeBSD wordt elke seriële poort benaderd door een ingang in de map [.filename]#/dev#. Er zijn twee verschillende soorten ingangen:

* Inbelpoorten heten [.filename]#/dev/ttyuN# waarbij _N_ het poortnummer is, beginnend met nul. In het algemeen kunnen inbelpoorten voor terminals gebruikt worden. Inbelpoorten stellen de eis dat een seriële kabel ervoor zorgt dat het data carrier detect (DCD) signaal correct werkt.
* Uitbelpoorten heten [.filename]#/dev/cuauN#. In het algemeen worden uitbelpoorten niet voor terminals maar voor modems gebruikt. Gebruik een uitbelpoort als een seriële kabel of terminal het carrier detect-signaal niet ondersteunt.

Als er een terminal met de eerste seriële poort ([.filename]#COM1# in MS-DOS(R)) verbonden is, wordt [.filename]#/dev/ttyu0# gebruikt om naar de terminal te verwijzen. Als een terminal op de tweede seriële poort is aangesloten (ook bekend als [.filename]#COM2#), dient [.filename]#/dev/ttyu1# gebruikt te worden, enzovoort.

=== Kernelinstellingen

FreeBSD ondersteunt standaard vier seriële poorten. In de wereld van MS-DOS(R) staan ze bekend als [.filename]#COM1#, [.filename]#COM2#, [.filename]#COM3# en [.filename]#COM4#. FreeBSD ondersteunt momenteel "domme" meerpoortige seriële interfacekaarten, zoals de BocaBoard 1008 en 2016, alsook intelligentere meerpoortige kaarten van fabrikanten als Digiboard en Stallion Technologies. De kernel kijkt echter alleen naar de standaard COM-poorten.

Bekijk de boodschappen tijdens het opstarten van de kernel om te zien of de kernel seriële poorten herkent of gebruik het commando `/sbin/dmesg` om de opstartboodschappen van de kernel te herhalen. Kijk in het bijzonder naar boodschappen die met de tekens `uart` beginnen als u FreeBSD 8.0 of nieuwer gebruikt, of `sio` voor FreeBSD 7.4 of ouder.

[TIP]
====

Gebruik het volgende commando om alleen de boodschappen die het woord `sio` bevatten te zien:

[source,shell]
....
# /sbin/dmesg | grep 'uart'
# /sbin/dmesg | grep 'sio'
....

====

Voor bijvoorbeeld een FreeBSD 7._X_ systeem met vier seriële poorten zijn dit de opstartboodschappen van de kernel die specifiek zijn voor de seriële poorten:

[source,shell]
....
sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A
sio3 at 0x2e8-0x2ef irq 9 on isa
sio3: type 16550A
....

Als een kernel niet alle seriële poorten herkent, dan dient waarschijnlijk de kernel aangepast te worden in het bestand [.filename]#/boot/device.hints#. Het is ook mogelijk regels uit te schakelen of volledig te verwijderen voor apparaten die niet aanwezig zijn.

Zie de hulppagina man:sio[4] voor meer informatie over het instellen van seriële poorten en meerpoortige kaarten. Bij gebruik van een instellingenbestand dat eerder voor een andere versie van FreeBSD werd gebruikt is voorzichtigheid geboden omdat de apparaatvlaggen en de syntaxis tussen de versies veranderd zijn.

[NOTE]
====
`port IO_COM1` is een substitutie voor `port 0x3f8`, `IO_COM2` is `0x2f8`, `IO_COM3` is `0x3e8` en `IO_COM4` is `0x2e8`, welke redelijk algemene poortadressen zijn voor hun overeenkomstige seriële poorten. Interrupts 4, 3, 5 en 9 zijn redelijk algemene interruptlijnen. Reguliere seriële poorten kunnen _geen_ interrupts delen op ISA-bus-PC's (meerpoortige kaarten hebben elektronica die alle 16550A's op een kaart in staat stellen om één of twee interruptlijnen te delen).
====

=== Speciale apparaatbestanden

De meeste apparaten in de kernel worden benaderd met "speciale apparaatbestanden" die in de map [.filename]#/dev# staan. De apparaten [.filename]#sio# worden benaderd met de apparaten [.filename]#/dev/ttyuN# (inbellen) en [.filename]#/dev/cuauN# (uitbellen). FreeBSD biedt ook initialisatie-apparaten ([.filename]#/dev/ttyuN.init# en [.filename]#/dev/cuauN.init#) en slotapparaten ([.filename]#/dev/ttyuN.lock# en [.filename]#/dev/cuadN.lock#). De initialisatie-apparaten worden gebruikt om telkens als een poort wordt geopend de parameters van de communicatiepoorten te initialiseren, zoals `crtscts` voor modems die gebruik maken van `RTS/CTS`-signalering voor gegevensstroombeheer. De slotapparaten worden gebruikt om vlaggen op poorten op slot te zetten om te voorkomen dat gebruikers of programma's bepaalde parameters veranderen. In de hulppagina's man:termios[4], man:sio[4] en man:stty[1] staat informatie over respectievelijk terminalinstellingen, apparaten op slot zetten en initialiseren en terminalopties instellen.

[[serial-hw-config]]
=== De seriële poort instellen

Het apparaat [.filename]#ttyuN# (of [.filename]#cuauN#) is het gebruikelijke apparaat dat geopend dient te worden voor de applicaties. Wanneer een proces het apparaat opent, heeft het een standaardverzameling aan terminal I/O-instellingen. Bekijk deze instellingen met het volgende commando:

[source,shell]
....
# stty -a -f /dev/ttyu1
....

Als de instellingen van dit apparaat veranderd worden, blijven de instellingen geldig totdat het apparaat gesloten wordt. Als het heropend wordt, gaat het terug naar de standaardverzameling. Om de standaardverzameling te veranderen, dient het apparaat voor de "initiële toestand" geopend te worden en die instellingen veranderd te worden. Om bijvoorbeeld de `CLOCAL`-modus, 8-bits-communicatie en `XON/XOFF`-gegevensstroombeheer voor apparaat [.filename]#ttyu5# standaard aan te zetten:

[source,shell]
....
# stty -f /dev/ttyu5.init clocal cs8 ixon ixoff
....

De systeembrede initialisatie van de seriële apparaten wordt beheerd in [.filename]#/etc/rc.d/serial#. Dit bestand heeft invloed op de standaardinstellingen van seriële apparaten.

Om te voorkomen dat bepaalde instellingen door een applicatie worden veranderd, dienen wijzigingen aan het "slottoestand"-apparaat te worden aangebracht. Om bijvoorbeeld de snelheid van [.filename]#ttyu5# vast te zetten op 57600 bps:

[source,shell]
....
# stty -f /dev/ttyu5.lock 57600
....

Nu blijft een applicatie die [.filename]#ttyu5# en de snelheid van de poort probeert te veranderen zitten op 57600 bps.

Uiteraard dienen de apparaten voor de initiële toestand en de slottoestand alleen voor het account `root` schrijfbaar te zijn.

[[term]]
== Terminals

[WARNING]
====

Vanaf FreeBSD 8.0 zijn de seriële poorten hernoemd van [.filename]#/dev/cuadN# naar [.filename]#/dev/cuauN# en van [.filename]#/dev/ttydN# naar [.filename]#/dev/ttyuN#. FreeBSD 7.X gebruikers moeten de documentatie aanpassen naar deze wijzigingen.
====

Terminals bieden een handige en goedkope manier om een FreeBSD systeem te benaderen als de console van of een netwerk naar een computer niet beschikbaar is. Deze sectie beschrijft hoe terminals met FreeBSD te gebruiken.

[[term-uses]]
=== Types terminals en ze gebruiken

De originele UNIX(R)-systemen hadden geen consoles. In plaats daarvan werd er aangemeld en werden programma's via terminals gedraaid die verbonden waren met de seriële poorten van een computer. Het is goed vergelijkbaar met het gebruik van een modem en terminalsoftware om op een systeem op afstand in te bellen en werk te doen wat alleen uit tekst bestaat.

De consoles van hedendaagse PC's kunnen grafische uitvoer van hoge kwaliteit produceren, maar de mogelijkheid om een aanmeldsessie op een seriële poort tot stand te brengen bestaat nog steeds op bijna elk hedendaags UNIX(R)-achtig systeem. FreeBSD is geen uitzondering. Door gebruik te maken van een terminal die aangesloten is op een ongebruikte seriële poort, kan er aangemeld worden en kan bijna elk tekstprogramma gedraaid worden dat normaalgesproken op de console of in een `xterm`-venster in het X Window-systeem gedraaid wordt.

Een zakelijke gebruiker kan vele terminals aan een FreeBSD-systeem koppelen en deze op de bureaus van medewerkers neerzetten. Een thuisgebruiker kan een reservecomputer, zoals een oudere IBM PC of een Macintosh(R), met de terminal verbinden met een krachtigere computer die FreeBSD draait. Op deze manier kan wat anders een computer voor een enkele gebruiker zou zijn, worden veranderd in een krachtig systeem voor meerdere gebruikers.

Er zijn drie soorten terminals voor FreeBSD:

* <<term-dumb,Domme terminals>>;
* <<term-pcs,PC's die als terminals dienen>>;
* <<term-x,X-terminals>>.

De overige subsecties beschrijven elk van deze soorten.

[[term-dumb]]
==== Domme terminals

Domme terminals zijn gespecialiseerde stukken hardware die computers door seriële kabels kunnen verbinden. Ze worden "dom" genoemd omdat ze alleen maar tekst kunnen weergeven, verzenden en ontvangen. Het is niet mogelijk om programma's op deze terminals te draaien. De computer waar ze op zijn aangesloten heeft de benodigde kracht om tekstverwerkers, compilers, e-mail, spellen, enzovoort te draaien.

Er zijn honderden soorten domme terminals gemaakt door vele fabrikanten, inclusief de VT-100 van Digital Equipment Corporation en de WY-75 van Wyse. Bijna elke soort werkt met FreeBSD. Sommige terminals uit de hoogste klasse kunnen zelfs grafisch weergeven, maar slechts bepaalde softwarepakketten kunnen gebruik maken van deze geavanceerde mogelijkheden.

Domme terminals zijn ook populair in werkomgevingen waarin gebruikers geen toegang tot grafische applicaties nodig hebben, zoals die door het X Window systeem worden geleverd.

[[term-pcs]]
==== PC's die als terminal dienen

Indien een <<term-dumb,domme terminal>> net genoeg mogelijkheden heeft om tekst weer te geven, te verzenden en te ontvangen, dan kan zeker elke reserve-PC een domme terminal zijn. De enige benodigdheden zijn de juiste kabel en wat _terminal-emulatie_ software om op de computer te draaien.

Zo'n opstelling is populair in thuissituaties. Indien bijvoorbeeld persoon A werkt op de console van een FreeBSD-systeem, kan persoon B wat alleen-tekst-werk verrichten op een minder krachtige PC die als terminal met het FreeBSD-systeem verbonden is.

Er zijn minstens twee applicaties beschikbaar in het basissysteem van FreeBSD welke gebruikt kunnen worden om te communiceren door een seriële connectie: man:cu[1] en man:tip[1].

Om een connectie op te zetten vanaf een systeem dat FreeBSD draait naar een seriële connectie van een andere machine kan het volgende gedaan worden:

[source,shell]
....
# cu -l serial-port-device
....

Hierbij is "serial-port-device" de naam is van de speciale apparaatnode die gebruikt wordt voor de seriële poort op het systeem. Deze bestanden heten [.filename]#/dev/cuauN#.

Het "N" gedeelte van de apparaatnaam is het nummer van de seriële poort.

[NOTE]
====
Let op, de apparaatnummers beginnen in FreeBSD bij nul en niet bij één (zoals ze bijvoorbeeld wel doen bij MS-DOS(R) gebaseerde systemen). Dit betekend dat wat MS-DOS(R) gebaseerde systemen [.filename]#COM1# noemt bij FreeBSD meestal [.filename]#/dev/cuau0# genoemd wordt.
====

[NOTE]
====
Sommige mensen preferen andere programma's die beschikbaar zijn via de Ports Collectie. De ports bevatten een aantal programma's die hetzelfde kunnen werken als man:cu[1] en man:tip[1], zoals package:comms/minicom[].
====

[[term-x]]
==== X-terminals

X-terminals behoren tot de meest geavanceerde terminalsoort die beschikbaar is. In plaats van dat ze verbinding maken met een seriële poort, maken ze meestal verbinding met een netwerk zoals Ethernet. In plaats van dat ze alleen tekstapplicaties weergeven, kunnen ze elke X-applicatie weergeven.

X-terminals worden slechts voor de compleetheid geïntroduceerd. Dit hoofdstuk behandelt echter _niet_ de installatie, het instellen of het gebruik van X-terminals.

[[term-config]]
=== Instellen

Deze sectie beschrijft wat in te stellen op een os;-systeem om een aanmeldsessie op een terminal mogelijk te maken. De sectie gaat ervan uit dat er al een kernel is ingesteld met ondersteuning voor een seriële poort waar de terminal op is aangesloten en dat deze verbonden is.

In crossref:boot[boot,Het FreeBSD opstartproces] staat beschreven dat het proces `init` verantwoordelijk is voor het beheer van alle processen en voor de initialisatie tijdens het opstarten van een systeem. Eén van de taken die door `init` wordt uitgevoerd is het lezen van het bestand [.filename]#/etc/ttys# en het starten van een proces `getty` op de beschikbare terminals. Het proces `getty` is verantwoordelijk voor het lezen van een aanmeldnaam en het starten van het programma `login`.

Voer volgende stappen als `root` uit om terminals voor een FreeBSD-systeem in te stellen:

[.procedure]
====
. Voeg een regel aan [.filename]#/etc/ttys# toe voor de ingang in de map [.filename]#/dev# voor een seriële poort als deze er nog niet is;
. Specificeer dat `/usr/libexec/getty` uitgevoerd moet worden op de poort en het juiste type _getty_ van het bestand [.filename]#/etc/gettytab#;
. Specificeer het standaard terminaltype;
. Stel de poort in op "on";
. Specificeer of de poort "secure" dient te zijn;
. `init` dient [.filename]#/etc/ttys# opnieuw te lezen.
====

Als optionele stap kan het wenselijk zijn om een eigen type _getty_ aan te maken voor stap 2 door een ingang in [.filename]#/etc/gettytab# te maken. Dit wordt hier niet beschreven. Meer informatie staat in de hulppagina's man:gettytab[5] en man:getty[8].

[[term-etcttys]]
==== Een regel aan [.filename]#/etc/ttys# toevoegen

Het bestand [.filename]#/etc/ttys# bevat alle poorten op een FreeBSD-systeem waar aanmelden is toegestaan. De eerste virtuele console [.filename]#ttyv0# staat bijvoorbeeld in dit bestand vermeld. Met deze vermelding kan er op de console worden aangemeld. Dit bestand bevat ook vermeldingen voor de andere virtuele consoles, seriële poorten en pseudo-tty's. Vermeld voor een vast aangesloten terminal de [.filename]#/dev#-regel van de seriële poort zonder het [.filename]#/dev#-gedeelte ([.filename]#/dev/ttyv0# wordt bijvoorbeeld [.filename]#ttyv0#).

Een standaard FreeBSD installatie bevat een bestand [.filename]#/etc/ttys# met ondersteuning voor de eerste vier seriële poorten: [.filename]#ttyu0# tot en met [.filename]#ttyu3#. Indien er aan een van deze poorten een terminal wordt gekoppeld is het niet nodig om een regel toe te voegen.

[[ex-etc-ttys]]
.Terminalregels aan [.filename]#/etc/ttys# toevoegen
[example]
====
Stel dat er twee terminals verbonden moeten worden met een systeem: een Wyse-50 en een oude 286 IBM-PC waarop Procomm terminalsoftware draait dat een VT-100 terminal emuleert. De Wyse wordt met de tweede seriële poort verbonden en de 286 met de zesde seriële poort (een poort op een meerpoortige seriële kaart). De overeenkomstige regels in [.filename]#/etc/ttys# zien er als volgt uit:

[.programlisting]
....
ttyu1  "/usr/libexec getty std.38400"  wy50  on  insecure
ttyu5   "/usr/libexec/getty std.19200"  vt100  on  insecure
....

* Het eerste veld specificeert normaalgesproken de naam van het speciale terminalbestand zoals dat in [.filename]#/dev# staat.
* Het tweede veld bevat het commando dat voor deze regel uitgevoerd moet worden, meestal is dit man:getty[8]. `getty` initialiseert en opent een lijn, stelt een snelheid in, vraagt om een gebruikersnaam en draait daarna het programma man:login[1].Het programma `getty` accepteert één (optionele) parameter op de opdrachtregel, het type _getty_. Een type _getty_ stelt karakteristieken op een terminallijn in, zoals de bps-snelheid en de pariteit. Het programma `getty` leest deze karakteristieken uit het bestand [.filename]#/etc/gettytab#.Het bestand [.filename]#/etc/gettytab# bevat een hoop regels voor zowel oude als nieuwe terminallijnen. In bijna alle gevallen werken de regels die met de tekst `std` beginnen voor vast aangesloten terminals. Deze regels negeren pariteit. Er is een `std`-regel voor elke bps-snelheid van 110 tot en met 115200. Uiteraard kunnen eigen regels aan dit bestand worden toegevoegd. De hulppagina man:gettytab[5] biedt meer informatie.Zorg er tijdens het instellen van het type _getty_ in het bestand [.filename]#/etc/ttys# voor dat de communicatie-instellingen op de terminal ermee over komen.In bovenstaand voorbeeld gebruikt de Wyse-50 geen pariteit en maakt deze verbinding met 38400 bps. De 286 PC gebruikt geen pariteit en maakt verbinding met 19200 bps.
* Het derde veld bevat het type terminal dat normaalgesproken is verbonden met de tty-lijn. Voor inbelpoorten wordt voor dit veld normaalgesproken `unknown` of `dialup` gebruikt omdat gebruikers bijna elk type terminal of software gebruiken om in te bellen. Voor terminals met een vaste aansluiting verandert het type terminal niet, dus kan in dit veld een echt terminaltype uit het databasebestand man:termcap[5] worden gebruikt.In bovenstaand voorbeeld gebruikt de Wyse-50 het echte terminaltype, terwijl de 286 PC die Procomm draait zo ingesteld wordt dat deze een VT-100 emuleert.
* Het vierde veld geeft aan of de poort aan moet staan. Indien hier `on` staat, start `init` het programma in het tweede veld, `getty`, op. Indien hier `off` staat wordt `getty` niet uitgevoerd en kan er daarom niet op de poort worden aangemeld.
* Het laatste veld geeft aan of de poort veilig is. Indien deze poort als veilig is aangemerkt betekent dit dat er genoeg vertrouwen is om de gebruiker `root` (of iedere andere account met een gebruikers-id 0) aan te laten melden via deze poort. Onveilige poorten staan aanmelden door `root` niet toe. Meld op onveilige poorten eerst aan een account zonder rechten en gebruik daarna man:su[1] of een soortgelijk mechanisme om rootrechten te verkrijgen.Het wordt sterk aangeraden om "insecure" zelfs voor terminals achter gesloten deuren te gebruiken. Het is vrij gemakkelijk om aan te melden en `su` te gebruiken indien rootrechten nodig zijn.
====

[[term-hup]]
==== `init` forceren om [.filename]#/etc/ttys# opnieuw te lezen

Stuur na het maken van de benodigde veranderingen aan het bestand [.filename]#/etc/ttys# een SIGHUP-signaal (ophangen) naar het proces `init` om het te dwingen het instellingenbestand opnieuw te lezen:

[source,shell]
....
# kill -HUP 1
....

[NOTE]
====
`init` is altijd het eerste proces dat op een systeem gedraaid wordt, daarom heeft het altijd PID 1.
====

Indien alles juist is ingesteld, alle kabels juist zijn aangesloten en alle terminals aanstaan, draait er op elke terminal een proces `getty` en is er een aanmeldprompt zichtbaar op de terminals.

[[term-debug]]
=== Problemen met een verbinding oplossen

Zelfs met de grootste aandacht voor details kan er nog steeds iets mis gaan met het instellen van een terminal. Hier is een lijst van symptomen en mogelijke oplossingen.

==== Er verschijnt geen aanmeldprompt

Controleer of de terminal is aangesloten en aan staat. Indien het een PC is die als terminal fungeert, controleer of de terminalemulatiesoftware op de juiste seriële poort draait.

Controleer of de kabel stevig verbonden is met zowel de terminal als de FreeBSD computer en dat de kabel van het juiste soort is.

Controleer of de terminal en FreeBSD dezelfde bps-snelheid en pariteit gebruiken. Indien de terminal een beeldscherm is, controleer dan of de video- en helderheidsniveaus zijn ingesteld. Indien de terminal een printer is, controleer of er voldoende papier en inkt aanwezig zijn.

Controleer of er een proces `getty` draait dat de terminal bedient. Om bijvoorbeeld een lijst van draaiende `getty`-processen te krijgen:

[source,shell]
....
# ps -axww|grep getty
....

Er zou een regel voor de terminal zichtbaar moeten zijn. Het volgende scherm geeft bijvoorbeeld weer dat `getty` op de tweede seriële poort [.filename]#ttyu1# draait en de regel `std.38400` in [.filename]#/etc/gettytab# gebruikt:

[source,shell]
....
22189  d1  Is+   0:00.03 /usr/libexec/getty std.38400 ttyu1
....

Indien er geen proces `getty` draait, controleer dan of de poort in [.filename]#/etc/ttys# aan staat. Draai `kill -HUP 1` nadat het bestand [.filename]#ttys# is gewijzigd.

Indien het proces `getty` draait maar de terminal nog steeds geen aanmeldprompt weergeeft of als het een prompt weergeeft maar er niet getypt kan worden, kan het zijn dat de terminal of de kabel hardwarematige handshaking niet ondersteunt. Probeer om de regel in [.filename]#/etc/ttys# van `std.38400` in `3wire.38400` te veranderen (draai na het wijzigen van [.filename]#/etc/ttys#`kill -HUP 1`). De regel `3wire` is vergelijkbaar met de regel `std`, maar negeert hardwarematige handshaking. Het kan nodig zijn om de baudsnelheid te verlagen of om softwarematig doorvoerbeheer aan te zetten als `3wire` gebruikt wordt, om overspoelde buffers te voorkomen.

==== Als er rommel in plaats van een aanmeldprompt verschijnt

Controleer of de terminal en FreeBSD dezelfde bps-snelheid en pariteit gebruiken. Controleer de `getty`-processen op het gebruik van het juiste type `getty`. Indien dit niet het geval is, wijzig dan [.filename]#/etc/ttys# en draai `kill -HUP 1`.

==== Tekens verschijnen dubbel en/of het wachtwoord verschijnt tijdens de invoer

Wijzig de terminal (of de terminalemulatiesoftware) van "half duplex" of "local echo" naar "full duplex".

[[dialup]]
== Inbeldienst

[WARNING]
====

Vanaf FreeBSD 8.0 zijn de seriële poorten hernoemd van [.filename]#/dev/cuadN# naar [.filename]#/dev/cuauN# en van [.filename]#/dev/ttydN# naar [.filename]#/dev/ttyuN#. FreeBSD 7.X gebruikers moeten de documentatie aanpassen naar deze wijzigingen.
====

Het instellen van het FreeBSD-systeem voor inbeldiensten is vrijwel gelijk aan het verbinden van terminals, behalve dat er met modems in plaats van terminals wordt gewerkt.

=== Externe en interne modems

Externe modems lijken gemakkelijker voor het inbellen, omdat externe modems vaak semi-permanent ingesteld kunnen worden via parameters die in een niet-vluchtig RAM worden opgeslagen en ze hebben gewoonlijk LED's die de toestand van belangrijke RS-232-signalen weergeven. Knipperende LED's maken indruk op bezoekers, maar LED's zijn ook zeer nuttig om te zien of een modem goed functioneert.

Interne modems hebben vaak geen niet-vluchtig RAM en het kan dus voorkomen dat de instelmogelijkheden beperkt zijn tot het instellen van DIP-schakelaars. Als een intern modem al indicatie-LED's voor signalen heeft, zijn ze moeilijk te zien in de behuizing van een systeem.

==== Modems en kabels

Bij gebruik van een extern modem is uiteraard een juiste kabel nodig. Een standaard RS-232C seriële kabel moet voldoen zolang alle normale signalen zijn aangesloten.
[[serialcomms-signal-names]]
.Signaalnamen
[cols="1,1", frame="none", options="header"]
|===
<| Acroniemen
<| Namen

|RD
|Received Data (ontvangen gegevens)

|TD
|Transmitted Data (verzonden gegevens)

|DTR
|Data Terminal Ready (gegevensterminal gereed)

|DSR
|Data Set Ready (gegevensverzameling gereed)

|DCD
|Data Carrier Detect (RS-232's detector voor signaal lijn-ontvangen)

|SG
|Signal Ground (signaalaarde)

|RTS
|Request to Send (verzoek om te zenden)

|CTS
|Clear to Send (gereed om te zenden)
|===

FreeBSD heeft de signalen RTS en CTS nodig voor doorstroombeheer bij snelheden van meer dan 2400 bps, het signaal CD om te bepalen wanneer een oproep beantwoord of geannuleerd is, en het signaal DTR om een modem opnieuw in te stellen nadat een sessie voltooid is. Op sommige kabels ontbreken sommige benodigde signalen. Dus als zich problemen voordoen, zoals een aanmeldsessie die niet weggaat nadat de verbinding verbroken is, kan dit aan de kabel liggen.

Net als andere UNIX(R)-achtige besturingssystemen gebruikt FreeBSD hardwaresignalen om te bepalen of een oproep beantwoord of weggedrukt is en om met het modem op te hangen en dit opnieuw in te stellen na een oproep. FreeBSD vermijdt het versturen van commando's naar een modem en het bekijken van de toestand van een modem. Dit kan vreemd lijken als bekend is hoe modems met PC-gebaseerde prikbordsystemen (BBS) verbinden.

=== Overwegingen voor de seriële interface

FreeBSD ondersteunt EIA RS-232C (CCITT V.24) communicatie-interfaces gebaseerd op NS8250, NS1645, NS16550 en NS16550A. De 8250- en 16450-apparaten hebben buffers van een enkel karakter. Het 16550-apparaat biedt een buffer van 16 karakters, wat betere systeemprestaties toestaat. Door fouten in platte 16550's is het niet mogelijk de buffer van 16 karakters te gebruiken, dus gebruik indien mogelijk 16550A's. Omdat apparaten met een buffer van een enkel karakter meer werk door het besturingssysteem vereisen dan apparaten met een buffer van 16 karakters, ligt de voorkeur bij seriële interfacekaarten gebaseerd op de 16550A. Indien een systeem veel actieve seriële poorten heeft of zwaar belast wordt, zijn kaarten gebaseerd op de 16550A beter voor communicatie met een lage foutenratio.

=== Snel overzicht

Net als met terminals zet `init` een `getty`-proces op voor elke seriële poort die voor inbelverbindingen is ingesteld. Indien bijvoorbeeld een modem aan [.filename]#/dev/ttyu0# is gekoppeld, kan het commando `ps ax` het volgende weergeven:

[source,shell]
....
4850 ??  I     0:00.09 /usr/libexec/getty V19200 ttyu0
....

Wanneer een gebruiker naar de modemlijn belt en de modems verbinding maken, wordt de CD-lijn (Carrier Detect) door het modem gerapporteerd. De kernel merkt op dat een draaggolf is gesignaleerd en laat `getty` het openen van de poort voltooien. `getty` stuurt een prompt `login:` met de initieel gespecificeerde lijnsnelheid. `getty` bekijkt of er geldige karakters zijn ontvangen en probeert, in een typische opstelling, indien het rommel aantreft (waarschijnlijk omdat de snelheid waarmee het modem verbindt afwijkt van de snelheid van `getty`) de lijnsnelheden aan te passen totdat het redelijke karakters ontvangt.

Nadat een gebruikersnaam is opgegeven voert `getty`[.filename]#/usr/bin/login# uit, die het aanmelden voltooit door te vragen naar het wachtwoord van een gebruiker en daarna de shell van een gebruiker op te starten.

=== Instellingenbestanden

Er zijn drie systeeminstellingenbestanden in de map [.filename]#/etc# die waarschijnlijk gewijzigd moeten worden om inbellen op een FreeBSD-systeem toe te staan. Het eerste bestand, [.filename]#/etc/gettytab#, bevat informatie om de daemon [.filename]#/usr/libexec/getty# in te stellen. Het tweede bestand, [.filename]#/etc/ttys# bevat informatie voor [.filename]#/sbin/init# dat vertelt op welke [.filename]#tty# apparaten een proces `getty` moet draaien. Als laatste kunnen in het script [.filename]#/etc/rc.d/serial# commando's geplaatst worden om poorten te initialiseren.

Er bestaan twee stromingen met betrekking tot inbelmodems op UNIX(R). De ene houdt ervan om modems en systemen in te stellen zodat de lokale computer-naar-modem RS-232-interface met een vaste snelheid werkt, ongeacht de snelheid waarmee een gebruiker-op-afstand inbelt. Het voordeel van deze instelling is dat een gebruiker-op-afstand altijd meteen een aanmeldprompt van een systeem ziet. Het nadeel is dat een systeem niet weet wat de werkelijke gegevenssnelheid van een gebruiker is en dus passen programma's die met een volledig scherm werken, zoals Emacs, hun methode om het scherm te tekenen niet aan om hun reactie beter te maken voor langzame verbindingen.

De andere stroming stelt de RS-232-interface van een modem zo in dat de snelheid ervan varieert met de verbindingssnelheid van een gebruiker-op-afstand. Zo zorgen V.32bis-verbindingen (14,4 kbps) met een modem ervoor dat een modem de RS-232-interface op 19,2 kbps laat draaien, terwijl verbindingen op 2400 bps ervoor zorgen dat de RS-232-interface van een modem op 2400 bps draait. Omdat `getty` meldingen over de verbindingssnelheid van een gegeven modem niet begrijpt, geeft `getty` een bericht `login:` op een initiële snelheid en kijkt het naar de karakters die als antwoord terugkomen. Als een gebruiker rommel ziet, wordt ervan uitgegaan dat deze weet dat de kbd:[Enter] toets ingedrukt moet worden totdat een herkenbaar prompt zichtbaar is. Indien de gegevenssnelheden niet overeenkomen, ziet `getty` alles wat een gebruiker intypt als "rommel", probeert het op de volgende snelheid over te gaan en het geeft opnieuw het prompt `login:`. Deze procedure kan ad nauseam doorgaan, maar normaal gesproken zijn er slechts een stuk of twee toetsaanslagen nodig voordat een gebruiker een juist prompt ziet. Het is duidelijk dat deze aanmeldprocedure er niet zo mooi uitziet als de methode "vaste-snelheid", maar een gebruiker met een langzame verbinding zou betere interactiviteit moeten beleven met programma's die met een volledig scherm werken.

Deze sectie poogt om neutrale informatie over instellingen te geven, maar is geneigd om de gegevenssnelheid van het modem af te laten hangen van de verbindingssnelheid.

==== [.filename]#/etc/gettytab#

[.filename]#/etc/gettytab# is een bestand met informatie over instellingen voor man:getty[8] in de stijl van man:termcap[5]. In de hulppagina van man:gettytab[5] staat de volledige informatie over het formaat van het bestand en de lijst met mogelijkheden.

===== Vaste snelheid instellen

Indien de snelheid van een modem om gegevens te communiceren op een bepaalde waarde wordt vastgezet, is het waarschijnlijk niet nodig om wijzigingen aan te brengen in [.filename]#/etc/gettytab#.

===== Overeenkomstige snelheid instellen

In [.filename]#/etc/gettytab# dient een regel ingesteld te worden om `getty` informatie te geven over de snelheden die voor het modem gewenst zijn. Indien een 2400 bps modem aanwezig is, kan waarschijnlijk de bestaande regel `D2400` gebruikt worden.

[.programlisting]
....
#
# Voor snelle inbelterminals, 2400/1200/300 roterend (er kan met beide kanten begonnen worden)
#
D2400|d2400|Fast-Dial-2400:\
	:nx=D1200:tc=2400-baud:
3|D1200|Fast-Dial-1200:\
	:nx=D300:tc=1200-baud:
5|D300|Fast-Dial-300:\
	:nx=D2400:tc=300-baud:
....

Indien er een modem voor hogere snelheden aanwezig is, dient er waarschijnlijk een regel aan [.filename]#/etc/gettytab# toegevoegd te worden. Hieronder staat een regel die gebruikt kan worden voor een 14,4 kbps modem met een maximale interface-snelheid van 19,2 kbps:

[.programlisting]
....
#
# Toevoegingen voor een V.32bis modem
#
um|V300|High Speed Modem at 300,8-bit:\
	:nx=V19200:tc=std.300:
un|V1200|High Speed Modem at 1200,8-bit:\
	:nx=V300:tc=std.1200:
uo|V2400|High Speed Modem at 2400,8-bit:\
	:nx=V1200:tc=std.2400:
up|V9600|High Speed Modem at 9600,8-bit:\
	:nx=V2400:tc=std.9600:
uq|V19200|High Speed Modem at 19200,8-bit:\
	:nx=V9600:tc=std.19200:
....

Dit resulteert in 8-bits verbindingen zonder pariteit.

Het bovenstaande voorbeeld begint met een communicatiesnelheid van 19,2 kbps (voor een V.32bis-verbinding), daarna doorloopt het 9600 bps (voor V.32), 2400 bps, 1200 bps, 300 bps en daarna weer 19,2 kbps. Het doorlopen van de communicatiesnelheid is met de mogelijkheid `nx=` ("volgende tabel") geïmplementeerd. Elk van deze regels gebruikt een regel `tc=` ("tabel continuëren") om de rest van de "standaard"-instellingen voor een bepaalde gegevenssnelheid op te pikken.

Indien er een 28,8 kbps modem aanwezig is en/of het gewenst is om voordeel uit de compressie met een 14,4 kbps te halen, is het nodig om hogere communicatiesnelheden dan 19,2 kbps te gebruiken. Hieronder staat een voorbeeld van een regel voor [.filename]#gettytab# die begint met 57,6 kbps.

[.programlisting]
....
#
# Toevoegingen voor een V.32bis of V.34 modem
# beginnend bij 57,6 kbps
#
vm|VH300|Very High Speed Modem at 300,8-bit:\
	:nx=VH57600:tc=std.300:
vn|VH1200|Very High Speed Modem at 1200,8-bit:\
	:nx=VH300:tc=std.1200:
vo|VH2400|Very High Speed Modem at 2400,8-bit:\
	:nx=VH1200:tc=std.2400:
vp|VH9600|Very High Speed Modem at 9600,8-bit:\
	:nx=VH2400:tc=std.9600:
vq|VH57600|Very High Speed Modem at 57600,8-bit:\
	:nx=VH9600:tc=std.57600:
....

Indien een CPU langzaam of een systeem zwaar belast is en er geen seriële poorten gebaseerd op 16550A aanwezig zijn, kunnen er `sio` "silo"-fouten optreden bij 57,6 kbps.

[[dialup-ttys]]
==== [.filename]#/etc/ttys#

Het instellen van het bestand [.filename]#/etc/ttys# staat beschreven in <<ex-etc-ttys>>. Het instellen van modems is vergelijkbaar maar er moet een ander argument aan `getty` doorgegeven worden en er moet een ander type terminal doorgegeven te worden. Het algemene formaat voor zowel vaste snelheid als overeenkomstige snelheid is:

[.programlisting]
....
ttyu0   "/usr/libexec/getty xxx"   dialup on
....

Het eerste item op bovenstaande regel is het speciale apparaatbestand. [.filename]#ttyu0# betekent dat [.filename]#/dev/ttyu0# het bestand is dat door `getty` in de gaten wordt gehouden. Het tweede item, `"/usr/libexec/gettyxxx"` (_xxx_ wordt vervangen door de initiële mogelijkheden van [.filename]#gettytab#) is het proces dat door `init` op het apparaat gedraaid wordt. Het derde item, `dialup`, is het standaard terminaltype. De vierde parameter, `on`, geeft aan `init` aan dat de lijn operationeel is. Er kan een vijfde parameter zijn, `secure`, maar gebruik deze alleen voor terminals die fysiek veilig zijn (zoals de systeemconsole).

Het standaard terminaltype (`dialup` in bovenstaand voorbeeld) mag afhangen van lokale voorkeuren. Het traditionele standaard terminaltype voor inbellijnen is `dialup`, zodat gebruikers hun aanmeldscripts kunnen aanpassen om op te merken wanneer het terminal `dialup` is en automatisch hun terminaltype kunnen aanpassen. Wellicht is het makkelijker om `vt102` als het standaard terminaltype te specificeren, aangezien gebruikers gewoon VT102-emulatie op hun systemen-op-afstand gebruiken.

Nadat [.filename]#/etc/ttys# gewijzigd is, kan aan het proces `init` een signaal HUP gestuurd worden om het bestand opnieuw te laten lezen. Gebruik volgende opdracht om het signaal te versturen:

[source,shell]
....
# kill -HUP 1
....

Indien een systeem voor de eerste keer wordt geïnstalleerd, is het verstandig te wachten totdat een modem juist ingesteld en verbonden is voordat het signaal aan `init` verstuurd wordt.

===== Vaste snelheid instellen

Voor het instellen van een vaste snelheid dient de regel in [.filename]#ttys# een vaste snelheid door te geven aan `getty`. Voor een modem met een vaste poortsnelheid van 19,2 kbps kan de regel in [.filename]#ttys# er als volgt uitzien:

[.programlisting]
....
ttyu0   "/usr/libexec/getty std.19200"   dialup on
....

Indien een modem op een andere gegevenssnelheid is ingesteld, dient de juiste waarde voor `std.snelheid` in plaats van `std.19200` ingesteld te worden. Gebruik een geldig type dat in [.filename]#/etc/gettytab# vermeld staat.

===== Overeenkomstige snelheid instellen

Voor het instellen van een overeenkomstige snelheid dient de regel in [.filename]#ttys# te verwijzen naar regel met de juiste begin-"auto-baud" (sic). Indien bijvoorbeeld de boven voorgestelde regel voor een modem met een overeenkomstige snelheid die begint met 19,2 kbps wordt toegevoegd (de regel in [.filename]#gettytab# die het beginpunt `V19200`), kan de regel in [.filename]#ttys# er als volgt uitzien:

[.programlisting]
....
ttyu0   "/usr/libexec/getty V19200"   dialup on
....

==== [.filename]#/etc/rc.d/serial#

Hogesnelheidsmodems, zoals V.32, V.32bis, en V.34 modems, moeten gebruik maken van hardwarematig (`RTS/CTS`) gegevensstroombeheer. Er kunnen `stty`-opdrachten aan [.filename]#/etc/rc.d/serial# toegevoegd worden om de vlag voor hardwarematig gegevensstroombeheer in de kernel van FreeBSD voor modempoorten in te stellen.

Om bijvoorbeeld de `termios`-vlag `crtscts` op de apparaten die de in- en uitbelapparaten initialiseren op de eerste seriële poort ([.filename]#COM2#) in te stellen, kunnen de volgende regels aan [.filename]#/etc/rc.d/serial# worden toegevoegd:

[.programlisting]
....
# Seriële poort initieel instellen
stty -f /dev/ttyu1.init crtscts
stty -f /dev/cuau1.init crtscts
....

=== Modeminstellingen

Bij gebruik van een modem waarvan de parameters permanent in niet-vluchtig RAM ingesteld kunnen worden, is er een terminalprogramma (zoals Telix onder MS-DOS(R) of `tip` onder FreeBSD) nodig om parameters in te stellen. Maak een verbinding met een modem met dezelfde communicatiesnelheid als de initiële snelheid die door `getty` gebruikt wordt en stel het niet-vluchtige RAM van een modem in zodat aan deze voorwaarden voldaan wordt:

* CD geldt tijdens verbindingen;
* DTR geldt tijdens gebruik; het loslaten van DTR hangt de verbinding op en stelt het modem opnieuw in;
* gegevensstroombeheer door CTS verzonden;
* gegevensstroombeheer met XON/XOFF uitgezet;
* gegevensstroombeheer door RTS ontvangen;
* Stille modus (geen resultaatcodes);
* Geen opdrachtecho.

Kijk in de documentatie van een modem voor de benodigde opdrachten en/of instellingen van DIP-schakelaars.

Om de bovenstaande parameters bijvoorbeeld op een U.S. Robotics(R) Sportster(R) 14.400 extern modem in te stellen, kunnen de volgende opdrachten aan het modem gegeven worden:

[.programlisting]
....
ATZ
AT&C1;&D2&H1&I0&R2&W
....

In deze fase kunnen ook andere modeminstellingen aangepast worden, zoals of het V.42bis en/of MNP5 compressie wordt gebruiken.

Een U.S. Robotics(R)Sportster(R) 14.400 externe modem heeft ook enkele DIP-schakelaars die ingesteld moeten worden. Voor andere modems kunnen deze instellingen wellicht als voorbeeld dienen:

* Schakelaar 1: UP: DTR Normal
* Schakelaar 2: N/A (Verbal Result Codes/Numeric Result Codes)
* Schakelaar 3: UP: Suppress Result Codes
* Schakelaar 4: DOWN: Geen echo, offline opdrachten
* Schakelaar 5: UP: Auto Answer
* Schakelaar 6: UP: Carrier Detect Normal
* Schakelaar 7: UP: Load NVRAM Defaults
* Schakelaar 8: N/A (Smart Mode/Dumb Mode)

Schakel resultaatcodes voor alle inbelmodems uit of onderdruk ze om problemen te voorkomen die kunnen optreden als `getty` abusievelijk een prompt `login:` geeft aan een modem dat in opdrachtmodus staat en het modem de opdracht echoot of een resultaatcode teruggeeft. Deze sequentie kan tot een uitgebreide, onnozele discussie tussen `getty` en het modem leiden.

==== Vaste snelheid instellen

Stel voor een vaste snelheid een modem zodanig in dat die een constante gegevenssnelheid naar de computer, onafhankelijk van de communicatiesnelheid, behoudt. Op een U.S. Robotics(R) Sportster(R) 14.400 extern modem zetten de volgende opdrachten de gegevenssnelheid naar de computer vast op de snelheid die gebruikt werd om de opdrachten te geven:

[.programlisting]
....
ATZ
AT&B1&W
....

==== Overeenkomstige snelheid instellen

Stel voor een variabele snelheid een modem zodanig in dat het de gegevenssnelheid van zijn seriële poort aanpast aan de snelheid van een binnenkomende oproep. Op een U.S. Robotics(R) Sportster(R) 14.400 extern modem zetten de volgende opdrachten de gegevenssnelheid van het modem, die op fouten gecorrigeerd wordt, vast op de snelheid die gebruikt werd om de opdrachten te geven, maar staan ze toe dat de snelheid van de seriële poort varieert voor verbindingen die niet op fouten gecorrigeerd worden:

[.programlisting]
....
ATZ
AT&B2&W
....

==== De modeminstellingen controleren

De meeste modems die op hoge snelheid werken, bieden opdrachten om de huidige werkparameters van een modem in een min of meer voor mensen leesbare vorm te bekijken. Op het U.S. Robotics(R) Sportster(R) 14.400 extern modem beeldt de opdracht `ATI5` de instellingen af die in het niet-vluchtige RAM zijn opgeslagen. Gebruik om de werkelijke werkparameters van een modem te zien (zoals beïnvloed door de stand van de DIP-schakelaars van een modem) de opdrachten `ATZ` gevolgd door `ATI4`.

Kijk in de handleiding van een modem als er met een ander merk modem gewerkt wordt voor het controleren van de parameters voor het instellen van dat modem.

=== Problemen oplossen

Hier volgen wat stappen die gevolgd kunnen worden om een inbelmodem op een systeem te controleren.

==== Een FreeBSD-systeem controleren

Verbind een modem met een FreeBSD-systeem, start het systeem op en kijk, indien het modem lampjes bevat die de toestand aangeven, of de DTR-indicator oplicht als het prompt `login:` op de systeemconsole verschijnt. Als het oplicht zou dit betekenen dat FreeBSD een `getty`-proces heeft gestart op de juiste communicatiepoort en wacht op het modem om een gesprek aan te nemen.

Geef als de DTR-indicator niet oplicht, na aanmelden op de console, de opdracht `ps ax` om te zien of FreeBSD probeert een `getty`-proces op de juiste poort te draaien. Er dienen tussen de weergegeven processen regels zoals de onderstaande te verschijnen:

[source,shell]
....
  114 ??  I      0:00.10 /usr/libexec/getty V19200 ttyu0
  115 ??  I      0:00.10 /usr/libexec/getty V19200 ttyu1
....

Er kan ook iets als het volgende verschijnen:

[source,shell]
....
  114 d0  I      0:00.10 /usr/libexec/getty V19200 ttyu0
....

Als het modem nog geen gesprek heeft aangenomen, betekent dit dat `getty` het openen van de communicatiepoort voltooid heeft. Dit kan duiden op een probleem met de bekabeling of op een verkeerd ingesteld modem omdat `getty` niet in staat zou moeten zijn om de communicatiepoort te openen totdat CD (kiestoon) door het modem is bevestigd.

Indien er geen enkel `getty`-proces verschijnt dat wacht op het openen van de gewenste poort [.filename]#ttyuN#, controleer dan de regels in [.filename]#/etc/ttys# op vergissingen. Controleer ook het logboekbestand [.filename]#/var/log/messages# om te zien of er logboekberichten van `init` of `getty` met betrekking tot problemen zijn. Indien er problemen zijn, controleer dan nogmaals de instellingenbestanden [.filename]#/etc/ttys# en [.filename]#/etc/gettytab#, alsook de betreffende speciale apparaatbestanden [.filename]#/dev/ttyuN#, op vergissingen, ontbrekende regels of ontbrekende speciale apparaatbestanden.

==== Proberen om in te bellen

Probeer in te bellen op een systeem. Controleer of op het systeem-op-afstand 8 bits, geen pariteit en 1 stopbit gebruikt wordt. Probeer, indien er niet meteen een prompt verschijnt of als er rommel verschijnt, ongeveer eens per seconde op kbd:[Enter] te drukken. Probeer, indien er na een tijd nog geen prompt `login:` verschijnt, een `BREAK` te versturen. Probeer, indien er een modem wordt gebruikt dat op hoge snelheid werkt om te bellen, opnieuw in te bellen nadat de interfacesnelheid van het bellende modem is vastgezet (bijvoorbeeld via `AT&B1` op een U.S. Robotics(R) Sportster(R) modem).

Controleer, indien er nog steeds geen prompt `login:` verschijnt, nogmaals [.filename]#/etc/gettytab# en controleer of:

* De initiële specificatie die in [.filename]#/etc/ttys# voor de lijn staat overeenkomt met een naam van een specificatie in [.filename]#/etc/gettytab#;
* Elke regel `nx=` overeenkomt met een naam van een andere specificatie in [.filename]#gettytab#;
* Elke regel `tc=` overeenkomt met een naam van een andere specificatie in [.filename]#gettytab#.

Controleer, indien er gebeld wordt maar het modem op het FreeBSD-systeem niet reageert, of het modem ingesteld is om de telefoon te beantwoorden als DTR bevestigd is. Controleer, indien het modem juist ingesteld lijkt te zijn, of de DTR-lijn bevestigd is door de indicatielampjes van het modem te controleren (indien die aanwezig zijn).

Neem een pauze en probeer het later nog eens indien alles meerdere malen is geprobeerd en het nog steeds niet werkt. Indien het nog steeds niet werkt, stuur dan een e-mail naar de {freebsd-questions} met een beschrijving van het modem en het probleem en de mensen op de lijst zullen proberen te helpen.

[[dialout]]
== Uitbeldienst

[WARNING]
====

Vanaf FreeBSD 8.0 zijn de seriële poorten hernoemd van [.filename]#/dev/cuadN# naar [.filename]#/dev/cuauN# en van [.filename]#/dev/ttydN# naar [.filename]#/dev/ttyuN#. FreeBSD 7.X gebruikers moeten de documentatie aanpassen naar deze wijzigingen.
====

De volgende tips dienen voor het maken van een verbinding met een andere computer per modem. Dit is geschikt voor het opzetten van een terminalsessie met een gast op afstand.

Dit is nuttig bij het aanmelden op een BBS.

Dit soort verbinding kan extreem behulpzaam zijn om een bestand op het Internet te krijgen indien er problemen zijn met PPP. Indien FTP ergens voor nodig is en PPP kapot is, kan de terminalsessie voor FTP gebruikt worden. Vervolgens kan zmodem gebruikt worden om het naar de machine te verzenden.

[[hayes-unsupported]]
=== Een gewone Hayes-modem wordt niet ondersteund, wat nu?

In feite is de hulppagina voor `tip` verouderd. Er is al een generiek belprogramma voor Hayes ingebouwd. Gebruik `at=hayes` in het bestand [.filename]#/etc/remote#.

Het stuurprogramma voor Hayes is niet slim genoeg om enkele geavanceerde eigenschappen van nieuwere modems te herkennen. Berichten als `BUSY` (in gesprek), `NO DIALTONE` (geen kiestoon) of `CONNECT 115200` (verbinden 115200) verwarren het stuurprogramma. Schakel deze berichten uit bij gebruik van `tip` (door middel van `ATX0&W`).

Verder is de beltimeout voor `tip` 60 seconden. Het modem dient een lagere waarde te gebruiken om te voorkomen dat `tip` denkt dat er een probleem met de communicatie is. Probeer `ATS7=45&W`.

[[direct-at]]
=== Hoe deze `AT`-commando's in te geven?

Maak een zogenaamde "directe" regel in het bestand [.filename]#/etc/remote# aan. Als het modem bijvoorbeeld aan de eerste seriële poort, [.filename]#/dev/cuau0#, is gekoppeld, voeg dan de volgende regel toe:

[.programlisting]
....
cuau0:dv=/dev/cuau0:br#19200:pa=none
....

Gebruik voor de mogelijkheid `br` de hoogst ondersteunde snelheid van het modem in bps. Typ hierna `tip cuau0` om een verbinding met het modem te maken.

Als alternatief kan `cu` als `root` met het volgende commando gebruikt worden:

[source,shell]
....
# cu
	  -llijn
	  -ssnelheid
....

De waarde _lijn_ is de seriële poort (bijvoorbeeld [.filename]#/dev/cuau0#) en _snelheid_ is de snelheid (bijvoorbeeld `57600`). Als alle AT-commando's zijn ingevoerd, voer dan `~.` in om het programma te verlaten.

[[gt-failure]]
=== Het teken `@` voor de optie pn werkt niet!

Het teken `@` in de telefoonnummermogelijkheid vertelt `tip` om in [.filename]#/etc/phones# naar een telefoonnummer te kijken. Maar het teken `@` is ook een speciaal teken in specificatiebestanden als [.filename]#/etc/remote#. Gebruik een backslash om hieraan te ontsnappen:

[.programlisting]
....
pn=\@
....

[[dial-command-line]]
=== Hoe een telefoonnummer op de opdrachtregel te draaien?

Voeg een zogenaamde "generieke" regel aan het bestand [.filename]#/etc/remote# toe. Bijvoorbeeld:

[.programlisting]
....
tip115200|Bel elk telefoonnummer met 115200 bps:\
        :dv=/dev/cuau0:br#115200:at=hayes:pa=none:du:
tip57600|Bel elk telefoonnummer met 57600 bps:\
        :dv=/dev/cuau0:br#57600:at=hayes:pa=none:du:
....

Hierna zijn onder andere de volgende mogelijkheden beschikbaar:

[source,shell]
....
# tip -115200 5551234
....

Indien `cu` boven `tip` geprefereerd wordt, dient een generieke regel voor `cu` gebruikt te worden:

[.programlisting]
....
cu115200|Gebruik cu om elk nummer met 115200bps te bellen:\
	:dv=/dev/cuau1:br#57600:at=hayes:pa=none:du:
....

Voer in:

[source,shell]
....
# cu 5551234 -s 115200
....

[[set-bps]]
=== Dient de bps-snelheid telkens ingevoerd te worden?

Voeg een regel toe voor `tip1200` of `cu1200`, maar gebruik een bps-snelheid die geschikt is voor de br-mogelijkheid. `tip` meent dat 1200 bps een goede standaardwaarde is, hierdoor zoekt het naar een regel `tip1200`. Uiteraard hoeft 1200 bps niet gebruikt te worden.

[[terminal-server]]
=== Een aantal hosts met een terminalserver benaderen

Om niet iedere keer te hoeven wachten totdat er verbinding is en `CONNECT host` in te typen, kan de mogelijkheid `cm` van `tip` gebruikt worden. Als voorbeeld bieden de onderstaande regels in [.filename]#/etc/remote# de mogelijkheid om `tip pain` of `tip muffin` in te typen om met de hosts `pain` of `muffin` te verbinden, en `tip deep13` om naar de terminalserver te gaan:

[.programlisting]
....
pain|pain.deep13.com|Forresters machine:\
        :cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Franks machine:\
        :cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminalserver:\
        :dv=/dev/cuau2:br#38400:at=hayes:du:pa=none:pn=5551234:
....

[[tip-multiline]]
=== Kan tip meer dan één lijn voor elke site proberen?

Dit is een vaak een probleem als een universiteit een handvol modemlijnen en enkele duizenden studenten heeft die ze proberen te gebruiken.

Voeg een regel voor de universiteit toe in [.filename]#/etc/remote# en gebruik `@` voor de mogelijkheid `pn`:

[.programlisting]
....
grote-universiteit:\
        :pn=\@:tc=dialout
dialout:\
        :dv=/dev/cuau3:br#9600:at=courier:du:pa=none:
....

Voeg hierna de telefoonnummers voor de universiteit toe aan [.filename]#/etc/phones#:

[.programlisting]
....
grote-universiteit 5551111
grote-universiteit 5551112
grote-universiteit 5551113
grote-universiteit 5551114
....

Het commando `tip` probeert elk nummer in de volgorde van de lijst alvorens op te geven. Om de pogingen te herhalen, kan `tip` in een while-lus gedraaid worden.

[[multi-controlp]]
=== Waarom moet kbd:[Ctrl+P] tweemaal worden ingedrukt om kbd:[Ctrl+P] éénmaal te versturen?

kbd:[Ctrl+P] is het standaard "forceer"-karakter, dat gebruikt wordt om `tip` te vertellen dat het volgende karakter letterlijk genomen dient te worden. Het forceerkarakter kan met de ontsnapping `~s`, wat "stel een variabele in" betekent, op elk ander karakter ingesteld worden.

Typ `~sforce=enkel-karakter` in gevolgd door een nieuwe regel. _enkel-karakter_ is elk enkel karakter. Indien _enkel-karakter_ weggelaten wordt, is het forceerkarakter het nulkarakter, wat door middel van kbd:[Ctrl+2] of kbd:[Ctrl+spatie] verkregen kan worden. Een redelijke standaardwaarde voor _enkel-karakter_ is kbd:[Shift+Ctrl+6], die slechts op enkele terminalservers gebruikt wordt.

Het forceerkarakter kan op elk gewenst karakter ingesteld worden door het volgende op te nemen in het bestand [.filename]#$HOME/.tiprc#:

[.programlisting]
....
force=enkel-karakter
....

[[uppercase]]
=== Alle ingevoerde tekst staat opeens in hoofdletters?

Waarschijnlijk is kbd:[Ctrl+A] ingedrukt, het "raisechar" van `tip`, dat speciaal voor mensen met een kapotte caps-lock toets is ontworpen. Gebruik `~s` zoals boven is aangegeven en stel de variabele `raisechar` op iets redelijks in. Het kan zelfs op hetzelfde als het forceerkarakter worden ingesteld, indien het onwaarschijnlijk is dat een van deze mogelijkheden ooit gebruikt wordt.

Hier volgt een voorbeeld voor het bestand [.filename]#.tiprc# dat perfect is voor gebruikers van Emacs die kbd:[Ctrl+2] en kbd:[Ctrl+A] vaak moeten gebruiken:

[.programlisting]
....
force=^^
raisechar=^^
....

De `^^` is kbd:[Shift+Ctrl+6].

[[tip-filetransfer]]
=== Hoe kan met `tip` bestanden worden verstuurd?

In de communicatie met een ander UNIX(R)-systeem kunnen bestanden verzonden en ontvangen worden met de commando's `~p` (put) en `~t` (take). Deze commando's draaien `cat` en `echo` op een systeem op afstand om bestanden aan te nemen en te verzenden. De syntaxis is:

`~p` lokaal-bestand [ bestand-op-afstand ]

`~t` bestand-op-afstand [ lokaal-bestand ]

Er wordt niet op fouten gecontroleerd, het is dus verstandig om een ander protocol te gebruiken, zoals zmodem.

[[zmodem-tip]]
=== Hoe kan zmodem samen met `tip` draaien?

Start om bestanden te ontvangen het verstuurprogramma aan de andere kant. Typ daarna `~C rz` om ze lokaal te ontvangen.

Start om bestanden te versturen het ontvangprogramma aan de andere kant. Typ daarna `~C sz bestanden` om ze naar het systeem aan de andere kant te versturen.

[[serialconsole-setup]]
== Seriële console opzetten

[WARNING]
====

Vanaf FreeBSD 8.0 zijn de seriële poorten hernoemd van [.filename]#/dev/cuadN# naar [.filename]#/dev/cuauN# en van [.filename]#/dev/ttydN# naar [.filename]#/dev/ttyuN#. FreeBSD 7.X gebruikers moeten de documentatie aanpassen naar deze wijzigingen.
====

[[serialconsole-intro]]
=== Inleiding

FreeBSD biedt de mogelijkheid om op een systeem op te starten met slechts een domme terminal en een seriële poort als console. Dit soort opstellingen is handig voor twee soorten mensen: voor systeembeheerders die FreeBSD willen installeren op machines die geen toetsenbord of beeldscherm hebben en voor ontwikkelaars die de kernel of apparaatstuurprogramma's willen debuggen.

Zoals beschreven in crossref:boot[boot,Het FreeBSD opstartproces], gebruikt FreeBSD drie fasen voor het opstarten. De eerste twee fasen bevinden zich in de code van het opstartblok dat zich aan het begin van de opstartslice van FreeBSD op de opstartschijf bevindt. Het opstartblok laadt vervolgens de opstartlader ([.filename]#/boot/loader#) en draait als de code van de derde fase.

Om de seriële console gereed te maken moeten de code in het opstartblok, de code van de opstartlader en de kernel worden ingesteld.

[[serialconsole-howto-fast]]
=== De seriële console instellen, korte versie

Deze sectie neemt aan dat de standaard opstelling wordt gebruikt en dat een kort overzicht voor het opzetten van de seriële console gewenst is.

[.procedure]
====
. Verbind de seriële kabel met [.filename]#COM1# en de leidende terminal;
. Om alle opstartmeldingen op de seriële console te zien, dient het volgende commando als supergebruiker uitgevoerd te worden:
+
[source,shell]
....
# echo 'console="comconsole"' >> /boot/loader.conf
....
+
. Bewerk [.filename]#/etc/ttys# en wijzig `off` in `on` en `dialup` in `vt100` voor de regel [.filename]#ttyu0#. Indien dit niet gebeurt is er geen wachtwoord nodig om met de seriële console te verbinden, wat tot een mogelijk beveiligingslek leidt;
. Start het systeem opnieuw op om te zien of de veranderingen effect hebben.
====

Indien een andere instelling nodig is, is er een diepgaandere uitleg over instellingen beschikbaar in <<serialconsole-howto>>.

[[serialconsole-howto]]
=== De seriële console instellen

[.procedure]
====

. Bereid een seriële kabel voor.
+ 
Benodigd zijn een nulmodem-kabel òf een standaard seriële kabel samen met een nulmodem-adapter. Zie <<serial-cables-ports>> voor een beschrijving van seriële kabels.
. Ontkoppel het toetsenbord.
+ 
De meeste PC-systemen zoeken naar het toetsenbord tijdens de Power-On Self-Test (POST) en geven een foutmelding als het toetsenbord niet is gevonden. Sommige systemen klagen luid over het ontbreken van een toetsenbord en gaan niet verder met opstarten totdat het is aangesloten.
+ 
Indien de computer klaagt over de fout, maar desondanks opstart, is het niet nodig iets speciaals te doen. Sommige machines waarop Phoenix BIOS is geïnstalleerd melden enkel `Toetsenbord faalde` en gaan normaal door met opstarten.
+ 
Indien de machine weigert zonder toetsenbord op te starten dient het BIOS ingesteld te worden zodat het deze fout negeert (als het dit kan). Raadpleeg het handboek van het moederbord voor verdere aanwijzingen.
+
[TIP]
======

Stel het toetsenbord in op "Niet geïnstalleerd" in de BIOS-instellingen. Het is dan nog steeds mogelijk om het toetsenbord te gebruiken. Dit zorgt er alleen voor dat het BIOS niet naar een toetsenbord zoekt tijdens het aanzetten. Het BIOS dient niet te klagen als het toetsenbord ontbreekt. Het is mogelijk om het toetsenbord aangesloten te laten, zelfs als deze vlag is ingesteld op "Niet geïnstalleerd" en het toetsenbord werkt nog steeds. Kijk, als de bovenstaande optie niet in het BIOS aanwezig is, naar een optie "Halt on Error". Het instellen van deze optie op "All but keyboard" of zelfs op "No Errors" zal hetzelfde effect hebben.
======
+
[NOTE]
======
Als een systeem een PS/2(R)-muis heeft, is het goed mogelijk dat naast het toetsenbord ook de muis losgekoppeld moet worden. Dit komt doordat PS/2(R)-muizen wat hardware met het toetsenbord delen. Als de muis aangesloten blijft, kan het zoeken naar het toetsenbord als resultaat hebben dat het toetsenbord er nog steeds is. Een Gateway 2000 Pentium 90 MHz systeem met een AMI BIOS schijnt zich op deze manier te gedragen. Over het algemeen is dit geen probleem aangezien een muis zonder toetsenbord sowieso weinig nut heeft.
======
+
. Sluit een domme terminal aan op [.filename]#COM1# ([.filename]#sio0#).
+ 
Indien er geen domme terminal aanwezig is, kan een oude PC met een modemprogramma of de seriële poort van een andere UNIX(R) machine gebruikt worden. Indien er geen [.filename]#COM1# ([.filename]#sio0#) aanwezig is dient deze geregeld te worden. Op dit moment is er geen manier om een andere poort dan [.filename]#COM1# voor de opstartblokken te selecteren, afgezien van deze opnieuw te compileren. Indien [.filename]#COM1# al voor een ander apparaat gebruikt wordt, verwijder dat apparaat dan tijdelijk en installeer een nieuw opstartblok en een nieuwe kernel zodra FreeBSD werkt. Er wordt aangenomen dat [.filename]#COM1# sowieso beschikbaar is op een bestands-/reken-/terminalserver. Als [.filename]#COM1# ècht voor iets anders nodig is (en het niet mogelijk is om dat op [.filename]#COM2# ([.filename]#sio1#) over te zetten), is het sowieso al onverstandig om hiermee bezig te zijn.)
. Controleer of het instellingenbestand van de kernel de juiste vlaggen ingesteld heeft voor [.filename]#COM1# ([.filename]#sio0#).
+ 
Relevante vlaggen zijn:
+
`0x10`:::
Zet console-ondersteuning voor deze eenheid aan. De andere consolevlaggen worden genegeerd tenzij deze is aangezet. Momenteel kan ten hoogste één eenheid console-ondersteuning hebben. De eerste (in de volgorde van het instellingenbestand) waarvan deze vlag is aangezet heeft de voorkeur. Deze optie zelf maakt de seriële poort geen console. Stel de volgende vlag in of gebruik de onderstaande optie `-h` samen met deze vlag.
+
`0x20`:::
Dwingt deze eenheid om de console te zijn (tenzij er een andere console met hogere prioriteit is), ongeacht de onderstaande optie `-h`. De vlag `0x20` dient samen met de vlag `0x10` gebruikt te worden.
+
`0x40`:::
Reserveert deze eenheid (in samenwerking met `0x10`) en maakt de eenheid ontoegankelijk voor normale toegang. Deze vlag dient niet aangezet te worden op de seriële poort van de eenheid die als seriële console gebruikt gaat worden. De enige functie van deze vlag is de eenheid voor het debuggen van de kernel op afstand aan te merken. Zie het extref:{developers-handbook}[Ontwikkelaarshandboek] voor meer informatie over debuggen op afstand.
+ 
Voorbeeld:
+
[.programlisting]
....
device sio0 at isa? port IO_COM1 flags 0x10 irq 4
....
+ 
Zie de hulppagina man:sio[4] voor meer details.
+ 
Indien de vlaggen niet waren ingesteld, dient UserConfig gedraaid te worden (op een andere console) of de kernel opnieuw gecompileerd te worden.
. Maak [.filename]#boot.config# aan in de hoofdmap van de partitie `a` van de opstartschijf.
+ 
Dit bestand instrueert de code op het opstartblok hoe het systeem opgestart dient te worden. Om de seriële console te activeren, zijn één of meer van de volgende opties nodig. Indien meerdere opties gewenst zijn, dienen ze allemaal op dezelfde regel te staan:
+
`-h`:::
Wisselt tussen de interne en de seriële console. Indien bijvoorbeeld vanaf de interne (video)console opgestart wordt, kan `-h` gebruikt worden om het console-apparaat van de opstartlader en de kernel om te leiden naar de seriële console. Indien vanaf de seriële poort opgestart wordt, kan `-h` gebruikt worden om de opstartlader en de kernel het videoscherm als console te laten gebruiken.
+
`-D`:::
Wisselt tussen opstellingen met een enkele en een dubbele console. In opstellingen met een enkele console is de console òfwel de interne console (videoscherm) òfwel de seriële poort, afhankelijk van bovenstaande optie `-h`. In opstellingen met een dubbele console worden zowel het videoscherm als de seriële poort tegelijkertijd console, ongeacht de toestand van de optie `-h`. De opstelling met een dubbele console heeft alleen effect als het opstartblok draait. Zodra de opstartlader het overneemt, wordt de console die met de optie `-h` gespecificeerd is de enige console.
+
`-P`:::
Zorgt ervoor dat het opstartblok naar het toetsenbord zoekt. Als er geen toetsenbord wordt gevonden, worden de opties `-D` en `-h` automatisch ingesteld.
+
[NOTE]
======
Vanwege ruimtebeperkingen in de huidige versie van het opstartblok, is de optie `-P` alleen in staat om uitgebreide toetsenborden te detecteren. Toetsenborden met minder dan 101 toetsen (en zonder de toetsen F11 en F12) worden mogelijk niet gedetecteerd. Toetsenborden op sommige laptops worden vanwege deze beperking mogelijk niet correct gevonden. Indien dit het geval is met een systeem, vermijd dan de optie `-P`. Helaas is er geen mogelijkheid om dit probleem te omzeilen.
======
+ 
Gebruik om de console automatisch te selecteren òfwel de optie `-P` òfwel de optie `-h` om de seriële console te activeren.
+ 
De andere opties beschreven in man:boot[8] kunnen ook gebruikt worden.
+ 
De opties, behalve `-P`, worden aan de opstartlader ([.filename]#/boot/loader# doorgegeven. De opstartlader bepaalt of de interne videopoort of de seriële poort de console wordt door enkel naar de toestand van de optie `-h` te kijken. Dit betekent dat als de optie `-D`, maar niet de optie `-h` in [.filename]#/boot.config# gespecificeerd wordt, de seriële poort alleen tijdens het opstartblok als console gebruikt kan worden, de opstartlader gebruikt het interne videoscherm als console.
+
. Start de machine op.
+ 
Als FreeBSD gestart wordt, tonen de opstartblokken de inhoud van [.filename]#/boot.config# op de console. Bijvoorbeeld:
+
[source,shell]
....
/boot.config: -P
Keyboard: no
....
+ 
De tweede regel verschijnt alleen als `-P` in [.filename]#/boot.config# staat en aangegeven wordt of het toetsenbord aanwezig of afwezig is. Deze berichten gaan of naar de seriële of interne console of naar beide, afhankelijk van de optie in [.filename]#/boot.config#.
+
[.informaltable]
[cols="1,1", frame="none", options="header"]
|===
| Opties
| Bericht gaat naar

|geen
|interne console

|`-h`
|seriële console

|`-D`
|seriële en interne consoles

|`-Dh`
|seriële en interne consoles

|`-P`, toetsenbord aanwezig
|interne console

|`-P`, toetsenbord afwezig
|seriële console
|===
+ 
Na de bovenstaande berichten is er een korte pauze voordat de opstartblokken doorgaan met het laden van de opstartlader en voordat er verdere berichten op de console worden afgebeeld. Normaalgesproken hoeven de opstartblokken niet onderbroken te worden, maar het kan gedaan worden om er zeker van te zijn dat alles goed is ingesteld.
+ 
Om het opstartproces te onderbreken, kan op elke andere toets dan kbd:[Enter] gedrukt worden. De opstartblokken vragen dan om verdere actie. Er verschijnt iets als het volgende:
+
[source,shell]
....
>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/boot/loader
boot:
....
+ 
Controleer of de bovenstaande boodschap naar de seriële of interne console of beide gaat, naar gelang de opties in [.filename]#/boot.config#. Indien de boodschap op de juiste console verschijnt kan op kbd:[Enter] gedrukt worden om het opstartproces voort te zetten.
+ 
Als de seriële console gewenst is maar de prompt niet op de seriële terminal verschijnt, is er iets mis met de instellingen. Voer in de tussentijd `-h` in en druk op kbd:[Enter] of kbd:[Return] (indien mogelijk) om aan het opstartblok (en vervolgens de opstartlader en de kernel) te vertellen dat de seriële poort console moet worden. Controleer als het systeem draait wat er verkeerd ging.
====

Nadat de opstartlader is geladen en het derde stadium van het opstartproces bereikt is, kan er nog steeds gewisseld worden tussen de interne console en de seriële console door de juiste omgevingsvariabelen in de opstartlader in te stellen. Zie <<serialconsole-loader>>.

[[serialconsole-summary]]
=== Samenvatting

Hieronder volgt een samenvatting van de verschillende instellingen die in deze sectie en de uiteindelijk gekozen console beschreven zijn.

==== Geval 1: vlaggen ingesteld op 0x10 voor [.filename]#sio#

[.programlisting]
....
device sio0 at isa? port IO_COM1 flags 0x10 irq 4
....

[.informaltable]
[cols="1,1,1,1", frame="none", options="header"]
|===
<| Opties in /boot.config
<| Console tijdens de opstartblokken
<| Console tijdens de opstartlader
<| Console in kernel

|niets
|intern
|intern
|intern

|`-h`
|serieel
|serieel
|serieel

|`-D`
|serieel en intern
|intern
|intern

|`-Dh`
|serieel en intern
|serieel
|serieel

|`-P`, toetsenbord aanwezig
|intern
|intern
|intern

|`-P`, toetsenbord afwezig
|serieel en intern
|serieel
|serieel
|===

==== Geval 2: vlaggen ingesteld op 0x30 voor [.filename]#sio#

[.programlisting]
....
device sio0 at isa? port IO_COM1 flags 0x30 irq 4
....

[.informaltable]
[cols="1,1,1,1", frame="none", options="header"]
|===
| Opties in /boot.config
| Console tijdens de opstartblokken
| Console tijdens de opstartlader
| Console in kernel

|niets
|intern
|intern
|serieel

|`-h`
|serieel
|serieel
|serieel

|`-D`
|serieel en intern
|intern
|serieel

|`-Dh`
|serieel en intern
|serieel
|serieel

|`-P`, toetsenbord aanwezig
|intern
|intern
|serieel

|`-P`, toetsenbord afwezig
|serieel en intern
|serieel
|serieel
|===

[[serialconsole-tips]]
=== Tips voor de seriële console

==== Een hogere snelheid voor de seriële poort instellen

Standaard zijn de instellingen van de seriële poort: 9600 baud, 8 bits, geen pariteit, en 1 stopbit. Indien het wenselijk is om de snelheid te veranderen, zijn de volgened opties beschikbaar:

* Hercompileer de opstart blokken met `BOOT_COMCONSOLE_SPEED` ingesteld op de nieuwe console snelheid. Zie <<serialconsole-com2>> voor gedetailleerde instructies over het bouwen en installeren van nieuwe opstartblokken.
+ 
Als de seriële poort anders is gespecificeerd dan met `-h` bij het opstarten, of als de seriële console die gebruikt wordt door de kernel anders is dan die gebruikt wordt door de opstart blokken, dan moet de volgende optie aan het kernel instellingen bestand worden toegevoegd en moet de kernel opnieuw gecompileerd worden:
+
[.programlisting]
....
options CONSPEED=19200
....

* Gebruik de `-S` opstartoptie van de kernel. De optie `-S` kan worden toegevoegd aan het bestand [.filename]#/boot.config#. Zie de handleiding man:boot[8] voor een beschrijving over hoe opties kunnen worden toegevoegd aan [.filename]#/boot.conf#, en welke opties ondersteund worden.
* Zet de `comconsole_speed` optie in het [.filename]#/boot/loader.conf# bestand.
+ 
Deze optie is ervan afhankelijk dat de `console`, `boot_serial` en `boot_multicons` ingesteld staan in [.filename]#/boot/loader.conf#. Een voorbeeld van hoe `comconsole_speed` gebruikt kan worden om de console snelheid aan te passen:
+
[.programlisting]
....
boot_multicons="YES"
boot_serial="YES"
console_speed="115200"
console="comconsole,vidconsole"
....

[[serialconsole-com2]]
==== Een andere seriële poort dan [.filename]#sio0# voor de console gebruiken

Het gebruik van een andere poort dan [.filename]#sio# vergt wat hercompileren. Indien het gewenst is om een andere seriële poort te gebruiken, hercompileer dan de opstartblokken, de opstartlader en de kernel als volgt:

[.procedure]
====

. De broncode van de kernel moet beschikbaar zijn. Zie crossref:cutting-edge[updating-upgrading,FreeBSD updaten en upgraden];
. Bewerk [.filename]#/etc/make.conf# en stel `BOOT_COMCONSOLE_PORT` in op het adres van de te gebruiken poort (0x3F8, 0x2F8, 0x3E8 of 0x2E8). Alleen [.filename]#sio0# tot en met [.filename]#sio3# ([.filename]#COM1# tot en met [.filename]#COM4#) zijn te gebruiken. Seriële kaarten met meerdere poorten werken niet. Interrupts instellen is niet nodig;
. Maak een aangepast kernelinstellingenbestand aan en voeg de juiste vlaggen toe voor de te gebruiken seriële poort. Als bijvoorbeeld [.filename]#sio1# ([.filename]#COM2#) de console moet worden:
+
[.programlisting]
....
device sio1 at isa? port IO_COM2 flags 0x10 irq 3
....
+ 
Alternatief:
+
[.programlisting]
....
device sio1 at isa? port IO_COM2 flags 0x30 irq 3
....
+ 
Stel de consolevlaggen voor de andere seriële poorten niet in;
. Hercompileer en installeer de opstartblokken en de opstartlader:
+
[source,shell]
....
# cd /sys/boot
# make clean
# make
# make install
....
+
. Herbouw en installeer de kernel;
. Schrijf de opstartblokken met man:disklabel[8] naar de opstartschijf en start met de nieuwe kernel op.
====

[[serialconsole-ddb]]
==== De debugger DDB gebruiken via de seriële verbinding

Als het wenselijk is om vanuit de seriële console in de kerneldebugger te vallen - nuttig voor diagnose op afstand, maar ook gevaarlijk indien een onbedoelde BREAK op de seriële poort wordt gegenereerd! - compileer de kernel dan met de volgende opties:

[.programlisting]
....
options BREAK_TO_DEBUGGER
options DDB
....

==== Een aanmeldprompt op de seriële console krijgen

Hoewel dit niet nodig is, kan het gewenst zijn om een __aanmeld__prompt over de seriële lijn te krijgen, nu het mogelijk is om opstartboodschappen te zien en de kerneldebugsessie door de seriële console betreden kan worden. Hier volgt hoe het te doen.

Open het bestand [.filename]#/etc/ttys# met een tekstverwerker en zoek de volgende regels:

[.programlisting]
....
ttyu0 "/usr/libexec/getty std.9600" unknown off secure
ttyu1 "/usr/libexec/getty std.9600" unknown off secure
ttyu2 "/usr/libexec/getty std.9600" unknown off secure
ttyu3 "/usr/libexec/getty std.9600" unknown off secure
....

[.filename]#ttyu0# tot en met [.filename]#ttyu3# komen overeen met [.filename]#COM1# tot en met [.filename]#COM4#. Wijzig `off` in `on` voor de gewenste poort. Als de snelheid van de seriële poort is gewijzigd, wijzig dan `std.9600` zodat het met de huidige instelling overeenkomt, bijvoorbeeld `std.19200`.

Het kan ook wenselijk zijn om het terminaltype te wijzigen van `unknown` naar het eigenlijke type van de seriële terminal.

Voer `kill -HUP 1` uit na het wijzigen van het bestand om de wijzigingen actief te maken.

[[serialconsole-loader]]
=== De console vanuit de opstartlader veranderen

De vorige secties beschreven hoe de seriële console ingesteld kan worden door het instellen van het opstartblok. Deze sectie toont dat het mogelijk is om de console te specificeren door het invoeren van enkele opdrachten en omgevingsvariabelen in de opstartlader. Aangezien de opstartlader tijdens het derde stadium van het opstartproces wordt geactiveerd, na het opstartblok, overheersen de instellingen in de opstartlader de instellingen in het opstartblok.

==== De seriële console instellen

Het is mogelijk om de opstartlader en de kernel gebruik te laten maken van de seriële console door slechts één regel naar [.filename]#/boot/loader.conf# te schrijven:

[.programlisting]
....
console="comconsole"
....

Dit heeft effect ongeacht de instellingen in het opstartblok die in de vorige sectie zijn besproken.

Het is verstandig om bovenstaande regel de eerste regel van [.filename]#/boot/loader.conf# te maken om de opstartboodschappen zo vroeg mogelijk op de seriële console te kunnen zien.

Evenzo kan de interne videoconsole worden gespecificeerd met:

[.programlisting]
....
console="vidconsole"
....

Indien de omgevingsvariabele `console` van de opstartlader niet ingesteld wordt, gebruikt de opstartlader, en vervolgens de kernel, de console die door de optie `-h` in het opstartblok wordt aangegeven.

De console kan worden gespecificeerd in [.filename]#/boot/looader.conf.local# of in [.filename]#/boot/loader.conf#.

Zie man:loader.conf[5] voor meer informatie.

[NOTE]
====
Momenteel heeft de opstartlader een optie die gelijk is aan de optie `-P` van het opstartblok en is er geen voorziening om automatisch de interne console en de seriële console te selecteren afhankelijk van de aanwezigheid van een toetsenbord.
====

==== Een andere seriële poort dan [.filename]#sio# voor de console gebruiken

Compileer de opstartlader opnieuw om een andere seriële poort dan [.filename]#sio# voor de seriële console te gebruiken. Volg de procedure zoals beschreven in <<serialconsole-com2>>.

[[serialconsole-caveats]]
=== Valkuilen

De doelstelling van dit stuk is beheerders in staat te stellen om toegewijde servers te installeren die geen grafische hardware of aangesloten toetsenborden nodig hebben. Hoewel de meeste systemen zonder toetsenbord opstarten, zijn er helaas aardig wat die niet zonder een grafische adapter opstarten. Machines met een AMI BIOS kunnen ingesteld worden om zonder grafische adapter op te starten door de instelling "graphics adapter" in de CMOS-instellingen te wijzigen in "Not installed".

De meeste systemen ondersteunen deze optie echter niet en weigeren om zonder weergavehardware op te starten. Voor deze machines is het nodig om een of andere grafische kaart in een systeem te laten (zelfs al is het een aftandse monochrome kaart) hoewel het niet nodig is om een beeldscherm aan te sluiten. Ook kan geprobeerd worden om een AMI BIOS te installeren.
