Portál AbcLinuxu, 13. května 2025 04:06

Dotaz: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)

31.3.2022 12:07 PetebLazar | skóre: 34 | blog: l_eonardovo_odhodlani
Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Přečteno: 444×
Odpovědět | Admin
Představte si HW zařízení (ovládací panel) komunikující skrze USB, které má na sobe kromě jiného tlačítka s funkcí PgUp a PgDn, ale pouze u vyšší verze panelu (násobně dražší varianty) i tlačítko PgAdd. U lacinějšího zařízení je nutné pro "přidání stránky" přesunout ruce z panelu na klávesnici/myš a provést úkon "přidání stránky". Je technicky proveditelné zachytávat datovou komunikaci přes USB ze zařízení a při následném výskytu zpráv odpovídajícím PgUp a PgDn, dejme tomu s prodlevou menší než 1 sec, nasimulovat aplikaci zmačknutí klávesové zkratky pro přidání stránky např. "Alt-P"?

Samozřejmě vše za předpokladu, že komunikace mezi zařízením a SW nebude šifrována (čímž si popravdě nejsem vůbec jist). Pokud by komunikace byla v otevřené formě lze to chápat tak, že by šlo v kontextu našeho právního řádu o legální postup?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Jendа avatar 31.3.2022 13:41 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ano, je to možné. Nepochopil jsem ale z popisu co je kam zapojené. Zachytávat USB komunikaci s počítačem lze pomocí usbmon a pak to je vidět ve Wiresharku. Emulace klávesnice na počítači se dělá programem xdotool. Pokud jde o klávesnici fyzicky připojenou k zařízení, tak potřebuješ emulátor/proxy HID. To jsem stavěl s AtMega32U4 (existující deska např. Arduino Leonardo a nějaké menší Arduino Micro Pro nebo tak nějak), ale jde použít třeba i Teensy deska, Bluepill deska (ta je levné, teda nevím jak teď s nedostatkem čipů, a má výkonný HW) nebo některá Raspberry Pi která podporují USB OTG.
31.3.2022 14:49 PetebLazar | skóre: 34 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Diky.

Zařízení (panel) je přes USB připojen k PC, takže by se komunikace zachytávala v PC pro jeho konkretní USB_ID a SW emulace v pripade zjisteneho urciteho sledu udalosti(zprav) pomoci xdotool emulovala stisk (predpokladam, ze by se ten realizoval v aplikaci s aktivním focusem). Např. xdotool key --repeat 1 --delay 500 Alt-P (s urcitym zpozdenim, aby se stihly v cilové aplikaci pred tim realizovat emulacni stisky klaves na panelu).
31.3.2022 15:50 PetebLazar | skóre: 34 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Pomoci wiresharku/usbmod se mi podarilo zachytavat stisky ext. USB klavesnice. Vypada to, ze pozice 0x40 byte v packetu obsahuje USB scan code ridicich klaves (LCTRL/LSHIFT..), na pozici 0x43 je USB scan code beznych klaves. Mam jiny panel od stejneho vyrobce, zkusim overit nakolik ten ma otevrenou komunikaci.
31.3.2022 14:24 j
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Rek bych, ze to co chces, se normalne zove makro, nektery kousky HW (klavesnice/mysi/...) to umej nativne, u jinych se to dela SW cestou, a pocitam ze najdes hromadu kousku SW ktery to udelaj. Princip je primitivni, proste to na nejakou sekvenci/kombinaci klaves vyvola jinou (typicky slozitejsi/delsi) kombinaci, kterou to posle systemu.

A jako bonus, kdyz ten svuj HW rozeberes, tak je dost pravdepodobny, ze tam chybi jen to tlackatko ktery hodlas nejak simulovat, takze kdyz si ho tam dobastlis, muzes to mit v HW provedeni. Jednoduse se totiz v 99% pripadu nevyplati delat vice variant tehoz.

---

Dete s tim guuglem dopice!
31.3.2022 14:56 PetebLazar | skóre: 34 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
To zarizeni, o kterem je rec neni s velkou pravdepodobnosti HID (Human Interface Device) tj. nevysílá stisky kláves do OS (je to proprietární HW plně obsluhovaný aplikaci). Kromě tlačítek má i analogové ovladače (potenciometry, trackbally, atd).
31.3.2022 16:19 X
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
To proste nemuzes napsat co to je zelezo? To je fakt problem? Tohle tajnustkareni nicemu nepomuze.
31.3.2022 16:51 PetebLazar | skóre: 34 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
To asi mohu, Davinci Resolve Micro Panel. https://www.blackmagicdesign.com/products/davinciresolve/panels
31.3.2022 17:36 j
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Takze to v systemu uvidis jako hromadu keycodes + nejaky ty osy a hodnoty, uplne stejne jako libovolnej joystick.

---

Dete s tim guuglem dopice!

31.3.2022 17:46 X
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Mezi HW a SW muze byt nejaka proprietarni komunikace, to s zatim nevi, ale ten SW bezi i na linuxu. Pujde to minimalne zjistit.
31.3.2022 19:56 PetebLazar | skóre: 34 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Takže jsem ověřil, že aplikace xdotoolem emulované keystroke přijímá a provádí.

Možná jsem to celé překombinoval a řešením by byla malá ext. USB klávesnice s pár tlačítky s nadefinovaným výstupem pro chybějící operace.

Pozn. U DaVinci Resolve Speed Editoru se zařízení tváří jako HID a na pozici 0x41 packetu komunikace to vypadá na "scancode" (při opakovaném zmačknutí stejné klávesy stejná hodnota). Vypadá to, že mezi panelem a PC probíha permanentní synchronní komunikace ~100Hz, v případě pohybu JogDialu je tento vzorkován cca 60Hz (60 odečtených hodnot za sekundu).
31.3.2022 23:08 X
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Takže jsem ověřil, že aplikace xdotoolem emulované keystroke přijímá a provádí.
Pokud opravdu lze takto jednoduse ovlivnit chovani aplikace je super jednoduche reseni.
31.3.2022 23:42 PetebLazar | skóre: 34 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Někteří nedostatek kláves na DR Micro Panelu (proti Mini Panelu) údajně řeší využitím Elgato Stream Decku XL s nadefinovanými klávesami. Color grading je typicky o nízkém okolním osvětlení, takže podsvícenost kláves je prakticky nutností (to by uživatelsky definované LCD klávesy se světelně decetními ikonami/popisy měly asi splnit také).
Jendа avatar 31.3.2022 23:39 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
No super, takže si teď pustíš
shark -l -i usbmon1 -Y "usb.endpoint_address == 0x86" -Tfields -e usb.capdata
a jakmile to vypíše dvě ta zmáčknutí co chceš v jedné sekundě, tak spustíš xdotool a ten zmáčkne klávesu a hotovo, ne?
1.4.2022 00:16 PetebLazar | skóre: 34 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Díky, ještě jsem si tam přidal timestamp pro zjištění časové následnosti.

sudo tshark -l -i usbmon3 -Y "usb.endpoint_address == 0x81" -t ad -Tfields -e frame.time -e usb.capdata

Jde o záznam dvou zmačknutí klávesy Cam1 a dvě zmačknutí klávesy Cam2. Ty 04:00:00:00:00 přestavují uvolnění kláves


Apr  1, 2022 00:05:57.207084000 CEST	04:33:00:00:00:00:00:00:00:00:00:00:00
Apr  1, 2022 00:05:57.207092000 CEST	
Apr  1, 2022 00:05:57.359085000 CEST	04:00:00:00:00:00:00:00:00:00:00:00:00
Apr  1, 2022 00:05:57.359090000 CEST	
Apr  1, 2022 00:05:57.591088000 CEST	04:33:00:00:00:00:00:00:00:00:00:00:00
Apr  1, 2022 00:05:57.591093000 CEST	
Apr  1, 2022 00:05:57.719092000 CEST	04:00:00:00:00:00:00:00:00:00:00:00:00
Apr  1, 2022 00:05:57.719097000 CEST	
Apr  1, 2022 00:05:59.127116000 CEST	04:34:00:00:00:00:00:00:00:00:00:00:00
Apr  1, 2022 00:05:59.127124000 CEST	
Apr  1, 2022 00:05:59.247117000 CEST	04:00:00:00:00:00:00:00:00:00:00:00:00
Apr  1, 2022 00:05:59.247123000 CEST	
Apr  1, 2022 00:05:59.399122000 CEST	04:34:00:00:00:00:00:00:00:00:00:00:00
Apr  1, 2022 00:05:59.399128000 CEST	
Apr  1, 2022 00:05:59.495122000 CEST	04:00:00:00:00:00:00:00:00:00:00:00:00
Apr  1, 2022 00:05:59.495128000 CEST	
Pozn. Pokud je zmačknuto více kláves současně jsou zařazeny v pořadí zmačknutí v datech.

Apr  1, 2022 00:10:29.155835000 CEST	04:33:00:34:00:00:00:00:00:00:00:00:00
Apr  1, 2022 00:10:29.155843000 CEST	
Apr  1, 2022 00:10:31.619876000 CEST	04:34:00:00:00:00:00:00:00:00:00:00:00
Apr  1, 2022 00:10:31.619884000 CEST	
Řešení 1× (PetebLazar (tazatel))
1.4.2022 20:45 PetebLazar | skóre: 34 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Tak to vypadá, že to asi může fungovat (ověřeno pouze na Speed Editoru). Po zmačknutí kláves Cam1 a Cam2 v intervalu kratším než 500ms se přidá další Serial_Node pro korekce. Zůstává otázkou zda Mini Panel se svojí přecijen rozšířenou funkcionalitou má komunikaci v podobném duchu. https://www.youtube.com/shorts/EiPpc-x-Z4k
2.4.2022 13:08 PetebLazar | skóre: 34 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Oprava: Mělo být "Micro Panel", Mini Panel "tlačítkovou nouzí" trpí až srovnáním s Advanced Panelem. ;-)
3.4.2022 20:08 PetebLazar | skóre: 34 | blog: l_eonardovo_odhodlani
Rozbalit Rozbalit vše Re: Rozšíření funkce existujícího zařízení (bez aktivního zásahu do jeho HW/SW)
Mini a Micro panel disponují třemi trackbally (Advanced Panel čtyřmi), samotný UI při korekcích nabízí v rámci HDR obsahu Dynamicky rozsah rozdělen na šest intervalů (Black, Dark, Shadow, Light, Highlight a Specular) přičemž vždy pouze tři následující intervaly jsou patrně obsluhovány trackbally panelů. Údajně klávesové zkratka pro přepnutí neexistuje (nenašel jsem ji) a ze samotného panelu to nejde. V UI jsou přitom ikonky s nimiž lze aktivní rozsahy posunem vybírat. Vzhledem ke značně rigidnímu UI DavinciResolve (s velikostí a umístěním vetšiny sekcí UI nelze hýbat) nám může pomoci xdotool mousemove 4556 1718 click 1 (hlavní panel Resolve je na prostředním UHD monitoru proto tak vysoká X-souřadnice).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.