Rants And Ramblings About Mobile Technology

Anders Borg writing about the fun and crazy world of mobile and Internet service technologies.
You can also read the blog via Twitter or your phone via wap.abiro.com. See the left menu for more news.
Comments on blog entries are moderated, but I'm rather liberal as long as it's not blatant advertising.
For general comments, advertising and contribution queries, please use the feedback form.
Thursday, March 05, 2009
Anecdote: Telit GT864-PY GSM/Python module, and paradigms
A major issue I had when trying to use the module was that the documentation is very extensive and at the same time disparate. A tutorial for getting started is completely lacking. Just finding out how to upload a Python application to the module took days, as the usage paradigm is so bizarrely out-of-date.
An area of special newbie confusion is the weird choice of connectors:
- It has a mini USB port, but it's not supporting USB, rather 4 digital inputs.
- The power connector is a 6 pin RJ11 that combines power and an analog input and digital output.
- Instead of the device having a USB port and supporting the mass storage profile, it does all the PC communication via a serial port. Serial ports have been outdated for at least 10 years now, and a USB port can do everything a serial port can do and much much more. There could still be a serial port for external devices of course, but for the PC communication it's a terrible choice.
Instead I would suggest the following for a next-generation device:
- USB for the PC communication. Ideally it would work as both host and slave, so the module could communicate with USB devices on its own.
- A set of dedicated pins or holes (with screws or clamps) for input and output
- A hardware-controlled high-speed dedicated I2C port for easy connection of I2C peripherals.
- A standard connector for power.
Welcome to the 21st century Telit :) !
The application developer has to deal with all the AT commands supported by the GSM modem. There's no abstraction of this at all, so a simple thing like sending a text SMS becomes a long sequence of function calls for sending and receiving modem data. Probably someone could make a buck just providing utility classes for SMS, MMS, GPS (supported by other modules), port communication etc to fellow developers.
To make a point, I read in an FAQ how to send an MMS, and instead of describing how that's done it just pointed to the MMS specification. There should have been a class for basic MMS sending and receiving in Python.
Also using HTTP should have been completely abstracted under a class. Instead it's a strange combination of AT commands and calls.
I can understand why this is so, seen historically, because traditionally such modules were used as modems to PCs (or other controllers) via a serial port, but for the Python programmer this makes it much more difficult than it needs to be.
As pointed out earlier, each module provider has its own programming environment, which doesn't help matters.
I'll return later with information about how to actually use the module.

