Sony DualShock 3 - call for testers: "sixaxis" script module
-
Here is the same test with an official DS3 controller :
With USB :
pi@retropie:~/RetroPie-Setup $ time evtest No device specified, trying to scan all of /dev/input/event* Not running as root, no devices may be available. Available devices: /dev/input/event0: HORI CO.,LTD. Fighting Stick mini 4 /dev/input/event1: Sony PLAYSTATION(R)3 Controller Select the device event number [0-1]: 1 Input driver version is 1.0.1 Input device ID: bus 0x3 vendor 0x54c product 0x268 version 0x8111 Input device name: "Sony PLAYSTATION(R)3 Controller" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 288 (BTN_TRIGGER) Event code 289 (BTN_THUMB) Event code 290 (BTN_THUMB2) Event code 291 (BTN_TOP) Event code 292 (BTN_TOP2) Event code 293 (BTN_PINKIE) Event code 294 (BTN_BASE) Event code 295 (BTN_BASE2) Event code 296 (BTN_BASE3) Event code 297 (BTN_BASE4) Event code 298 (BTN_BASE5) Event code 299 (BTN_BASE6) Event code 300 (?) Event code 301 (?) Event code 302 (?) Event code 303 (BTN_DEAD) Event code 704 (BTN_TRIGGER_HAPPY1) Event type 3 (EV_ABS) Event code 0 (ABS_X) Value 0 Min 0 Max 255 Fuzz 3 Flat 15 Event code 1 (ABS_Y) Value 0 Min 0 Max 255 Fuzz 3 Flat 15 Event code 2 (ABS_Z) Value 0 Min 0 Max 255 Fuzz 3 Flat 15 Event code 5 (ABS_RZ) Value 0 Min 0 Max 255 Fuzz 3 Flat 15 Event type 4 (EV_MSC) Event code 4 (MSC_SCAN) Event type 21 (EV_FF) Event code 80 (FF_RUMBLE) Event code 81 (FF_PERIODIC) Event code 88 (FF_SQUARE) Event code 89 (FF_TRIANGLE) Event code 90 (FF_SINE) Event code 96 (FF_GAIN) Properties: Testing ... (interrupt to exit) ^C real 1m22.770s user 0m0.000s sys 0m0.000s
With BT :
pi@retropie:~/RetroPie-Setup $ time evtest No device specified, trying to scan all of /dev/input/event* Not running as root, no devices may be available. Available devices: /dev/input/event0: HORI CO.,LTD. Fighting Stick mini 4 /dev/input/event1: Sony PLAYSTATION(R)3 Controller Select the device event number [0-1]: 1 Input driver version is 1.0.1 Input device ID: bus 0x5 vendor 0x54c product 0x268 version 0x8000 Input device name: "Sony PLAYSTATION(R)3 Controller" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 288 (BTN_TRIGGER) Event code 289 (BTN_THUMB) Event code 290 (BTN_THUMB2) Event code 291 (BTN_TOP) Event code 292 (BTN_TOP2) Event code 293 (BTN_PINKIE) Event code 294 (BTN_BASE) Event code 295 (BTN_BASE2) Event code 296 (BTN_BASE3) Event code 297 (BTN_BASE4) Event code 298 (BTN_BASE5) Event code 299 (BTN_BASE6) Event code 300 (?) Event code 301 (?) Event code 302 (?) Event code 303 (BTN_DEAD) Event code 704 (BTN_TRIGGER_HAPPY1) Event type 3 (EV_ABS) Event code 0 (ABS_X) Value 128 Min 0 Max 255 Fuzz 3 Flat 15 Event code 1 (ABS_Y) Value 129 Min 0 Max 255 Fuzz 3 Flat 15 Event code 2 (ABS_Z) Value 130 Min 0 Max 255 Fuzz 3 Flat 15 Event code 5 (ABS_RZ) Value 130 Min 0 Max 255 Fuzz 3 Flat 15 Event type 4 (EV_MSC) Event code 4 (MSC_SCAN) Event type 21 (EV_FF) Event code 80 (FF_RUMBLE) Event code 81 (FF_PERIODIC) Event code 88 (FF_SQUARE) Event code 89 (FF_TRIANGLE) Event code 90 (FF_SINE) Event code 96 (FF_GAIN) Properties: Testing ... (interrupt to exit) Event: time 1518719674.237363, type 3 (EV_ABS), code 1 (ABS_Y), value 0 Event: time 1518719674.237363, -------------- SYN_REPORT ------------ Event: time 1518719674.269915, type 3 (EV_ABS), code 1 (ABS_Y), value 129 Event: time 1518719674.269915, -------------- SYN_REPORT ------------ Event: time 1518719674.677360, type 3 (EV_ABS), code 1 (ABS_Y), value 0 Event: time 1518719674.677360, -------------- SYN_REPORT ------------ Event: time 1518719674.709918, type 3 (EV_ABS), code 1 (ABS_Y), value 129 Event: time 1518719674.709918, -------------- SYN_REPORT ------------ Event: time 1518719674.809465, type 3 (EV_ABS), code 0 (ABS_X), value 129 Event: time 1518719674.809465, type 3 (EV_ABS), code 1 (ABS_Y), value 0 Event: time 1518719674.809465, type 3 (EV_ABS), code 5 (ABS_RZ), value 0 Event: time 1518719674.809465, -------------- SYN_REPORT ------------ Event: time 1518719674.812372, type 3 (EV_ABS), code 0 (ABS_X), value 128 Event: time 1518719674.812372, type 3 (EV_ABS), code 1 (ABS_Y), value 130 Event: time 1518719674.812372, type 3 (EV_ABS), code 5 (ABS_RZ), value 130 Event: time 1518719674.812372, -------------- SYN_REPORT ------------ Event: time 1518719674.844958, type 3 (EV_ABS), code 1 (ABS_Y), value 129 Event: time 1518719674.844958, -------------- SYN_REPORT ------------ Event: time 1518719674.879403, type 3 (EV_ABS), code 1 (ABS_Y), value 0 Event: time 1518719674.879403, type 3 (EV_ABS), code 5 (ABS_RZ), value 0 Event: time 1518719674.879403, -------------- SYN_REPORT ------------ Event: time 1518719674.912426, type 3 (EV_ABS), code 1 (ABS_Y), value 129 Event: time 1518719674.912426, type 3 (EV_ABS), code 5 (ABS_RZ), value 130 Event: time 1518719674.912426, -------------- SYN_REPORT ------------ Event: time 1518719675.249444, type 3 (EV_ABS), code 1 (ABS_Y), value 0 Event: time 1518719675.249444, type 3 (EV_ABS), code 2 (ABS_Z), value 0 Event: time 1518719675.249444, type 3 (EV_ABS), code 5 (ABS_RZ), value 0 Event: time 1518719675.249444, -------------- SYN_REPORT ------------ Event: time 1518719675.282450, type 3 (EV_ABS), code 1 (ABS_Y), value 129 Event: time 1518719675.282450, type 3 (EV_ABS), code 2 (ABS_Z), value 130 Event: time 1518719675.282450, type 3 (EV_ABS), code 5 (ABS_RZ), value 130 Event: time 1518719675.282450, -------------- SYN_REPORT ------------ Event: time 1518719675.349408, type 3 (EV_ABS), code 1 (ABS_Y), value 0 Event: time 1518719675.349408, type 3 (EV_ABS), code 5 (ABS_RZ), value 0 Event: time 1518719675.349408, -------------- SYN_REPORT ------------ Event: time 1518719675.352426, type 3 (EV_ABS), code 1 (ABS_Y), value 130 Event: time 1518719675.352426, type 3 (EV_ABS), code 5 (ABS_RZ), value 130 Event: time 1518719675.352426, -------------- SYN_REPORT ------------ Event: time 1518719675.384983, type 3 (EV_ABS), code 1 (ABS_Y), value 129 Event: time 1518719675.384983, -------------- SYN_REPORT ------------ Event: time 1518719675.419397, type 3 (EV_ABS), code 1 (ABS_Y), value 0 Event: time 1518719675.419397, type 3 (EV_ABS), code 2 (ABS_Z), value 0 Event: time 1518719675.419397, type 3 (EV_ABS), code 5 (ABS_RZ), value 0 Event: time 1518719675.419397, -------------- SYN_REPORT ------------ Event: time 1518719675.452456, type 3 (EV_ABS), code 1 (ABS_Y), value 129 Event: time 1518719675.452456, type 3 (EV_ABS), code 2 (ABS_Z), value 131 Event: time 1518719675.452456, type 3 (EV_ABS), code 5 (ABS_RZ), value 130 Event: time 1518719675.452456, -------------- SYN_REPORT ------------ Event: time 1518719675.484970, type 3 (EV_ABS), code 2 (ABS_Z), value 130 Event: time 1518719675.484970, -------------- SYN_REPORT ------------ Event: time 1518719677.217397, type 3 (EV_ABS), code 1 (ABS_Y), value 0 Event: time 1518719677.217397, -------------- SYN_REPORT ------------ Event: time 1518719677.219915, type 3 (EV_ABS), code 1 (ABS_Y), value 129 Event: time 1518719677.219915, -------------- SYN_REPORT ------------ Event: time 1518719677.769398, type 3 (EV_ABS), code 0 (ABS_X), value 129 Event: time 1518719677.769398, type 3 (EV_ABS), code 1 (ABS_Y), value 0 Event: time 1518719677.769398, type 3 (EV_ABS), code 5 (ABS_RZ), value 0 Event: time 1518719677.769398, -------------- SYN_REPORT ------------ Event: time 1518719677.802407, type 3 (EV_ABS), code 0 (ABS_X), value 128 Event: time 1518719677.802407, type 3 (EV_ABS), code 1 (ABS_Y), value 129 Event: time 1518719677.802407, type 3 (EV_ABS), code 5 (ABS_RZ), value 130 Event: time 1518719677.802407, -------------- SYN_REPORT ------------ Event: time 1518719677.837407, type 3 (EV_ABS), code 1 (ABS_Y), value 0 Event: time 1518719677.837407, -------------- SYN_REPORT ------------ Event: time 1518719677.869925, type 3 (EV_ABS), code 1 (ABS_Y), value 129 Event: time 1518719677.869925, -------------- SYN_REPORT ------------ ^C real 0m20.763s user 0m0.000s sys 0m0.010s
Same behavior : No unwanted input with USB, a lot through BT :(
-
@sano said in Sony DualShock 3 - call for testers: "sixaxis" script module:
Same behavior : No unwanted input with USB, a lot through BT :(
Bizarre. Do you have other Bluetooth peripherals paired during testing? Perhaps if you explicitly remove everything but the controller from the stack it may resolve the issue.
Do you use the onboard wifi? Perhaps if you temporarily disconnect while testing the
controller, it can help to identify if we're seeing Bluetooth coexistence issues.I'm using the onboard Bluetooth on my Pi3 and have never seen issues such as this - but I use ethernet instead of wifi, so that may be explain the discrepancy.
-
I only had one controller connected at a time.
Moreover, I use ethernet, and disabled wifi via /boot/config.txt.
The only other BT device in range is the my wife's Fitbit Flex, but it's obviously not paired with the Pi.
Guess I'll need to find an external BT adapter and do more tests :) -
@sano said in Sony DualShock 3 - call for testers: "sixaxis" script module:
I only had one controller connected at a time.
Moreover, I use ethernet, and disabled wifi via /boot/config.txt.
The only other BT device in range is the my wife's Fitbit Flex, but it's obviously not paired with the Pi.
Guess I'll need to find an external BT adapter and do more tests :)Well, do keep me updated on any developments.
I just disabled wifi via
dtoverlay=pi3-disable-wifi
, and still can't reproduce the issue you're seeing. Maybe as a last resort, you could try to reset your controller using the pinhole at the back of the controller and then re-pair, but I doubt it'll help.You never had issues with ps3controller causing erratic axis events like this?
-
If you're up for a possible alternate to using a USB BT adapter, I have a suggestion:
Edit
/usr/bin/btuart
as superuser and change the following line:$HCIATTACH /dev/serial1 bcm43xx 921600 noflow - $BDADDR
to:
$HCIATTACH /dev/serial1 bcm43xx 460800 noflow - $BDADDR
Then reboot your Pi and see if Bluetooth works more reliably.
Also, can you let me know the Pi revision you have?
cat /proc/cpuinfo
Although I don't experience the same issue as you, I do notice a lot of
Bluetooth: hci0: Frame reassembly failed (-84)
messages, which led me to this discussion: https://github.com/raspberrypi/linux/issues/2264My Pi 3 is a revision 1.2 board (a02082).
Thanks.
-
Thanks for the tip.
Actually I've done a lot of research and found the same page as you (amongst other), that's why I was looking to test with an external adapter.Here is my RPi revision from cpuinfo (the exact same as yours BTW) :
Revision : a02082I followed your advice and reduced the connection speed, and the hci(0) don't appear anymore. Moreover, no more unwanted input on analog sticks.
Nice shot !Do you plan to merge your branch with master soon ?
Edit : actually there are still some hci errors, but very few compared to before the speed change.
-
Unfortunately, it's going to take some time before you'll see this merged in any form as we're currently busy testing everything for stretch compatibility.
Additionally, there are issues with this scriptmodule that are going to require some evaluation:
- I've backported the
hid-sony
driver from the 4.15 kernel, but patched it to revert to the old button mappings that were used by the driver in the 4.9 kernel (as well as theps3controller
driver), with the intention of minimizing user frustration from getting stuck in menus/having to remap their controller, after installing this module. I'm not sure this is a good idea, because the next Raspberry Pi firmware update on stretch will bump the kernel to 4.14.x, and thehid-sony
driver from this kernel release will start using the newer button mappings anyway. - In order to support third-party (Shanwan/Gasia) controllers, we need BlueZ 5.48. The packages I've provided work well, but there are always potential pitfalls, complications and upgrade issues when overwriting distribution versions of packages. This won't be an issue once the official Debian/Raspbian packages are upgraded to this version, but the question is how long that will take to happen, or if it will happen at all in the case of stretch.
- I haven't yet received any feedback on third-party Gasia controller compatibility. I'm fairly sure it will work just as well as Shanwan, but I need to be sure in order for us to consider this a full replacement for the old ps3controller driver.
- I've backported the
-
@psyke83
I see.
I saw the future 4.14 kernel/firmware upgrade as stated above through rpi-update github.Regarding button mapping, IMHO, I think it would be better to stay as close as possible of the upstream packages/drivers.
Moreover, the stretch image is still a beta and apparently no direct upgrade path from jessie will be supported, so we could hope than by integrating this directly in stretch, very few users will be bothered by controller remapping, because the new installs will use the new mapping anyway...My two cents.
Oh, and thanks again for your work and advices !
-
Yes, but stretch is not yet using the new mappings. Once the next firmware package is released, I'd certainly be happy to drop the old mappings.
BTW, one more thing you could try is to verify that it's not BlueZ 5.48 causing your issue with Bluetooth stability.
- Revert the change to
/usr/bin/btuart
- Revert the Bluetooth packages back to Raspbian defaults:
sudo apt-get install $(dpkg -l | grep 5.48-1~rpi1 | awk -v os_rel=$(lsb_release -sc) '{print $2"/"os_rel}')
Reboot and see if your controller is stable with the default BlueZ packages. To go back to the new BlueZ packages, just re-install the sixaxis module.
- Revert the change to
-
@psyke83
Just tested as requested.
hci0: Frame reassembly failed (-84)
errors are back, as well as unwanted analog stick events.
Going back to the working solution then :) -
@sano said in Sony DualShock 3 - call for testers: "sixaxis" script module:
@psyke83
Just tested as requested.
hci0: Frame reassembly failed (-84)
errors are back, as well as unwanted analog stick events.
Going back to the working solution then :)At least we know it's not caused by my custom BlueZ packages - much appreciated! I'm still curious as to why I don't experience the same issue, given that we have the exact same revision of Pi 3. Hopefully more people will test this to help discern if it's going to be a common issue.
-
@psyke83
Could the answer be that my RPi is near my wifi router (maybe 30cm) ?
Nevertheless those unwanted stick inputs were not there a couple of weeks ago.
Maybe a new firmware/driver/config rendering the BT controller more sensitive ? -
@sano said in Sony DualShock 3 - call for testers: "sixaxis" script module:
@psyke83
Could the answer be that my RPi is near my wifi router (maybe 30cm) ?
Nevertheless those unwanted stick inputs were not there a couple of weeks ago.
Maybe a new firmware/driver/config rendering the BT controller more sensitive ?Could be, or perhaps some interference if you have your Pi inside a metal case. Are you on jessie or the stretch testing image? The latter may have different BT/wifi firmware that can affect how Bluetooth behaves.
-
@psyke83
My Pi is in a plastic case, and I use the stretch image for a few weeks.
Still trying to find bugs with my "regular" use of retropie, but no big deal ATM. -
I have seen those
hci0: Frame reassembly failed (-84)
errors in the past in my setup, before I even tried to play with these new drivers. I never got to the bottom of it, though since it didn't seem to have any material impact on the performance I just ignored them. -
@pjft
Just FYI those errors are logged in /var/log/kern.log*.
On my setup that was several MB of logs rewritten on a daily basis (I tested and had 500kB of logs for a few minutes of DS3 use), in addition to the random inputs.
Even with a F2FS formatted root partition, I don't like having error logs writing over and over a a several MB per day on a SD card for nothing :)
Gasp, my OCD is still kicking here... -
@pjft said in Sony DualShock 3 - call for testers: "sixaxis" script module:
I have seen those
hci0: Frame reassembly failed (-84)
errors in the past in my setup, before I even tried to play with these new drivers. I never got to the bottom of it, though since it didn't seem to have any material impact on the performance I just ignored them.Yeah, those messages aren't unique to the BlueZ sixaxis plugin - they definitely occurred with sixad (ps3controller) too. I don't recall seeing complaints about ghost analog movements, though.
It's hard to debug sixad because the virtual uinput device reports a lot of accelerometer events, and doesn't support setting axis fuzz (needed to skip reporting events when there's a small deviation).
-
@sano said in Sony DualShock 3 - call for testers: "sixaxis" script module:
@pjft
Just FYI those errors are logged in /var/log/kern.log*.
On my setup that was several MB of logs rewritten on a daily basis (I tested and had 500kB of logs for a few minutes of DS3 use), in addition to the random inputs.
Even with a F2FS formatted root partition, I don't like having error logs writing over and over a a several MB per day on a SD card for nothing :)
Gasp, my OCD is still kicking here...That seems quite excessive. I would see perhaps a dozen or so messages in one day at most, not several megabytes worth. I haven't seen any warnings at all since reducing the UART speed.
Perhaps it's due to overclocking your Pi?
-
@psyke83
No overclock :)
I have a personal motto to stay as vanilla as possible.
The only changes I make on my installs are :- disabling overscan
- disabling wifi
- migrate root partition to F2FS
Here is an example of log I had for a single second before reducing speed :
Feb 24 09:51:37 retropie kernel: [552204.012012] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.012040] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.012088] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.012184] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.012274] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.012353] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.114573] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.114577] Bluetooth: hci0 ACL packet for unknown connection handle 520 Feb 24 09:51:37 retropie kernel: [552204.114642] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.114728] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.114813] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.114900] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.114966] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.181939] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.181991] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.182071] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.182165] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.182252] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.182340] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.182426] Bluetooth: hci0: Frame reassembly failed (-84) Feb 24 09:51:37 retropie kernel: [552204.182480] Bluetooth: hci0: Frame reassembly failed (-84)
-
@sano said in Sony DualShock 3 - call for testers: "sixaxis" script module:
@psyke83
No overclock :)
I have a personal motto to stay as vanilla as possible.It's good that we have a mitigation for the issue; regardless, if your warranty isn't void, perhaps you could report the issue to the firmware issues tracker. No need to go into detail about RetroPie or this scriptmodule, as you can replicate the behaviour with stock bluez and the default hid_sony driver on the current stretch kernel.
I have a suspicion that your Pi's bluetooth module may be faulty, considering that we have the same revision of Pi. I've often seen them offer to replace boards when a HW fault is diagnosed (but of course, I'm only speculating about your board).
To be clear, the problem is not that the frame reassembly errors are appearing; our revision board doesn't support HW flow control, so those messages are (unfortunately) expected. The reason I suspect a HW fault is due to the magnitude to which the error is occurring for you along with the phantom feedback. Perhaps if you can test in a "quieter" environment and rule out interference etc., it might help. I'd like to see more people test this module so we can get a wider assessment as to whether this would be a common problem.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.