Hardware Android JoyCon Lag

Does this happen to you?

  • Yes

  • No


Results are only viewable after voting.

MK73DS

Non-commutative algebra
Member
Joined
Feb 23, 2015
Messages
575
Trophies
0
Age
25
Location
France
Website
www.youtube.com
XP
1,536
Country
France
Thanks to this info I was successful with modifying the file on my Samsung Galaxy S 5 running a old version of Android 4.4.2
Neither option matched so I used Google to figure out how to disassemble the file with GDB and find the range of offsets that dealt with bta_hh_read_ssr_param. I didn't understand what each of the multiple mov lines did. So I just used a hex editor and did a less specific search for 4F F4 48 (since even the start of the search strings provided never had any hits) and found one result in the same offset range from the disassembly that had a 70 as the last number. I changed those all to 18 21 00 BF and rebooted. Then tested a Joy-Con and everything worked.


Update: I have found one problem, when I eventually got around to trying my Pro Controller I found that it still has the normal lag. Why would it not be affected by this fix.
The fix is working because when I swap back to a Joy-Con it works without lag.
Has anyone else actually tested a Switch Pro Controller?

Thanks !
Your method works on Oreo too ! (At least on Samsung Galaxy S7)


EDIT : it worked only for the left joycon and only until reboot... Which is very weird. Now it doesn't work at all :/

EDIT 2 : There is also a bluetooth.default.so file in /system/lib64/hw, but it does not have any matching pattern...

EDIT 3 : I was able to make it work by editing the second bluetooth.default.so (in the lib64 folder). I can't make a general protocol on how to patch the file, but on my Galaxy S7 running Oreo I had to replace the first occurence of 09648052 with 09038052. I used objdump to decompile the file (but I wan't able to find any reference to ssr), and searched a line with value 0x320 in it (which is 800, the default value). I wanted to try all lines where 0x320 is assigned, I was lucky it worked on the first one ! (This is why you have to replace only the first occurence)
I found that (this is in reverse order)
  • 52 means "mov"
  • 80 means ???
  • 6409 is 0x640 in the 9th register. I don't know why the value is doubled. (And so, to put 24, which is 0x18, just replace 640 with 0x018 * 2 = 0x030)
I know very little (almost nothing) about assembly and machine code, so this may be completly wrong. However, this works on my phone, so it may be worth it for you to try this (always with a backup just in case :P )
 
Last edited by MK73DS, , Reason: Solved my issue
  • Like
Reactions: lordelan

TheTess

Member
Newcomer
Joined
Aug 28, 2015
Messages
13
Trophies
0
XP
350
Country
Venezuela
Hahaha I've been looking to root my Android but MetroPCs doesn't like that. Too bad there's no a solution for non rooted phones at the time.
 

guily6669

GbaTemp is my Drug
Member
Joined
Jun 3, 2013
Messages
2,333
Trophies
1
Age
34
Location
Doomed Island
XP
2,097
Country
United States
You could try KingRoot, its usually a one press and phone is rooted, however I can't say I liked the crap root management and other crapware it used to have (don't know at what point is the app nowadays) ;).
 

TheTess

Member
Newcomer
Joined
Aug 28, 2015
Messages
13
Trophies
0
XP
350
Country
Venezuela
You could try KingRoot, its usually a one press and phone is rooted, however I can't say I liked the crap root management and other crapware it used to have (don't know at what point is the app nowadays) ;).
No :(
Kingroot still doesn't support my phone.
I think I already went offtopic enough.
 

guily6669

GbaTemp is my Drug
Member
Joined
Jun 3, 2013
Messages
2,333
Trophies
1
Age
34
Location
Doomed Island
XP
2,097
Country
United States
Its not off topic at all as you need to be rooted for doing the guide ;).

I only rooted one of my devices and KingRoot worked 4 it a few years ago, was just a one press and bam, rooted, but sadly I couldnt install a better superuser root manager :(.

However it totally helped me a lot on that low performance, low memory phone...

Other than that I only unlocked the bootloader of my Nvidia Shield with Nvidia authorization as I had problems, but was only to install a full first version FW, it all went well, then I locked it again, then I went to update the android version officially from Nvidia Software and boom blackout LOL.
 
Last edited by guily6669,
  • Like
Reactions: Xabring

ganons

Well-Known Member
Member
Joined
Jun 12, 2005
Messages
3,290
Trophies
1
XP
3,101
Country
Wow so this lag fix works for ds4 controllers?

Btw it's not possible to use a Wii u pro controller on Android phones right?
 

devilsclaw

New Member
Newbie
Joined
Sep 26, 2018
Messages
2
Trophies
0
XP
55
Country
United States
I did a patch to android 7.1.1 for the Moto Z Pure
Patch:
Search) B0 F5 48 7F 1A D9 28 48
Change) B0 F1 14 0F 1A D9 28 48

Search) F4 48 71 AD F8 02 10 78
Change) F0 14 01 AD F8 02 10 78

Search) F4 48 72 79 44 DA F7 71
Change) F0 14 02 79 44 DA F7 71

Search) F4 48 72 79 44 DA F7 72
Change) F0 14 02 79 44 DA F7 72
 

KHEOPS

Well-Known Member
Member
Joined
Aug 29, 2018
Messages
532
Trophies
0
XP
386
Country
France
I read the thread.... And so I bought this.
1538177756-79-large-default.jpg

8Bitdo Wireless Bluetooth adapter for Windows/Mac/Raspberry Pi/Nintendo Switch
1538178110-51l65o6x7al-sx342.jpg

Problem solved ( no latency ) on android otg on windows on mac etc...
Absolutely perfect on everything I tested, this pad has rumbled hd as a jewel, it is more ergonomic, it holds longer the load ,perfect analog, need to continue? And at mario kart8 switch, I'm kicking ass with this great pad.
I'm not talking about the super famicom version of super mario kart, because the... how can I say this?
Of course this pad is also perfect because it is the original custom design, in short pure homebrew happiness.
The joycon are really the worst controllers nintendo has ever built, and without dpad, so they exist on games and watches nintendo, what the hell is this shit seriously? At 79€ or 80$ bullshit yes......

And now let's talk about joycon ergonomics on android? I have the sfc30pro clip
It looks like this...
1538179332-8bitdo-gamepad-mobile-phone-xtander-grip-for-sfc30.jpg

See you later and have a good game
 
Last edited by KHEOPS,

devilsclaw

New Member
Newbie
Joined
Sep 26, 2018
Messages
2
Trophies
0
XP
55
Country
United States
This is unrelated to this post. it is about getting certain controllers working with out lag, not about buying an alternative. I also have that controller but again, not on topic in anyway.
 

KHEOPS

Well-Known Member
Member
Joined
Aug 29, 2018
Messages
532
Trophies
0
XP
386
Country
France
This is unrelated to this post. it is about getting certain controllers working with out lag, not about buying an alternative. I also have that controller but again, not on topic in anyway.
I know, but so much more practical is this pad.
 

Petrifying

Member
Newcomer
Joined
May 23, 2018
Messages
16
Trophies
0
Location
California, USA
XP
154
Country
United States
I can confirm this works on the ZTE Zmax Pro, if bluetooth doesn't turn on change the permissions to (RW, R, R)

The first line was the one that appeared.

Thank you so much for the fix! I've been wanting to play with my joy-cons/pro controller on my phone for a long time.
 

Jayro

MediCat USB Dev
Developer
Joined
Jul 23, 2012
Messages
12,972
Trophies
4
Location
WA State
Website
ko-fi.com
XP
16,996
Country
United States
I'm on a Galaxy S9+ with Oreo 8.0.0 and a Galaxy Tab A with S Pen, also on Oreo 8.1.0, and all Nintendo controllers for the Switch lag for me by about a full second. Every emulator I try them on is just unplayable. Hopefully a joycon update eventually fixes the issue.
 

Oscar_Barajas

New Member
Newbie
Joined
Dec 19, 2018
Messages
2
Trophies
0
Age
34
XP
59
Country
United States
Thanks !
Your method works on Oreo too ! (At least on Samsung Galaxy S7)


EDIT : it worked only for the left joycon and only until reboot... Which is very weird. Now it doesn't work at all :/

EDIT 2 : There is also a bluetooth.default.so file in /system/lib64/hw, but it does not have any matching pattern...

EDIT 3 : I was able to make it work by editing the second bluetooth.default.so (in the lib64 folder). I can't make a general protocol on how to patch the file, but on my Galaxy S7 running Oreo I had to replace the first occurence of 09648052 with 09038052. I used objdump to decompile the file (but I wan't able to find any reference to ssr), and searched a line with value 0x320 in it (which is 800, the default value). I wanted to try all lines where 0x320 is assigned, I was lucky it worked on the first one ! (This is why you have to replace only the first occurence)
I found that (this is in reverse order)
  • 52 means "mov"
  • 80 means ???
  • 6409 is 0x640 in the 9th register. I don't know why the value is doubled. (And so, to put 24, which is 0x18, just replace 640 with 0x018 * 2 = 0x030)
I know very little (almost nothing) about assembly and machine code, so this may be completely wrong. However, this works on my phone, so it may be worth it for you to try this (always with a backup just in case :P )

Hey! Thanks SO MUCH for this. I was able to get my Xiaomi Pocophone working with my switch pro controller.

One thing that changed in the latest Android iterations is that there is no Bluetooth.defaults.so anymore. The file to modify is /system/lib64/libbluetooth.so
 
Last edited by Oscar_Barajas,

Jayro

MediCat USB Dev
Developer
Joined
Jul 23, 2012
Messages
12,972
Trophies
4
Location
WA State
Website
ko-fi.com
XP
16,996
Country
United States
Hey! Thanks SO MUCH for this. I was able to get my Xiaomi Pocophone working with my switch pro controller.

One thing that changed in the latest Android iterations is that there is no Bluetooth.defaults.so anymore. The file to modify is /system/lib64/libbluetooth.so
Can I edit that file without needing to be rooted? I'm leasing my phone and can't root it.
 

Oscar_Barajas

New Member
Newbie
Joined
Dec 19, 2018
Messages
2
Trophies
0
Age
34
XP
59
Country
United States
Can I edit that file without needing to be rooted? I'm leasing my phone and can't root it.
Unfortunately no, since you'll be modifying a system file which is the purpose of "Rooting". However even if youre leasing you can always "unroot" your phone by re-locking your bootloader and reinstalling stock firmware.
 

Jayro

MediCat USB Dev
Developer
Joined
Jul 23, 2012
Messages
12,972
Trophies
4
Location
WA State
Website
ko-fi.com
XP
16,996
Country
United States
Unfortunately no, since you'll be modifying a system file which is the purpose of "Rooting". However even if youre leasing you can always "unroot" your phone by re-locking your bootloader and reinstalling stock firmware.
Okay, then maybe I'll root my tablet and try it out. Thanks!
 

teddy74eva

New Member
Newbie
Joined
Dec 26, 2018
Messages
1
Trophies
0
Age
24
XP
65
Country
Poland
Hey! Thanks SO MUCH for this. I was able to get my Xiaomi Pocophone working with my switch pro controller.

One thing that changed in the latest Android iterations is that there is no Bluetooth.defaults.so anymore. The file to modify is /system/lib64/libbluetooth.so
Could you please host it somewhere? I have the Mix 2S and I've been endlessly trying to get it to work. We have the same BT module so your file will work on my device. I'll be forever grateful for this!

Edit. Nevermind, finally did it myself.
 
Last edited by teddy74eva,

Joaco95

Member
Newcomer
Joined
Jun 17, 2011
Messages
24
Trophies
0
Age
28
XP
213
Country
Mexico
Thanks !
Your method works on Oreo too ! (At least on Samsung Galaxy S7)


EDIT : it worked only for the left joycon and only until reboot... Which is very weird. Now it doesn't work at all :/

EDIT 2 : There is also a bluetooth.default.so file in /system/lib64/hw, but it does not have any matching pattern...

EDIT 3 : I was able to make it work by editing the second bluetooth.default.so (in the lib64 folder). I can't make a general protocol on how to patch the file, but on my Galaxy S7 running Oreo I had to replace the first occurence of 09648052 with 09038052. I used objdump to decompile the file (but I wan't able to find any reference to ssr), and searched a line with value 0x320 in it (which is 800, the default value). I wanted to try all lines where 0x320 is assigned, I was lucky it worked on the first one ! (This is why you have to replace only the first occurence)
I found that (this is in reverse order)
  • 52 means "mov"
  • 80 means ???
  • 6409 is 0x640 in the 9th register. I don't know why the value is doubled. (And so, to put 24, which is 0x18, just replace 640 with 0x018 * 2 = 0x030)
I know very little (almost nothing) about assembly and machine code, so this may be completly wrong. However, this works on my phone, so it may be worth it for you to try this (always with a backup just in case :P )

I tried this running Android 9.0 on moto g6 plus but did not work at all. Sometimes it lags, sometimes it doesn't. Joy con still lags.

The bluetooth.default.so file doesnt exist anymore on pie, is there anything else to fix this problem?
 

MK73DS

Non-commutative algebra
Member
Joined
Feb 23, 2015
Messages
575
Trophies
0
Age
25
Location
France
Website
www.youtube.com
XP
1,536
Country
France
I tried this running Android 9.0 on moto g6 plus but did not work at all. Sometimes it lags, sometimes it doesn't. Joy con still lags.

The bluetooth.default.so file doesnt exist anymore on pie, is there anything else to fix this problem?

Sorry, the only phone I have which supports Android 9 is my Note 9 and I don't want to root it yet :/
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: Where's everybody?