Menu

#9 SpacePilot doesn't work, error "Inappropriate ioctl for device"

v1.0
open
nobody
None
5
2018-03-04
2015-01-08
hexadekamo
No

Problem:

In r183, when I connect a SpacePilot, this appears in the log:

Device detection, parsing /proc/bus/input/devices
found usb device [46d:c625]: "3Dconnexion SpacePilot" (/dev/input/mouse2)
adding device.
EVIOCGNAME ioctl failed: Inappropriate ioctl for device
device name: unknown
Number of axes: 6
failed to grab the device: Inappropriate ioctl for device
using device: /dev/input/mouse2

After this point, the SpacePilot acts as a mouse and doesn't send any 6dof events, e.g. nothing shows up in the simple_x11 example program and it doesn't work in Blender.

I think this happens because when a SpacePilot is connected, /proc/bus/input/devices lists a mouse handler first, e.g. the line "H: Handlers=mouse2 event8 ". (It's always a mouse handler and then an event handler, in that order.) The problem arises when spacenavd tries to open /dev/input/mouse2 first, gets the error, and continues to use it anyway.

Workaround:

Not sure if this is an ideal solution, but I find if I uncomment lines 130-134 in dev_usb_linux.c, my SpacePilot works successfully. Those uncommented lines reject /dev/input/mouse2 with a EVIOCGBIT error, causing spacenavd to remove mouse2 altogether and try /dev/input/event8 next:

Device detection, parsing /proc/bus/input/devices
found usb device [46d:c625]: "3Dconnexion SpacePilot" (/dev/input/mouse2)
adding device.
EVIOCGNAME ioctl failed: Inappropriate ioctl for device
device name: unknown
Number of axes: 6
EVIOCGBIT ioctl failed
: Inappropriate ioctl for device
removing device: unknown
adding device.
device name: 3Dconnexion SpacePilot
Number of axes: 6
using device: /dev/input/event8

After this point, the SpacePilot sends 6dof events which appear in simple_x11, and it also works in Blender.

Discussion

  • John Tsiombikas

    John Tsiombikas - 2015-01-09

    Hello, and thanks a lot for tracking this problem down!
    I did a simple change which I believe should fix this. Could you try again with the svn HEAD (rev 184 currently) and let me know if it works?

    Cheers.

     
  • John Tsiombikas

    John Tsiombikas - 2015-02-12
    • status: open --> closed-fixed
     
  • William Baker

    William Baker - 2017-04-03

    I had the same issue with SVN checkout from April 3, 2017. The suggested workaround above, uncomment 4 lines and recompile, resolved my issue as well.

     
  • William Baker

    William Baker - 2017-04-03

    FYI. Fedora release 25. Last entry of devices file contains the following:

    I: Bus=0003 Vendor=046d Product=c629 Version=0111
    N: Name="3Dconnexion SpacePilot PRO "
    P: Phys=usb-0000:00:1a.7-1.4/input1
    S: Sysfs=/devices/pci0000:00/0000:00:1a.7/usb1/1-1/1-1.4/1-1.4:1.1/0003:046D:C629.0003/input/input12
    U: Uniq=
    H: Handlers=leds mouse1 event9 js0
    B: PROP=0
    B: EV=2001b
    B: KEY=7fffffff 0 0 0 0
    B: ABS=3f
    B: MSC=10
    B: LED=100

    --- After recompile

    [root@linlab log]# /usr/local/bin/spacenavd -d -v
    Spacenav daemon svn-r110
    Device detection, parsing /proc/bus/input/devices
    found usb device [46d:c629]: "3Dconnexion SpacePilot PRO " (/dev/input/event9)
    adding device.
    device name: 3Dconnexion SpacePilot PRO
    Number of axes: 6
    Axis 0 value range: -500 - 500 (fuzz: 0)
    Axis 1 value range: -500 - 500 (fuzz: 0)
    Axis 2 value range: -500 - 500 (fuzz: 0)
    Axis 3 value range: -500 - 500 (fuzz: 0)
    Axis 4 value range: -500 - 500 (fuzz: 0)
    Axis 5 value range: -500 - 500 (fuzz: 0)
    using device: /dev/input/event9
    trying to open X11 display ":0"
    XAUTHORITY=/root/.xauthXx4NVP
    Removing device "3Dconnexion SpacePilot PRO " from X server
    unhandled event: 17
    adding dev event for device: /dev/input/event9

     
  • William Baker

    William Baker - 2017-04-03

    Output from stock spacenavd included in Fedora repository:

    [root@linlab log]# /usr/bin/spacenavd -d -v
    Spacenav daemon 0.6
    Device detection, parsing /proc/bus/input/devices
    found usb device [46d:c629]: "3Dconnexion SpacePilot PRO " (/dev/input/leds)
    adding device.
    failed to open device: No such file or directory
    removing device:
    adding device.
    EVIOCGNAME ioctl failed: Inappropriate ioctl for device
    device name: unknown
    Number of axes: 6
    failed to grab the device: Inappropriate ioctl for device
    using device: /dev/input/mouse1
    trying to open X11 display ":0"
    XAUTHORITY=/root/.xauthXx4NVP

     
  • Bernhard Popp

    Bernhard Popp - 2018-01-28

    Hello, since I updated my system the driver won't work the way it should. Now I've got the here called problem.

    I use Arch linux, kernel 4.14.15-1, the latest spacenavd aviable via AUR (the same like manual download). The Version of libspnav is 0.2.3-2. In spacenavd no difference if the lines 130-134 are comented or uncomented.
    Here the posting by spacenavd:

    [bernhard@wicca ~]$ sudo spacenavd -v -d
    Spacenav daemon 0.6
    failed to open config file /etc/spnavrc: No such file or directory. using defaults.
    Device detection, parsing /proc/bus/input/devices
    found usb device [46d:c629]: "3Dconnexion SpacePilot PRO " (/dev/input/mouse2)
    adding device.
    EVIOCGNAME ioctl failed: Inappropriate ioctl for device
    device name: unknown
    Number of axes: 6
    failed to grab the device: Inappropriate ioctl for device
    using device: /dev/input/mouse2
    trying to open X11 display ":0"
    XAUTHORITY=/home/bernhard/.Xauthority

     
  • John Tsiombikas

    John Tsiombikas - 2018-01-28

    Please try the latest subversion code. I think this bug was fixed in revision 184 back in 2015. If you can reproduce the bug with the code from svn, let me know to re-open this bug.

     
    • Bernhard Popp

      Bernhard Popp - 2018-01-29

      Hi John,
      the AUR package loads the up ot date sourcecode of spacenavd, I did verify
      against the manual download, so it shoud be r184. I tried downgrad of
      kernel without any change. On the laptop it works there is the only
      diference libspnav 0.2.3-1, on workstation libspnav 0.2.3-2. Can't
      downgrade to libspnav, don't have the outdated package in cache anywhere.

       

      Last edit: John Tsiombikas 2018-01-30
      • John Tsiombikas

        John Tsiombikas - 2018-01-30

        Don't bother. libspnav shouldn't make any difference. I'm re-openning the bug.

         
  • John Tsiombikas

    John Tsiombikas - 2018-01-30
    • status: closed-fixed --> open
     
  • Sécherre

    Sécherre - 2018-03-04

    THANKS A LOT from France !!!!!

    I've spent hours looking for a solution and finaly your solution works fine for my Space Pilot under Debian.
    Just an addon : the "make install" creates the driver under /usr/local/bin. It must be copied under /usr/bin after stoping the former spacenavd service.

    Sylvain

     
    • John Tsiombikas

      John Tsiombikas - 2018-03-04

      If you want to install in /usr just use the option --prefix=/usr when running the configure script. But copying it manually also works.

       

      Last edit: John Tsiombikas 2018-03-04

Log in to post a comment.

MongoDB Logo MongoDB