1 points par GN⁺ 2025-05-25 | 1 commentaires | Partager sur WhatsApp
  • Rotary Phone Dial Linux Kernel Driver est un module noyau qui convertit un ancien téléphone à cadran en périphérique d’entrée evdev pour Linux
  • Le projet fournit aussi un pilote d’exemple simple et un environnement de développement basé sur une machine virtuelle, ce qui le rend très utile à des fins d’enseignement et de test
  • Le développement et les tests sont possibles même sans matériel réel, avec prise en charge de la simulation GPIO
  • Il prend en charge presque tous les réglages de mappage de touches et peut aussi s’adapter aux différents schémas d’encodage par impulsions selon les pays
  • Comme il s’agit d’un module noyau standard, il peut être facilement étendu et intégré à un système Linux

Présentation de Rotary Phone Dial Linux Kernel Driver

  • Ce projet est un module noyau qui transforme le cadran rotatif d’un ancien téléphone en périphérique d’entrée standard pour un système Linux (par ex. un pavé numérique)
  • Il peut intéresser notamment les personnes suivantes
    • celles qui veulent saisir des chiffres via une numérotation lente au cadran
    • les utilisateurs qui souhaitent faire entrer un ancien téléphone analogique dans l’ère numérique
    • les enseignants qui ont besoin d’un pilote noyau d’exemple et d’un environnement virtuel de développement/test sans matériel réel
    • ou encore pour d’autres expérimentations créatives

Câblage du circuit

  • Un cadran rotatif se compose essentiellement de deux interrupteurs : BUSY (état ouvert) et PULSE (état fermé)
    • Ces deux interrupteurs sont reliés aux broches GPIO d’un système capable d’exécuter Linux embarqué, avec des résistances de pull-up
  • Quand on tourne le cadran, l’interrupteur BUSY passe à l’état fermé, puis pendant le retour du cadran à sa position initiale, l’interrupteur PULSE alterne de façon répétée entre ouvert et fermé
  • Le branchement et le brochage varient selon le pays ou le fabricant ; il est donc recommandé de tester la réponse des interrupteurs avec un multimètre
  • Le rapport cyclique du signal d’impulsion (durée ouvert/fermé) ainsi que la méthode de décodage diffèrent aussi selon les pays et les fabricants
    • Exemple : en Allemagne, une impulsion correspond à 62 ms ouvert et 38 ms fermé
    • En général, une à neuf impulsions correspondent à 1 à 9, et dix impulsions à 0 (avec des exceptions, comme la Suède)
  • En cas de doute, il faut vérifier l’étiquette du cadran ou effectuer des tests

Utilisation

  • Ce pilote est un module noyau externe standard (out-of-tree kernel module)
  • En résumé, les étapes sont les suivantes
    • ajouter un nœud rotary-dial dans l’arbre des périphériques, et mapper pulse-gpios ainsi que busy-gpios vers les broches réelles
    • si nécessaire, modifier la table des keycodes avec la propriété linux,keycodes
    • définir le chemin des sources du noyau (KDIR) comme variable d’environnement, puis compiler, installer et charger le module
  • Une fois le module noyau chargé, un périphérique d’entrée est créé et se comporte comme un pavé numérique
  • L’outil evemu permet de surveiller les propriétés du périphérique d’entrée ainsi que les événements du cadran

Machine virtuelle (VM) pour le développement et les tests

  • Un environnement de machine virtuelle est fourni pour le développement du pilote et les tests end-to-end
    • Cette VM fournit des GPIO busy/pulse simulés via gpio-sim, injectés dans le devicetree
    • Il est possible de contrôler les GPIO depuis l’espace utilisateur afin de mettre en œuvre des scénarios de test
  • La VM peut être construite et exécutée après activation du gestionnaire de paquets Nix et de la fonctionnalité flakes
  • Dans la VM, on arrive directement dans un shell de développement à la connexion
  • Le chargement et le déchargement du module sont également pris en charge après compilation du pilote
  • L’outil rotary_dialer permet de simuler un nombre précis d’impulsions pour tester la saisie au cadran
    • (dans un environnement de codage suédois, 3 impulsions sont reconnues comme le chiffre 2, par exemple)

Tests

  • Le pilote est fourni avec une suite de tests complète
  • Dans l’environnement VM, make test permet d’exécuter des cas automatisés
    • on peut vérifier diverses situations, comme le bon fonctionnement du périphérique d’entrée, l’émission du keycode correct lors de la saisie d’un chiffre au cadran, ou encore le traitement des entrées invalides

Intégration dans le mainline

  • Le développeur se dit optimiste sur l’avenir du cadran rotatif, tout en plaisantant sur le fait que Linus Torvalds pourrait ne pas partager cet avis

1 commentaires

 
GN⁺ 2025-05-25
Commentaires sur Hacker News
  • Souvenir partagé de la fin des années 70, lorsqu’il avait lui-même fabriqué un composeur téléphonique rotatif avec une calculatrice HP41C : il avait relié un relais Reed sans contact à un buzzer piézo et à la ligne téléphonique, puis utilisé le « synthetic programming » (commandes non documentées) pour produire de brèves tonalités et compléter les impulsions de numérotation ; il entrait un nom (avec prise en charge de l’alphabet), la machine trouvait le numéro et l’appelait directement. Il raconte aussi qu’il y a 10 ans, en rencontrant Keith Jarrett dans son entreprise, les gens le confondaient souvent avec le musicien, alors que lui lui a demandé s’il était bien l’auteur du HP-41C Synthetic Programming Manual, ce qui a suscité chez lui surprise et joie. Liens associés : infos sur le livre et infos sur le synthetic programming
    • Quelqu’un demande s’il avait écrit lui-même ce programme directement sur la calculatrice, et se vante d’avoir fait quelque chose de similaire sur une hp49g ; avec l’écran sur une seule ligne de la 41c, cela a dû être un défi bien plus impressionnant
  • Partage d’une expérience de transformation d’un téléphone à cadran en véritable casque Bluetooth complet, avec possibilité de composer les numéros via le cadran. La réaction sur HN a été mitigée, mais le projet a été présenté sur hackaday, ce qui lui a fait plaisir. Liens : projet associé et article de blog personnel. Il pense qu’un mode pavé numérique rotatif Bluetooth serait aussi facile à créer, mais manque de temps
    • De nos jours, un ESP32 serait un choix bien plus économique, mais il tenait absolument à créer un driver du noyau Linux, donc il l’a implémenté lui-même
  • À l’époque où l’iPhone n’était encore qu’une rumeur, quelqu’un avait proposé de recréer un cadran rotatif à partir de la molette tactile de l’iPod, mais tout le monde avait rejeté l’idée ; il envisage de configurer une box Linux pour retrouver cette sensation classique du cadran rotatif
    • Il précise qu’il n’était pas seul : Apple a effectivement déposé un brevet pour un cadran rotatif à molette tactile, avec Steve Jobs parmi les inventeurs. Lui-même et un collègue chez Apple avaient déposé un brevet presque identique, mais le sien a expiré et seul celui de Steve subsiste. Il raconte qu’à SF, pendant une soirée arrosée, l’idée de composer avec la molette tactile lui est venue, fortement inspirée par l’importance du moteur physique dans les jeux de flipper, et que cette idée a été reconnue par le comité des brevets. Il estime qu’il existait des différences avec le brevet de Steve, mais que cela relevait peut-être aussi d’une stratégie visant à augmenter le nombre de brevets liés à l’iPhone
    • Il imagine qu’une sortie de l’iPod avec seulement un réseau cellulaire ajouté aurait créé une histoire alternative amusante, et partage aussi une vidéo sur une saisie efficace
    • Supposition qu’il existe forcément une application permettant de composer un numéro avec un cadran rotatif sur écran tactile
  • Enthousiasme à l’idée que quelqu’un ait enfin tenté de finir Dark Souls avec un téléphone à cadran rotatif
    • Cela rappelle à quelqu’un ses souvenirs de parties à Soul Calibur avec la canne à pêche de la Dreamcast
  • Cela lui fait penser au driver créé par Sarah, du Connections Museum de Seattle, pour permettre le pulse signaling sur un ancien standard téléphonique connecté au soft PBX Asterisk ; il partage aussi un lien vers une vidéo explicative
  • En voyant ce type d’implémentation minimaliste de driver, quelqu’un est frappé par le fait que le code réel du driver peut être très court, alors qu’il faut malgré tout connaître énormément de flags et de méthodes du noyau. Il aurait voulu le réécrire en Rust, mais a été déçu par l’absence des bindings nécessaires. Il estime qu’un billet de blog sur l’approche choisie et les difficultés rencontrées serait intéressant
    • Il admet qu’il n’a pas pu aller très loin, car seuls quelques sous-systèmes API sont actuellement pris en charge par les bindings Rust ; il espère réessayer l’an prochain, lorsque le support sera plus mature, et partager son expérience
  • Souvenir que sur les modems compatibles Hayes, il était possible d’utiliser la numérotation par impulsions rotatives avec la commande ATDP au lieu de ATDT
  • Présentation d’un fait historique amusant : sur les téléphones rotatifs néo-zélandais, la correspondance entre chiffres et nombre d’impulsions était inversée ; le système utilisait bien des impulsions sur 10 chiffres
    • Explication technique : sur les premiers équipements de commutation téléphonique mécaniques de type rotary exchange, l’usure des clutch pads avait conduit à une conception inversée — par exemple 9 impulsions pour le chiffre 1 — afin de réduire l’usure globale. L’idée serait née en Nouvelle-Zélande, et la Norvège aurait adopté le même système. Lien Wikipédia sur le rotary system
  • Mention du besoin d’une version de conversion DTMF (touch-tone) ; en Australie, il existe des exemples de petits boîtiers alimentés par la ligne capables de convertir les impulsions rotatives en tonalités. Grâce à cela, on pouvait encore utiliser longtemps les lignes téléphoniques ordinaires, mais il regrette que les bâtiments récents n’aient même plus de ligne téléphonique
    • Il reste possible de le connecter à un FXS/ATA pour l’utiliser comme téléphone voip, et même un téléphone candlestick des années 1920 fonctionne encore ainsi
  • Au moment même où il lit cet article, quelqu’un a justement un téléphone à cadran démonté sur son bureau et est en train de retendre le ressort, trouvant la coïncidence remarquable
    • Quelqu’un demande depuis combien de temps le téléphone est réellement démonté sur le bureau ; il répond que, chez lui aussi, c’est probablement similaire, peut-être environ 2 ans