Firmware upload over GSM modem

I'm working to a heating system remote control tham I am converting to Arduino with a Mega 2560. The system is located far from me and it's too expensive to travel every time I need to upload a new firmware via USB (frequently, at the moment).
So I would like to implement a solution to upload new sketches over the air.
The remote capabilities are provided by a serial GSM modem which doesn't support GPRS but only SMS and GSM data @9600 baud. Not exceptional but I'm budget restricted so I can't change it nor can rely on a data plan.

I tried and search if something like this existed already but the closest I've found is based on Bluetooth and it doesn't seem to be much working.
Has anyone there done something similar? Is anyone interested to cooperate to develop it?
Conceptually it should not be so difficult but I've never worked on bootloaders so this might be the hard part for me.

Many thanks

Conceptually it should not be so difficult

How are you planning to trigger the reset button?

but I’ve never worked on bootloaders so this might be the hard part for me.

It just might.

Hi Paul,
the GSM modem used there is a Wavecom WM-02. It has some GPIO ports available that can be controlled by means of AT commands.

The idea is to first establish the handshake between the calling station and the sketch running in the Arduino.
When the communication is established the sketch would send out the AT command to drive the GPIO connected to the reset.
Then the bootloader code would start and get the code from the serial line, and this part should not be much different from the USB/serial implementation.

What do you think?

What do you think?

I think you are going to have problems getting the GSM shield powered, and having the Arduino communicate with it, while the bootloader is running. But, I could be wrong, and I wish you the best of luck.

The modem is not a shield, it's a stand-alone serial device.
Its power is directly connected to a 12V PSU and its RS232 is connected to the Serial2 of the Mega 2560 (via a Max232).

So I'm not expecting power problems, and when the handshaking is established in GSM data mode then every byte sent by the "base station" will appear on the Serial2 to the bootloader as well as the standard bootloader does with the USB on the Serial port with the 8U2.

I'm testing this and will let you know if it works. I would appreciate if someone with experience in bootloaders would comment on potential issues with this approach.


Hi Andrea,

has this gone anywhere? I am looking for exactly the same function but with a GSM shield instead of a stand-alone modem. No clue if this could ever work, but any experience from others may help.