Simulovana mys,klavesnica
chcel by som sa opytat ci je mozna takato vec:
Mam 2 PC, na jednom bezi Windows a na druhom Linux a chcem aby PC s Linuxom bol schopny ovladat mysku a klavesnicu pocitaca od windowsu. Ale nechcem to urobit nejak tak ze na windowse sa spusti program ktory bude prijimat data a podla toho pohne myskou/klavesnicou. Chcem aby bol PC s Linuxom pre windows viditelny ako normalna myska/klavesnica. Ze napr.: pojdu 2kable z PC-Linux do 2 USB Portov PC-Windows a windows ich rozpozna ako obycajnu mys s klavesnicou. Cize windows-pc je normlany PC nema sajnu ci ho ovlada stoj abo clovek, a Linux-PC je nieco ako ludska nahrada...
Bolo by nieco taketo mozne? Ak ano, viete mi povedat ako to urobit ? Aky konnektor by sa nato najvaic hodil - na windows-pc to musi byt USB, ale na linux-pc to moze byt aj daco ine.
P.S.: Idealne by bolo aby sa ta myska/klavesnica dala ovladat nezavysle na platforme beziacej na "windows-pc"
Pre pridávanie komentárov sa musíte prihlásiť.
našiel som len Hardwarové riešenie pre tvoj problém.
Je to KVM prepínač Micronet KVM 2PORT switch SP212D
Ide o to, že do KVM napojíš klávesnicu+myš a z KVM napojíš tie 2 PC. Na KVM si vyberieš medzi Linux-Windows.
Ten prepínač maju aj na Agemi.sk
Pozri sa na voľbu CONFIG_USB_G_HID a do Documentation/usb/gadget_hid.txt.
Ale neviem či by nebolo vhodnejšie použiť nejaký user space program v Linuxe ktorý to zvládne cez BlueTooth bez káblov.
PS.: Nočné prenosy? Nechcel by som vidieť čo to urobí ak nastane nejaká chybová udalosť ktorú je treba riešiť operátorom.
oo a robim nieco zaujimavejsie, bude to projekt na univerzitu na odbor kybernetiky a umelej inteligencie, cem urobit pocitac, ktory bude schopny ovladat iny pocitac cize napr bude vediet na prikaz vyhladat nieco v Googli, pozuzivat rozne programy(a sam sa ucit nove veci). Toto simulovanie mysky a klavesnice mi treba len preto aby bola komunikacia pocitacov obojstranna (idealne by boli roboticke ruky ale som orientovany na SW nie HW cize toto zanedbavam...).Preto bluetooth neprichadza do uvahy lebo neviem ako sa to bude spravat napriklad na prihalsovacej obrazovke...
Ak sa Ti neobjavilo nové zariadenie v tom Windows-e, tak skontroluj kábel alebo či chipset USB radičov podporuje prácu v obidvoch módoch. Na takéto hračky pri USB to musí byť schopné pracovať aj ako Master a aj ako Slave. Bluetooth (imho vecička ktorá nahradzuje káble) je na toto vhodnejší nakoľko táto limitácia ostala mimo hry.
PS.: odkiaľ máš ten príklad? Ja som totižto k mojmu jadru naśiel len taký čo číta z klávesnice a podľa toho potom zasiela dáta na virtuálny ovládač ktorý to potom zasiela po USB ďalšiemu počítaču. Nepozeráš náhodou zdrojáky windows?
Ano ten priklad je najskor na posielanie(co ja nemozem zatial vyskusat) mam to z tejto stranky. Skompiloval som posledny priklad (toto dlhe co az do konca ide) a spustil som to takto : './hid /dev/input/mice mouse' co mi posiela udaje o mojej vlastnej myske ked nou hybem. A ten priklad pocita s tym ze uz mam napisany driver, co ja este nemam a vyzera to na dlhsie citanie :)
Lebo potom zostáva už len bit-banged USB. A kedže dnešné PC už nemajú GPIO konektory tak vezmeš napr. AVR atmega8a, pichneš tam VUSB software a použiješ nejaký HID example klávesnice, ktorý upravíš tak, aby posielal to, čo pošleš do AVR cez UART. Následne napíšeš bash skript ktorý pustí ten program ./hid, jeho výstup (teda súradnice potkana alebo len ich zmenu a klávesy klávesnice) upraví do vhodného tvaru napr cez sed a pošle na UART (RS232). (Jediná práca spočíva v tom, že nejaký example ktorý napr. cez USB pošle klávesu A upravíš, aby po príchode roznych príkazov na UART posielala správnu klávesu. (btw, stačí cez UART posielať jeden byte.. zmestia sa doňho všetky klávesy aj s pohybmi krysy a ešte zostane miesta takže možeš použiť XON/XOFF).
Mimochodom, čo sa týka toho usb gadget API:
Many Linux systems will not be able to use it, since they only have PC-style USB Host (master) hardware in a PC, workstation, or server. But when you're putting together embedded Linux systems, a USB peripheral controller option is routine; it's often integrated into processors.
.. čiže to čo som napísal hore. Potrebuješ USB slave zariadenie a najlacnejší je nejaký MCU a nemusí mať vobec USB slave, stačia I/O piny.Keby s tým chceš pomocť..............
Inak, v dnešnej dobe už nie je nemožné zohnať dosku ktorá má možnosť prepnúť sa do slave módu. Obvykle sa jedná o x86/64 dosky určené ako Home Media Server alebo rovno o ARM/MIPS architektúru určenú ako HDD prehrávače alebo PDA či tablety. Jediný problém je v tom, že USB protokol takéto niečo vylučoval a tým pádom sa to riešilo špeciálnou úpravou USB radiča ktorú tam rovno pichli inžinieri od výrobcu. Teda v prípade x86/64 dosky ju zabudli zrušiť.
Inak, tá redukcia by na to mala stačiť. Nemyslím že je veľký problém za to vyhodiť jeden drink a vyskúšať to. Len by som silne odporučil mať oba počítače na jednej fáze v elektrike nech to nezhorí. Cena za dosku je vyššia ako cena za redukciu k USB káblu.
Cize, ak som pochopil spravne fungovanie USB, slave je to co zacne komunikaciu a master(PC cast) je to co caka kym sa pripoji slave a moze s nim komunikovat...
Neviem ci vyskusam tu redukciu, doma mam len 2 drahe masiny co mi nestoja za ziaden incident.
Dalej som sa docital ze ak aj ma dany stroj moznost prepnut USB do slave modu, prepnu sa vsetkych USB porty do slave modu, co je nepripustne - potrebujem aj nejake master...
Takze z toho celeho mi vypliva len to riesenie s atmega8, mam ich zopar aj doma... Cize filozofia je : jednen PC posiela z nejakeho portu data(akoze z mysky/klavesnice) do atmega MCU, ta nacita data a posle ich druhemu PC na USB port(samozrejme nie priamo).
Napadlo ma, neda sa pouzit ethernet port ako vystup z prveho PC ? pretoze potrebujem nato typ portu ktory je dost bezny (napr na mojom ntoebooku teraz mam okrem USB a VGA uz len HDMI a eSATA, ktore dost vela PC nema(aspon som ja nevidel)). A nebude problem ak na jeden USB port na druhom PC budem posielat zaroven data z mysky aj klavesnice ? ci to sa vyriesi nejakym softverovym USB hubom
Ohľadne ethernet portu, tak sieťovka obvykle pustí len sieťovú prevádzku. Takže by si nahodil v konečnom dôsledku niečo na spôsob VNC. Ale odpadla by Ti potreba web kamerky služiacej ako oko. Teda predpokladám, že to oko bude mať a neskončí to cez WinAPI funkciu shell execute ktorej predáš parameter URI google aj s hľadátkom.
Mimochodom, softwérový USB HUB, tým myslíš čo?
Inak, ja som skúšal podobné veci pod USB, ale jednalo sa len o tunelovanie sieťovky a blokového zariadenia (disku). Pričom partnerské zariadenie bolo PDA ktoré s týmto nemá najmenší problém. Síce to nemalo viac ako jeden USB port (nezmestil sa na krabičku), ale to v tomto prípade nehralo žiadnu rolu. Teda bežné hry s systémovou rekonfiguráciou firmware PDA. Fungovalo to ako obvykle bez problémov. Na iné hry som sauž vykašlal, na klávesnicu je PDA malé, touchpad je tam málo citlivý a nakoniec som si kúpil WiFi router. Ten má pre mňa reálne využitie, nie len ako hračka.
Použitie ethernet portu by vyšlo ovela drahšie a musel by mať k tomu relatívne zložitý soft na PC aj v atmega a neviem, či by sa tam vobec zmestil do atmegy spolu aj s USB softom. Oproti posielaniu printf "lala" > /dev/tty0 (ttyUSB0) a čítaniu cat /dev/ttyS0 blablablabala, je to práca na celé hodiny aj keby sa to obmedzilo na surové ethernet frames len s MAC (myslím že tie su už implementované v príjmacom chipe čo by si mohol pripojiť k atmege.)
Neviem ci sa nakoniec nerozhodnem pre docastne riesenie a tym bude komunikacia cez sockety. Oba PC budu mat na 100% internet, napisem jendoduchy program ktory posle po LANke prikazy pre mysku/klavesnicu a druhy program ktory spracuje tie prikazy a pohne myskou/klavesnicou.
Koniec koncov hlavny program urobim nezavisly na sposobe akym budu data poslane cize to mozem kedykolvek zmeni na bluetooth alebo kabel, a nepotrebujem k tomu teraz kupovat ziadne suciastky ani vyrabat plosaky :) -- urcite este pozriem najprv na bluetooth mozno to pojde lahsie ako sockety a minimalna investicia ma nezabije ;)
Softwerovym USB HUBom som myslel program ktory by rozlisoval mysku od klavesnice, nemozem predsa OS posielat data o myske aj klavesnici na jeden USB port ako a kedy sa mi zachce on si predsa pamata aky tip zariadenia je pripojeny, ci nepamata ?
WinApi nepozuijem, na spracovanie bude cisto len kamera.
PS - Lutujem Grawp ale kabel tu asi nevyriesime, vyzera to byt najzdlavejsia metoda....