• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!

[SOLVED][AOSP] Enable USB Modem/Diag Mode on Samsung CDMA Devices

Search This thread

autoprime

Recognized Dev / Inactive Recognized Contributor
Jun 23, 2010
2,640
11,902
Confirmed working on the SPH-D700 Epic 4g, SPH-D710 Epic 4G Touch, SPH-L700/SCH-I515 Galaxy Nexus and SPH-L710 Galaxy S III

I have a DIAG script for the LG Optimus G LS970 here.


No more flashing back to Touchwiz! The following scripts enable USB Modem/Diag mode in AOSP roms(CM9/CM10/AOKP/etc). For those new to this, USB Modem mode is used to interface with Windows CDMA tools such as QPST, QXDM, DFS and CDMA Workshop. Modem mode has always been possible in stock Touchwiz roms using dialer codes. The issue has been AOSP roms not working with the modem mode dialer codes... requiring flashing back to stock TW to use it.

FlhjT.png
<--------- Doesn't work in AOSP

Few examples of what modem mode could be used for:
[HOW-TO][FIX] Repair your IMEI with QPST - updated w/ info
[How To] Upload a custom PRL to your Epic Touch 4G
[CDMA] 威盛 VIA Repair and Reprogramming



You can use a script manager to run the script. Open script manager, browse to script files on SD card, select script, set to run as SU and hit save. Do this with both scripts. Now you can use the script manager in the Widgets section to create shortcuts on the desktop for easy access. Hopefully these scripts get built into CM10 so this method is no longer needed.

You may or may not have to unplug/plugin the usb cable after new mode is set.

f91KU.png
zb2jb.png



Samsung Epic 4G SPH-D700
Use in terminal emulator/adb or add to script.

**As of Oct 1, 2012... all SPH-D700 CM10 builds have working diag mode via *#*#8778#*#* menu thanks to bbelos. Script is not longer needed on those roms.**

**The SPH-D700 script below is confirmed working on the official TeamEpic CM9 builds**

Modem
Code:
echo MODEM USB > /sys/class/sec/switch/usb_sel

PDA
Code:
echo PDA USB > /sys/class/sec/switch/usb_sel

Samsung Epic 4G Touch SPH-D710
E4GT is working but being picky. If not detected in QPST correctly... connect phone to USB cable. While phone is in normal USB PDA mode open up QPST Service Programming > Server > Stop QPST Server. Now run the CP script(or run the commands in terminal emulator as SU) then pull out the USB cable then put it back in. Wait a second.. you should see a serial port being detected in Windows Device Manager. After port has been added and drivers installed.. go back to QPST Service Programming and enable the QPST Server. Your device should now be detected properly. If you disconnect your phone while QPST Server is running you will have to toggle it off/on again for the phone to show back up.

CP
Code:
#/system/bin/sh

echo 0 > /sys/class/android_usb/android0/enable
echo CP > /sys/class/sec/switch/set_usb_path
echo 1 > /sys/class/android_usb/android0/enable

CP v2
thx2squash

Code:
#/system/bin/sh

echo 0 > /sys/class/android_usb/android0/enable
echo disable_wimax > /sys/devices/platform/i2c-gpio.17/i2c-17/17-0008/port
echo enable_cp > /sys/devices/platform/i2c-gpio.17/i2c-17/17-0008/port
echo disable_ap >  /sys/devices/platform/i2c-gpio.17/i2c-17/17-0008/port
echo CP > /sys/class/sec/switch/set_usb_path
echo 1 > /sys/class/android_usb/android0/enable

ALL (AP+CP)
Code:
#/system/bin/sh

echo 0 > /sys/class/android_usb/android0/enable
echo ALL > /sys/class/sec/switch/set_usb_path
echo 1 > /sys/class/android_usb/android0/enable

AP
Code:
#/system/bin/sh

echo 0 > /sys/class/android_usb/android0/enable
echo AP > /sys/class/sec/switch/set_usb_path
echo 1 > /sys/class/android_usb/android0/enable

AP v2
thx2squash

Code:
#/system/bin/sh

echo 0 > /sys/class/android_usb/android0/enable
echo disable_wimax > /sys/devices/platform/i2c-gpio.17/i2c-17/17-0008/port
echo enable_ap > /sys/devices/platform/i2c-gpio.17/i2c-17/17-0008/port
echo disable_cp >  /sys/devices/platform/i2c-gpio.17/i2c-17/17-0008/port
echo AP > /sys/class/sec/switch/set_usb_path
echo 1 > /sys/class/android_usb/android0/enable

Samsung Galaxy Nexus (Sprint/Verizon)
Script works great for me on my Sprint Gnex. Varied reports about script working on Verizons. If script fails use terminal emulator instead.

MODEM
Code:
#/system/bin/sh

echo 0 > /sys/class/android_usb/android0/enable
echo MODEM > /sys/devices/tuna_otg/usb_sel
echo 1 > /sys/class/android_usb/android0/enable

PDA
Code:
#/system/bin/sh

echo 0 > /sys/class/android_usb/android0/enable
echo PDA > /sys/devices/tuna_otg/usb_sel
echo 1 > /sys/class/android_usb/android0/enable

Samsung Galaxy S III (Sprint/Verizon/US Cellular/AT&T/T-Mobile)
Use the script!

DIAG+ADB
Code:
#/system/bin/sh

# sets DIAG mode
echo 0 > /sys/class/android_usb/android0/enable
echo 04E8 > /sys/class/android_usb/android0/idVendor
echo 6860 > /sys/class/android_usb/android0/idProduct
echo diag > /sys/class/android_usb/android0/f_diag/clients
echo 1 > /sys/class/android_usb/android0/f_acm/instances
echo diag,acm,adb > /sys/class/android_usb/android0/functions
echo 1 > /sys/class/android_usb/android0/enable
start adbd

MTP+ADB
Code:
#/system/bin/sh

# sets default USB mode
echo 0 > /sys/class/android_usb/android0/enable
echo 04E8 > /sys/class/android_usb/android0/idVendor
echo 6860 > /sys/class/android_usb/android0/idProduct
echo 1 > /sys/class/android_usb/android0/f_acm/instances
echo mtp,acm,adb > /sys/class/android_usb/android0/functions
echo 1 > /sys/class/android_usb/android0/enable
start adbd

Samsung Galaxy S IV (Should work on ATT, Tmo, Sprint, Verizon, Cricket etc...)


DIAG+ADB
Code:
#/system/bin/sh
 
#reboot phone to disable
 
#enables diag mode
echo "0" /sys/class/android_usb/android0/enable
echo "04E8" /sys/class/android_usb/android0/idVendor
echo "685D" /sys/class/android_usb/android0/idProduct
echo "diag,diag_mdm" /sys/class/android_usb/android0/f_diag/clients
echo "hsic" /sys/class/android_usb/android0/f_acm/acm_transports
echo "diag,acm,adb" /sys/class/android_usb/android0/functions
echo "1" /sys/module/ci13xxx_msm/parameters/streaming
echo "1" /sys/class/android_usb/android0/enable

Original post has been removed since this has been solved. For reference it has been moved to post 5.
 

Attachments

  • Sprint_Gnex_Diag_Scripts.zip
    1.6 KB · Views: 9,249
Last edited:

E:V:A

Inactive Recognized Developer
Dec 6, 2011
1,449
2,215
-∇ϕ
Hi, I will try to help you as much as time allows.. But I'm easily confused as I'm trying to understand several different platforms, chipsets, models, AOS versions etc etc. So let's try to be very precise, to make sure that other people (not having an SPH-D710 or NS4G) also can benefit from this discussion. Please consider using:
(a) specific model numbers, in addition to generic names such as "SGS2".
(b) XDA-thread names/titles with posted links so that we don't have to waste time clicking on every link just to find out we have already read it. E.g. like this: "Kernel serial console on I9100".
(c) What exact steps you use to obtain a certain type of output.
Sorry for being anal about this, but it quickly gets really confusing and annoying otherwise, once you start following 30+ threads... Having said all this we can move On-Topic.

--------------------------- updated --------------------------------
[Partial re-post of PM]


Your phone is using the Qualcomm QSC6085 baseband processor, which means that your SPH-D710 is basically completely different from the GT-I9100. Thus it is most likely that the chips used (MUX) to interface with mUSB are also different, and if they are not, they must surely be wired differently to accommodate the modem chipset. The resistor values mentioned is valid for most Samsung phones using the FSA9280A mux, for other devices I have no idea, but given the laziness of Samsung they may still be implemented in various other ways..

Many issues with AOS, is with file-permissions. Another is that you may need to reboot, before certain settings take effect. Third is that there are internal mux's used/controlled by baseband with the +CMUX AT-command (and others). But one thing is for sure, Samsung doesn't want their service people to waste time with all this hacking. So yes, USB service mode (to talk to and tune the modem) via USB cable must be available somehow...
autoprime said:
While in AOSP we have no modem access. via computer or through the phone itself.
THAT is exactly what I find strange. You see on both my I9000 and I9100 when you connect your phone without using "modem" (as you put it), it still enables the (virtual-serial-usb) modem interface as an additional device. If I use the PhoneUtil menu to change USB to MODEM, I loose normal connection since windows ask to install proper drivers (referring to 7-CDC.) I don't know what that driver is or where to get it. (In fact it may already be present on my computer as part of the multiple driver CDC that was installed with first time use of Kies.) But perhaps need to be pointed to again, for activation...

For example, on a Vista machine the drivers are located under:

../Program Files/Samsung/USB Drivers/25_escape

There's a bunch of files located there, but the most relevant ones (for me) seem to be:
Code:
ssuddmgr.inf    --> Install USB Device Management Serial Port Driver    SSUD.DeviceDesc = "SAMSUNG Mobile USB At Command Port " 
ssudmdm.inf     --> Install CDMA USB Modem device driver                SSUD.DeviceDesc = "SAMSUNG Mobile USB Modem" 
ssudmdm.cat*    -->
Do you also have these or are the ones you use different?

looking at my drivers.. they were indeed pulled from a Kies install and it is using those same drivers. Unfortunately it is not the drivers at fault here.. there is no detection taking place at all. The phone is not making the switch from USB PDA ---> Modem. Viewing Logcat while performing the *#*#8778#*#* PhoneUtil toggle shows no action being performed. And manually setting the mode to Modem via "echo MODEM> /sys/class/sec/switch/usb_sel" only kills the USB detection entirely.
... just the appropriate drivers for Diag mode itself. My computer can see all other phones in diag mode...
Which are these?
The very same ones you've mentioned establish a successful "Modem" connection to PC when using Stock Touchwiz on the SPH-D710.
Please post the output of:
Code:
# cat /sys/kernel/debug/usb/devices 
# ls -l /sys/bus/usb/drivers/cdc_svnet
"No such file or directory" for both. The folder structures seem to be different.
Also, it is very important to understand that the ServiceMode application is actually running just as a wrapper for the real code, which is usually running in the baseband. This where all the hardware (MUXes, USB, i2c interfaces etc) are specified, that is used to communicate with modem. However, this may be working differently on your BP, and may be instead done in the RIL libraries, etc.

------------ Final PM Response --------------
Unfortunately it is not the drivers at fault here.. there is no detection taking place at all. The phone is not making the switch from USB PDA ---> Modem.
Ok, I know I am not coming across very clear, because we apparently have such different devices! Let me try to explain again.

1) I don't know why you insist you need to "make the switch" at all? On the I9100 there is no need to make this "switch" to get modem serial communication port. Why do you think you need it on yours?

2) In fact, unless you know for sure that your phone contain some (or the same) type of USB/UART switch IC (aka MUX) as in the I9100, there is no reason to expect you to have this "switch" functionality.

3) The USB drivers can do much of this virtual switching magic in software (by themselves). But really I have no clue how those things work in detail! Like I mentioned there are 7 "drivers" doing various ****, that is installed with Kies... How, and under what circumstances these are activated and used, is beyond me. (Or better, you can read how USB ports are activated on Wikipedia and about USB composite devices (CDCs) here.)

4) If you're still convinced that you need to do this switch, there is one more trick. You can try to use this tool (thanks to KickerTom in this post) to list the contents of your /mnt/.lfs/param.blk file, in readable format, or in hex-format with:
Code:
# hexdump -C /mnt/.lfs/param.blk
(You'll need busybox to do this.)

You can use that tool to write and change stuff as well, BUT: Make sure you have a full backup!! The .lfs partion is not writable in the same manner as other types of partitions. It can only "grow", and never get smaller... AFAIK.

KickerTom further states:
From my experiments it looks like the SWITCH_SEL parameter is ignored by the HW, at least I haven't observed any real effect. But you can change the UART switch by modifying a file next to the param.blk, /mnt/.lfs/sw_sel. It contains an ASCII number, by default 1. That is modem uart. Change it to 3 to get PDA uart connected, by e.g. "echo -n 3 > /mnt/.lfs/sw_sel".
5) You may need to reinstall the "Qualcomm USB Host Driver"...
 
Last edited:

autoprime

Recognized Dev / Inactive Recognized Contributor
Jun 23, 2010
2,640
11,902
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Everything between the lines was originally in the OP as part of the unsolved, [Q] Enabling USB Modem(Diag) Mode on Samsung CDMA Devices w/ AOSP thread.

Currently on the Epic 4G Touch SPH-D710 we are not able to put the phone into USB Modem/Diag mode while using an AOSP rom. This is normally toggled through the PhoneUtil apk with *#*#8778#*#*. To this date, the fix has been to restore back to a stock Touchwiz rom or to boot a Touchwiz rom off the SD card. To my knowledge, outside of the Nexus S 4G(SPH-D720), no CDMA Samsung AOSP roms have USB Modem mode working. This thread is being created to help solve this issue.. for ALL SAMSUNG CDMA DEVICES. Modem/Diag Mode works on HTC, Motorola, LG.. it should work for Samsung devices too ;)

USB Modem/Diag Mode establishes a serial-over-usb connection which allows us to use special Qualcomm tools like QPST and QXDM to talk to our phones. We can access the hidden EFS partition including the non-volatile memory to edit all sorts of values.. we also use this for updating PRL's.. etc etc. It has it's value.. although Samsung and the carriers don't want us in there ;)

I see USB Modem mode in AOSP being possible in two ways.
1. Since the Nexus S 4G(SPH-D720) on Sprint is on AOSP and has working USB Modem/Diag mode.. figure out how the NS4G achieves this mode.
2. Use a hardware jig of some sort to boot into USB Modem/Diag mode.

1. For the software side of things here's some highlights I've come across..
a. Logcat of Nexus S 4G(SPH-D720) while toggling USB Modem/USB modes - http://pastebin.com/TfcSHzYB
b. In terminal emulator/ADB we have "radiooptions" command with some interesting output. QXDM Enable/Disable is what interests me in there. QXDM enable would seem to allow the phone to interface with QXDM.. QXDM requires a USB Modem(Diag) Connection to talk to the phone. Attempting the "radiooptions 3" command does nothing(even on the NS4G). Only command that does seem to work is Radio_Off which requires a reboot to get working again.
Code:
           0 - RADIO_RESET
           1 - RADIO_OFF
           2 - UNSOL_NETWORK_STATE_CHANGE
          [B] 3 - QXDM_ENABLE
           4 - QXDM_DISABLE[/B]
           5 - RADIO_ON
           6 - SETUP_PDP apn
           7 - DEACTIVE_PDP
           8 - DIAL_CALL number
           9 - ANSWER_CALL
           10 - END_CALL

c. Use manual commands to enable/disable the USB Modem/Diag mode as TheBeano has shown us here in his Fun with resistors (home/car dock mode + more) thread.

You can see what the current state is with this command:
Code:
cat /sys/class/sec/switch/usb_sel

You can change the state with:
Code:
   echo PDA> /sys/class/sec/switch/usb_sel
or
   echo MODEM> /sys/class/sec/switch/usb_sel
Currently on the E4GT SPH-D710 enabling MODEM and then connecting the device to Windows results in no connection/USB detection at all. Phone is detected in PDA mode only. In addition, using the PhoneUtil menu(*#*#8778#*#*) and setting the USB mode to "Modem" has no effect at all.

2. As for the hardware side of things, I've been reading through XDA and came across some interesting threads in the SGS2 I9100 forums. A post by E:V:A specifically that mentions putting the phone into different modes by using resistors.. which I suppose would be the same thing as the jig's people have been using to reset their ODIN flash counts.. only using different resistors: Kernel serial console on I9100.

301K looks to be what we use for the standard jigs. that is documented here: [GUIDE] How to Make a USB Jig and Get Rid of Yellow Triangle+ODIN Counter reset. I wonder if there is a mode we can force which establishes USB Modem mode ON and then use serial-over-usb.. like how it works when we set Diag mode in touchwiz roms. AdamOutler has thread dealing with the E4GT pinouts etc.. not sure if this would help at all: Processor datasheets required(E4GT SPH-D710)
Code:
xOM_0=pin E3
xOM_1=pin D2
xOM_2=pin C3
xOM_3=pin E4
xOM_4=pin F2
xOM_5=pin A3
xOM_6=pin F3


I have no idea if anything I've said helps... just putting some ideas out there and hopefully get some people who DO actually know this more advanced stuff to join in ;) I have HTC phones, LG phones, multiple Samsung devices.. Epic(SPH-D700), NS4G(SPH-D720), E4GT(SPH-D710). I can provide any logs needed for those devices.


Random references to Diag mode and AOSP on CDMA devices:
Cannot enter Sprint ## CDMA codes on dialer, need DIAG mode! (HTC AOSP DIAG)
Updating PRL on CM7 (Samsung CDMA AOSP)
Epic Dialer Codes working on CM7
DIAG ##3424# using an AOSP ROM CM7 (Various CDMA HTC methods mentioned)
QPST DIAG Mode CM7 Aka ##3424 (HTC Droid Incredible ADR6300)
Fun with resistors [home/car dock mode + more] (Manually enable/disable UART)
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Ok, I know I am not coming across very clear, because we apparently have such different devices! Let me try to explain again.

1) I don't know why you insist you need to "make the switch" at all? On the I9100 there is no need to make this "switch" to get modem serial communication port. Why do you think you need it on yours?....

It seems the more we compare notes.. the more we see how different the I9100 and SPH-D710 really are. Without getting into technical specifics I can give you a reason why some things are so different... which is how CDMA and GSM differs really. Looking at "security" alone.. GSM uses a SIM card to authenticate on the network.. outside of the IMEI(which seems to be rather accessible on your devices) the SIM card contains most of info the network is looking for. On our devices CDMA devices, ALL of the authentication info is stored on the device itself. Carriers/Manufacturers do NOT want use touching the hidden EFS partition.. where all of our authentication values reside.. ESN/MEID, EVDO username/passwords, PRL.. etc etc. So now, the main key to accessing this hidden partition... USB Modem(Diag) Mode!

I have taken some screenshots of Windows Device Manager. Far left is my Device Manager with no phone plugged in. Middle is phone plugged in but USB Mode is set to "PDA". Right side is phone plugged in and USB Mode set to "MODEM".
9yJ3y.png

You can see the difference in the device manager... USB Modem mode giving us a serial diagnostic COM port. This COM port is ONLY available when the phone is set in this specific mode. ONLY when the diagnostic COM port is available can we use Qualcomm software to view the hidden EFS partition of our devices and start to tweak things. For the above image I used a Nexus S 4 G(SPH-D720) which naturally runs on AOSP and has this USB Modem mode working. This mode also work on Touchwiz roms. It does NOT work on AOSP in any other Samsung CDMA phone(the purpose of this thread).

I hope this sort of explains why our phone may be "locked down" a bit more due to how CDMA works... and also explains how I am sure that we need this USB Modem mode toggled.. and that I am positive Windows is set up properly etc etc. The issue is that we can not force the phone, while using an AOSP rom, into this diagnostic serial mode.
 
Last edited:

E:V:A

Inactive Recognized Developer
Dec 6, 2011
1,449
2,215
-∇ϕ
^^ Very good. I understand. Now, can you reproduce the middle picture for your E4GT?
 

sfhub

Senior Member
Oct 23, 2008
5,342
7,220
You can see the difference in the device manager... USB Modem mode giving us a serial diagnostic COM port. This COM port is ONLY available when the phone is set in this specific mode. ONLY when the diagnostic COM port is available can we use Qualcomm software to view the hidden EFS partition of our devices and start to tweak things. For the above image I used a Nexus S 4 G(SPH-D720) which naturally runs on AOSP and has this USB Modem mode working. This mode also work on Touchwiz roms. It does NOT work on AOSP in any other Samsung CDMA phone(the purpose of this thread).
Not sure if it helps you figure out how to get it enabled, but the USB port on E4GT is able to support both PDA and MODEM mode simultaneously. They aren't mutually exclusive.
 

autoprime

Recognized Dev / Inactive Recognized Contributor
Jun 23, 2010
2,640
11,902
Now, can you reproduce the middle picture for your E4GT?

Yes, the exact middle picture is produced on the E4GT. USB Composite and USB Mass Storage Device both show up. When toggling the PhoneUtil from PDA to Modem.. no changes in Device Manager happen. Tried toggling the UART selection in PhoneUtil as well just to see what would happen... no change as well.

Not sure if it helps you figure out how to get it enabled, but the USB port on E4GT is able to support both PDA and MODEM mode simultaneously. They aren't mutually exclusive.

You're saying the E4GT can be seen on a computer as a mass storage device as well as enabling the diagnostic serial port.. at the same time? could you go into this more? have an example?
 
Last edited:
  • Like
Reactions: Dudebowski

E:V:A

Inactive Recognized Developer
Dec 6, 2011
1,449
2,215
-∇ϕ
Not sure if it helps you figure out how to get it enabled, but the USB port on E4GT is able to support both PDA and MODEM mode simultaneously. They aren't mutually exclusive.

That's what I've been trying to tell you guys all along, and I understand my message have not been very clear. This is because I don't quite understand how this works, but that is kind of the whole point with using a USB "Composite Device". The mere fact that you are using adb and can use Kies, is good enough for you to have several virtual (including serial) connections. I already posted a link above, about this. Did you read it?

Also in the middle picture there is an additional icon that is not present in the other two, "Portable Devices". You should run a USB sniffer (eg. USBlyzer ) to find out what happens when you connect, both with the Nexus S and your E4GT.

In addition, what you have marked as "not what we want" in the RHS picture, may in fact be exactly what you want. Because I'm getting more convinced that your Qualcomm tools (from 2006) are seriously outdated. It may just be a matter of updating some drivers, but who knows...
 
  • Like
Reactions: kozmo2k4

sfhub

Senior Member
Oct 23, 2008
5,342
7,220
You're saying the E4GT can be seen on a computer as a mass storage device as well as enabling the diagnostic serial port.. at the same time? could you go into this more? have an example?
Yes, on any stock GB ROM, ##8778#, select All to have both modes enabled (AP and CP will result in just one of the modes being enabled). Haven't tested on ICS.
 

brooksyx

Senior Member
Jan 31, 2011
1,879
467
Vancouver, WA
I'm sure getting the touchwiz ics source code once we get an official ota will greatly help this project.

Sent from my SPH-D710 using XDA
 

autoprime

Recognized Dev / Inactive Recognized Contributor
Jun 23, 2010
2,640
11,902

there are /mnt/.lfs files in touchwiz only.. they are missing in AOSP. AOSP file structure seems to be much different. I believe the issue is a lack of "Diag" code in the AOSP code itself. We need to figure out the code in the Creso4G source(Nexus S 4G SPH-D720) which allows diag mode to be enabled and port it to our own device.
 
  • Like
Reactions: Dudebowski

gondo77

Member
Jul 31, 2008
21
4
I was having this same problem on my Epic 4G (non-Touch), running a custom ROM. I wanted to change my PRL manually and the phone COM port would never appear in Device Manager in phone Modem mode - nothing happened.

I was able to fix it, after considerable trial and error, but I'm not sure the fix will translate to the Touch.

It was a driver issue - the computer finally installed the correct driver that allowed the phone modem to communicate with it and appear in Device Manager.

How I found it was a fluke deal - I had pretty much given up and decided to temporarily revert back to stock Gingerbread, figuring that would allow me to change the PRL and then I could re-flash the custom ROM.

I started the stock GB conversion process and ran into a roadblock right away - the COM port wasn't showing up in Odin. The conversion instructions emphasized installing a specific driver (older) for my phone, and I knew I had the latest Windows Update drivers for the Epic 4G installed - these were installed automatically in USB debugging mode. So I went back into debug mode and uninstalled the phone in Device Manager. I then disconnected the phone from the laptop, and installed the driver (64-bit) specified in the instructions. When I plugged the phone back in, I got a successful driver install confirmation.

Then, per the instructions, I unplugged the phone and put it into "download" mode (press 1 on the slideout keyboard along with the power button). Then I launched the required version of Odin and set it up with the stock GB file I had downloaded. The next step was to plug the phone back into the PC, and when I did that, I had Device Manager open and I noticed it installed a modem I had not seen before and COM3 showed up in yellow in Odin, indicating a good connection.

At that point, I shut down Odin, unplugged the phone and restarted both phone and PC. After the restarts, I switched the phone to Modem mode via ##8778# in the PhoneUtil, then connected again via USB and voila, there was the phone modem in Device Manager, using COM5. I went on to manually change the PRL using a procedure for the Epic 4G outlined elsewhere here on XDA.

Don't know if that will shed any light with resolving this issue with the Touch, but doing something similar might be worth a try.
 

E:V:A

Inactive Recognized Developer
Dec 6, 2011
1,449
2,215
-∇ϕ
^^ That is very good news! But I wish you could have been more specific in what drivers you found and/or installed, and what instructions you followed? (Also, what is the model number of that phone?)
 

autoprime

Recognized Dev / Inactive Recognized Contributor
Jun 23, 2010
2,640
11,902
I was having this same problem on my Epic 4G (non-Touch), running a custom ROM. I wanted to change my PRL manually and the phone COM port would never appear in Device Manager in phone Modem mode - nothing happened.

I was able to fix it, after considerable trial and error, but I'm not sure the fix will translate to the Touch.

It was a driver issue - the computer finally installed the correct driver that allowed the phone modem to communicate with it and appear in Device Manager.

How I found it was a fluke deal - I had pretty much given up and decided to temporarily revert back to stock Gingerbread, figuring that would allow me to change the PRL and then I could re-flash the custom ROM.

I started the stock GB conversion process and ran into a roadblock right away - the COM port wasn't showing up in Odin. The conversion instructions emphasized installing a specific driver (older) for my phone, and I knew I had the latest Windows Update drivers for the Epic 4G installed - these were installed automatically in USB debugging mode. So I went back into debug mode and uninstalled the phone in Device Manager. I then disconnected the phone from the laptop, and installed the driver (64-bit) specified in the instructions. When I plugged the phone back in, I got a successful driver install confirmation.

Then, per the instructions, I unplugged the phone and put it into "download" mode (press 1 on the slideout keyboard along with the power button). Then I launched the required version of Odin and set it up with the stock GB file I had downloaded. The next step was to plug the phone back into the PC, and when I did that, I had Device Manager open and I noticed it installed a modem I had not seen before and COM3 showed up in yellow in Odin, indicating a good connection.

At that point, I shut down Odin, unplugged the phone and restarted both phone and PC. After the restarts, I switched the phone to Modem mode via ##8778# in the PhoneUtil, then connected again via USB and voila, there was the phone modem in Device Manager, using COM5. I went on to manually change the PRL using a procedure for the Epic 4G outlined elsewhere here on XDA.

Don't know if that will shed any light with resolving this issue with the Touch, but doing something similar might be worth a try.


was this a touchwiz based rom.. or a aosp based rom?
 
  • Like
Reactions: Dudebowski

NiteSnow

Member
Dec 26, 2009
16
12
Running the commands below as root will allow you to put your phone into modem mode from *#*#8778#*#*

chown radio /sys/bus/i2c/drivers/fsa9480/7-0025/switch
chmod 660 /sys/bus/i2c/drivers/fsa9480/7-0025/switch

AFAIK this only works for the Crespo4G I haven't been able to test on anything else.
 

jefbal99

Senior Member
Aug 26, 2010
1,012
119
NiteSnow said:
Running the commands below as root will allow you to put your phone into modem mode from *#*#8778#*#*

chown radio /sys/bus/i2c/drivers/fsa9480/7-0025/switch
chmod 660 /sys/bus/i2c/drivers/fsa9480/7-0025/switch

AFAIK this only works for the Crespo4G I haven't been able to test on anything else.

Prompts for msl, then gives a modem exception error on CM9 for e4gt.

Sent from my CM9 Epic 4g Touch using Forum Runner
 

Tungsten c

Senior Member
Mar 3, 2011
350
32
SU PM enable com.samsung

I executed command disable com.samsung ot to get OTA FF18 updates since I am rooted. Then without thinking when to the google store and it told me that the background data was and it gave me an option to ok to turn it on.

Ever since them I can not get to play store it tells me I am not connected but I am . Try to do a able com.samsung command but returns disable.

any suggestions?

thnaks

I am running FF18 rooted stock
 

pvinodnayak

Senior Member
Feb 10, 2012
736
187
Udupi
COM port not detected

EPIC 4G on stock EC05
All drivers installed
the phone goes into diagnostic mode but does not get detected.
is there any other way to get the phone to connect in CDMA ws ?

Phone was detecting on COM port earlier until i mistakenly uploaded
the Galaxy S3 SPH-L710 NV Item file which i had save from my Galaxy S3.

Instantly i lost my carrier signal and lost connection from CDMA ws.
i rebooted to check. did ##8778# goes to phon utils but even if i select MODEM under USB the modem is not
detected in COM port. just to check if my Drivers were correct or not, i connected my Galaxy S3 in Diagnostic mode..
the phone is detected under COM port but not my EPIC

I Odin back to Stock EC05 and tried without & with root. the phone is not detected on diagnostic/service mode. its detected
on PDA.

Need help to reset the phone so that i can get the phone to work on CDMA ws.
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 56
    Confirmed working on the SPH-D700 Epic 4g, SPH-D710 Epic 4G Touch, SPH-L700/SCH-I515 Galaxy Nexus and SPH-L710 Galaxy S III

    I have a DIAG script for the LG Optimus G LS970 here.


    No more flashing back to Touchwiz! The following scripts enable USB Modem/Diag mode in AOSP roms(CM9/CM10/AOKP/etc). For those new to this, USB Modem mode is used to interface with Windows CDMA tools such as QPST, QXDM, DFS and CDMA Workshop. Modem mode has always been possible in stock Touchwiz roms using dialer codes. The issue has been AOSP roms not working with the modem mode dialer codes... requiring flashing back to stock TW to use it.

    FlhjT.png
    <--------- Doesn't work in AOSP

    Few examples of what modem mode could be used for:
    [HOW-TO][FIX] Repair your IMEI with QPST - updated w/ info
    [How To] Upload a custom PRL to your Epic Touch 4G
    [CDMA] 威盛 VIA Repair and Reprogramming



    You can use a script manager to run the script. Open script manager, browse to script files on SD card, select script, set to run as SU and hit save. Do this with both scripts. Now you can use the script manager in the Widgets section to create shortcuts on the desktop for easy access. Hopefully these scripts get built into CM10 so this method is no longer needed.

    You may or may not have to unplug/plugin the usb cable after new mode is set.

    f91KU.png
    zb2jb.png



    Samsung Epic 4G SPH-D700
    Use in terminal emulator/adb or add to script.

    **As of Oct 1, 2012... all SPH-D700 CM10 builds have working diag mode via *#*#8778#*#* menu thanks to bbelos. Script is not longer needed on those roms.**

    **The SPH-D700 script below is confirmed working on the official TeamEpic CM9 builds**

    Modem
    Code:
    echo MODEM USB > /sys/class/sec/switch/usb_sel

    PDA
    Code:
    echo PDA USB > /sys/class/sec/switch/usb_sel

    Samsung Epic 4G Touch SPH-D710
    E4GT is working but being picky. If not detected in QPST correctly... connect phone to USB cable. While phone is in normal USB PDA mode open up QPST Service Programming > Server > Stop QPST Server. Now run the CP script(or run the commands in terminal emulator as SU) then pull out the USB cable then put it back in. Wait a second.. you should see a serial port being detected in Windows Device Manager. After port has been added and drivers installed.. go back to QPST Service Programming and enable the QPST Server. Your device should now be detected properly. If you disconnect your phone while QPST Server is running you will have to toggle it off/on again for the phone to show back up.

    CP
    Code:
    #/system/bin/sh
    
    echo 0 > /sys/class/android_usb/android0/enable
    echo CP > /sys/class/sec/switch/set_usb_path
    echo 1 > /sys/class/android_usb/android0/enable

    CP v2
    thx2squash

    Code:
    #/system/bin/sh
    
    echo 0 > /sys/class/android_usb/android0/enable
    echo disable_wimax > /sys/devices/platform/i2c-gpio.17/i2c-17/17-0008/port
    echo enable_cp > /sys/devices/platform/i2c-gpio.17/i2c-17/17-0008/port
    echo disable_ap >  /sys/devices/platform/i2c-gpio.17/i2c-17/17-0008/port
    echo CP > /sys/class/sec/switch/set_usb_path
    echo 1 > /sys/class/android_usb/android0/enable

    ALL (AP+CP)
    Code:
    #/system/bin/sh
    
    echo 0 > /sys/class/android_usb/android0/enable
    echo ALL > /sys/class/sec/switch/set_usb_path
    echo 1 > /sys/class/android_usb/android0/enable

    AP
    Code:
    #/system/bin/sh
    
    echo 0 > /sys/class/android_usb/android0/enable
    echo AP > /sys/class/sec/switch/set_usb_path
    echo 1 > /sys/class/android_usb/android0/enable

    AP v2
    thx2squash

    Code:
    #/system/bin/sh
    
    echo 0 > /sys/class/android_usb/android0/enable
    echo disable_wimax > /sys/devices/platform/i2c-gpio.17/i2c-17/17-0008/port
    echo enable_ap > /sys/devices/platform/i2c-gpio.17/i2c-17/17-0008/port
    echo disable_cp >  /sys/devices/platform/i2c-gpio.17/i2c-17/17-0008/port
    echo AP > /sys/class/sec/switch/set_usb_path
    echo 1 > /sys/class/android_usb/android0/enable

    Samsung Galaxy Nexus (Sprint/Verizon)
    Script works great for me on my Sprint Gnex. Varied reports about script working on Verizons. If script fails use terminal emulator instead.

    MODEM
    Code:
    #/system/bin/sh
    
    echo 0 > /sys/class/android_usb/android0/enable
    echo MODEM > /sys/devices/tuna_otg/usb_sel
    echo 1 > /sys/class/android_usb/android0/enable

    PDA
    Code:
    #/system/bin/sh
    
    echo 0 > /sys/class/android_usb/android0/enable
    echo PDA > /sys/devices/tuna_otg/usb_sel
    echo 1 > /sys/class/android_usb/android0/enable

    Samsung Galaxy S III (Sprint/Verizon/US Cellular/AT&T/T-Mobile)
    Use the script!

    DIAG+ADB
    Code:
    #/system/bin/sh
    
    # sets DIAG mode
    echo 0 > /sys/class/android_usb/android0/enable
    echo 04E8 > /sys/class/android_usb/android0/idVendor
    echo 6860 > /sys/class/android_usb/android0/idProduct
    echo diag > /sys/class/android_usb/android0/f_diag/clients
    echo 1 > /sys/class/android_usb/android0/f_acm/instances
    echo diag,acm,adb > /sys/class/android_usb/android0/functions
    echo 1 > /sys/class/android_usb/android0/enable
    start adbd

    MTP+ADB
    Code:
    #/system/bin/sh
    
    # sets default USB mode
    echo 0 > /sys/class/android_usb/android0/enable
    echo 04E8 > /sys/class/android_usb/android0/idVendor
    echo 6860 > /sys/class/android_usb/android0/idProduct
    echo 1 > /sys/class/android_usb/android0/f_acm/instances
    echo mtp,acm,adb > /sys/class/android_usb/android0/functions
    echo 1 > /sys/class/android_usb/android0/enable
    start adbd

    Samsung Galaxy S IV (Should work on ATT, Tmo, Sprint, Verizon, Cricket etc...)


    DIAG+ADB
    Code:
    #/system/bin/sh
     
    #reboot phone to disable
     
    #enables diag mode
    echo "0" /sys/class/android_usb/android0/enable
    echo "04E8" /sys/class/android_usb/android0/idVendor
    echo "685D" /sys/class/android_usb/android0/idProduct
    echo "diag,diag_mdm" /sys/class/android_usb/android0/f_diag/clients
    echo "hsic" /sys/class/android_usb/android0/f_acm/acm_transports
    echo "diag,acm,adb" /sys/class/android_usb/android0/functions
    echo "1" /sys/module/ci13xxx_msm/parameters/streaming
    echo "1" /sys/class/android_usb/android0/enable

    Original post has been removed since this has been solved. For reference it has been moved to post 5.
    8
    -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Everything between the lines was originally in the OP as part of the unsolved, [Q] Enabling USB Modem(Diag) Mode on Samsung CDMA Devices w/ AOSP thread.

    Currently on the Epic 4G Touch SPH-D710 we are not able to put the phone into USB Modem/Diag mode while using an AOSP rom. This is normally toggled through the PhoneUtil apk with *#*#8778#*#*. To this date, the fix has been to restore back to a stock Touchwiz rom or to boot a Touchwiz rom off the SD card. To my knowledge, outside of the Nexus S 4G(SPH-D720), no CDMA Samsung AOSP roms have USB Modem mode working. This thread is being created to help solve this issue.. for ALL SAMSUNG CDMA DEVICES. Modem/Diag Mode works on HTC, Motorola, LG.. it should work for Samsung devices too ;)

    USB Modem/Diag Mode establishes a serial-over-usb connection which allows us to use special Qualcomm tools like QPST and QXDM to talk to our phones. We can access the hidden EFS partition including the non-volatile memory to edit all sorts of values.. we also use this for updating PRL's.. etc etc. It has it's value.. although Samsung and the carriers don't want us in there ;)

    I see USB Modem mode in AOSP being possible in two ways.
    1. Since the Nexus S 4G(SPH-D720) on Sprint is on AOSP and has working USB Modem/Diag mode.. figure out how the NS4G achieves this mode.
    2. Use a hardware jig of some sort to boot into USB Modem/Diag mode.

    1. For the software side of things here's some highlights I've come across..
    a. Logcat of Nexus S 4G(SPH-D720) while toggling USB Modem/USB modes - http://pastebin.com/TfcSHzYB
    b. In terminal emulator/ADB we have "radiooptions" command with some interesting output. QXDM Enable/Disable is what interests me in there. QXDM enable would seem to allow the phone to interface with QXDM.. QXDM requires a USB Modem(Diag) Connection to talk to the phone. Attempting the "radiooptions 3" command does nothing(even on the NS4G). Only command that does seem to work is Radio_Off which requires a reboot to get working again.
    Code:
               0 - RADIO_RESET
               1 - RADIO_OFF
               2 - UNSOL_NETWORK_STATE_CHANGE
              [B] 3 - QXDM_ENABLE
               4 - QXDM_DISABLE[/B]
               5 - RADIO_ON
               6 - SETUP_PDP apn
               7 - DEACTIVE_PDP
               8 - DIAL_CALL number
               9 - ANSWER_CALL
               10 - END_CALL

    c. Use manual commands to enable/disable the USB Modem/Diag mode as TheBeano has shown us here in his Fun with resistors (home/car dock mode + more) thread.

    You can see what the current state is with this command:
    Code:
    cat /sys/class/sec/switch/usb_sel

    You can change the state with:
    Code:
       echo PDA> /sys/class/sec/switch/usb_sel
    or
       echo MODEM> /sys/class/sec/switch/usb_sel
    Currently on the E4GT SPH-D710 enabling MODEM and then connecting the device to Windows results in no connection/USB detection at all. Phone is detected in PDA mode only. In addition, using the PhoneUtil menu(*#*#8778#*#*) and setting the USB mode to "Modem" has no effect at all.

    2. As for the hardware side of things, I've been reading through XDA and came across some interesting threads in the SGS2 I9100 forums. A post by E:V:A specifically that mentions putting the phone into different modes by using resistors.. which I suppose would be the same thing as the jig's people have been using to reset their ODIN flash counts.. only using different resistors: Kernel serial console on I9100.

    301K looks to be what we use for the standard jigs. that is documented here: [GUIDE] How to Make a USB Jig and Get Rid of Yellow Triangle+ODIN Counter reset. I wonder if there is a mode we can force which establishes USB Modem mode ON and then use serial-over-usb.. like how it works when we set Diag mode in touchwiz roms. AdamOutler has thread dealing with the E4GT pinouts etc.. not sure if this would help at all: Processor datasheets required(E4GT SPH-D710)
    Code:
    xOM_0=pin E3
    xOM_1=pin D2
    xOM_2=pin C3
    xOM_3=pin E4
    xOM_4=pin F2
    xOM_5=pin A3
    xOM_6=pin F3


    I have no idea if anything I've said helps... just putting some ideas out there and hopefully get some people who DO actually know this more advanced stuff to join in ;) I have HTC phones, LG phones, multiple Samsung devices.. Epic(SPH-D700), NS4G(SPH-D720), E4GT(SPH-D710). I can provide any logs needed for those devices.


    Random references to Diag mode and AOSP on CDMA devices:
    Cannot enter Sprint ## CDMA codes on dialer, need DIAG mode! (HTC AOSP DIAG)
    Updating PRL on CM7 (Samsung CDMA AOSP)
    Epic Dialer Codes working on CM7
    DIAG ##3424# using an AOSP ROM CM7 (Various CDMA HTC methods mentioned)
    QPST DIAG Mode CM7 Aka ##3424 (HTC Droid Incredible ADR6300)
    Fun with resistors [home/car dock mode + more] (Manually enable/disable UART)
    -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


    Ok, I know I am not coming across very clear, because we apparently have such different devices! Let me try to explain again.

    1) I don't know why you insist you need to "make the switch" at all? On the I9100 there is no need to make this "switch" to get modem serial communication port. Why do you think you need it on yours?....

    It seems the more we compare notes.. the more we see how different the I9100 and SPH-D710 really are. Without getting into technical specifics I can give you a reason why some things are so different... which is how CDMA and GSM differs really. Looking at "security" alone.. GSM uses a SIM card to authenticate on the network.. outside of the IMEI(which seems to be rather accessible on your devices) the SIM card contains most of info the network is looking for. On our devices CDMA devices, ALL of the authentication info is stored on the device itself. Carriers/Manufacturers do NOT want use touching the hidden EFS partition.. where all of our authentication values reside.. ESN/MEID, EVDO username/passwords, PRL.. etc etc. So now, the main key to accessing this hidden partition... USB Modem(Diag) Mode!

    I have taken some screenshots of Windows Device Manager. Far left is my Device Manager with no phone plugged in. Middle is phone plugged in but USB Mode is set to "PDA". Right side is phone plugged in and USB Mode set to "MODEM".
    9yJ3y.png

    You can see the difference in the device manager... USB Modem mode giving us a serial diagnostic COM port. This COM port is ONLY available when the phone is set in this specific mode. ONLY when the diagnostic COM port is available can we use Qualcomm software to view the hidden EFS partition of our devices and start to tweak things. For the above image I used a Nexus S 4 G(SPH-D720) which naturally runs on AOSP and has this USB Modem mode working. This mode also work on Touchwiz roms. It does NOT work on AOSP in any other Samsung CDMA phone(the purpose of this thread).

    I hope this sort of explains why our phone may be "locked down" a bit more due to how CDMA works... and also explains how I am sure that we need this USB Modem mode toggled.. and that I am positive Windows is set up properly etc etc. The issue is that we can not force the phone, while using an AOSP rom, into this diagnostic serial mode.
    5
    another solution on galaxy S4 I9505 (LTE)

    My ROM Dandroid2.52-GE-4.4-12072013-INTL.zip
    I think it should work on others.
    Since I was unable to load Qualcomm Diag Mode by *#7284#.

    My workaround:
    Qulacomm USB drivers should be installed on PC first. Native Sumsung drivers should be unistalled.

    1. Install phoneutil.apk (attached)
    2. Install QuickShortCutMaker
    3. Run QuickShortCutMaker -> find PhoneUtil -> expand it and choose "com.sec.android.app.phoneutil.SerPortUartUsbMSM8960" as a shortcut. Shortcut will be placed on Home Screen
    4. Disconnect phone from PC.
    5. Run Shortcut. Choose MODEM ->Qualcomm USB Settings -> DM+MODEM+ADB -> Ok.
    6. Connect to PC.

    I received 2 unknown devices:
    Samsung_device. (CDC composite).
    For these devices i manually chose QC serial driver:
    Manual Driver Installation -> Chose preinstalled driver -> Ports (COM+LPT) -> Qualcomm Incorporated -> Qualcomm HS-USB Diagnostics 9004.
    Do it for both unknown devices.

    For MODEM - my opinion is also to use QC Modem driver (see pic)

    After QXDM will work.
    3
    Autoprime, you don't get the mass appreciation, but for those of us who know what you are trying to accomplish, we appreciate it.
    2
    huge derp... diag mode on Samsung SPH-D710 Epic 4G Touch fixed. was making it harder than it really was. :silly:

    Set CP
    Code:
    #/system/bin/sh
    
    echo 0 > /sys/class/android_usb/android0/enable
    echo CP > /sys/devices/virtual/sec/switch/set_usb_path
    echo 1 > /sys/class/android_usb/android0/enable

    ALL (AP+CP)
    Code:
    #/system/bin/sh
    
    echo 0 > /sys/class/android_usb/android0/enable
    echo ALL > /sys/devices/virtual/sec/switch/set_usb_path
    echo 1 > /sys/class/android_usb/android0/enable

    AP
    Code:
    #/system/bin/sh
    
    echo 0 > /sys/class/android_usb/android0/enable
    echo AP > /sys/devices/virtual/sec/switch/set_usb_path
    echo 1 > /sys/class/android_usb/android0/enable