Microserveur et modem V.23

Bonjour à tous !

Comme je le disais en intro, je me lance dans le code d’un microserveur Minitel avec US Robotics 56k Message Pro ; je me suis basé sur le tuto de x0r (~x0r - Mettre en place son propre serveur Minitel). Pas de PBX mais c’est ma box qui décroche la ligne, donc le schéma est le suivant :

VoIP <-> Livebox <-> Modem <-> Serial/USB <-> RasbperryPI
                  |-> Combiné
                  |-> Minitel 1B

L’objectif est de lancer un microserveur qui permet l’accès à IRC sur le salon libera.chat#minitel (ce qui fonctionne très bien en WS avec l’ESP32 de Iodeo)

:link: Le code est là

Cependant, tout ne marche pas comme prévu – on dirait que le modem de mon minitel est HS. tl;dr GOTO Essais.

Config logicielle

Je vous détaille ici toute la configuration que j’ai réalisé (peut-être fausse) mais qui était manquante sur le web pour ce type de modem USR comme serveur Minitel. Je me dis que ça pourrait servir à d’autres :crossed_fingers:

Versions :

  • mgetty-1.2.1-1.2
  • Ubuntu Server 23.04

Le modem s’initialise et attend un appel ou RING

# /etc/mgetty/mgetty.config

port ttyUSB0
  speed 1200
  init-chat "" AT&F1+MCA=0 OK AT&N2 OK ATS27=16 OK ATM0L0 OK
  gettydefs 1200v23

# &F1, Charge une configuration usine avec contrôle de flux matériel
# +MCA=0, désactive le répondeur
# &N2, vitesse de connexion à 1200 baud
# S27=16, registre 27 à la valeur 16, active le V.23
# M0L0, haut parleur désactivé

Lorsqu’il reçoit un RING, il tente de se connecter au client, et s’il y parvient, il lance le binaire

# /etc/mgetty/login.config

*	user	user	/path/to/bin.sh

Cette partie est recopiée de x0r mais de ce que je vois c’est surtout pour définir les règles de parité

# /etc/gettydefs

1200v23# B1200 CS7 PARENB -PARODD GLOBAL #B1200 ISTRIP CS7 PARENB -PARODD GLOBAL BRKINT IGNPAR ICRNL IXON IXANY OPOST ONLCR CREAD HUPCL ISIG ICANON ECHO ECHOE ECHOK #@S login: #1200v23

Le binaire lancé avec les bonnes règles de parités (recopié de x0r, somme toutes identiques à ce que l’on a ci-dessus ^)

# /path/to/bin.sh

stty 1200 istrip cs7 parenb -parodd brkint \
    ignpar icrnl ixon ixany opost onlcr cread hupcl -isig icanon \
    echo echoe echok

# vider l'écran
echo
printf "\x0c"

echo "COUCOU LE MONDE !"

sleep 10

Et surtout, tout est lancé avec systemd, l’unit est définie ainsi :

[Unit]
Description=Smart Modem Getty(mgetty)
Documentation=man:mgetty(8)
Requires=systemd-udev-settle.service
After=systemd-udev-settle.service

[Service]
Type=simple
ExecStart=/usr/sbin/mgetty -x 7 ttyUSB0
Restart=always
PIDFile=/var/run/mgetty.pid.ttyUSB0

[Install]
WantedBy=multi-user.target

Essais

Lorsque j’appelle ma ligne, le modem décroche, j’entends le signal à 2100 Hz. Mon Minitel 1B est branché sur la même ligne, et lorsque je lance « Connexion/Fin », rien ne se passe, et le Minitel revient en mode F.

J’ai tenté sur deux autres services la connexion (Jelora et IUT Auxerre) idem, j’ai bien la tonalité du modem dans le combiné. Quant à la connexion entre le minitel et le serveur elle ne s’établit pas.

J’imagine donc que je peux considérer le modem de mon minitel comme HS ? En effet au combiné lorsque j’appuie sur « Connexion/Fin » je n’entends pas de son particulier.

:phone: Enfin, je vous invite à essayer d’établir une connexion au 01 7374 2367. N’hésitez pas à me dire si cela a fonctionné pour vous, un simple message COUCOU LE MONDE ! devrait apparaître sur votre terminal

Merci d’avoir tout lu, à bientôt :wave:
F4JJD, Noël

(Modem hors ligne jusqu’à demain soir)

Apelle ta ligne fixe depuis ton portable. Lorsque ça sonne, essaie la commande de retournement de modem : Fnct + M puis R puis Connexion /Fin. Dans ton portable, la ligne doit décrocher et tu dois entendre le 2100Hz puis 1300Hz. Si ce n’est pas le cas, ton modem du M1B est HS.

Si tu ne retournes pas ton modem minitel, tu n’entendras aucune tonalité car en mode client, le minitel émet un son à 390Hz uniquement s’il entend la porteuse du serveur à 1300Hz.

Autre essai possible, branche ton M1B en mode serveur sur ta ligne fixe Orange (RTC ou ToIP), retourne ton modem minitel (Fnct + M puis R) , appuies sur Connexion/Fin. Le C va clignoter et se fixer car il va croire que la tonalité de numérotation (440Hz) est la réponse du client. Puis dès que la tonalité passe en occupation (bip…bip…bip…bip…) ton minitel raccroche automatiquement.

image

Je complète ma réponse en te précisant que le schéma de x0r peut induire en erreur :

Lorsque que tu appuies sur Connexion/Fin, ton Minitel isole tous les équipements branchés à l’arrière de la prise traversante, tu ne pourras donc jamais entendre la tonalité / transmissions données si ton téléphone est branché à l’arrière

Sur cette vidéo, tu peux entendre ce à quoi ressemble une transmission V.23 au niveau sonore :

Merci beaucoup @lelex64734 !

Le modem du Minitel est parfaitement fonctionnel :slightly_smiling_face:
C’était le connecteur RJ11 / F010 du modem qui est défectueux. Je m’en suis rendu compte en l’utilisant comme adaptateur pour mon téléphone qui ne sonnait pas lors des appels…

Je continue le développement, donc la bête est hors ligne pour l’instant.
J’espère arriver vite avec un service minimal !

Merci encore

Finalement, je me suis débarrassé de mgetty qui ne répondait pas à mon besoin. Toute la syncrho est codée en Go avec les commandes AT (Hayes). Quant au code il est ici : GitHub - NoelM/minigo at stdio (pas encore la branche principale, je dois tester que le ws soit tjrs fonctionnel)

Le serveur est dispo jusqu’à demain matin sur la même ligne : 01 7374 2367

1 « J'aime »

Fonctionne impec :slight_smile: Serveur prometteur ! Ya plus qu’a le passer en multi :wink:

1 « J'aime »