- Der Rotary Phone Dial Linux Kernel Driver ist ein Kernel-Modul, das ein altes Wählscheibentelefon in ein evdev-Eingabegerät unter Linux umwandelt
- Das Projekt stellt einen einfachen Beispieltreiber und eine VM-basierte Entwicklungsumgebung bereit und ist dadurch auch für Lern- und Testzwecke sehr nützlich
- Entwicklung und Tests sind auch ohne echte Hardware möglich; GPIO-Simulation wird unterstützt
- Es unterstützt nahezu jede Keymapping-Konfiguration und kommt auch mit den verschiedenen Puls-Kodierungsverfahren unterschiedlicher Länder zurecht
- Da es sich um ein Standard-Kernel-Modul handelt, lässt es sich leicht in Linux-Systeme erweitern und integrieren
Überblick über den Rotary Phone Dial Linux Kernel Driver
- Dieses Projekt ist ein Kernel-Modul, das die Wählscheibe eines alten Telefons in ein Standard-Eingabegerät eines Linux-Systems (z. B. einen Nummernblock) umwandelt
- Es ist unter anderem interessant für folgende Nutzergruppen
- Wer Zahlen über langsames Wählen eingeben möchte
- Nutzer, die ein altes analoges Telefon ins digitale Zeitalter holen möchten
- Lehrende, die einen Beispiel-Kernel-Treiber und eine virtuelle Entwicklungs-/Testumgebung ohne echte Hardware benötigen
- Sonstige kreative Experimente
Schaltungsanschluss
- Eine Wählscheibe besteht grundsätzlich aus zwei Schaltern: BUSY (offener Zustand) und PULSE (geschlossener Zustand)
- Diese beiden Schalter werden zusammen mit Pull-up-Widerständen an die GPIO-Pins eines Systems mit Embedded Linux angeschlossen
- Wird die Wählscheibe gedreht, wechselt der BUSY-Schalter in den geschlossenen Zustand, und während die Scheibe in ihre Ausgangsposition zurückkehrt, öffnet und schließt der PULSE-Schalter wiederholt
- Da Anschluss und Pinbelegung je nach Land oder Hersteller unterschiedlich sind, wird empfohlen, das Schaltverhalten mit einem Multimeter zu testen
- Auch Duty Cycle (Öffnungs-/Schließzeit) des Pulssignals und das Dekodierungsverfahren unterscheiden sich je nach Land und Hersteller
- Beispiel: In Deutschland beträgt die Öffnungszeit pro Puls 62 ms, die Schließzeit 38 ms
- Üblicherweise stehen ein bis neun Pulse für 1–9 und zehn Pulse für 0 (mit Ausnahmen wie Schweden)
- Im Zweifel sollte das Label der Wählscheibe geprüft oder ein Test durchgeführt werden
Verwendung
- Dieser Treiber ist ein standardmäßiges out-of-tree kernel module
- Die Schritte in Kurzform
- Im Device Tree einen
rotary-dial-Knoten hinzufügen und pulse-gpios sowie busy-gpios auf die realen Pins abbilden
- Falls nötig, die Keycode-Zuordnung über die Eigenschaft
linux,keycodes ändern
- Den Kernel-Quellpfad (
KDIR) als Umgebungsvariable setzen, dann bauen, installieren und das Modul laden
- Nach dem Laden des Kernel-Moduls wird ein Eingabegerät erzeugt, das sich wie ein Nummernblock verhält
- Mit dem Tool evemu lassen sich die Eigenschaften des Eingabegeräts und die Wählscheiben-Ereignisse überwachen
Virtuelle Maschine (VM) für Entwicklung und Tests
- Für die Treiberentwicklung und End-to-End-Tests wird eine VM-Umgebung bereitgestellt
- Diese VM patcht den Device Tree mit durch gpio-sim simulierten busy/pulse-GPIOs
- GPIOs können aus dem User Space gesteuert werden, um Testszenarien umzusetzen
- Nach Aktivierung des Nix-Paketmanagers und der Flakes-Funktion lässt sich die VM bauen und starten
- Innerhalb der VM landet man direkt in einer Development Shell
- Nach dem Bauen des Treibers werden auch das Laden und Entladen des Moduls unterstützt
- Mit dem Tool
rotary_dialer lässt sich zur Prüfung der Wähleingabe eine bestimmte Pulszahl simulieren
- (In einer schwedischen Kodierungsumgebung werden 3 Pulse beispielsweise als die Ziffer 2 erkannt)
Tests
- Der Treiber wird zusammen mit einer umfassenden Testsuite bereitgestellt
- In der VM-Umgebung lassen sich mit
make test automatisierte Testfälle ausführen
- Dabei können verschiedene Szenarien geprüft werden, etwa die korrekte Funktion des Eingabegeräts, die Ausgabe des richtigen Keycodes bei gewählten Ziffern oder die Behandlung fehlerhafter Eingaben
Aufnahme in den Mainline-Kernel
- Der Entwickler blickt optimistisch auf die Zukunft der Wählscheibe, merkt aber scherzhaft an, dass Linus Torvalds das womöglich anders sieht
1 Kommentare
Hacker-News-Kommentare
ATDTden BefehlATDPfür Wählscheiben-Impulswahl verwenden konnte