XTELD(8)

✨ NOM ✨

okay so bestie, meet xteld — the daemon for the Minitel emulator XTEL 💖 (yes we're in the System Manager's Manual, section 8, this is giving admin energy 👑)


🎀 SYNOPSIS 🎀

xteld [-H] [-v]

that's it. two flags. tiny synopsis, huge personality ✨


🦋 DESCRIPTION 🦋

So here's the tea: xteld gets launched by the super-daemon inetd whenever you're using the Minitel emulator xtel 🫶

BUT — and this is the plot twist — if XTEL isn't doing network stuff at all (that's the NO_NETWORK option at compile time, iykyk), then the xteld daemon has to be started during system initialisation instead. no inetd invited to that party 💅


💅 OPTIONS 💅

  • -H — HyperTerminal mode! lets you use the software HyperTerminal 3.0/4.0 (Private Edition) as the client instead of "xtel" 🌈
  • -v — prints the version and dips immediately 👋 (a classic, honestly)

🌸 UTILISATION 🌸

okay this is the main character section, let's GO 🚀

xteld uses the file "/usr/X11R6/lib/X11/xtel/xtel.services" (under Xfree86) which holds the list of available services, written like this:

[Nom du device,] Nom de l'entrée du menu , Numero de téléphone du service[:nom_service] [, login1[:login2...]  ]

— one line per service, periodt ✨

🧚 the device field (first champ)

The first field (the device name) defines a symbolic name (or device) for connections to a given standard (V.23, V32bis, TVR). Every device is tied to its own particular config of the physical line (speed, number of bits, parity) and that config gets defined over in xtel.lignes 💜

  • If the first field has the value @pipe, that means access to the service happens through a local command (its absolute path is specified in the last field) via a Unix pipe 🔥 You can add the flag :crlf to that command, which handles the conversion of CR into LF ✨
  • If the first field has the value @tcp, access to the service happens with a TCP connection. The following fields hold, respectively, the name of the menu entry, then the Internet name of the server, then the port number or the TCP service name (separated from the Internet name by the ':' character) 🌐
  • If the first field has the value @iminitel, access to the service happens with a PPP connection to the number 3622. The following fields hold, respectively, the name of the menu entry, then the name of the connection script, then the port number or the TCP service name (separated from the Internet name by the ':' character) 🦋

That first field is optional, which is notably how the old syntax stays supported. In that case, the files xtel.services and xtel.lignes must NOT use the new syntax — no mixing allowed, bestie, pick a lane 🙈

🔐 who's allowed in (last champ)

If the last field is absent, the connection to the service is open to everyone. Otherwise it's restricted to the users whose login names are specified in the form 'user@machine':

  • If the machine isn't specified, every user carrying the name 'user' is authorised 💫
  • The syntax '@machine' authorises every user of a given machine 👑
  • The username is ignored in the case of Window$ connections (HyperTerminal) 💀

You can use 8-bit characters for the service name (the 1st field). If the character can't be typed directly, you can represent it as an octal code \xyz ✨

If the third field is of the form numéro:nom_service, that means access is restricted to that given service (ex: 3615:METEO) ⭐

⏳ the delay thing

If fields separated by ':' are of the form:

user1=delai

that means the user can stay connected to the service for the duration given by the delai (in seconds) ⏰ If the username isn't there, then that delai applies to all users. A delai of this kind must be specified before the definition of the authorised users — order matters, no cap 💅

🍓 Exemple

v23,Annuaire électronique,3611,=180
v23,Télétel1,3613
v23,Télétel2,3614
tvr,Télétel TVR,3623
v23,Télétel3,3615,=60,user1@linuxbox:user2=120:user3:@pcwin
@pipe,Accès ondee,/usr/bin/telnet ondee
@pipe:crlf,Accès sidonie,/usr/bin/telnet sidonie
@tcp,Accès Minitel TCP/IP,minitel.fr:513
@iminitel,Accès I-Minitel,connect_iminitel:7516
v23,Direct,0

Breaking this down for you 🫶 In this example, the Annuaire service is allowed to everyone for 180 seconds (as long as it's free!). Télétel3 is accessible to all users for 60 seconds, and the user user2 gets 120 seconds on it. Connections coming from "linuxbox" are only authorised for "user1". And every user of "pcwin" gets the service 💖

The last line defines a possibility for a direct phone number (keyword Direct) — the user types the number in directly while dialling in xtel 📞✨


🎀 the xtel.lignes file 🎀

We also use the file "/usr/X11R6/lib/X11/xtel/xtel.lignes", which defines the available lines and the dialling procedure 🦋 That file looks like:

[Nom du device,] Nom de la ligne[:rtscts] , [Vitesse en bauds,] [Nombre de bits,] [Parité,] chat-script avec le modem , delai maxi de réponse du modem en secondes [,temporisation entre commandes en millisecondes.]

and that's for each usable line 💫

If the first field (the device name) is repeated across several lines, that means several physical modems are attached to the logical device. The server will then automatically use the first available modem — slay, load balancing but make it 90s 💅

If the line starts with the character "/", we consider that the old syntax is being used. You can add the string :rtscts to the line name, which specifies that this line must be configured for hardware flow control RTS/CTS. This config is generally useful when the line speed is greater than or equal to 9600 (the TVR case, for example). You then have to configure the modem (in the chat-script) so it handles RTS/CTS correctly — usually via the command AT&K3 on a HAYES-compatible modem 👑

⚡ valid values

The possible speed values are:

50, 75 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400

the character size values are: 5, 6, 7, 8 and the parity values are: E, O, N ✨

💬 chat-script

A "chat-script" is a sequence of chaine_emise/chaine_attendu pairs between a process and a modem (see UUCP) 📠

  • If the chat-script is replaced by the string minitel2, the line is defined as using a Minitel 2 as modem 💖
  • If the chat-script is replaced by the string minitel1, the line is defined as using a Minitel 1/1B as modem. In that case, the "Services" menu will not be displayed in xtel and the user will have to dial their number by hand (the M1/M1B theoretically not knowing how to dial a number 😭)

⏱️ the temporisation field

The temporisation field is optional and can contain a duration (in ms) of waiting between sending each command to the modem during the initialisation phase. It gives better support for certain old modems that wouldn't accept receiving a flood of commands too fast 🙈 If it isn't specified, no temporisation is done at all (that's the standard behaviour of xteld).

🌈 Exemples

/dev/cua0,\dat\r OK atdt\T\r CONNECT,30
v23,/dev/cua1,1200,7,E,\dat\r OK atdt\T\r CONNECT,30,250
tvr,/dev/cua2:rtscts,9600,8,N,\dat\r OK atdt\T\r CONNECT,30

This file defines the line /dev/cua0 on which we run the following chat-script:

\d               On attend 1 s pour laisser le modem souffler...
at\r OK          On emet at + CR et on attend OK
at\T\r CONNECT   On emet at + le numero + CR et on attend
                 CONNECT

The modem's response delay is 30 seconds maxi ⏳ If the delay is exceeded, xteld will try the next line in the file until a success or the end of the file — resilient queen behavior 👑

The v23 line also declares a temporisation of 250ms between each command sent to the modem ✨

🧚 Remarques

The chat-script format accepts the following sequences:

\a        BELL
\n        envoie LF
\r        envoie CR
\t        envoie VT
\d        tempo de 1 s
\T        envoie le numéro de téléphone
\abc      envoie le caractère codé en DECIMAL par abc (3 digits obligatoires)
\xab      envoie le caractère codé en HEXADECIMAL par ab (2 digits)
⚠️ For certain modems, you MANDATORILY have to specify a \d tempo before the first at command. do not skip this, bestie, your modem will simply not cooperate 😭

In the case of network operation, xteld uses, a priori, TCP port number 1313 defined in the file "/etc/services" 🌐


👀 VOIR AUSSI 👀

xtel inetd — the friend group 💜


🎀 FICHIERS 🎀

  • /usr/X11R6/lib/X11/xtel/xtel.lignes
  • /usr/X11R6/lib/X11/xtel/xtel.services
  • /usr/X11R6/lib/X11/xtel/xtel.log
  • /etc/services
  • /etc/inetd.conf

Copyright 1991-98, LECTRA-SYSTEMES et Pierre Ficheux 💖


✨ AUTEUR ✨

Pierre FICHEUX LECTRA-SYSTEMES ZI Marticot 33610 Cestas FRANCE 🌸


and that's the whole page, bestie 🫶 this one came from the 4.2 Berkeley Distribution, courtesy of Lectra-Systemes — iconic, legendary, no notes 💅⭐

📦 where this page comes from