Sink Your Teeth Into PiPhone

Have you ever dreamed of independence from smartphone bloatware? If you have a Raspberry Pi and an Adafruit TFT, you’re halfway to making your own version of [Dave]’s PiPhone.

This tasty proof-of-concept cellular sandwich is made by adding a Sim900 GSM/GPRS module, which communicates via UART, to the Pi/TFT hardware while using a piece of foam core board in the middle to prevent shorts. You won’t get free service or anything, but you can pop a pre-paid SIM card into it. He’s powering it with a LiPo battery and using a DC-to-DC converter to set up the 3.7V to 5V. You could do a lot worse than the $158 BOM, and we’re betting you have a Pi lying around already. We wish more phones had baby rocker switches.

There’s a slight problem with the PiPhone: it gets pretty warm and there isn’t a lot of room for air circulation. For best results, let it cool on a well-attended windowsill or operate it near a fan like [Dave] did. He doesn’t have the code up on GitHub as of this writing, but he will capitulate to high demand. Make the jump to see [Dave]’s tour of the PiPhone and watch him make a call with it.

37 thoughts on “Sink Your Teeth Into PiPhone”

I read about this yesterday and I have to say it is an awesome project. I think that there could be a market for cellphone shields for RPI. With a stripped down version of rasbian you could potentially make a really usefull cellphone. You could even use it with the new compute module (http://www.raspberrypi.org/raspberry-pi-compute-module-new-product/) to make a smaller version. Awesome work.

Due to a number of previous GSM modules intended for similar uses but did not have voice call capability, when I read the typically-crappy summary of the device on Slashdot yesterday I simply assumed this one too had no voice call support.
I’m happy to see that isn’t actually correct however!

I was more interested in the always on internet connection with better coverage than wifi, and possibly in abusing SMS as a form of push messaging to avoid having to poll for commands on a server.

But it’s an interesting approach to actually pulling off voice communication, even if unencrypted and with other limits, just by not invoking the audio limits on the Pi itself and providing direct line in and out.
I think this just might have convinced me to buy one to play around with. Thank you once again hackaday!

Obviously it’s not a logical replacement for even a cheap prepaid cellphone, but it’s an awesome proof-of-concept and a good starting point to adding a GSM module to a Pi-based project. I’ve seen similar projects here and elsewhere that use less powerful microcontrollers and are more cellphone-like in form factor, but this looks like it’s just plain fun to build!

But if you pick up one for $20 do you then have the option of adding your own encryption to all your calls and texts to people who use the same handset ? If it is a smartphone you know that it can be tapped by the telco, the OS maker, apps installed from an online store, the NSA, GCHQ, ……

No to voice encryption because the Pi doesn’t do the audio at all. The GSM module has line in and line out for audio which the PiPhone write up ignores. If you’re encrypting texts or data then you could have done that with a regular phone anyway and there are apps to do that for you.

You’re not free from external interference by making this either. The SIM900 module is basically the guts of a mobile phone anyway and runs its own firmware which you have no access to.

“The GSM module has line in and line out for audio which the PiPhone write up ignores. ”

Yes but the GSM module also can show up as a USB 2.0 audio device to use instead of line in/out, along with the uart interface. I’m not as familiar with the encryption protocols that can encode targeting a lossless audio codec for transmission without losing data, but I do know that some do exist. My initial guess is that wouldn’t the best way to go about things here though.

To me the easiest by far method for voice encryption looks like doing the number crunching on the pi, get things into a nicely formatted data stream, and just use the GSM module as a TCP endpoint instead.

In theory that method would let one create encryption apps for any platform and all be compatible.

For me personally the always on 384kbps internet connection supporting h254 video conferencing was the feature that first got me even considering voice communications with this at all, which seems matched well with the pi camera and video out.
Having little startrek TOS themed ship to ship boxes scattered around just didn’t seem a good match for a used cellphone plus the time to rewrite a hack to a clunky interface just to get the thing embedded into a wall or what not.

Interesting it shows up as a USB audio device, the earlier versions of these modules usually just had serial ports for data, and mic and speaker outputs if you were lucky.

You mention targetting a lossless codec. GSM is (very!) lossy, isn’t that still the audio format on 3G? And certainly in the case of fallback to 2G. AFAIK all cellphone calls use lossy compression, assuming you’re using the standard voice feature and not some app.

In the case of an app, though, there’s nothing to stop you writing one that uses the data connection to encrypt a voice stream with whatever you like. There’s probably several available to download. Since you’re going to the trouble of encryption, presumably your friend on the other end can go to the same trouble of installing the app. Not quite the ideal of universal user-end encryption to keep the spooks at bay, but what can you do? I can only guess that if a popular encryption program ever took off, “they” would hack some backdoors into the popular distributed version. Or crack it via some backdoor in Facebook or something equally likely.

Still, very interesting. These GSM / 3G modules are mostly used, and intended, for remote monitoring, I think. If they’re going to take off for home-made phones, they need to get a good bit smaller. Which I’m sure can be done if a manufacturer put their mind to it. We might even one day get phone functions built-in as an option to ARM microcontrollers. SPI / GPIO / USB / GPRS! Or a Phoneuino board. Once they get smaller, there’s a LOT of possibility out there, what geek wouldn’t love a phone they built and coded for themselves?

The modules handle all the hard stuff themselves, that’s the right way to do it. The geek-end custom-end application-end just requests phone functions through simple commands, often using the AT standard. It would be great to get them really small. You can get wristwatches with built-in phones. Imagine all the stuff we can build phones into!

Yeah but you didn’t write the OS yourself. Or put together the hardware, or specify exactly what you wanted. This looks like the start of a might Geek Tool. And since it’s a phone, you’ll carry it round everywhere you go! You can add apps to your Android, but you can’t add sensors or extra controls or a Blu-Ray laser for blinding people.

The secret is, as Gerald points out below, all the phone-side stuff, all the brains that connects to the network and handles the comms and frequency-switching and all the layers of interfacing, is built into the GSM module. That’s really the phone. The user, in this case Dave, just builds the interface that connects it to the human.

But within that he’s got complete freedom, so that’s the work you judge him on!

People have used modules like these with Arduinos or other 8-bit CPUs and simpler LCDs to make rudimentary custom phones. That’s the stuff the builder decides.

In this case doing it on a Pi hopefully means he’ll be able to run Linux and have all his Pi apps running on it, ideally with network access through the phone module. THAT’s the impressive part! I wonder how well the Linux drivers support the module? And if there’s already programs to do the dialling etc?

Sounds like a LOT of fun to have. Off to spend a while reading about it now…

Well, i don’t see that device as a “homemade phone”. The GSM module is already a complete phone handling GSM communications, SIM… It just comes without any interface to dial the phone number. So the Pi is only here to drive the LCD and send commands to the GSM module. Not very different than taking an old Nokia phone and control it through UART.
I would be very impressed to see a homemade GSM module.

Since those GSM modules are actually phones without keyboard, battery and screen, you can use old phone to cut costs, Siemens and Nokia are good choice. They are available for few bucks on the eBay. Remove screen, keyboard, housing, battery … solder wires to main connector and you have nice GSM module that can be controlled with AT commands through UART. Mic&speaker interface are already there, and as bonus you have Li-Ion charging circuitry.

Here for example : http://www.elektronika.ba/666/tiny-gsm-alarm-system/
Phone is not disassembled on the photos, but since you do not need display, keyboard or case you can remove all that parts and use only board. Siemens has 3.3V UART interface and uses AT commands, easy available on the internet, search “siemens s35 AT reference”. Difference between Siemens TC35 GSM module and Siemens x35 phone is that phone does not support SMS messages in plain text but in PDU format so you have to do some 8bit->7bit conversions in the MCU. For the calls things are the same for the module and phone, just send ATDnumber; command, and the phone will call that number. Use ATH to hang up, ATA to answer the incoming call.