[{"data":1,"prerenderedAt":286},["ShallowReactive",2],{"project-46296498":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":20,"keywords":22,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":34,"aspects":35,"strip":42,"post_text":45,"what":46,"said":80,"maker_in_thread":135,"shape":141,"grid":145,"attempts":246,"same_week":247,"maker_shows":277,"maker_hidden":278,"reader_version":279,"card":280},"46296498","bluetooth-gamepad","A small lib to turn a USB gamepad into a Bluetooth one","title","Show HN: I wrote a small lib to turn a USB gamepad into a Bluetooth one","https:\u002F\u002Fgithub.com\u002Fskorokithakis\u002Fbluetooth-gamepad","github.com","stavros",1765929832,2025,26,44,1775,3837,47,"shown","hardware","gamepad adapter firmware",[23,24,25,26],"esp32-s3","bluetooth gamepad","usb gamepad adapter","hid remapping","loved",0.444,{"positive":30,"neutral":31,"mixed":32,"critical":33},7,4,0,1,12,{"docs":36,"execution":37,"idea":39,"design":40,"performance":41},{"positive":33,"critical":32},{"positive":38,"critical":33},2,{"positive":33,"critical":32},{"positive":33,"critical":32},{"positive":32,"critical":32},[43,32,43,32,43,32,44,32,32,33,32,43,32,32,32,32,32,32,32,43,32,32,32,32,32,32,32,32,32,43,32,32,32,44,32,43,32,44,32,44],5,3,"I had two old USB gamepads lying around that I wanted to use, but my computer is too far from the couch, so I wrote a little ESP32-S3 firmware that turns USB gamepads into Bluetooth ones.\n\nYou connect your gamepad to the ESP32-S3 with an OTG cable, power the ESP32 with either 5V somehow or a powered USB hub, and now you can pair the controller via Bluetooth to your PC!",{"problem":47,"audience":53,"pricing":53,"motivation":54,"time_to_build":53,"stack":62,"openness":77,"stage":78,"team_size":79},{"value":48,"source":49,"evidence":50},"Old USB gamepads can't reach a PC across the room, so they're made wireless.","maker",[51],{"id":52},"post",null,{"value":55,"source":49,"evidence":56},"Use two old USB gamepads from the couch instead of buying a new controller.",[57,58],{"id":52},{"id":59,"by":60,"text":61},"46364477","gkhartman","I had a quick thought to do something like this a while back, but never got around to the experimental phase. I ended up buying a new controller instead (whilst grumbling about…",[63,67,73],{"value":64,"source":49,"evidence":65},"ESP32-S3",[66],{"id":52},{"value":68,"source":49,"evidence":69},"Arduino framework",[70],{"id":71,"by":11,"text":72},"46364177","I use the Arduino framework and PlatformIO to make the flashing\u002Fdependency management part easier. Other than that, the Arduino docs are great, and LLMs can help you with…",{"value":74,"source":49,"evidence":75},"PlatformIO",[76],{"id":71,"by":11,"text":72},"open_source","unknown","solo",{"praise":81,"objections":97,"requests":114,"questions":125,"alternatives":134},[82,90],{"value":83,"source":84,"evidence":85},"Clean, readable code","commenter",[86],{"id":87,"by":88,"text":89},"46364168","Tade0","I like how readable the code is. I don't write anything in C++ nowadays, but it's clear enough for me to follow.",{"value":91,"source":84,"evidence":92},"Practical clever hack",[93],{"id":94,"by":95,"text":96},"46364058","schappim","This is a clever and practical hack! Love the decoupled arch \u002F making it easy to tweak for different controllers. Nice work!",[98,108],{"value":99,"source":49,"evidence":100},"Maker used LLMs and commenters questioned how much was reviewed",[101,104],{"id":102,"by":11,"text":103},"46364173","Ah, I can't really take credit for that, it was mostly multiple LLMs.",{"id":105,"by":106,"text":107},"46364275","latexr","So did you really write this, as claimed in the title, or did you vibe code it? If the latter, how much of the code did you review? How much of it do you understand and could…",{"value":109,"source":49,"evidence":110},"HID intricacies need remapping; works imperfectly on other controllers",[111],{"id":112,"by":11,"text":113},"46364544","Yeah, I was between buying a new controller or making this too, but I figure it's a perfectly fine controller and I had the hardware lying around. It doesn't work perfectly, as…",[115],{"value":116,"source":84,"evidence":117},"Latency measurements",[118,122],{"id":119,"by":120,"text":121},"46330051","atmanactive","... and the latency is?",{"id":123,"by":120,"text":124},"46333137","I guess the easiest way to measure this would be to run some gamepad test program on the target device, and then to record a video from your phone close to the gamepad but still…",[126,130],{"value":127,"source":84,"evidence":128},"Was the code written by the maker or vibe coded?",[129],{"id":105,"by":106,"text":107},{"value":131,"source":84,"evidence":132},"What is the latency?",[133],{"id":119,"by":120,"text":121},[],{"comments":136,"answered":43,"key":137},13,[138,139,140],{"id":112,"text":113},{"id":71,"text":72},{"id":102,"text":103},{"commenters":34,"max_depth":142,"maker_replies":136,"first_comment_mins":143,"lifespan_hours":144},15,4064,181,[146,148,150,154,156,158,160,161,164,167,169,172,174,177,179,181,184,186,188,190,192,195,197,199,202,204,206,208,210,212,214,217,219,221,225,227,229,232,234,236,238,240,243,244],[59,32,43,147,60,32],"maker\u002Fpositive\u002Fnone",[112,32,32,149,11,33],"project\u002Fneutral\u002Fexecution",[151,33,43,152,153,32],"46364060","maker\u002Fpositive\u002Fdocs","p2detar",[71,33,32,155,11,33],"maker\u002Fneutral\u002Fdocs",[87,38,43,157,88,32],"project\u002Fpositive\u002Fexecution",[102,38,32,159,11,33],"maker\u002Fneutral\u002Fexecution",[105,38,44,159,106,32],[162,38,32,163,11,33],"46364283","commenter\u002Fneutral\u002Fnone",[165,38,32,163,166,32],"46364340","lobsterthief",[168,38,32,163,11,33],"46364361",[170,38,33,171,106,32],"46364403","maker\u002Fcritical\u002Fexecution",[173,38,32,163,11,33],"46364433",[175,38,43,147,176,32],"46364800","Zetaphor",[178,38,32,163,11,33],"46364841",[180,38,32,163,106,32],"46365176",[182,38,32,163,183,32],"46366127","mikemcquaid",[185,38,32,163,106,32],"46366438",[187,38,32,163,183,32],"46373276",[189,38,32,163,106,32],"46374731",[191,38,32,163,183,32],"46375312",[193,38,43,194,183,32],"46366120","project\u002Fpositive\u002Fidea",[196,38,32,163,176,32],"46364792",[198,38,32,163,106,32],"46365047",[200,38,32,163,201,32],"46364397","vmasto",[203,38,32,163,106,32],"46364478",[205,38,32,163,11,33],"46364721",[207,38,32,163,106,32],"46365096",[209,38,32,163,106,32],"46364364",[211,38,32,163,11,33],"46364428",[213,38,32,163,106,32],"46364496",[215,38,32,216,176,32],"46364773","commenter\u002Fpositive\u002Fexecution",[218,38,32,163,106,32],"46365434",[220,38,43,157,176,32],"46373297",[222,38,32,223,224,32],"46364900","other\u002Fneutral\u002Fnone","lexz0r",[226,38,32,163,106,32],"46365290",[228,38,32,163,224,32],"46365713",[230,38,44,231,88,32],"46366584","project\u002Fneutral\u002Fdesign",[233,38,32,231,11,33],"46366807",[94,44,43,235,95,32],"project\u002Fpositive\u002Fdesign",[237,44,32,231,11,33],"46364109",[119,31,44,239,120,32],"project\u002Fneutral\u002Fperformance",[241,31,32,242,11,33],"46330073","project\u002Fpositive\u002Fperformance",[123,31,44,239,120,32],[245,31,32,239,11,33],"46364181",[],[248,253,258,263,268,273],{"id":249,"name":250,"points":251,"category":252},"46290349","Picknplace.js",455,"languages",{"id":254,"name":255,"points":256,"category":257},"46294144","fuzzycanary",373,"security_privacy",{"id":259,"name":260,"points":261,"category":262},"46234734","bidicalc",252,"dev_tools",{"id":264,"name":265,"points":266,"category":267},"46234186","Sim",240,"ai",{"id":269,"name":270,"points":271,"category":272},"46249538","uvm32",196,"infrastructure",{"id":274,"name":275,"points":276,"category":262},"46276002","Sqlit",190,18,false,"v2",{"id":281,"name":5,"line":6,"ai":278,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":282,"top":18,"kw":283,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":284,"url":9,"mix":285,"praise":83,"objection":99,"sub":21},46296498,0.44,[23,24,25,26],"5050503001050000000500000000050003050303",[30,31,32,33],1794036687554]