DealExtreme sells a USB GPRS modem for $25.35… good value. I bought one for my UAV project. It uses the BenQ M32 GPRS module (pdf) and Prolific PL-2303 USB-TTL UART bridge (pdf).
Too bad the device’s PL-2303 USB<->UART bridge has a custom PID (0609, instead of the factory-default 2303; the VID 067B is unchanged), and the supplied software and documentation that work with it aren’t much use. To be useful I need direct access to the device.
I tried modifying the driver, but Windows (7, x86) returned an error to the effect that it wasn’t going to work on my system. But there’s always another way, so… out with the toolkit. The device has an EEPROM which stores custom settings for the PL-2303, so disconnecting it would solve my problem, with the added benefit that if I reinstall Windows or plug the device into another machine it will work with standard drivers.
Hacking the GPRS modem
Time: 5 minutes
Tools:
- Small Philips screwdriver
- Soldering iron
- Solder
- A sharp pick or tweezers
- Optional: solder wick to remove any stubborn solder
- Toss out the supplied user guide and CD.
- Open the case (three small Philips screws).
- Locate the PL-2303′s external 24C02 EEPROM:

- De-solder pin 5, shown below. I added a little solder for heat transfer, and pulled the leg up with tweezers.

- Download and install the PL-2303 driver from Prolific.
- Plug in the device, wait for drivers to install.
- Open a terminal program with the new COM port (check device manager mangler if your terminal doesn’t detect it) at 115200bps (Update: supposedly the module has autobaud rate detection from 1200 — 115200bps, so others may also work… I can’t remember a specific reason for using 115200, so just try what suits) with other settings left to their defaults.
- Start typing AT commands to send SMS messages etc. Look here (PDF) for the command set.
Connecting to a microcontroller
To do this you’ll need to isolate/disable the PL-2303. Here are some ideas:
- Remove the chip and solder to the TX and RX pads. Careful not to tear up the pads (flood each side with solder and lift, mop up with wick). This is the easiest in terms of soldering, but you can’t go back to USB so easily.
- Lift the TXD pin (1) and solder wire to the pad. Solder directly to the RX pin.
- Solder to the TX and RX pins and tie RESET_N to GND to tri-state the TX pin.
Tips
- Don’t forget to connect GND between the two systems!
- The M32 module TX & RX pins appear to be 3.3V logic, and may or may not be 5V tolerant… Be careful! If your microcontroller has 5V I/O, you’ll need to run it at 3.3V or convert logic levels.
Hello Brody,
I just sent you an email directly but if it is more convenient for you to answer on the board please help me to understand
1.
Where is TX and RX and how do I put a jumper?
2. Where is TXD pin 1?
3. Where is the Reset_N and GND and tri state TX pin?
If you have a picture on how you did it I think it will be very helpful.
Thank you again for posting this project.
“# Remove the chip and solder to the TX and RX pads. Careful not to tear up the pads (flood each side with solder and lift, mop up with wick). This is the easiest in terms of soldering, but you can’t go back to USB so easily.
# Lift the TXD pin (1) and solder wire to the pad. Solder directly to the RX pin.
# Solder to the TX and RX pins and tie RESET_N to GND to tri-state the TX pin”
Hi Ed.
Have a look at the PL-2303 datasheet (added above). Page 3 has the pinout.
The M32 GPRS module has 3.3V TX/RX, so anything you connect must be the same level. You can use a series resistor on the RX pin to level-shift if your voltages are higher (your email mentioned 3.5V, which is a rather odd value by the way..?).
The easiest way to connect a microcontroller is probably to remove the PL-2303, then connect the exposed TX, RX, and GND pads to your device. TX on the M32 is output from the module, and RX is input.
Is that clearer?
I lifted as you suggested pin 5 on the EEPROM 24C02 and managed to communicate to a terminal program using AT commands. So far so good.
I am trying to follow your suggestion on setting modem to TTL level serial port. I located PL2303 TXD pin.
I located TX and RX pins on USB connector. I am not clear which pins from the PL2303 I should connect to TX and RX on the pad of USB connector.
Would greatly appreciate if you can show wiring schematics from PL2303 to USB connector pad.
Thank you in advance.
Hi Ed
Just to clarify what you want your system to look like it — I gather it will comprise the GPRS module connected to a microcontroller UART with 3.3V logic? If so you don’t need to go near the USB connector, just the UART TX and RX pads on the 2303. Then you just isolate the 2303 so you can access the GPRS TX and RX pins, and the easiest way is probably to remove the 2303, assuming you’re comfortable with some SMD de-soldering. Then solder wires connecting to your microcontroller onto TX and RX (check the datasheet for pins numbers) and GND. Always good to add 10K series resistors on TX and RX too until you’re sure you have TX and RX the right way around.
Thank you for your help. I understand now what I need to do.
Hello,
I heard, that the IMEI of these devices is 0000…
But that will not be a valid IMEI in Germany, so probably it would not work in Germany.
Is there any way to change the IMEI?
Does anyone know, where the IMEI is stored?
Thank you very much.
Check this:
http://www.dealextreme.com/p/usb-tri-band-gprs-modem-cell-phone-radio-gsm-900-1800-1900mhz-12057
Hi Michael,
I connected the device and entered AT+CGSN and it returned a non-zero IMEI which appears to be unique. I hope that helps!
When did you order? Mine has 0-IMEI. Ordered on the 7:th of june 2011.
I got mine around November 2010, which could explain it.
I really wish someone rack and convert it into a GSM gateway. A four-port gateway costs $ 500. Four of these would cost $ 100.
The drawbacks would be, echo cancellation and drivers for Linux/Asterisk.
I can send SMS with this GPRS modem.
Now I want use GPRS connection, but I am wondering how.
The problem has been described in this link
http://www.edaboard.com/thread151838.html
Please can someone help with correct AT-script
(Yes, I have read the AT-command manual)
ps. my IMEI is non-zero
I ordered two on the 7:th of june 2011. The one I have tried has a 0 IMEI. It’s denied by Telia Sweden :(
Pingback: Interfacing Arduino to USB GPRS modem « Circuits@Home
Hi,
I have been working on a project for interfacing a 3G modem. However, I have been unable to figure out one thing.
I have seen descriptions in which AT commands are used to communicate with the USB modem. But which terminal is used to send these commands to the Modem.
Do we use the Micro-controller itself to send the AT commands to the modem or we are using the PC. And if we are using the PC to send the AT commands, does it mean that we can not use the micro-controller alone to send the AT commands and operate the Modem ?
Hi Vik. You can’t physically connect to both a computer and micro controller (not easily, anyway) because the UART port is point-to-point. You could do this in software if your microcontroller has two UARTs though. What are you trying to do that requires a connection to both?
Hi,
Actually I dont need to connect both the PC and Microcontroller to the Modem. I only need the microcontroller to communicate with the Modem but all the projects which I have been seeing describe a PC terminal to check for the interaction with the modem. So I was wondering would a standalone micro controller able to communicate with the modem.
I am trying to post some value on the internet via the modem through microcontroller. I am in the very initial stages and I dont know how to program for AT commands using the arduino platform
BR,
Vik
Regarding the pin connections, I have few questions
1. In order to communicate with the Computer, you are unsoldering the pin 5 of the EPROM ?
2. In order to interface with a microcontroller, you said to remove the PL2303 altogether. Do we we need to to connect the RX, TX and Ground to the ones of the Microcontroller ? And in that case, where would the power for the modem would come from ?
3. Taking the case of USB host shield mounted over a Ardunio UNO, should we just plug the modem with the USB connection of the Arduino. Any changes for that mode ?
BR,
Vik
That’s actually a good question: Where would power for the modem come from if it’s not plugged into a USB port? I guess it’d be easy enough to connect a 3.3v output from the microcontroller.
Vik –
1) Yes, if you want to use the unmodified PL-2303 driver.
2) Yes, connect the PL-2303 TX and RX to microcontroller RX and TX respectively (use 1K resistors in series in case they get mixed up).
A couple of ways to power it:
* There’s a regulator onboard (the three-pin package with a solder tab — marked U2 I think) so plugging the device into USB will give it power.
* Wire 5V to the supply input pin on the USB plug or regulator.
* Wire the correct voltage (3.3V? Confirm first by measuring while plugged into USB) to the regulator output. Don’t connect any input to the regulator in that case, or consider removing the regulator.
One more thing.. What is the IMEI of the current models ? Is it 00 or unique ?
Mine was non-zero (possibly unique), but I don’t know about current models.
Hey,
I have been working with this modem project now for around three weeks. I have an ardunio which can sleep and has a working USB host shield communicating with a USB Modem ( the same one used in this project ). I am trying use GPRS with this modem. Right now I am using AT commands via putty to the Modem. Can you please provide your views about using this modem for GPRS usage ? Is it possible with the above mentioned configuration to post something on the internet ?
BR,
Vik
Hi,
Do you have the AT Command manual for the BenQ M32 Modem ?
Hello, you can find it at http://www.portech.com.tw/data/BenQ%20M23%20AT.pdf
I have been trying to activate the PDP session by the below command but I keep getting the error.
at+cgdcont=1,”IP”,”INTERNET”
Can you specify the AT commands that used for GPRS connection via the micro controller ?