TrebleDroid / treble_experimentations

Scripts to automatically build/CI/Release TrebleDroid GSI
Other
224 stars 31 forks source link

Unable to use DualShock 4 controller on Bluetooth with builds using Android 13 r52 and later #52

Open ohaiibuzzle opened 1 year ago

ohaiibuzzle commented 1 year ago

Describe the bug

Starting from android_13.0.0_r52 ci-20230614, DualShock 4 controllers fails to connect properly and cause Bluetooth to become completely unresponsive if connected (other connected devices cannot be used, no new devices can be searched or connected to)

To Reproduce

1. Install a build based on Android 13 r52 (ci-20230614 being the first) 2. Pair a DualShock 4 controller 3. Bluetooth explodes ### Expected behavior Controller connects and works properly ### Smartphone (please complete the following information): - Device: LGE LM-V500N (flashlmdd) - Build Flavor: system-td-arm64-ab-vanilla.img.xz - Version: android_13.0.0_r52 ci-20230614 ### Additional context During the connection, the `hid-sony` driver would fail to obtain the DS4's controller's calibration CRC and then fails, as seen in `logcat`: ``` 08-19 15:58:01.063 0 0 W [ 195.255223 08-19 15:58:01.042] [1: kworker/1:2: 1348] sony 0005:054C:09CC.0003: DualShock 4 calibration report's CRC check failed, received crc 0x0 != 0x81cf7ab4 08-19 15:58:01.063 0 0 W [ 195.255332 08-19 15:58:01.042] [1: kworker/1:2: 1348] sony 0005:054C:09CC.0003: Retrying DualShock 4 get calibration report request 08-19 15:58:01.063 0 0 W [ 195.264162 08-19 15:58:01.052] [1: kworker/1:2: 1348] sony 0005:054C:09CC.0003: DualShock 4 calibration report's CRC check failed, received crc 0x0 != 0x81cf7ab4 08-19 15:58:01.063 0 0 W [ 195.264172 08-19 15:58:01.052] [1: kworker/1:2: 1348] sony 0005:054C:09CC.0003: Retrying DualShock 4 get calibration report request 08-19 15:58:01.064 0 0 W [ 195.269940 08-19 15:58:01.052] [1: kworker/1:2: 1348] sony 0005:054C:09CC.0003: DualShock 4 calibration report's CRC check failed, received crc 0x0 != 0x81cf7ab4 08-19 15:58:01.065 0 0 E [ 195.269953 08-19 15:58:01.052] [1: kworker/1:2: 1348] sony 0005:054C:09CC.0003: Failed to get calibration data from Dualshock 4 08-19 15:58:01.065 0 0 I [ 195.270607 08-19 15:58:01.062] [1: kworker/1:2: 1348] sony 0005:054C:09CC.0003: hidraw0: BLUETOOTH HID v80.00 Gamepad [Wireless Controller] on 08-19 15:58:01.065 0 0 E [ 195.270614 08-19 15:58:01.062] [1: kworker/1:2: 1348] sony 0005:054C:09CC.0003: failed to claim input ``` This would then cause `bt_btif` to repeatedly trying to setup a non-existent input device and effectively lock up Bluetooth completely: ``` 08-19 15:58:02.104 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.155 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.205 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.256 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.267 1379 6774 I vendor.qti.bluetooth@1.0-ibs_handler: ProcessIbsCmd: Received IBS_SLEEP_IND: 0xFE 08-19 15:58:02.267 1379 6774 D vendor.qti.bluetooth@1.0-ibs_handler: SerialClockVote: vote for UART CLK OFF 08-19 15:58:02.274 1379 6774 I vendor.qti.bluetooth@1.0-ibs_handler: ProcessIbsCmd: Received IBS_WAKE_IND: 0xFD 08-19 15:58:02.275 1379 6774 D vendor.qti.bluetooth@1.0-ibs_handler: SerialClockVote: vote for UART CLK ON 08-19 15:58:02.275 1379 6774 I vendor.qti.bluetooth@1.0-ibs_handler: ProcessIbsCmd: Writing IBS_WAKE_ACK 08-19 15:58:02.307 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.358 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.408 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.442 1379 6774 I vendor.qti.bluetooth@1.0-ibs_handler: ProcessIbsCmd: Received IBS_SLEEP_IND: 0xFE 08-19 15:58:02.442 1379 6774 D vendor.qti.bluetooth@1.0-ibs_handler: SerialClockVote: vote for UART CLK OFF 08-19 15:58:02.454 1379 6774 I vendor.qti.bluetooth@1.0-ibs_handler: ProcessIbsCmd: Received IBS_WAKE_IND: 0xFD 08-19 15:58:02.455 1379 6774 D vendor.qti.bluetooth@1.0-ibs_handler: SerialClockVote: vote for UART CLK ON 08-19 15:58:02.455 1379 6774 I vendor.qti.bluetooth@1.0-ibs_handler: ProcessIbsCmd: Writing IBS_WAKE_ACK 08-19 15:58:02.459 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.510 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.553 1393 6557 D sensors_hal_light: handle_sns_std_sensor_event:80, ambient_light_event: ts=196757856384, lux = 50, raw_adc=1, pdata=126 08-19 15:58:02.561 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.584 0 0 I [ 196.787120 08-19 15:58:02.572] [3: irq/618-wdog-sn: 457] pm8150b_charger: wdog_snarl_irq_handler: IRQ: wdog-snarl 08-19 15:58:02.584 0 0 E [ 196.788044 08-19 15:58:02.572] [3: kworker/3:1: 112] VENEER: psy_external_changed: externally changed : B:VOLTAGE_NOW 08-19 15:58:02.584 0 0 E [ 196.788113 08-19 15:58:02.572] [3: kworker/3:1: 112] VENEER: update_veneer_uninodes: mw_now = 2500 08-19 15:58:02.584 0 0 E [ 196.788147 08-19 15:58:02.572] [3: kworker/3:1: 112] UNINODE: charger_name_store: Storing USB2 08-19 15:58:02.596 0 0 W [ 196.800689 08-19 15:58:02.592] [3: health@2.1-serv: 1388] healthd: battery l=48 v=3922 t=33.4 h=2 st=2 c=291015 fc=3986000 cc=2 chg=u 08-19 15:58:02.612 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.654 1379 6774 I vendor.qti.bluetooth@1.0-ibs_handler: ProcessIbsCmd: Received IBS_SLEEP_IND: 0xFE 08-19 15:58:02.654 1379 6774 D vendor.qti.bluetooth@1.0-ibs_handler: SerialClockVote: vote for UART CLK OFF 08-19 15:58:02.662 1379 6774 I vendor.qti.bluetooth@1.0-ibs_handler: ProcessIbsCmd: Received IBS_WAKE_IND: 0xFD 08-19 15:58:02.662 1379 6774 D vendor.qti.bluetooth@1.0-ibs_handler: SerialClockVote: vote for UART CLK ON 08-19 15:58:02.662 1379 6774 I vendor.qti.bluetooth@1.0-ibs_handler: ProcessIbsCmd: Writing IBS_WAKE_ACK 08-19 15:58:02.663 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.714 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.765 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.816 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.867 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 08-19 15:58:02.918 6721 6778 W bt_btif : packages/modules/Bluetooth/system/main/bte_logmsg.cc:194 LogMsg: bta_hh_co_data: Error: fd = 294, ready 0, len = 78 ```` It appears that the issue may trace up to upstream as non-TD devices also appears to be experiencing the same issue: https://github.com/PixelExperience/android-issues/issues/5562
Professorpisky commented 1 year ago

I am experiencing the same issue. I'm thinking of going back to previous builds

AnonVendetta commented 1 year ago

I'm glad I'm not the only one that noticed this. For me, my PS4 controller stop working around late April/May, for all Android 13 gsis. I tried AOSP, LOS 20, Pixel Exoerience, a few others, same behavior on all. The controller would Bluetooth pair successfully, but wasn't functional in apps where I expected it to work, like Call Of Duty Mobile, AetherSX2, and ePSXe.

I've tested it on the Android 14 gsi release, it works fine there.

djStolen commented 9 months ago

Hi people,

I have tested:

1) Xiaomi Redmi Note 8/Ginkgo - PE Plus A13 - doesnt work, tries to connect, show on the phone like it's briefly connected, and disconnects. 2) Xiaomi Redmk Note 8T/Willow - LOS18 A11- Same behaviour 3) Ginkgo - PE Plus A12 - works like a charm.

Neither LOS nor PE A14 available for phones I have. (Have also Surya and Redmi Note 9 Pro)

Is there some interest from the community to solve this?

I havent logcated this since I dont know how big the interest of the community to solve it.

ThreeDeeJay commented 8 months ago

I can confirm that both the PlayStation DualShock 4 and DualSense now work again after upgrading to LineageOS 21 (Android 14) So unless the fix can be backported to LOS 21/A13, upgrading seems like the only feasible option.