1 ポイント 投稿者 GN⁺ 2025-05-25 | 1件のコメント | WhatsAppで共有
  • Rotary Phone Dial Linux Kernel Driver は、古いダイヤル式電話機を Linux の evdev 入力デバイス に変換するカーネルモジュール
  • このプロジェクトは、シンプルなサンプルドライバーと仮想マシンベースの開発環境を提供しており、教育およびテスト用途としても非常に有用
  • 実際のハードウェアがなくても開発とテストが可能で、GPIO シミュレーションをサポート
  • ほぼすべてのキーマッピング設定をサポートし、各国の多様なパルス符号化方式にも対応可能
  • 標準的なカーネルモジュールであるため、Linux システムへの拡張および統合が容易

Rotary Phone Dial Linux Kernel Driver 概要

  • このプロジェクトは、古い回転式(ロータリー)電話機のダイヤルを Linux システムの標準入力デバイス(例: テンキー)へ変換するカーネルモジュール
  • 次のような人が利用を検討できる
    • ゆっくりしたダイヤル操作で数字を入力したい場合
    • 昔のアナログ電話機をデジタル時代へ持ち込みたいユーザー
    • 実機なしでサンプルカーネルドライバーと仮想開発/テスト環境を必要とする教育者
    • その他、創造的な実験目的など

回路の接続方法

  • 回転ダイヤルは基本的に BUSY(開放状態)PULSE(閉状態) の 2 つのスイッチで構成される
    • これら 2 つのスイッチは、組み込み Linux が動作するシステムの GPIO ピン にプルアップ抵抗とともに接続される
  • ダイヤルを回すと BUSY スイッチが閉状態になり、ダイヤルが元の位置へ戻る間、PULSE スイッチが繰り返し開閉する
  • 接続方法とピン配置は国やメーカーによって異なるため、マルチメーターでスイッチの反応を確認することが推奨される
  • パルス信号のデューティサイクル(開放/閉状態の時間)デコード方式も国やメーカーごとに異なる
    • 例: ドイツでは 1 パルスあたり開放 62ms、閉状態 38ms
    • 通常は 1 回〜9 回のパルスが 1〜9、10 回のパルスが 0 を表す(スウェーデンなど例外あり)
  • 不明な場合は、ダイヤルのラベルを確認するかテストが必要

使い方

  • このドライバーは標準的なカーネル外部モジュール(out-of-tree kernel module)
  • 手順を要約すると
    • デバイスツリーに rotary-dial ノードを追加し、pulse-gpiosbusy-gpios を実際のピンにマッピング
    • 必要に応じて linux,keycodes プロパティでキーコードマップを変更
    • カーネルソースのパス(KDIR)を環境変数で指定してからビルドとインストールを行い、モジュールをロード
  • カーネルモジュールがロードされると入力デバイスが作成され、テンキーとして動作する
  • evemu ツールで入力デバイスの属性やダイヤルイベントを監視可能

開発およびテスト用仮想マシン(VM)

  • ドライバー開発とエンドツーエンドテストのための仮想マシン環境を提供
    • この VM は、gpio-sim でシミュレーションされる busy/pulse GPIO を devicetree にパッチした形で提供される
    • ユーザー空間から GPIO を制御してテストシナリオを実装可能
  • Nix パッケージマネージャーと flakes 機能を有効にしたうえで VM をビルドし、実行できる
  • VM 内ではすぐに開発シェルへログインされる
  • ドライバーをビルドした後、モジュールのロード/アンロードもサポート
  • rotary_dialer ツールで特定のパルス数をシミュレーションし、ダイヤル入力のテストが可能
    • (スウェーデン式の符号化環境では、3 パルスが数字 2 として認識される、など)

テスト

  • ドライバーには包括的なテストスイートも付属
  • VM 環境で make test を実行すると自動化されたケースを実行できる
    • 入力デバイスの動作検証、ダイヤル数字入力時に正しいキーコードが送出されるかの確認、不正な入力の処理など、さまざまな状況を確認可能

メインライン登録の可否

  • 開発者はロータリーダイヤルの未来を前向きに見ているが、Linus Torvalds は同意しないかもしれないとユーモラスに述べている

1件のコメント

 
GN⁺ 2025-05-25
Hacker Newsのコメント
  • 70年代後半にHP41C電卓でロータリーダイヤル式電話のダイヤラーを自作した思い出を共有。無接点のリードリレーをピエゾブザーと電話線につなぎ、「synthetic programming」(文書化されていない命令)を使って短いビープ音を出し、ダイヤルパルスを完成させたという体験談。名前(アルファベット対応)を入力すると番号を探してそのまま発信する仕組みを使っており、10年前に勤務先でKeith Jarrettに会った際、人々が彼をミュージシャンだとよく勘違いしていたという逸話や、自分はむしろHP-41C Synthetic Programming Manualの著者本人かと尋ねたところ、彼が驚きと喜びを見せた思い出も語っている。関連リンクとして本の情報synthetic programmingの情報を添付
    • そのプログラムを電卓上で直接作ったのか気になるという反応。自分もhp49gで直接書いたことがあると語り、1行表示の41cではさらにすごい挑戦だっただろうという意見
  • ロータリー式電話を完全なBluetoothヘッドセットに改造した経験を共有。ダイヤルでも番号入力できるようにしたとのこと。HNではあまり反応がなかったがhackadayで取り上げられてうれしかったとし、関連プロジェクトへのリンク個人ブログ記事を添付。Bluetoothロータリー式ナンバーパッドモードも簡単に作れそうだと思うが、時間が足りない状況
    • 今ではESP32のほうがずっと経済的な選択肢だが、Linuxカーネルドライバーをどうしても作りたくて自作したという体験談
  • iPhoneがまだ噂だけだった頃、iPodのタッチホイールを使ってロータリーダイヤルを再現したら面白いのではと提案したが、全員に却下された経験。クラシックなロータリー感を味わうためにLinuxボックスをセットアップしたいという話
    • 自分だけではなかったと明かし、実際にAppleがタッチホイール式ロータリーダイヤルの特許を取得しており、Steve Jobsも発明者一覧に含まれているという話。本人とAppleの同僚もほぼ同じ特許を出していたが、結局自分の特許は失効し、Steveの特許だけが残ったとのこと。サンフランシスコで飲んでいたときに自分がタッチホイールでダイヤルを作るアイデアを出し、ピンボールゲームの物理エンジンが重要な着想源になったこと、そのアイデアが特許委員会で認められた経験も語っている。Steveの特許とは違いがあったが、iPhoneの特許件数を増やす戦略もあったのではないかという見方
    • もしiPodにセルラーネットワークだけ付けて発売していたら、面白いもう一つの歴史が生まれていたかもしれないという想像。効率的なタイピング動画へのリンクも紹介
    • タッチスクリーンでロータリーダイヤル式に電話をかけるアプリは、きっと存在するだろうという推測
  • ついに誰かがロータリー式電話でDark Soulsクリアに挑戦したようで興奮する
    • Dreamcastの釣り竿コントローラーでSoul Caliburを遊んだ思い出がよみがえる
  • シアトルのConnections MuseumのSarahが、AsteriskソフトPBXと接続して旧式の電話交換機でpulse signalingを可能にするドライバーを作ったことを思い出す。解説動画へのリンクも紹介
  • このようなミニマルなドライバー実装を見ると、実際のドライバーコードはとても少なくても十分だが、カーネルのフラグやメソッドについて知るべきことは本当に多いと感じて印象的だという声。Rustで再実装したかったが必要なバインディングが整っておらず残念だった体験や、アプローチや苦労した点をブログ記事に残すのも面白そうだという意見
    • 現状ではRustバインディングでサポートされるサブシステムAPIが少なく、十分に進められなかったと告白。来年さらに成熟したら再挑戦して経験を共有したいという願い
  • Hayes互換モデムではATDTの代わりにATDPコマンドを使うことで、ロータリー式のパルスダイヤルが可能だったという懐かしい話
  • 面白い歴史的事実として、ニュージーランドのロータリー式電話では数字とパルス数の対応が逆だったことを紹介。実際に10-digit pulse方式を使っていたとのこと
    • 技術的な理由の説明。初期の機械式電話交換設備であるrotary exchangeでは、クラッチパッドの摩耗の問題があり、全体の摩耗を減らすために1を回すと9パルスになるなど逆順に設計したアイデアがニュージーランドで始まったという。ノルウェーも同じ方式を採用していたはずだと述べ、rotary systemに関するWikipediaリンクを添付
  • DTMF(タッチトーン)変換版の必要性に言及。オーストラリアではロータリーパルスをタッチトーンに変換する小型のライン給電ボックスを作った事例があり、そのおかげで通常の電話線を使う限り長く使えたが、最近の建物では電話線自体がなくなっていて残念だという話
    • FXS/ATAにつないでVoIP電話として使うことは今でも可能で、1920年代のキャンドルスティック電話もこの方法のおかげで今なお使っているとのこと
  • この投稿を見ているちょうどその時、ロータリー式電話を机の上で分解したままゼンマイを巻いている最中だったので、この偶然が不思議に感じられるという話
    • 実際その電話機が分解されたまま机の上にどれくらい置かれていたのか気になる、自分も似たようなもので、たぶん2年くらいだと思うという共感