1 puan yazan GN⁺ 2025-05-25 | 1 yorum | WhatsApp'ta paylaş
  • Rotary Phone Dial Linux Kernel Driver, eski döner çevirmeli telefonları Linux'un evdev giriş aygıtına dönüştüren bir çekirdek modülüdür
  • Proje, basit bir örnek sürücü ve sanal makine tabanlı geliştirme ortamı sunarak eğitim ve test amaçları için de oldukça kullanışlıdır
  • Gerçek donanım olmadan da geliştirme ve test yapılabilir; GPIO simülasyonu desteklenir
  • Neredeyse tüm tuş eşleme yapılandırmalarını destekler ve ülkeden ülkeye değişen çeşitli pulse kodlama yöntemlerine uyum sağlayabilir
  • Standart bir çekirdek modülü olduğu için Linux sistemlerine kolayca genişletilebilir ve entegre edilebilir

Rotary Phone Dial Linux Kernel Driver'a genel bakış

  • Bu proje, eski döner çevirmeli telefonların kadranını Linux sisteminde standart bir giriş aygıtına (ör. sayısal tuş takımı) dönüştüren bir çekirdek modülüdür
  • Aşağıdaki kişiler için kullanmayı düşünmeye değer olabilir
    • Yavaş çevirme hızıyla sayı girişi yapmak isteyenler
    • Eski analog telefonları dijital çağa taşımak isteyen kullanıcılar
    • Gerçek donanım olmadan örnek bir çekirdek sürücüsü ile sanal geliştirme/test ortamına ihtiyaç duyan eğitmenler
    • Diğer yaratıcı deneysel amaçlar

Devre bağlantısı

  • Döner kadran temel olarak iki anahtardan oluşur: BUSY (açık durum) ve PULSE (kapalı durum)
    • Bu iki anahtar, gömülü Linux çalıştırabilen bir sistemin GPIO pinlerine pull-up dirençleriyle birlikte bağlanır
  • Kadran çevrildiğinde BUSY anahtarı kapalı duruma geçer; kadran başlangıç konumuna dönerken PULSE anahtarı tekrar tekrar açılıp kapanır
  • Bağlantı ve pin dizilimi, ülkeye veya üreticiye göre değiştiğinden anahtar tepkilerini bir multimetreyle test etmek önerilir
  • Pulse sinyalinin duty cycle'ı (açık/kapalı süresi) ve çözümleme yöntemi de ülke ve üreticiye göre farklılık gösterir
    • Örnek: Almanya'da pulse başına 62 ms açık, 38 ms kapalı
    • Genellikle bir ila dokuz pulse 1-9'a, on pulse ise 0'a karşılık gelir (İsveç vb. istisnalar vardır)
  • Emin olunamıyorsa kadrandaki etiket kontrol edilmeli veya test yapılmalıdır

Kullanım

  • Bu sürücü, standart bir çekirdek dışı modüldür (out-of-tree kernel module)
  • Adımlar özetle şöyledir
    • Aygıt ağacına rotary-dial düğümü ekleyin, pulse-gpios ve busy-gpios alanlarını gerçek pinlere eşleyin
    • Gerekirse linux,keycodes özelliğiyle tuş kodu eşlemesini değiştirin
    • Çekirdek kaynak yolu (KDIR) için ortam değişkeni tanımlayıp derleyin, kurun ve modülü yükleyin
  • Çekirdek modülü yüklendiğinde bir giriş aygıtı oluşturulur ve sayısal tuş takımı gibi çalışır
  • Giriş aygıtı özellikleri ile kadran olayları evemu aracıyla izlenebilir

Geliştirme ve test için sanal makine (VM)

  • Sürücü geliştirme ve uçtan uca test için bir sanal makine ortamı sunulur
    • Bu VM, gpio-sim ile simüle edilen busy/pulse GPIO'larını devicetree'ye yama olarak eklenmiş şekilde sağlar
    • Kullanıcı alanından GPIO'lar kontrol edilerek test senaryoları uygulanabilir
  • Nix paket yöneticisi ve flakes özelliği etkinleştirildikten sonra VM derlenip çalıştırılabilir
  • VM içinde doğrudan geliştirme kabuğuna giriş yapılır
  • Sürücü derlendikten sonra modül yükleme/boşaltma da desteklenir
  • rotary_dialer aracıyla belirli pulse sayıları simüle edilerek kadran girişi test edilebilir
    • (Örneğin İsveç tarzı kodlama ortamında 3 pulse, 2 rakamı olarak algılanır)

Testler

  • Sürücüyle birlikte kapsamlı bir test paketi de sunulur
  • VM ortamında make test ile otomatik test senaryoları çalıştırılabilir
    • Giriş aygıtı davranışının doğrulanması, kadrandan sayı girildiğinde doğru tuş kodunun üretilmesi, hatalı girişlerin işlenmesi gibi çeşitli durumlar kontrol edilebilir

Mainline'a girme durumu

  • Geliştirici, döner kadranın geleceğine olumlu bakıyor; ancak Linus Torvalds'ın buna katılmayabileceğini esprili bir dille belirtiyor

1 yorum

 
GN⁺ 2025-05-25
Hacker News yorumları
  • 70'lerin sonlarında HP41C hesap makinesiyle döner kadranlı bir telefon çeviricisini bizzat yaptığına dair bir anısını paylaşıyor; temassız reed röleyi piezo buzzer ve telefon hattına bağlamış, synthetic programming (belgelenmemiş komutlar) kullanarak kısa bip sesleri üretip çevirme darbelerini tamamlamış. İsim girince (alfabe desteğiyle) numarayı bulup hemen arayan bir yöntem kullanmış. 10 yıl önce şirkette Keith Jarrett ile karşılaştığında insanların sık sık onun müzisyen olup olmadığını karıştırdığına dair bir anekdot da anlatıyor; kendisi ise ona HP-41C Synthetic Programming Manual'in yazarı olup olmadığını sormuş ve Jarrett'ın buna şaşkınlık ve sevinçle tepki verdiğini hatırlıyor. İlgili bağlantılar olarak kitap bilgisi ve synthetic programming bilgisi eklenmiş.
    • Acaba bu programı hesap makinesinin üzerinde doğrudan mı yazdığını merak ediyor; kendisinin de hp49g üzerinde doğrudan kod yazmış olduğunu söyleyip bununla övünüyor. Tek satırlık ekranı olan 41c'de bunun çok daha büyük bir meydan okuma olacağını düşünüyor.
  • Döner telefonunu tam işlevli bir Bluetooth kulaklığa dönüştürdüğü deneyimini paylaşıyor; kadranla numara çevirmek de mümkünmüş. HN'de pek ilgi görmemiş ama hackaday'de yer alınca gururlanmış. İlgili proje bağlantısı ve kişisel blog yazısı eklenmiş. Bluetooth döner kadranlı numara pedi modunun da yapılmasının kolay olacağını düşünüyor ama vakti yok.
    • Günümüzde ESP32 çok daha ekonomik bir seçenek ama özellikle bir Linux kernel sürücüsü yazmak istediği için bunu bizzat yaptığını anlatıyor.
  • iPhone hakkında sadece söylentilerin dolaştığı dönemde, iPod'un touch wheel'ini kullanarak döner kadranı yeniden yaratmanın eğlenceli olacağını öne sürdüğünü ama herkesin bunu reddettiğini anlatıyor. Klasik döner telefon hissi için bir Linux kutusu kurmak istediğini söylüyor.
    • Bunu düşünen tek kişi olmadığını belirtiyor; gerçekten de Apple touch wheel döner kadran patenti aldı ve Steve Jobs da mucitler listesinde yer alıyor. Kendisinin ve Apple'daki bir çalışma arkadaşının da neredeyse aynı patenti aldığı, ancak sonunda kendi patentinin süresi dolarken Steve'in patentinin kaldığı söyleniyor. SF'de içki içerken touch wheel ile bir kadran yapma fikrini attığında, pinball oyununun fizik motorunun önemli bir ilham kaynağı olduğunu ve bu fikrin patent komitesinde kabul gördüğünü anlatıyor. Steve'in patentiyle arasında farklar olsa da bunun iPhone patent sayısını artırma stratejisinin bir parçası olabileceğini düşünüyor.
    • Eğer iPod yalnızca hücresel ağ desteği eklenerek piyasaya sürülseydi ilginç bir alternatif tarih ortaya çıkabileceğini hayal ediyor. Ayrıca verimli yazı yazma videosu bağlantısı da paylaşılıyor.
    • Dokunmatik ekranda döner kadranla arama yapmayı sağlayan bir uygulamanın kesin vardır diye tahmin ediyor.
  • Sonunda birilerinin döner telefonla Dark Souls bitirmeyi denemiş gibi görünmesine seviniyor.
    • Bu, Dreamcast'in olta kumandasıyla Soul Calibur oynadığı günleri hatırlatıyor.
  • Seattle'daki Connections Museum'dan Sarah'nın Asterisk soft PBX'e bağlanıp eski telefon santralinde pulse signaling'i mümkün kılan bir sürücü yazmış olması aklına geliyor. Açıklama videosu bağlantısı da eklenmiş.
  • Böyle minimal sürücü uygulamalarını görünce, gerçek sürücü kodunun çok az olmasının yetebildiğini ama kernel bayrakları ve metodları hakkında bilinmesi gereken şeylerin gerçekten çok fazla olduğunu etkileyici buluyor. Bunu Rust ile yeniden yazmak istemiş ama gereken binding'ler hazır olmadığı için hayal kırıklığı yaşamış. Yaklaşımını ve yaşadığı zorlukları bir blog yazısında anlatmasının da ilginç olacağını düşünüyor.
    • Şu anda Rust binding'lerinin desteklediği subsystem API'lerinin sayısının az olduğunu, bu yüzden yeterince ilerleyemediğini itiraf ediyor. Gelecek yıl destek daha olgunlaşınca yeniden denemek ve deneyimlerini paylaşmak istiyor.
  • Hayes uyumlu modemlerde döner darbeli arama için ATDT yerine ATDP komutunun kullanılabildiğini hatırlatıyor.
  • Eğlenceli bir tarihsel bilgi olarak, Yeni Zelanda'daki döner telefonlarda rakamlarla darbe sayısının ters eşlendiğini anlatıyor; gerçekten de 10 haneli darbe yöntemi kullanılıyormuş.
    • Teknik gerekçeyi de açıklıyor: ilk dönem mekanik telefon santral ekipmanları olan rotary exchange sistemlerinde clutch pad aşınması sorunu nedeniyle, toplam aşınmayı azaltmak için 1 çevrildiğinde 9 darbe gibi ters tasarım fikri Yeni Zelanda'da ortaya çıkmış. Bildiği kadarıyla Norveç de aynı yöntemi benimsemiş. Rotary system hakkında Wikipedia bağlantısı eklenmiş.
  • DTMF (touch-tone) dönüştürmeli bir sürüme ihtiyaç olduğunu söylüyor. Avustralya'da döner darbeyi touch-tone'a çeviren küçük, hat enerjisiyle çalışan kutular yapıldığı örnekler varmış. Bu sayede normal telefon hattı varken uzun süre kullanılabilmiş ama son dönemde binalarda telefon hattının tamamen kalkmış olmasına üzüldüğünü belirtiyor.
    • Yine de FXS/ATA'ya bağlayıp bir voip telefonu olarak kullanmak hâlâ mümkün. 1920'lerden kalma candlestick telefonunu da hâlâ bu yöntem sayesinde kullandığını söylüyor.
  • Bu yazıyı gördüğü anda tesadüfen masasının üzerinde sökülmüş hâlde duran döner telefonu kurup zembereğini sarıyor olduğunu, bu rastlantının hoşuna gittiğini söylüyor.
    • Telefonun gerçekten ne kadar süredir sökülmüş hâlde masanın üstünde durduğunu merak ediyor; kendisinde de benzer durum olduğunu ve muhtemelen yaklaşık 2 yıl geçtiğini söyleyerek empati kuruyor.