1 पॉइंट द्वारा GN⁺ 2025-05-25 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Rotary Phone Dial Linux Kernel Driver एक kernel module है जो पुराने dial-type टेलीफोन को Linux के evdev input device में बदल देता है
  • यह प्रोजेक्ट सरल example driver और virtual machine-आधारित development environment प्रदान करता है, इसलिए शिक्षा और testing उद्देश्यों के लिए भी बेहद उपयोगी है
  • वास्तविक hardware के बिना भी development और testing संभव है, और GPIO simulation का समर्थन करता है
  • यह लगभग सभी keymapping settings को support करता है, और विभिन्न देशों की अलग-अलग pulse encoding schemes के साथ भी काम कर सकता है
  • चूंकि यह एक standard kernel module है, इसलिए इसे Linux systems में आसानी से extend और integrate किया जा सकता है

Rotary Phone Dial Linux Kernel Driver अवलोकन

  • यह प्रोजेक्ट पुराने rotary टेलीफोन के dial को Linux system के standard input device (जैसे: numeric keypad) में बदलने वाला एक kernel module है
  • निम्न प्रकार के लोग इसका उपयोग करने पर विचार कर सकते हैं
    • यदि आप धीमी dialing के जरिए नंबर input करना चाहते हैं
    • ऐसे उपयोगकर्ता जो पुराने analog telephone को digital युग में लाना चाहते हैं
    • शिक्षक, जिन्हें वास्तविक hardware के बिना example kernel driver और virtual development/testing environment चाहिए
    • या अन्य रचनात्मक प्रयोगों के लिए

सर्किट कनेक्शन विधि

  • rotary dial मूल रूप से दो switches से बना होता है: BUSY (open state) और PULSE (closed state)
    • इन दोनों switches को pull-up resistor के साथ embedded Linux समर्थित system के GPIO pins से जोड़ा जाता है
  • dial घुमाने पर BUSY switch closed state में बदल जाता है, और जब dial अपनी मूल स्थिति में लौटता है तब PULSE switch बार-बार open/close होता है
  • wiring और pin layout देश या निर्माता के अनुसार अलग हो सकते हैं, इसलिए multimeter से switch behavior को test करना recommended है
  • pulse signal का duty cycle (open/close timing) और decoding method भी देश और निर्माता के अनुसार अलग होते हैं
    • उदाहरण: Germany में प्रति pulse 62ms open, 38ms closed
    • सामान्यतः एक से नौ pulses का अर्थ 1~9 होता है, और दस pulses का अर्थ 0 होता है (Sweden आदि में अपवाद हैं)
  • यदि स्पष्ट न हो, तो dial के label की जाँच करें या परीक्षण करें

उपयोग

  • यह driver एक standard out-of-tree kernel module है
  • चरणों का सारांश
    • device tree में rotary-dial node जोड़ें, और pulse-gpios तथा busy-gpios को वास्तविक pins से map करें
    • आवश्यकता होने पर linux,keycodes property से keycode map बदलें
    • environment variable के रूप में kernel source path (KDIR) सेट करें, फिर build और install करके module load करें
  • kernel module load होने पर input device बन जाता है और numeric keypad की तरह काम करता है
  • evemu tool से input device properties और dial events को monitor किया जा सकता है

development और testing के लिए virtual machine (VM)

  • driver development और end-to-end testing के लिए virtual machine environment प्रदान किया गया है
    • यह VM devicetree में gpio-sim से simulate किए गए busy/pulse GPIO को patch करके उपलब्ध कराया जाता है
    • user space से GPIO को control करके test scenarios लागू किए जा सकते हैं
  • Nix package manager और flakes feature enable करने के बाद VM को build और run किया जा सकता है
  • VM के भीतर सीधे development shell में login हो जाता है
  • driver build करने के बाद module loading/unloading भी supported है
  • rotary_dialer tool से pulse की एक निश्चित संख्या simulate करके dial input test किया जा सकता है
    • (उदाहरण के लिए, Sweden-style coding environment में 3 pulses को संख्या 2 के रूप में पहचाना जाता है)

testing

  • driver के साथ एक comprehensive test suite भी दी गई है
  • VM environment में make test से automated cases चलाए जा सकते हैं
    • input device behavior का verification, dial से संख्या input पर सही keycode emission की जाँच, गलत input handling आदि जैसे कई scenarios की जाँच संभव है

mainline में शामिल होने की स्थिति

  • developer ने मज़ाकिया अंदाज़ में कहा है कि वह rotary dial के भविष्य को सकारात्मक रूप से देखते हैं, हालांकि Linus Torvalds शायद सहमत न हों

1 टिप्पणियां

 
GN⁺ 2025-05-25
Hacker News की राय
  • 70 के दशक के आख़िर में HP41C calculator से rotary phone dialer खुद बनाने की याद साझा की; contactless reed relay को piezo buzzer और telephone line से जोड़ा था, और synthetic programming (undocumented commands) का उपयोग करके छोटी beep ध्वनियाँ बनाकर dial pulse पूरे किए थे। नाम (alphabet support) डालने पर नंबर खोजकर तुरंत कॉल करने वाला तरीका इस्तेमाल किया था। 10 साल पहले कंपनी में Keith Jarrett से मिलने पर लोग अक्सर उन्हें musician समझ लेते थे, लेकिन इन्होंने उल्टा उनसे पूछा कि क्या वे HP-41C Synthetic Programming Manual के लेखक हैं, तो उन्होंने हैरानी और खुशी जताई थी। साथ में किताब की जानकारी और synthetic programming जानकारी के लिंक भी जोड़े
    • जिज्ञासा जताई कि क्या ऐसा प्रोग्राम सीधे calculator पर ही बनाया गया था; खुद ने भी hp49g पर सीधे लिखने की बात गर्व से कही, और राय दी कि 1-line display वाला 41c तो इससे भी बड़ा challenge रहा होगा
  • rotary phone को पूरा Bluetooth headset में mod करने का अनुभव साझा किया, और dial से भी नंबर दबाने लायक बनाया। HN पर प्रतिक्रिया खास नहीं मिली, लेकिन hackaday में फीचर होने पर गर्व महसूस हुआ। संबंधित project link और व्यक्तिगत blog post भी जोड़े। लगता है कि Bluetooth rotary numpad mode बनाना भी आसान होगा, लेकिन समय की कमी है
    • आजकल ESP32 कहीं ज़्यादा किफायती विकल्प है, लेकिन Linux kernel driver ज़रूर बनाना था, इसलिए खुद implement किया था
  • iPhone के सिर्फ़ rumor चलने वाले दिनों में सुझाव दिया था कि iPod के touch wheel से rotary dial जैसा अनुभव बनाना मज़ेदार होगा, लेकिन सबने मना कर दिया था। classic rotary एहसास के लिए Linux box सेट करने का भी विचार आया
    • बताया कि वे अकेले नहीं थे; वास्तव में Apple ने touch wheel rotary dial का patent दर्ज किया था, और Steve Jobs भी inventors की सूची में थे। इन्होंने और Apple के एक सहकर्मी ने भी लगभग वैसा ही patent दायर किया था, लेकिन आखिरकार इनका patent खत्म हो गया और Steve का patent ही बचा। SF में drinks के दौरान touch wheel से dial बनाने का विचार देने पर pinball game का physics engine बड़ी प्रेरणा था, और यही विचार patent committee को भी पसंद आया था। Steve के patent से कुछ अंतर थे, लेकिन शायद iPhone patents की संख्या बढ़ाने की रणनीति भी रही होगी
    • कल्पना की कि अगर iPod को सिर्फ़ cellular networking जोड़कर launch किया गया होता, तो एक दिलचस्प alternative history बन सकती थी। efficient typing video link भी साझा किया
    • अंदाज़ा लगाया कि touchscreen पर rotary dial से कॉल करने वाला app ज़रूर मौजूद होगा
  • इस बात से उत्साहित हैं कि लगता है आखिर किसी ने rotary phone से Dark Souls clear करने की कोशिश की है
    • इससे Dreamcast के fishing rod controller पर Soul Calibur खेलने की याद आ गई
  • Seattle Connections Museum की Sarah की याद आई, जिन्होंने Asterisk soft PBX से जोड़कर पुराने telephone exchange में pulse signaling संभव बनाने वाला driver बनाया था। समझाने वाला video link भी साझा किया
  • ऐसे minimal driver implementations देखकर लगा कि असली driver code बहुत कम भी हो सकता है, लेकिन kernel flags और methods के बारे में जानने की ज़रूरत बहुत ज़्यादा होती है। इसे Rust में फिर से implement करना चाहते थे, लेकिन ज़रूरी bindings तैयार नहीं थीं, इसलिए अफ़सोस रहा। राय दी गई कि अपने approach और आई मुश्किलों पर blog post लिखना भी दिलचस्प होगा
    • स्वीकार किया कि अभी Rust bindings से supported subsystem APIs बहुत कम हैं, इसलिए काफ़ी आगे नहीं बढ़ पाए; उम्मीद जताई कि अगले साल support और mature होने पर फिर कोशिश करेंगे और अनुभव साझा करेंगे
  • Hayes-compatible modem में ATDT की जगह ATDP command इस्तेमाल करके rotary pulse dialing किया जा सकता था, यह पुरानी याद साझा की गई
  • एक दिलचस्प ऐतिहासिक तथ्य के तौर पर बताया गया कि New Zealand के rotary phones में digits और pulse counts की mapping उल्टी थी; वास्तव में 10-digit pulse तरीका इस्तेमाल होता था
    • तकनीकी वजह भी समझाई गई: शुरुआती mechanical telephone exchange equipment, यानी rotary exchange, में clutch pad के घिसाव की समस्या कम करने के लिए 1 dial करने पर 9 pulses जैसे उल्टे डिज़ाइन अपनाए गए थे ताकि कुल wear कम हो। यह विचार New Zealand में शुरू हुआ था, और जानकारी के अनुसार Norway ने भी यही तरीका अपनाया था। rotary system पर Wikipedia link भी जोड़ा
  • DTMF (touch-tone) conversion version की ज़रूरत का ज़िक्र किया; Australia में rotary pulse को touch-tone में बदलने वाला छोटा line-powered box बनाने के उदाहरण हैं। इसकी वजह से सामान्य telephone line के साथ इन्हें लंबे समय तक इस्तेमाल किया जा सकता था, लेकिन हाल के buildings में telephone line ही नहीं बची, इस पर अफ़सोस जताया गया
    • FXS/ATA से जोड़कर इसे अब भी voip phone की तरह इस्तेमाल किया जा सकता है; 1920s का candlestick phone भी अभी इसी तरीके से इस्तेमाल हो रहा है
  • यह पोस्ट देखते समय संयोग से rotary phone मेज़ पर खोले हुए पड़ा था और उसकी spring चढ़ाई जा रही थी, इसलिए यह इत्तफ़ाक़ काफ़ी रोचक लगा
    • पूछा गया कि फोन वास्तव में कितने समय से खुली हालत में मेज़ पर पड़ा है; जवाब में सहमति जताई गई कि खुद के साथ भी ऐसा ही है, शायद करीब 2 साल से