Build Your Own Mobile Phone
From TuxPhone
←Older revision | Newer revision→
Contents |
Background
Over the past several months, some of my collaborators and I at the Silicon Valley Homebrew Mobile Phone Club have been building our own mobile phone "devices." We're far from producing something that would compete with Nokia, Sony Ericsson or even Motorola. However... we've made some pretty good progress. This page is here to provide some bread-crumbs for people who want to follow us into the brave new world of lead-user developed consumer electronics devices. Much of what's here was first published on [revejo.org] (which is [Esperanto] for "room for dreams," BTW) but I'm going to use this site to host these articles. It just makes more sense to put them here, where people who are interested in building their own mobile phones are likely to be browsing.
I'm assuming the audience for this text is reasonably skilled in electronics hardware. I'm not going to be stopping to explain what resistors and capicitors do. But on the other hand, degree'd electrical engineers are not the target audience either. People who will get the best use of this page are probably electronics hobbyists who have used a soldering iron in the past. If you're not terribly skilled with soldering irons, don't fret, we're really going to try to minimize the amount of seriously difficult soldering.
If you look closely, you'll find this article describes the development of a number of different devices, each with increasing complexity and "finish." We're going to start with the "Franken Phone, Mark 1" that I developed as a reference platform for the SqueakyMoPho project. SqueakyMoPho is on hold while we're developing the TuxPhone hardware and software, but the Franken Phone hardware is proving useful for developing the TuxPhone GSM Controller while the TuxPhone hardware is being made ready.
License
Please also note that this document is released under the Creative Commons Non-Commercial ShareAlike Attribution license, v2.5 despite the fact that the page footers talk about the GNU Free Documentation License.
Before You Start
Each of the phone projects listed here assumes you have access to a few fundamental tools:
- a soldering iron and solder
- a bunch of wire
- a multi-meter
- a prototyping board
- a PC or Mac with a USB port
Now there may be one or two people out there who don't have a working USB port. Don't fret, you can still build a Franken-Phone using SparkFun's GM862 Eval Board with an RS-232 interface (instead of the USB based board I use below.) I've opted to use the USB eval board because I wanted to steal power from my host system rather than having another wall-wart power supply on my desk. It's perfectly acceptable to use an RS-232 eval board instead, but it's not supported in this document so you'll have to use a little common sense when reading the instructions below.
Also note that at the time this page was written, there are two members of the GM862 family sold by SparkFun: the GM862-QUAD and the GM862-QUAD-PY. The two are essentially the same except that the GM862-QUAD-PY includes a Python interpreter. Either should be acceptable for our purposes.
Before starting, it may be advantageous to download documentation and drivers for some of parts we're going to be using. Documentation for the Telit GM862 GSM module is available directly from Telit. Here are PDF's from the Telit GM862 site I found useful:
- The GM862 QUAD Hardware Users Guide
- The GM862 QUAD Software Users Guide
- The GM862 QUAD AT Command Set Reference
- A two page bit of marketing collateral to satisfy your inner business geek, and
- A product overview document
The guys at SparkFun also put together some documents describing their experiences. They're an interesting read as well.
Next you'll probably want to download the drivers. SparkFun has a document about installing the CP2102 drivers on a PC. This document is an easy read and describes what to do after downloading WinTel drivers from ftp://cp210x@ftp.silabs.com/Release (password is cp210xxfer) or Linux drivers from ftp://cp210x_linux@ftp.silabs.com/ (password is linuxdriver). These appear to be the drivers for the 2.4 kernels. In recent 2.6 kernels, support is already built in (see the bottom of this post), so it should be plug and play. SparkFun also distributes a ZIP file containing what appears to be Windows 98 drivers. Macintosh users should ignore the note on the SparkFun USB Eval Board page about MacOS X drivers being distributed in the same ZIP file as the Win98 drivers and look elsewhere for support.
I was able to find generic CP2101 drivers for MacOS X at the Crumb 128 downloads page. I wrestled with these drivers for a little while until I realized I really did need to reboot after installing time. After upgrading from 10.4.5 to 10.4.6 of MacOS, I experienced a few problems, but judicious use of the Terminal.app and the kextload command got things running once again.
And one last thing... it's an extremely wise thing to have a terminal emulator handy. WinTel users should be able to use HyperTerm to communicate with their GM862 enabled devices. Many Linux distributions are still distributed with tip or minicom which should work fine. MacOS-X is no longer distributed with tip, but there are several high-quality shareware and freeware terminal emulators available. My favorite is Dave Alverson's ZTerm application. Mac users will know everything is okay when, after plugging the GM862 into the Mac via a USB cable, ZTerm is able to find the /dev/tty.SLAB_USBtoUART device.
The Franken Phone, Mark 1
The phone we're going to build here is something I'm calling the "Franken Phone, Mark 1." It is the barest bones project that could even be called a mobile phone. I personally think of it as a USB GSM peripheral. But it's a great place to start and pretty simple to build.
The Parts List
- a Telit GM862 Quad GSM Module (from SparkFun.Com)
- a GM862 - USB Evaluation Board (also from SparkFun.Com)
- a project enclosure
- a headphone suitable for use with a mobile phone (i.e. - it has a microphone)
- a headphone jack or jacks that the headphone will plug into
- two LEDs (one for a power indicator, one for a status indicator)
- 1 momentary push-button switch (the power switch)
- a speaker to tell you when the phone is ringing
- a personal computer with a terminal emulator program
- the SIM card from a mobile phone account
- 1 10 pF capacitor
- 1 10k Ohm resistor
The Franken Phone, Mark 2
Now that you've made your Franken Phone and you're using AT commands to get it to do thinks like dial phone numbers and receive calls, you may want to show it off. I've found that people can be seriously dismissive of a big 'ol stack of wires coming out of a prototyping board. So the second project in the Franken Phone series adds an extremely simple PC board to hold the components in the audio path. If you're handy with PC board etching, you may want to skip directly to this project and ignore the Mark 1 all together.
On the other hand, the sound quality for this design is pretty poor. If you have any ability to etch your own PC boards, you may want to move on directly to Mark 3.
The Parts List
- the Franken Phone Mark 2 PCB, or
- a small proto-board
The Franken Phone, Mark 3
By this point, you've hopefully placed and received a few calls. Advanced readers will likely have downloaded the latest rev of the TuxPhone software from SourceForge and used the command line to dial the phone. But what you've probably noticed is that the audio quality is.. uh.. just plain bad. You're probably getting a bunch of humm and depending on the characteristics of your headphone, the input or output volume levels are likely not set where you want them to be. The Franken Phone Mark 3 fixes this problem by replacing the simple Mark 2 audio daughterboard with something a little "beefier." The new board contains a number of components designed to eliminate noise and adjust the volume to more useful levels.
The Parts List
- the Franken Phone Mark 3 PCB, or
- a medium sized proto-board

