I am working on adb with my Samsung Galaxy Device. I want to get the IMEI number of the device using adb but I have been unable to do that.

I tried the Following:

    adb shell dumpsys iphonesubinfo

but it returns nothing.

I also tried with Service Call Command:

 adb shell service call iphonesubinfo

but it gives me Strange Result Like this:

  Result: Parcel(                                                        
0x00000000: 00000000 0000000f 00350033 00390038 '........'    
0x00000010: 00320037 00380030 00350034 00350031 ''   
0x00000020: 00300031 00000033                   '1.0.3...        ')

Can anybody Help me out with this?

  • You could try calling an intent like below: am start -a android.intent.action.DIAL -d "tel:*%2306%23"
    – esQmo_
    Apr 4 '18 at 22:31
  • @esQmo_ But that will just open Dialer wirh IMEI getting code. I don't user to manually do anything.
    – yash
    Apr 5 '18 at 8:07
  • 1
    Related: How to get 2nd IMEI number using adb? Jul 21 '20 at 6:39

Try putting this code in to a .bat file and running it:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=6*" %%a in ('adb shell "service call iphonesubinfo 1 ^| grep -m 1 \"'\""') do (
set imei1=%%a)
for /f "tokens=6*" %%b in ('adb shell "service call iphonesubinfo 1 ^| grep -m 2 \"'\""') do (
set imei2=%%b)
for /f "tokens=4*" %%c in ('adb shell "service call iphonesubinfo 1 ^| grep -m 3 \"'\""') do (
set imei3=%%c) 
set imei=!imei1!!imei2!!imei3!
echo !imei! > imei.txt
for /f "delims=" %%d in (imei.txt) do (
set DeviceIMEI=%%d
set DeviceIMEI=!DeviceIMEI:'=!
set DeviceIMEI=!DeviceIMEI:.=!
set OIMEI=Phone IMEI  !DeviceIMEI!
echo %OIMEI%

I got it from this StackOverflow thread: https://stackoverflow.com/a/34362809/8173870


Given the tag , I'm assuming you have or are targeting Android Nougat. Android Nougat comes with toybox which acts as an alternative to busybox and has some useful utilities. I managed to use those tools to print IMEI like this:

adb shell
service call iphonesubinfo 1 | toybox cut -d "'" -f2 | toybox grep -Eo '[0-9]' | toybox xargs | toybox sed 's/\ //g'

Since you wouldn't be getting an interactive shell when using a script or an app, you can pass the commands like this:

adb shell "service call iphonesubinfo 1 | toybox cut -d \"'\" -f2 | toybox grep -Eo '[0-9]' | toybox xargs | toybox sed 's/\ //g'"

adb shell dumpsys iphonesubinfo just works only for all phones below Android 5 Lolipop!

Because Android Nougat is over 5.0 you need: adb shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed '1 d' | tr -d '.' | awk '{print}' ORS=

  • i am using Windows as OS so it gives me Error awk not found. What would be Equivalent of awk in windows Command Prompt?
    – yash
    Apr 5 '18 at 8:01
  • 1
    There is no equivalent to awk on Windows. But you can simply install all the *nix tools also on Windows. A very simple way to do that is scoop. Or you have to create a windows tool that parses the command-line result without those tools.
    – Robert
    Apr 10 '18 at 9:41

Using android-svc:

android-svc --adb call 'iphonesubinfo.getDeviceId();'

would return something like this:


The following ADB command works on my Windows PC to get clear IMEI result:

adb shell "service call iphonesubinfo 4 | cut -c 52-66 | tr -d '.[:space:]'"

  • thanks for sharing the best code. I get IMEI result by this code, but it's only show 1st IMEI. If I want to get result 2nd IMEI what should we put the code ? thanks for Answers. Dec 3 '20 at 17:50
  • I changed the code from iphonesubinfo 1 to iphonesubinfo 4, which is the correct service code to get the full IMEI. So try: adb shell "service call iphonesubinfo 4 | cut -c 52-66 | tr -d '.[:space:]'", and see if you get also IMEI 2.
    – Devlpr
    Dec 6 '20 at 17:58

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.