6 पॉइंट द्वारा GN⁺ 2023-12-28 | 1 टिप्पणियां | WhatsApp पर शेयर करें

DeskHop - तेज़ desktop switching

  • मुफ़्त और open source
  • switching के समय लगभग न के बराबर latency
  • mouse pointer को कंप्यूटरों के बीच drag करके switch किया जा सकता है
  • software install करने की ज़रूरत नहीं
  • सस्ते और आसानी से मिलने वाले components का उपयोग (15 euro से कम)
  • 3D printer से प्रिंट किया जा सकने वाला snap-fit case
  • outputs के बीच पूरी galvanic isolation
  • Linux, macOS, Windows पर काम करता है

यह कैसे काम करता है

  • यह डिवाइस keyboard/mouse और कंप्यूटरों के बीच mediator की तरह काम करता है, और एक साथ दो कंप्यूटरों से connection बनाए रखता है
  • user की पसंद के अनुसार तय करता है कि mouse और key input किस कंप्यूटर को भेजना है
  • mouse को दूसरे desktop पर drag करने पर keyboard भी अपने-आप switch हो जाता है

Mouse

  • mouse HID report descriptor को absolute coordinates इस्तेमाल करने के लिए बदलता है, और mouse report (relative movement) को अंदरूनी तौर पर accumulate करके सटीक position बनाए रखता है
  • जब cursor दूसरे monitor की दिशा में monitor area से बाहर जाने की कोशिश करता है, तो Y coordinate को बनाए रखता है और maximum X को minimum X में बदलकर output switch करता है
  • cursor को दूसरे monitor पर उसी ऊंचाई पर दिखाता है ताकि switching का अनुभव smooth लगे

Keyboard

  • USB host के रूप में keyboard को समय-समय पर poll करता है, और पहले से सेट shortcut keys (जैसे Caps Lock) खोजकर characters को दूसरे output पर भेजता है
  • कौन-सा output इस्तेमाल हो रहा है, यह visually दिखाने के लिए keyboard LED का feedback के रूप में पुन: उपयोग करता है
  • हर कंप्यूटर की LED state याद रखता है, ताकि पिछली स्थिति से काम जारी रखा जा सके

Prebuilt image का उपयोग

  • prebuilt images उपलब्ध हैं
  • Pico board को PCB के A slot में लगाएँ, और cable जोड़ते समय board का button दबाए रखें; फिर यह सिस्टम में USB drive के रूप में दिखाई देगा
  • संबंधित board_A.uf2 file कॉपी करें और B के लिए भी यही दोहराएँ

Firmware upgrade

  • विकल्प 1: case खोलें, और हर Pico को connect करते समय button दबाए रखते हुए सही uf2 file कॉपी करें
  • विकल्प 2: एक खास key combination (Right Shift, P, H, X, Left Shift) का उपयोग करके BOOTSEL mode में जाएँ और Picos को bootloader upgrade mode में स्विच करें

अन्य फीचर

  • जब mouse को बारीकी से adjust करने की ज़रूरत हो, तब Right ALT दबाकर mouse हिलाने पर mouse speed काफ़ी धीमी हो जाती है, जिससे precise काम किया जा सकता है

Hardware

  • circuit सस्ता है (प्रति unit 4.10 euro), हाथ से solder किया जा सकता है, और यह दो Raspberry Pi Pico boards पर आधारित है जो ज़्यादातर suppliers के पास stock में मिल जाते हैं
  • Picos को Analog Devices ADuM1201 dual-channel digital isolator (~3 euro) का उपयोग करके UART से जोड़ा जाता है
  • RP2040 के programmable IO जादू का उपयोग करके USB implement करने वाले शानदार project की वजह से यह USB host और device दोनों की तरह काम कर सकता है

PCB

  • DIY build को जितना हो सके आसान रखने के लिए traces केवल एक side पर रखे गए हैं और components की संख्या न्यूनतम रखी गई है
  • USB D+/D- differential lines की लंबाई समान होनी चाहिए, लेकिन PICO PCB पर संबंधित GPIO trace length के अंतर की भरपाई करने के लिए इन्हें जानबूझकर थोड़ा asymmetric रखा गया है ताकि कुल लंबाई match हो सके

Case

  • 3D modeling में बहुत दक्ष न होने के कारण case सरल और बुनियादी है, लेकिन अपने उद्देश्य के लिए पर्याप्त है
  • इसे प्रिंट करना आसान है, इसमें लगभग 33g filament लगता है, और कुछ घंटों में तैयार हो जाता है
  • horizontal PCB movement को holes से गुजरने वाले pins रोकते हैं, और vertical movement को side के snap-fit tabs रोकते हैं, इसलिए screws की ज़रूरत नहीं होती
  • micro USB connector case के side से थोड़ा बाहर निकलता है, इसलिए थोड़ा बड़ा hole होने पर cable अंदर जा सकती है
  • lid snap-fit design की है, और इसे खोलने के लिए screwdriver slot दिया गया है
  • ऊपर की markings recessed हैं, इसलिए crayon आदि से finish करके contrast बढ़ाया जा सकता है (या वैसे ही छोड़ा जा सकता है)

सामग्री सूची

  • Raspberry Pi Pico 2, ADuM1201BRZ 1, Cap 1206 SMD 100nF 2, USB-A PCB connector 2, Headers 2.54 1x03 2
  • कुल कीमत: 11.53 euro
  • USB-A connector के लिए Molex MX-67643-0910 या वही dimensions साझा करने वाला कोई सस्ता alternative इस्तेमाल किया जा सकता है
  • अतिरिक्त चरण: PCB fabrication (Gerber दिया गया है, JLC कुछ dollars में बना देता है, 1.6mm thickness चुनें), case की 3D printing (stl files दी गई हैं, लगभग 33g filament चाहिए)

FAQ

  1. क्या PCB और isolator के बिना केवल दो Pico से यह काम करेगा?
    • isolator recommended है, लेकिन इसके बिना भी यह काम कर सकता है।
  2. अगर monitors की resolution अलग-अलग हो तो क्या होगा?
    • mouse movement एक abstract coordinate space में होती है और कंप्यूटर physical screen mapping खुद calculate करता है, इसलिए बिना समस्या काम करना चाहिए।
  3. यह उत्पाद कहाँ खरीदा जा सकता है?
    • यह बिक्री के लिए नहीं है; यह एक व्यक्तिगत non-commercial hobby project है।
  4. जब mouse से active screen बदलती है, तो क्या keyboard भी उसके साथ switch होता है (और उल्टा भी)?
    • हाँ, इसे ऐसे बनाया गया है कि यह एक ही कंप्यूटर जैसा महसूस हो।
  5. क्या यह Logitech Unifying Receiver जैसे keyboard/mouse combo dongle के साथ काम करता है?
    • मौजूदा version में नहीं, क्योंकि यह मानकर चलता है कि mouse अलग port में connected है। Logitech Unifying Receiver के behavior की जाँच करके support implement करना होगा।
  6. क्या यह ऐसे wireless mouse और keyboard के साथ काम करता है जिनके लिए अलग-अलग wireless receivers हों?
    • ऐसे मामलों के लिए इसका test नहीं हुआ है, इसलिए अनपेक्षित समस्याएँ आ सकती हैं, लेकिन सैद्धांतिक रूप से इसे सीधे काम करना चाहिए।

कमियाँ

  • ध्यान दें: इस फीचर का उपयोग करने के लिए दोनों कंप्यूटर connected और powered on होने चाहिए (हर board को जुड़े हुए कंप्यूटर से power मिलती है)।
  • code cleanup, refactoring आदि की ज़रूरत है।
  • कभी-कभी bugs और अजीब behavior होता है।
  • कई तरह के devices के साथ test नहीं किया गया है, इसलिए यह उपयोगकर्ता के hardware पर कैसे काम करेगा, यह पता नहीं।
  • Pico-PIO-USB को keyboard LED control support करने के लिए patch किया गया है, जबकि सामान्यतः इसे host mode में TinyUSB संभालता है।

अस्वीकरण

  • इस project को आज़माने वाला हर व्यक्ति यह समझे और स्वीकार करे कि किसी भी injury, damage या अन्य परिणाम के लिए वह स्वयं ज़िम्मेदार होगा।
  • safety महत्वपूर्ण है, इसलिए ज़रूरी precautions लेना और पूरे project के दौरान अपनी भलाई की ज़िम्मेदारी खुद लेना आवश्यक है।
  • electric shock, burns, stress या गुस्से से बचें, और उम्मीद है कि आप इसे आनंद के साथ बनाएँगे और इस्तेमाल करेंगे।

GN⁺ की राय:

  • यह लेख दो कंप्यूटर इस्तेमाल करने वाले लोगों के लिए बहुत उपयोगी हो सकता है। खासकर उन users के लिए जो एक keyboard और mouse share करके काम की efficiency बढ़ाना चाहते हैं, यह आकर्षक है।
  • यह open source है, और इसका DIY approach तकनीक में रुचि रखने वाले लोगों के लिए एक दिलचस्प project हो सकता है। users अपनी ज़रूरत के हिसाब से system को adjust और improve कर सकते हैं।
  • यह project तकनीकी समस्याओं को हल करने की community की innovative spirit दिखाता है। users खुद समस्या हल करते हैं और प्रक्रिया साझा करते हैं, जिससे दूसरे लोग भी लाभ उठा सकते हैं।

1 टिप्पणियां

 
GN⁺ 2023-12-28
Hacker News राय
  • यह बात उल्लेखनीय है कि client software के बिना भी edge detection किया जा सकता है.

    • माउस कर्सर को मानो जादू की तरह स्क्रीन के पार ले जाने के लिए mouse HID report descriptor को absolute coordinates इस्तेमाल करने के लिए बदला जाता है, और relative movement के रूप में आने वाली mouse reports को अंदर ही अंदर accumulate किया जाता है ताकि सटीक position बनी रहे.
    • यह SynergyKM/Barrier की तरह काम करता है, लेकिन clipboard feature या client software की ज़रूरत नहीं होती.
  • मैं दस साल से भी ज़्यादा समय से Synergy नाम का software solution इस्तेमाल कर रहा हूँ. यह Wi-Fi के ज़रिए तुरंत switch हो जाता है और Windows/Mac/Linux के बीच भी काम करता है.

  • कभी-कभी YouTube में slider को किसी खास position पर बिल्कुल सटीक ले जाने की कोशिश करते समय माउस बहुत ज़्यादा sensitive लगता है, इसलिए हाथ बहुत सावधानी से चलाना पड़ता है.

    • YouTube में custom hardware के बिना भी comma (,) और period (.) keys का इस्तेमाल करके video को frame-by-frame scrub किया जा सकता है.
  • Windows पर Microsoft Garage द्वारा बनाया गया और अब Windows PowerToys का हिस्सा बन चुका Mouse Without Borders नाम का tool इस्तेमाल किया जा सकता है.

  • दूसरे मिलते-जुलते projects से प्रेरित होकर मैंने अपना खुद का version बनाया.

    • एक program Linux desktop पर चलता है और Linux input subsystem (evdev) से input events प्राप्त करता है. किसी खास key को दबाने पर यह सारे events consume कर लेता है और उन्हें USB serial के ज़रिए RPI Pico को भेजता है. वही key फिर से दबाने पर यह passive listening mode में लौट जाता है.
    • RPI Pico को इस तरह program किया गया है कि वह Linux evdev events को USB HID events में बदलकर दूसरे Windows PC को भेजे.
    • नतीजतन यह Linux PC और मेरी पसंद के OS चलाने वाले PC के बीच तुरंत switch कर सकने वाला KM switch बन गया.
    • hardware beginner होने के नाते, इसमें सिर्फ 2 wires की ज़रूरत थी, इसलिए मुझे लगता है कि यह दूसरे hardware beginners के लिए भी एक अच्छा starter project है.
  • मैंने keyboard और mouse switch करने के लिए 4 USB hubs खरीदे, लेकिन ज़्यादातर devices इतने खराब थे कि मुझे दिन में कई बार hub को physically unplug करना पड़ता था.

    • मैं Synergy software इस्तेमाल कर रहा हूँ और यह ठीक काम करता है, लेकिन मैं ऐसा proper KVM चाहता हूँ जो webcam, microphone, audio वगैरह को भी allow करे.
    • KVM users को निश्चित रूप से इससे बेहतर support मिलना चाहिए.
  • दो PCs के बीच mouse और keyboard input switch करने के लिए USB 3.0 switch इस्तेमाल करना मेरी बड़ी परेशानियों में से एक है.

    • Teams call meeting के दौरान अगर मेरा नाम लिया जाए या कोई message आए, तो मुझे अचानक button ढूँढना पड़ता है ताकि input को Teams चल रहे PC पर switch कर सकूँ.
    • मेरे पास यह idea था कि ESP32 या Rpi Pico W को USB switch के button pin से जोड़कर HTTP endpoint के ज़रिए दो machines के बीच input switch किया जाए, लेकिन कौन-सा input active है यह पता करने का तरीका नहीं मिला, इसलिए मैंने यह छोड़ दिया.
  • मैं अभी KVM switch इस्तेमाल कर रहा हूँ, और switch होने में 2-3 seconds लगते हैं, इसलिए ज़्यादातर समय मैं दूसरे computer में SSH करके tmux session इस्तेमाल करता हूँ.

  • यह वाकई शानदार प्रगति है.

    • एक ऐसे user के रूप में जिसने लंबे समय से बाएँ से दाएँ Lin-Mac-Win boxes के desktop setup का इस्तेमाल किया है, SoC design के पिछले कुछ वर्षों में फैलने के साथ ऐसी setups बनाना आसान हो गया है.
    • मेरा मौजूदा setup सीधे Shenzhen से आए 2x $250 Ryzen SoC Mac-mini clones और एक M1 MBP से बना है.
    • यह अफ़सोस की बात है कि कभी फलता-फूलता open source KVM solutions का संसार अब ऐसे forks के recursive nightmare में बदल गया है, जहाँ बिना लागत के काम करने वाला multi-platform open source software KVM पाना मुश्किल हो गया है.
    • मौजूदा setup में एक अच्छा 'old-school' KVM switch है, लेकिन button दबाना विघ्न डालता है.
  • Synergy सिर्फ software के दम पर इस समस्या को अच्छी तरह हल करता है. यह free या open source नहीं है, लेकिन काफ़ी सस्ता है.