I promised I would report back, so here goes. I bought a second-hand Logitech G27 because of the reports in some places that the newer G29 (aka 920) wouldn’t work with kernel version 4.4, but that might have been unnecessary. It would have been cheaper to buy a new G29. Also the gear shifter didn’t work in my particular G27 (even under Windows) unfortunately. I dare say the G29 might have worked.
So on my Jetson TX2 with JetPack 3.2, here’s what worked and didn’t work:
o I didn’t make any kernel changes
o fftest didn’t work except for a tiny nudge when I did:
$ sudo fftest /dev/input/event5
o ffmvforce didn’t seem to do anything
o The ltwheelconfig utility from https://github.com/TripleSpeeder/LTWheelConf:
- $ sudo apt-get install libusb-1.0.0-dev (and non -dev version?) required to build
- Had to move -l$(LIBS) to end of gcc line in Makefile
- Trying to use --autocentre command didn’t work, nothing happened
- Doing reset command did turn on force autocentering on the wheel! Like this:
$ ./ltwheelconfig --wheel G27 –x
o Very useful example code from https://gist.github.com/rdb/8864666 showed me (in Python) how to read /dev/input/js0, which helped me enumerate which axes (continuous analogue inputs) and buttons (digital inputs) mapped to what with my wheel. Then I could write my own C++ code which read from /dev/input/js0 to read those inputs successfully in the same way.
o Useful documentation on the events generated by wheel movement (and synthetic events created initially on first opening the device) at https://www.kernel.org/doc/Documentation/input/joystick-api.txt
o ffcfstress utility did work, making my wheel turn backwards and forwards – so I found the source code for that invaluable in understanding how I could make my wheel turn (with autocentering turned off, to avoid a fight between two types of force regime).
$ sudo ffcfstress /dev/input/event5
o Sometimes my wheel wouldn’t turn when my program asked a force to be applied, for no obvious reason. I think it became reliable when I changed the setting in source code I based on ffcfstress to:
stop_and_play = 1
so that it cancelled the previous “effect” each time I wanted the force updated.
Hope that’s useful to anyone working with a steering wheel in future.