I'm on LINUX, and I've create a simple script to activate : - Data connexion (3G/4G) switch ON - Enable tethering switch ON - Change PC ethernet connexion

So I've just have to plug my phone on my USB, and launch my script and voila :)

But, recently I've got a new phone (Xiaomi MI4c) which works with android 5.1.1 And my script isn't working properly, and I don't know why !:crying: Everything works, except "enable tethering" with ADB:

#adb shell su -c 'service call connectivity 30 i32 1' 
Result: Parcel(
  0x00000000: 00000000 00000002 00000006 006e0062 '............b.n.'
  0x00000010: 00700065 0064005c 00000000 00000006 'e.p.\.d.........'
  0x00000020: 00740062 0070002d 006e0061 00000000 'b.t.-.p.a.n.....')

And nothing happend

adb works fine :

# adb shell su -c 'service list connectivity'  |grep connectivity
54  connectivity: [android.net.IConnectivityManager]

I've found this :

service call connectivity 32 i32 1 on Ice Cream Sandwich (4.0) 
service call connectivity 33 i32 1 on Jelly Bean (4.1 to 4.3) 
service call connectivity 34 i32 1 on KitKat (4.4)
service call connectivity 30 i32 1 on Lollipop (5.0)

How can I see which number should I use to enable this functionality with ADB ?

Thanks for your help.


I'm uncertain behind the reason because I reached the result using trial and error but this command would do the job for Android 5.1.1:

service call connectivity 31 i32 1

As expected, you need root privileges.

Also, you may be able to get something interesting from the source code of a service, in this case, it would be android.net.IConnectivityManager.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.