Hi,

On Tue, Dec 17, 2019 at 06:57:54PM +0000, Raf Czlonka wrote:
> I use a Philips USB foot pedal[0] as an additional input device.
> With usbhidaction(1), I can "program" its four "buttons".
> 
> After recent changes to uhid(4) device nodes' permissions, my USB
> foot pedal "stopped working".
> 
> I understand that it is a *very recent* change but I rely on this
> input device for my day-to-day computer usage and have a couple of
> questions. I understand that the below permissions are final(?).
> 
>       crw-------  1 root  wheel   62,   0 Dec 16 11:17 /dev/uhid0
>       crw-------  1 root  wheel   62,   1 Dec 16 11:17 /dev/uhid1
>       crw-------  1 root  wheel   62,   2 Dec 16 11:17 /dev/uhid2
>       crw-------  1 root  wheel   62,   3 Dec 16 11:17 /dev/uhid3
>       crw-------  1 root  wheel   62,   4 Dec 16 11:17 /dev/uhid4
>       crw-------  1 root  wheel   62,   5 Dec 16 11:17 /dev/uhid5
>       crw-------  1 root  wheel   62,   6 Dec 16 11:17 /dev/uhid6
>       crw-------  1 root  wheel   62,   7 Dec 16 11:17 /dev/uhid7
> 
> I use(d) the below script (executed from .xsession) in order to
> configure and use the foot pedal:
> 
>       #!/bin/sh
>       test -r $HOME/.footpedal.conf && {
>               pgrep usbhidaction > /dev/null ||
>                       usbhidaction -f $(dmesg | awk '/Footcontrol USB/ {
>                               getline
>                               getline
>                               print $1
>                       }' | tail -n 1) -c $HOME/.footpedal.conf -i
>               }
> 
>       $ cat $HOME/.footpedal.conf
>       Generic_Desktop:Joystick.Generic_Desktop:Pointer.Button:Button_1        
> 1
>               action1
>       Generic_Desktop:Joystick.Generic_Desktop:Pointer.Button:Button_2        
> 1
>               action2
>       Generic_Desktop:Joystick.Generic_Desktop:Pointer.Button:Button_3        
> 1
>               action3
>       Generic_Desktop:Joystick.Generic_Desktop:Pointer.Button:Button_4        
> 1
>               action4
> 
> 1. Shall I *simply* introduce chmod(1)/chown(8) step in the above script?
> 

Yes, this is what I recommend.  The good thing is that your script
already knows the exact uhid device of your footpedal, so doing a
chmod/chown for this will not automatically open all other HID
devices.

> 2. Is the situation still more of a "watch this space"?
> 

Maybe.  It is difficult to find a solution for such simple and generic
devices, but we generally recommend to write drivers instead of
relying on uhid(4) or ugen(4).

> 3. Is there any other way to get the uhid(4) device node (-f option) for
>    a particular USB device, other than the above dmesg(8)|awk(1) hack?
> 

All uhid(4) devices support the USB_DEVICEINFO ioctl which returns the
vendor/product as strings and Ids.  This is what most HID code does at
the moment: scan all /dev/uhid* devices and query either
USB_DEVICEINFO or the HID class (which is even more complicated).

But you probably don't want to do ioctls from a script (doing this
from perl or python is just ugly), don't you?  So you could eventually
parse output from usbdevs or the report/output from usbhidctl.

> 4. Or perhaps I'm doing it all wrong?
> 

No, you're not doing it wrong.  There is no better way to use your pedal.

Reyk

> Relevant bits:
> 
>       $ dmesg
>       [...]
>       uhidev1 at uhub0 port 10 configuration 1 interface 0 "Philips Speech 
> Processing Footcontrol USB" rev 1.00/3.02 addr 3
>       uhidev1: iclass 3/1
>       uhid0 at uhidev1: input=3, output=0, feature=0
>       [...]
> 
>       $ usbdevs -v
>       Controller /dev/usb0:
>       addr 01: 8086:0000 Intel, xHCI root hub
>                super speed, self powered, config 1, rev 1.00
>                driver: uhub0
>       addr 02: 047d:1002 Kensington, USB/PS2 Wheel Mouse
>                low speed, power 100 mA, config 1, rev 4.00
>                driver: uhidev0
>       addr 03: 0911:091a Philips Speech Processing, Footcontrol USB
>                full speed, power 100 mA, config 1, rev 3.02
>                driver: uhidev1
>       addr 04: 1209:2301 Keyboardio, Model 01
>                full speed, power 500 mA, config 1, rev 1.00, iSerial Ckbio01
>                driver: umodem0
>                driver: uhidev2
>                driver: uhidev3
> 
> [0] 
> https://www.dictation.philips.com/gb/products/transcription-accessories/foot-control-acc2300/
> 
> Thanks in advance,
> 
> Raf
> 

Reply via email to