[{"data":1,"prerenderedAt":281},["ShallowReactive",2],{"project-44080803":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":18,"aspects":34,"strip":37,"post_text":39,"what":40,"said":63,"maker_in_thread":93,"shape":100,"grid":105,"attempts":244,"same_week":245,"maker_shows":135,"maker_hidden":274,"reader_version":275,"card":276},"44080803","rotary_dial_kmod","Rotary Phone Dial Linux Kernel Driver","title","Show HN: Rotary Phone Dial Linux Kernel Driver","https:\u002F\u002Fgitlab.com\u002Fsephalon\u002Frotary_dial_kmod","gitlab.com","sephalon",1748091720,2025,337,49,145,3837,4,"legend","hardware","linux kernel driver","library",[24,21,25,26,27],"rotary dial","evdev","input device","embedded linux","quiet",null,{"positive":31,"neutral":32,"mixed":33,"critical":33},1,3,0,{"idea":35,"execution":36},{"positive":33,"critical":33},{"positive":31,"critical":33},[33,33,33,33,33,33,33,33,32,33,33,33,33,33,33,33,33,33,32,32,33,33,33,33,33,38,33,33,33,33,33,33,33,33,33,33,33,33,33,33],5,"A Linux kernel driver that turns a rotary phone dial into an evdev input device. You might be interested in this driver if you\n\n- prefer the slow pace of dialing over typing numbers with your numpad,\n\n- want to bring your old rotary phone into the digital era,\n\n- are an educator looking for a simple example driver with a VM-based end-to-end development & test environment (no real hardware needed)\n\n- have another creative use case in mind!\n\nThis driver was my introduction to embedded Linux years ago—and ultimately led to my career. However, it remained unfinished and unpublished until now. Init",{"problem":41,"audience":47,"pricing":29,"motivation":51,"time_to_build":29,"stack":55,"openness":61,"stage":62,"team_size":62},{"value":42,"source":43,"evidence":44},"Lets a rotary phone dial be used as a computer input device for typing numbers","maker",[45],{"id":46},"post",{"value":48,"source":43,"evidence":49},"Hobbyists with rotary phones and educators teaching kernel drivers",[50],{"id":46},{"value":52,"source":43,"evidence":53},"Was the maker's introduction to embedded Linux and a simple educational driver example",[54],{"id":46},[56],{"value":57,"source":58,"evidence":59},"Linux kernel (C)","inferred",[60],{"id":46},"open_source","unknown",{"praise":64,"objections":73,"requests":74,"questions":79,"alternatives":86},[65],{"value":66,"source":67,"evidence":68},"Minimal driver implementation shows how little code a driver needs","commenter",[69],{"id":70,"by":71,"text":72},"44080967","jeroenhd","Very nice! I love these minimal driver implementations. It shows off how little actual code you need for a driver (but also how many flags and kernel methods you need to know…",[],[75],{"value":76,"source":67,"evidence":77},"Write up the Rust reimplementation attempt and setbacks",[78],{"id":70,"by":71,"text":72},[80],{"value":81,"source":67,"evidence":82},"Whether the Rust reimplementation will become feasible",[83],{"id":84,"by":11,"text":85},"44082922","Unfortunately only a handful of subystem APIs have Rust bindings right now, so I did not get far enough to write up anything meaningful. Maybe next year support has matured to…",[87],{"value":88,"source":67,"evidence":89},"ESP32 based bluetooth rotary dial projects",[90],{"id":91,"by":11,"text":92},"44083157","Nice one! Using an ESP32 is a much more economical choice these days, but well, I really wanted to write a Linux kernel driver ;-)",{"comments":32,"answered":33,"key":94},[95,96,97],{"id":91,"text":92},{"id":84,"text":85},{"id":98,"text":99},"44087556","The driver supports alternate keycode mappings specifically for that reason, but before reading your comment I was unaware of the motivation behind reversing the pulse order.…",{"commenters":101,"max_depth":102,"maker_replies":32,"first_comment_mins":103,"lifespan_hours":104},34,6,25,41,[106,110,114,116,119,121,123,125,127,129,131,133,138,141,144,147,150,153,156,159,161,164,167,171,174,177,180,182,184,186,189,191,192,195,198,201,205,209,212,215,216,220,223,226,229,231,233,237,241],[107,33,33,108,109,33],"44081819","other\u002Fneutral\u002Fnone","anonymousiam",[111,33,33,112,113,33],"44083272","commenter\u002Fneutral\u002Fnone","jtwaleson",[115,33,33,108,109,33],"44084936",[117,33,33,108,118,33],"44085075","johnea",[120,33,33,108,109,33],"44085204",[122,33,33,108,109,33],"44094317",[124,33,33,108,118,33],"44085026",[126,33,33,108,109,33],"44085169",[128,31,33,108,113,33],"44083116",[91,31,33,130,11,31],"maker\u002Fneutral\u002Fnone",[132,31,32,130,113,33],"44083245",[134,135,33,136,137,33],"44081708",2,"other\u002Fneutral\u002Fidea","mauvehaus",[139,135,33,108,140,33],"44081805","VladVladikoff",[142,135,33,108,143,33],"44081984","woleium",[145,135,33,108,146,33],"44082056","spicybright",[148,135,33,108,149,33],"44083198","gaudystead",[151,135,33,112,152,33],"44083306","jmb99",[154,135,33,108,155,33],"44086728","afandian",[157,135,33,108,158,33],"44082570","herodotus",[160,135,33,108,137,33],"44082690",[162,32,33,108,163,33],"44081176","gchamonlive",[165,32,33,108,166,33],"44083540","HideousKojima",[168,18,32,169,170,33],"44081602","project\u002Fneutral\u002Fidea","reaperducer",[172,18,32,169,173,33],"44081834","Daviey",[175,18,33,108,176,33],"44082224","oneoffcomment",[178,18,33,108,179,33],"44083183","bishopsmother",[181,18,33,112,170,33],"44082826",[183,18,33,108,173,33],"44082875",[185,18,33,108,170,33],"44083174",[187,18,33,108,188,33],"44083268","jasonjayr",[70,38,38,190,71,33],"project\u002Fpositive\u002Fexecution",[84,38,33,130,11,31],[193,102,33,108,194,33],"44085387","Stratoscope",[196,102,33,108,197,33],"44085987","pram",[199,102,33,108,200,33],"44089436","satiric",[202,203,33,108,204,33],"44084155",7,"kevvok",[206,207,33,108,208,33],"44083557",8,"bacon_waffle",[210,207,33,108,211,33],"44083717","niccl",[213,207,33,108,214,33],"44084633","ztetranz",[98,207,33,130,11,31],[217,218,33,108,219,33],"44081628",9,"CodeBeater",[221,218,33,108,222,33],"44081677","jermaustin1",[224,218,33,108,225,33],"44081821","stavros",[227,218,33,108,228,33],"44082231","nicolaslegland",[230,218,33,108,225,33],"44082344",[232,218,33,108,219,33],"44084251",[234,235,33,108,236,33],"44084088",10,"rcakebread",[238,239,33,108,240,33],"44087127",11,"tempodox",[242,239,33,112,243,33],"44088517","kstrauser",[],[246,251,256,261,266,270],{"id":247,"name":248,"points":249,"category":250},"44118023","Desktop Docs",597,"productivity",{"id":252,"name":253,"points":254,"category":255},"44110584","simonwillison.net",529,"ai",{"id":257,"name":258,"points":259,"category":260},"44103839","Lazy Tetris",438,"games",{"id":262,"name":263,"points":264,"category":265},"44067409","Defuddle",418,"languages",{"id":267,"name":268,"points":269,"category":255},"44112326","AutoThink",397,{"id":271,"name":272,"points":273,"category":260},"44101175","Porting Terraria and Celeste to WebAssembly",338,false,"v2",{"id":277,"name":5,"line":6,"ai":274,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":29,"top":18,"kw":278,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":279,"url":9,"mix":280,"praise":66,"objection":-1,"sub":21},44080803,[24,21,25,26,27],"0000000030000000003300000500000000000000",[31,32,33,33],1794036675522]